1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
|
Durango Release Notes
Version 2.57.00
Win98/WinXP/DOS/Linux
April 5, 2003
-----------------------------------------------------------------------------
PRODUCT INFORMATION
-----------------------------------------------------------------------------
Durango is a graphics/video software support package designed to assist in the
development of display drivers and embedded applications. The core of this
package is source code that performs most of the graphics related
functionality for the National Semiconductor (c) Geode family of products.
Development time for new software is reduced by using these routines to access
the hardware.
-----------------------------------------------------------------------------
INSTALLATION INSTRUCTIONS
-----------------------------------------------------------------------------
Download the file to a directory. Modify and include the file durango.c
according to the needs of the application.
-----------------------------------------------------------------------------
REVISION HISTORY
-----------------------------------------------------------------------------
04/05/04 Version 2.57.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Fixed the PLL setting for 1280x1024@70Hz and 1152x864@70Hz.
=============================================================================
03/30/04 Version 2.56.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Updated the GX2 render code such that BLTs that involve source will work
correctly even if source is not involved in the ROP.
=============================================================================
03/26/04 Version 2.55.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Filled in all missing refresh rates in the mode table for Redcloud and Castle.
* Added a new routine gfx_is_panel_mode_supported.
* Added new routines gfx_set_graphics_palette and gfx_set_graphics_palette_entry
to support using the video palette to gamma correct graphics data.
=============================================================================
03/11/04 Version 2.54.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Updated the video palette routines to clear the bypass both bit before
updating the palette.
=============================================================================
03/02/04 Version 2.53.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added 1152x864@60, 85, 90 and 100Hz to the mode table.
=============================================================================
02/07/04 Version 2.52.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Updated Durango to support Castle, including a 48MHz dotref.
* Added 90 and 100Hz modes for Redcloud.
* Updated the PLL table to remove any pre-divides by 2.
=============================================================================
10/24/03 Version 2.51.08
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Removed GX2 1.0 support from the PLL routines, gfx_set_clock_frequency and
gfx_get_clock_frequency.
* Fixed a bug in gfx_set_clock_frequency, wherein the last three PLL values in
Durango's PLL table could never be set.
=============================================================================
09/22/03 Version 2.51.07
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Changed gfx_set_video_palette and gfx_set_video_palette_entry such that calling
one of these routines will also configure the video hardware to route video
data through the DF palette RAM.
* Added a new routine, gfx_set_video_palette_bypass to toggle the 'Bypass Both'
functionality of the SC1200 and GX2 palette RAMs.
=============================================================================
09/02/03 Version 2.51.06
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added new routine gfx_get_max_video_width for SC1200 and CS5530. This routine
calculates the maximum theoretical video width based on the current display
mode and video clock.
=============================================================================
08/07/03 Version 2.51.05
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Fixed gfx_get_core_freq for SCx2xx when the fast PCI frequency is not 33MHz.
* Fixed gfx_get_compression_pitch to mask correct bits.
* Changed CS5530 and SCx2xx code to always enable video in the display
controller.
* Modified GX2 PLL code to only update the PLL when the value has not already
been programmed.
=============================================================================
06/17/03 Version 2.51.04
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Fixed code to set default gamma RAM for SCx2xx.
=============================================================================
06/02/03 Version 2.51.03
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Fixed gfx_get_cursor_position for GX2 to support large display resolutions.
* Added default gamma RAM table for SCx2xx and GX2 to correct CSC hardware.
=============================================================================
03/20/03 Version 2.51.02
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Changed all preprocessor statements to conform to K and R standard.
* Added support for 56Hz modes to all Durango routines.
* Added missing header file to gfx_priv.h
=============================================================================
03/13/03 Version 2.51.01
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Updated file headers to NSC standard headers.
* Added routine definitions for private and local routines.
* Minor fixes for compilation without warnings.
* Fixed panel timings for 640x480 panels and 1024x768 panels.
=============================================================================
02/05/03 Version 2.49.02
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Fixed GX2 left clipping for 4:2:0 video.
=============================================================================
01/29/03 Version 2.49.01
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Removed unused variable in CS5530 video code.
* Changed max supported pixel clock for SCx2xx to 157.5 MHz.
=============================================================================
01/10/03 Version 2.49.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added extra wait loop when polling for CRC completion.
* Removed code that sets the pitch offsets for 4:2:0 video within
gfx_set_video_size.
* Fixed panning code to work with any display pitch.
* Added code to clear the PLL bypass bit when setting the dot PLL.
* Fixed panning code so cursor never disappears when panning.
* Changed GX2 delay loops to do a volatile register read to prevent
the entire delay loop from being discarded by a compiler.
=============================================================================
11/19/02 Version 2.47.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Updated gfx2_* routines to use a signed stride.
* SW workaround for issue #134.8 - Strange horizontal lines appearing while
drawing lines.
* Implemented gfx_set_video_left_crop for CS5530
* Updated sub carrier reset values for NTSC and PAL.
=============================================================================
08/29/02 Version 2.45.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Modified gfx_set_cursor_position to use cursor position when panning and not adjust
using hotspots.
* Added new routine gfx_get_refreshrate_from_mode.
* Added gfx_text_blt routine.
* Added gfx_get_tv_display_mode_frequency routine.
* Added gfx_get_frequency_from_refreshrate routine.
* Added gfx_set_video_cursor_enable routine.
* Fixed Linux compilation warnings.
* Updated modeset code to clear panning variables.
* Added panel timings for 1600x1200 desktops.
* Removed wait for VBlank when panning using cursor routines.
=============================================================================
07/12/02 Version 2.43.03
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Modified gfx_get_display_mode to support 56 Hz modes.
* Added support for 8K pitch when setting a true color mode above 1024x768
* Added a byte-packed option to gfx2_mono_expand_blt
* Fix for Carmel D2 alpha blending issue.
* Added typecasts for proper compilation.
* Fixed CS5535 MBIU address.
* Added new GX2 routine, gfx2_text_blt
* Added MSR implementations for Linux.
* Further optimized default GX1 string macros.
* Added new routine, gfx_set_panel_present to allow panning without adjusting panel timings.
* Added assembly macros for 32-bit Windows applications.
=============================================================================
03/21/02 Version 2.41.02
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Optimized GX2 Bitmap-to-screen BLTs by using a 2-line offscreen scratch area.
* Fixed a bug in GX2 monochrome bitmap BLTs.
* Fixed gfx_get_clock_frequency for GX2 2.0
* Added 56 Hz support to gfx_get_clock_frequency
* Changed gfx_set_compression_size to subtract header size
* Changed gfx_get_compression_size to add header size
=============================================================================
03/04/02 Version 2.39.01
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added support for CS5535 MSRs.
* Fixed a bug in monochrome bitmap BLTs.
* Added support for 32-bit CRC mechanism in GX2 2.0.
* First official GX2 release.
* Added support for new Dot PLL mechanism in GX2 2.0
* Added support for Carmel D1.1 and D2.
=============================================================================
01/24/02 Version 2.37.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Changed gfx_get_clock_frequency, gfx_get_cursor_offset and gfx_get_display_offset
to be outside the GFX_READ_ROUTINES flag.
* Modified the modeset code to set higher FIFO priority levels for high bandwidth
modes.
* Init code no longer returns Redcloud ID when no chip detected.
* Added fix for Redcloud 1.x rev ID
* New GX2 PLL settings - updates to the 14 MHz table and a new 48 MHz table.
* Optimized all bitmap-to-screen routines. Optimizations include new macros that
allow correct operation in a 16-bit environment.
* 3K cache is now assumed to be the default scratchpad configuration.
* gfx_get_frame_buffer_size for GX2 no longer uses a VGA register. This allows
correct operation even with an external VGA card present in the system.
* Added support for 1152x864 desktop resolution on a flat panel.
* Added 24BPP support for large display modes.
* Modified gfx_set_video_scale such that an identity scale is now default.
* Modified flat panel modeset code to dynamically determine the size of the mode table.
* Added support for Carmel Rev D2.
=============================================================================
10/22/01 Version 2.35.01
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* New release notes format.
* Added fix for SC1200 issue #813 (TVOut field indication is reversed.
* Added check for invalid values in video upscale.
* Fixed compilation warnings and run-time errors under DOS.
* Added new macros for word I/O.
* Optimized VSAII MSR code to used DWORD I/O.
* Fixed SoftVG base PCI base addresses.
* Several fixes to Redcloud API found during bringup.
* Modified Durango to support 4-pixel video alignment for Redcloud.
* Added the functions gfx_test_vip_overflow, gfx_get_vip_line,
gfx_set_decoder_luminance_filter, gfx_set_tv_YV_delya and
gfx_set_tv_field_status_invert.
* Added support for Carmel D1 revision ID.
* Moved gfx_get_vip_base and gfx_get_vbi_pitch outside of the
GXF_READ_ROUTINES flag.
* Minor fixes to saa7114.c and gfx_set_tv-enable.
* Added don't care option in gfx_set_vip_base.
* Added fix for SC1200 issue #1121 (VIP FIFO bus request threshold bit
is inverted.
=============================================================================
07/31/01 Version 2.33.02
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Completed implementation of vertical downscaling support for GX2.
* Added a method to lock the display controller timings.
* Added support for SC1200 Rev C.
* Small modifications to gfx_set_video_format.
* Removed unused and unimplemented I2C functions.
* Changes to prevent errors and compiler warnings in DOS.
* Updated headers to include both BSD and GPL licenses.
=============================================================================
06/08/01 Version 2.31.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added new routines to manipulate vertical video downscaling on GX2.
* Minor fixes to the function gfx_read_window_crc.
* Implemented all init routines for GX2 except gfx_get_core_freq.
* Added support for 27MHz reference frequency to the GX2 PLL.
* Added new function gfx_get_softvga_active.
* Minor changes to the function sc1200_reset_video.
* Fixed some minor compiler warnings.
=============================================================================
04/25/01 Version 2.29.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Disabled all CSC when setting an RGB video format.
* Modified sc1200_set_video_size to add 2 to the window height.
* Modified code to support the accelerator and cursor in pixel and line double modes.
* Modified gfx_get_core_freq to be a dynamic API routine.
* Added the function gfx_read_window_crc for GX2.
* Added init routine gfx_get_graphics_register_base for GX2.
* Added new macros to access the scratchpad RAM to support Win2K and WinME.
* Added mew macros to access the GP registers for GX2.
=============================================================================
04/06/01 Version 2.27.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added new TV read functions:
gfx_get_tv_enable, gfx_get_tv_output, gfx_get_tv_display_mode,
gfx_get_tv_mode_count, gfx_is_tv_display_mode_supported
* Added new function gfx_set_display_bpp.
* Added new function gfx_get_frame_buffer_line_size.
* Modified gfx_set_vbi_base to accept pure physical addresses instead of offsets.
* Implemented video and display controller routines for GX2.
* Modified some initialization routines to be dynamic.
* Created new API extension for GX2 MSR accesses.
* Added new icon routines for GX2.
* Modified gfx_set_tv_display to preserve current bpp.
* Minor modifications to gfx_set_tv_format, gfx_set_video_palette and
gfx_set_video_palette entry.
* Added support for 1152x864@75Hz
=============================================================================
03/12/01 Version 2.25.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Adapted new revision format system.
* Synchronized with NSTA Durango. Updated support for all SC1200 features.
* Added support for 640x400 as well as emulated VGA modes.
* Added new routines to access single palette color entries.
* Added new routine to return the maximum supported pixel clock.
* Added new routine gfx_set_crt_enable to manipulate the CRT display logic.
* Added new rendering routine gfx_color_pattern_fill.
* Added 4:2:0 and RGB video format support for CS5530 and SC1200.
* Modified code to allow operation under DOS.
=============================================================================
07/21/00 Version 2.04
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Verified Xfree86 driver version 1.1.4 under Linux, and ce v2.3.
* Merged sc1200 changes.
* Added routines to support the query of current display mode.
* Added functions gfx_enable_softvga, dfx_disable_softvga.
* Added code optimization in rendering loops to use 32 bit writes where possible.
* Added gfx_is_mode_supported to query if given mode supported by the h/w.
* Added Flat panel support, really testing with panel done only for 800x600.
* Removed subtraction of 16 from gfx_set_compression_size.
* Added version.h file to reflect the version of the durango used.
=============================================================================
03/03/00 Version 2.01
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Verified Xfree86 driver version 1.1 under FreeBSD and Linux.
* Added automatic detection of BLT buffer bases in "gfx_set_bpp" routine.
* Fixed improper setting of VGA attribute controller index register.
* Moved "gfx_get_display_bpp" to always be included.
* Moved "gfx_get_hactive" and "gfx_get_vactive" to always be included.
* Clipped video source size if off bottom or right side.
* Properly adjusted video offset if clipped on the top side.
* Added "gfx_get_video_line_size" and "gfx_get_video_xclip" routines.
=============================================================================
02/21/00 Version 2.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added gfx_vga.c.
* Added write to GP_BLIT_STATUS in "gfx_set_bpp" routine.
* Verified alpha blending on SC1200.
* Removed "gfx_set_blt_buffers" routine.
=============================================================================
02/09/00 Version 1.20
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Verified display modes and graphics rendering on SC1200.
* Updated PLL table for SC1200 to set modes.
* DURANGO.C FILE CHANGE!: Modified and added compiler definitions.
* Split gfx_disp.c file into gu1_disp.c and gu2_disp.c
* Split gfx_rndr.c file into gu1_rndr.c and gu2_rndr.c
* Split gfx_vid.c file into vid_5530.c, vid_1400.c, and vid_1200.c
* Split gfx_vip.c file into vip_1400.c and vip_1200.c
* Split gfx_tv.c file into geode_tv.c and fs451_tv.c
* Split gfx_i2c.c file into acc_i2c.c and gpio_i2c.c.
* Split gfx_dcdr.c file to saa7114.c
* Added GFX_READ_ROUTINES compiler definition.
* Moved routines from gfx_read.c (no longer exists) to other files.
* Abstracted display controller access in the video overlay routines.
* Added routines to control display compression hardware.
=============================================================================
01/28/00 Version 1.13
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Passes randomly generated rendering tests in Darwin for GXLV.
* Fixed bug for large bitmap to screen BLTs (greater than 64K).
* Fixed bug for pattern fills using solid source data for plane masks.
=============================================================================
01/14/00 Version 1.12
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added proper use of hotspot to gfx_set_cursor_position.
* Fixed buffer size to handle all frame buffer start address alignments.
* Added initial version of gfx_tv.c.
=============================================================================
01/07/00 Version 1.11
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Fixed bug with transparent BLTs (loading transparent color into BB1).
* Added definition of gfx_color_bitmap_to_screen_blt to gfx_rtns.h.
* Added gfx_color_bitmap_to_screen_xblt (transparent bitmap to screen).
=============================================================================
12/21/99 Version 1.10
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added additional video decoder routines to gfx_dcdr.c.
* Added VBI routines to gfx_vip.c.
* Added alpha blending routines for SC1200 to gfx_vid.c
=============================================================================
10/01/99 Version 1.00
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Added video port, video decoder, I2C, and hardware query routines.
* New files: gfx_vip.c, gfx_dcdr.c, gfx_i2c.c, gfx_read.c.
=============================================================================
08/27/99 Version 0.05
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* INTERFACE CHANGE: Changed "gfx_csptr[]" to "gfx_vidptr" and "gfx_vipptr".
* Added "gfx_get_vid_register_base" and "gfx_get_vip_register_base".
* Added initial PLL table for SC1400.
* Verified mode set and video overlay routines work correctly on SC1400.
* Updated initialization routines.
* Added update of graphics engine in "gfx_set_display_pitch".
=============================================================================
08/20/99 Version 0.04
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* INTERFACE CHANGE: "gfx_load_*" routines changed to "gfx_set_*" for naming
consistency. The "gfx_text_glyph" routine was removed.
* Added video overlay routines.
* Added gfx_vid.c file.
=============================================================================
08/16/99 Version 0.03
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* INTERFACE CHANGE: Access to CS5530 now through separate pointer. Project
must declare and map the gfx_csptr[GFX_CSPTR_SIZE] variable.
* Added durango.c file as template for main source file.
* Added gfx_init.c file.
=============================================================================
08/04/99 Version 0.02
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Additional modes in gfx_mode.h file.
* Separated register definitions from gfx_defs.h into gfx_regs.h.
=============================================================================
07/30/99 Version 0.01
-----------------------------------------------------------------------------
FUNCTIONAL CHANGES
-----------------------------------------------------------------------------
* Initial release.
-----------------------------------------------------------------------------
|