summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoridr <idr>2003-04-07 21:50:07 +0000
committeridr <idr>2003-04-07 21:50:07 +0000
commit45c68b451f24380ab2c559ff22727db98674380c (patch)
tree0fa780ab3e28d5811c50c03fb96b6e50c2699e0b
parentb4822972522a7bc360e36b924785ce1a0b348771 (diff)
"Final" round of trunk-to-branch merges.texmem-0-0-1-20030407
-rw-r--r--xc/extras/Mesa/docs/VERSIONS55
-rw-r--r--xc/extras/Mesa/include/GL/gl.h2
-rw-r--r--xc/extras/Mesa/include/GL/glext.h8
-rw-r--r--xc/extras/Mesa/include/GL/xmesa.h1
-rw-r--r--xc/extras/Mesa/include/GL/xmesa_x.h2
-rw-r--r--xc/extras/Mesa/include/GL/xmesa_xf86.h2
-rw-r--r--xc/extras/Mesa/src/OSmesa/osmesa.c1
-rw-r--r--xc/extras/Mesa/src/X/fakeglx.c7
-rw-r--r--xc/extras/Mesa/src/X/xm_api.c5
-rw-r--r--xc/extras/Mesa/src/X/xm_dd.c8
-rw-r--r--xc/extras/Mesa/src/X/xm_span.c2
-rw-r--r--xc/extras/Mesa/src/X/xmesaP.h1
-rw-r--r--xc/extras/Mesa/src/X86/3dnow.c7
-rw-r--r--xc/extras/Mesa/src/X86/assyntax.h1
-rw-r--r--xc/extras/Mesa/src/X86/common_x86.c1
-rw-r--r--xc/extras/Mesa/src/X86/common_x86_asm.S1
-rw-r--r--xc/extras/Mesa/src/X86/common_x86_features.h1
-rw-r--r--xc/extras/Mesa/src/X86/mmx.h1
-rw-r--r--xc/extras/Mesa/src/X86/x86_cliptest.S1
-rw-r--r--xc/extras/Mesa/src/X86/x86_vertex.S309
-rw-r--r--xc/extras/Mesa/src/config.h1
-rw-r--r--xc/extras/Mesa/src/context.c15
-rw-r--r--xc/extras/Mesa/src/dd.h1
-rw-r--r--xc/extras/Mesa/src/dlist.c1
-rw-r--r--xc/extras/Mesa/src/enable.c1
-rw-r--r--xc/extras/Mesa/src/extensions.c1
-rw-r--r--xc/extras/Mesa/src/get.c80
-rw-r--r--xc/extras/Mesa/src/glheader.h1
-rw-r--r--xc/extras/Mesa/src/glthread.h2
-rw-r--r--xc/extras/Mesa/src/imports.c1
-rw-r--r--xc/extras/Mesa/src/imports.h1
-rw-r--r--xc/extras/Mesa/src/light.c5
-rw-r--r--xc/extras/Mesa/src/mmath.c2
-rw-r--r--xc/extras/Mesa/src/mmath.h21
-rw-r--r--xc/extras/Mesa/src/mtypes.h1
-rw-r--r--xc/extras/Mesa/src/pixel.c1
-rw-r--r--xc/extras/Mesa/src/points.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aaline.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aalinetemp.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aatriangle.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_aatritemp.h1
-rw-r--r--xc/extras/Mesa/src/swrast/s_lines.c28
-rw-r--r--xc/extras/Mesa/src/swrast/s_span.c1
-rw-r--r--xc/extras/Mesa/src/swrast/s_texture.c329
-rw-r--r--xc/extras/Mesa/src/swrast/s_tritemp.h2
-rw-r--r--xc/extras/Mesa/src/swrast/s_zoom.c1
-rw-r--r--xc/extras/Mesa/src/texcompress.c1
-rw-r--r--xc/extras/Mesa/src/teximage.c7
-rw-r--r--xc/extras/Mesa/src/texobj.c6
-rw-r--r--xc/extras/Mesa/src/texstate.c1
-rw-r--r--xc/extras/Mesa/src/texstate.h5
-rw-r--r--xc/extras/Mesa/src/texstore.c2
-rw-r--r--xc/extras/Mesa/src/texutil_tmp.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_api.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_imm_exec.c6
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_program.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vb_texgen.c7
-rw-r--r--xc/extras/Mesa/src/tnl/t_vtx_api.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vtx_api.h1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vtx_exec.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vtx_sse.c1
-rw-r--r--xc/extras/Mesa/src/tnl/t_vtx_x86.c1
-rw-r--r--xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h4
-rw-r--r--xc/extras/Mesa/src/varray.h1
-rw-r--r--xc/extras/Mesa/src/vpexec.c21
-rw-r--r--xc/extras/Mesa/src/vpexec.h1
-rw-r--r--xc/extras/Mesa/src/vpparse.c7
-rw-r--r--xc/extras/Mesa/src/vpparse.h1
-rw-r--r--xc/extras/Mesa/src/vpstate.c1
-rw-r--r--xc/extras/Mesa/src/vpstate.h1
-rw-r--r--xc/include/GL/glx.h2
-rw-r--r--xc/include/GL/glxproto.h1
-rw-r--r--xc/lib/GL/dri/dri_util.c2
-rw-r--r--xc/lib/GL/dri/drm/Imakefile2
-rw-r--r--xc/lib/GL/glx/glxclient.h7
-rw-r--r--xc/lib/GL/glx/glxcmds.c71
-rw-r--r--xc/lib/GL/glx/glxext.c2
-rw-r--r--xc/lib/GL/glx/pixel.c2
-rw-r--r--xc/lib/GL/glx/single2.c3
-rw-r--r--xc/lib/GL/mesa/src/X86/Imakefile2
-rw-r--r--xc/lib/GL/mesa/src/drv/common/vblank.h1
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_points.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_rendertmp.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_state.c4
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c4
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_vb.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_vb.h1
-rw-r--r--xc/lib/GL/mesa/src/drv/ffb/ffb_xmesa.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/gamma/gamma_lock.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/gamma/gamma_state.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/gamma/gamma_texstate.c4
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h4
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgacontext.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgadd.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgaioctl.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgaioctl.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgapixel.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgapixel.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgarender.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgaspan.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgastate.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgastate.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgatex.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgatexmem.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgatris.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgatris.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgavb.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/mga/mgavb.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_context.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_context.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_dd.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_lock.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_lock.h4
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_screen.c17
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_screen.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_span.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_state.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_tex.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_tris.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_tris.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_vb.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r128/r128_vb.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_cmdbuf.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_context.c3
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_ioctl.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_maos_arrays.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_span.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_state.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_swtcl.c11
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_tcl.c6
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_tex.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_texmem.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_texstate.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c13
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_context.c3
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_context.h14
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c3
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_span.c2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_state.c27
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_state.h2
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c1
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c10
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c3
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c3
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c3
-rw-r--r--xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c11
-rw-r--r--xc/programs/Xserver/GL/dri/dri.c2
-rw-r--r--xc/programs/Xserver/GL/dri/dristruct.h2
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/Imakefile146
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/durango.c618
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/galstub.c158
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode.h332
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode.man31
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_accel.c1076
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_cursor.c362
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_dga.c504
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_driver.c2997
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_fourcc.h199
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_shadow.c454
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/geode_video.c1220
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu1.c2503
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu2.c2694
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/durango.c596
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_dcdr.c549
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_defs.h432
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_disp.c2153
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_i2c.c260
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_init.c699
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_mode.h227
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_msr.c247
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_regs.h1363
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rndr.c732
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rtns.h666
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_tv.c850
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_type.h422
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vga.c147
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vid.c1934
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vip.c577
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/history.h145
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_acc.c954
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_gpio.c745
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu1.c327
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu2.c246
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/msr_rdcl.c715
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/release.txt412
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu1.c1660
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu2.c2208
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/saa7114.c916
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_1200.c969
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.c3437
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.h318
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vga_gu1.c696
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_1200.c2532
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_5530.c1241
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_rdcl.c2580
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vip_1200.c673
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel.c178
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/92xx.h466
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.c967
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.h210
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.c694
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.h203
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.c775
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.h277
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.c180
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.h187
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/platform.c742
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_bios.c383
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_defs.h199
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_init.c613
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/panel/readme.txt301
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/geode/regacc.c301
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c1
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_proc.h8
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/vbe/Imakefile44
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.c1066
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.h328
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.c439
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.h91
-rw-r--r--xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe_module.c50
229 files changed, 659 insertions, 55306 deletions
diff --git a/xc/extras/Mesa/docs/VERSIONS b/xc/extras/Mesa/docs/VERSIONS
index b5626cc8d..8ab9c9a2f 100644
--- a/xc/extras/Mesa/docs/VERSIONS
+++ b/xc/extras/Mesa/docs/VERSIONS
@@ -1,5 +1,4 @@
-
Mesa Version History
====================
@@ -1081,15 +1080,53 @@ Mesa Version History
- fixed color overflow problem in DOT3 texture env mode
-5.1 Month day, 2003
+5.0.1 March 30, 2003
+ New:
+ - DOS driver updates from Daniel Borca
+ - updated GL/gl_mangle.h file (Bill Hoffman)
+ Bug fixes:
+ - auto mipmap generation for cube maps was broken (bug 641363)
+ - writing/clearing software alpha channels was unreliable
+ - minor compilation fixes for OS/2 (Evgeny Kotsuba)
+ - fixed some bad assertions found with shadowtex demo
+ - fixed error checking bug in glCopyTexSubImage2D (bug 659020)
+ - glRotate(angle, -x, 0, 0) was incorrect (bug 659677)
+ - fixed potential segfault in texture object validation (bug 659012)
+ - fixed some bogus code in _mesa_test_os_sse_exception_support (Linus)
+ - fix fog stride bug in tnl code for h/w drivers (Michel Danzer)
+ - fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080)
+ - glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3
+ - fixed compilation problem on Solaris7/x86 (bug 536406)
+ - fixed prefetch bug in 3DNow! code (Felix Kuhling)
+ - fixed NeXT build problem (FABSF macro)
+ - glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811)
+ - zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964)
+ - AA line and triangle Z values are now rounded, not truncated
+ - fixed color interpolation bug when GLchan==GLfloat (bug 694461)
+ - glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca)
+ - fixed a minor GL_COLOR_MATERIAL bug
+ - NV vertex program EXP instruction was broken
+ - glColorMask misbehaved with X window / pixmap rendering
+ - fix autoconf/libtool GLU C++ linker problem on Linux (a total hack)
+ - attempt to fix GGI compilation problem when MesaDemos not present
+ - NV vertex program ARL-relative fetches didn't work
+ Changes:
+ - use glPolygonOffset in gloss demo to avoid z-fighting artifacts
+ - updated winpos and pointblast demos to use ARB extensions
+ - disable SPARC normal transformation code (bug 673938)
+ - GLU fixes for OS/2 (Evgeny Kotsuba)
+
+
+5.0.2 Month day, 2003
New:
- - GL_ATI_texture_env_combine3 extension (Ian Romanick)
- - GL_SGI_texture_color_table extension (Eric Plante)
- - new X86 feature detection code (Petr Sebor)
Bug fixes:
- - really enable OpenGL 1.4 features in DOS driver.
- - glAreProgramsResidentNV was slightly incorrect
- - fixed issues in glDrawPixels and glCopyPixels for very wide images
+ - fixed texgen problem causing texcoord's Q to be zero (stex3d)
+ - default GL_TEXTURE_COMPARE_MODE_ARB was wrong
+ - GL_CURRENT_MATRIX_NV query was wrong
+ - GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one
+ - GL_LIST_MODE query wasn't correct
+ - GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported
+ - GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value
+ - blended, wide lines didn't always work correctly (bug 711595)
Changes:
- - dropped API trace feature (src/Trace/)
diff --git a/xc/extras/Mesa/include/GL/gl.h b/xc/extras/Mesa/include/GL/gl.h
index 79de16821..93398c252 100644
--- a/xc/extras/Mesa/include/GL/gl.h
+++ b/xc/extras/Mesa/include/GL/gl.h
@@ -1,5 +1,3 @@
-/* $Id: gl.h,v 1.26.2.2 2003/04/02 04:28:36 idr Exp $ */
-
/*
* Mesa 3-D graphics library
* Version: 5.0.1
diff --git a/xc/extras/Mesa/include/GL/glext.h b/xc/extras/Mesa/include/GL/glext.h
index 7d1f396bb..245f100c7 100644
--- a/xc/extras/Mesa/include/GL/glext.h
+++ b/xc/extras/Mesa/include/GL/glext.h
@@ -2423,11 +2423,6 @@ extern "C" {
#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911
#endif
-#ifndef GL_ATI_texture_env_combine3
-#define GL_MODULATE_ADD_ATI 0x8744
-#define GL_MODULATE_SIGNED_ADD_ATI 0x8745
-#define GL_MODULATE_SUBTRACT_ATI 0x8746
-#endif
/*************************************************************/
@@ -5021,9 +5016,6 @@ GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
typedef void (APIENTRY * PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
#endif
-#ifndef GL_ATI_texture_env_combine3
-#define GL_ATI_texture_env_combine3 1
-#endif
#ifdef __cplusplus
}
diff --git a/xc/extras/Mesa/include/GL/xmesa.h b/xc/extras/Mesa/include/GL/xmesa.h
index 49a511cc9..2b7f36754 100644
--- a/xc/extras/Mesa/include/GL/xmesa.h
+++ b/xc/extras/Mesa/include/GL/xmesa.h
@@ -1,4 +1,3 @@
-
/*
* Mesa 3-D graphics library
* Version: 4.1
diff --git a/xc/extras/Mesa/include/GL/xmesa_x.h b/xc/extras/Mesa/include/GL/xmesa_x.h
index ee92e975b..831c98014 100644
--- a/xc/extras/Mesa/include/GL/xmesa_x.h
+++ b/xc/extras/Mesa/include/GL/xmesa_x.h
@@ -30,7 +30,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* Authors:
* Kevin E. Martin <kevin@precisioninsight.com>
*
- * $Header: /home/ajax/dri-backup/xc/xc/extras/Mesa/include/GL/Attic/xmesa_x.h,v 1.7.14.1 2002/12/04 22:36:11 idr Exp $
+ * $Header: /home/ajax/dri-backup/xc/xc/extras/Mesa/include/GL/Attic/xmesa_x.h,v 1.7.14.2 2003/04/07 21:50:43 idr Exp $
*/
#ifndef _XMESA_X_H_
diff --git a/xc/extras/Mesa/include/GL/xmesa_xf86.h b/xc/extras/Mesa/include/GL/xmesa_xf86.h
index 08b7f461c..48ae615f1 100644
--- a/xc/extras/Mesa/include/GL/xmesa_xf86.h
+++ b/xc/extras/Mesa/include/GL/xmesa_xf86.h
@@ -30,7 +30,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* Authors:
* Kevin E. Martin <kevin@precisioninsight.com>
*
- * $Header: /home/ajax/dri-backup/xc/xc/extras/Mesa/include/GL/Attic/xmesa_xf86.h,v 1.8.14.1 2002/12/04 22:36:20 idr Exp $
+ * $Header: /home/ajax/dri-backup/xc/xc/extras/Mesa/include/GL/Attic/xmesa_xf86.h,v 1.8.14.2 2003/04/07 21:50:44 idr Exp $
*/
#ifndef _XMESA_XF86_H_
diff --git a/xc/extras/Mesa/src/OSmesa/osmesa.c b/xc/extras/Mesa/src/OSmesa/osmesa.c
index e5a79e1c3..02303cd73 100644
--- a/xc/extras/Mesa/src/OSmesa/osmesa.c
+++ b/xc/extras/Mesa/src/OSmesa/osmesa.c
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 5.0
diff --git a/xc/extras/Mesa/src/X/fakeglx.c b/xc/extras/Mesa/src/X/fakeglx.c
index 279425ac1..78907bff5 100644
--- a/xc/extras/Mesa/src/X/fakeglx.c
+++ b/xc/extras/Mesa/src/X/fakeglx.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 5.0
+ * Version: 5.0.1
*
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -65,7 +65,7 @@
#define SERVER_MINOR_VERSION 4
/* This is appended onto the glXGetClient/ServerString version strings. */
-#define MESA_GLX_VERSION "Mesa 5.0"
+#define MESA_GLX_VERSION "Mesa 5.0.1"
/* Who implemented this GLX? */
#define VENDOR "Brian Paul"
@@ -2646,7 +2646,6 @@ Fake_glXGetAGPOffsetMESA( const GLvoid *pointer )
}
-
extern struct _glxapi_table *_mesa_GetGLXDispatchTable(void);
struct _glxapi_table *_mesa_GetGLXDispatchTable(void)
{
diff --git a/xc/extras/Mesa/src/X/xm_api.c b/xc/extras/Mesa/src/X/xm_api.c
index 547abc6f3..f7c4dd282 100644
--- a/xc/extras/Mesa/src/X/xm_api.c
+++ b/xc/extras/Mesa/src/X/xm_api.c
@@ -1,5 +1,3 @@
-/* $Id: xm_api.c,v 1.9.4.2 2003/04/02 04:28:44 idr Exp $ */
-
/*
* Mesa 3-D graphics library
* Version: 5.0.1
@@ -23,7 +21,6 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/X/xm_api.c,v 1.2 2002/02/26 23:37:31 tsi Exp $ */
/*
* This file contains the implementations of all the XMesa* functions.
@@ -2487,7 +2484,7 @@ const char *XMesaGetString( XMesaContext c, int name )
{
(void) c;
if (name==XMESA_VERSION) {
- return "5.0";
+ return "5.0.1";
}
else if (name==XMESA_EXTENSIONS) {
return "";
diff --git a/xc/extras/Mesa/src/X/xm_dd.c b/xc/extras/Mesa/src/X/xm_dd.c
index e6313bab2..bdf906aea 100644
--- a/xc/extras/Mesa/src/X/xm_dd.c
+++ b/xc/extras/Mesa/src/X/xm_dd.c
@@ -1,10 +1,9 @@
-/* $Id: xm_dd.c,v 1.10.2.2 2003/04/02 04:28:45 idr Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 4.0.3
+ * Version: 5.0.1
*
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -23,7 +22,7 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/X/xm_dd.c,v 1.2 2002/02/26 23:37:31 tsi Exp $ */
+
#include "glxheader.h"
#include "context.h"
@@ -244,6 +243,7 @@ color_mask(GLcontext *ctx,
if (bmask) m |= GET_BLUEMASK(xmesa->xm_visual);
}
XMesaSetPlaneMask( xmesa->display, xmesa->xm_draw_buffer->cleargc, m );
+ XMesaSetPlaneMask( xmesa->display, xmesa->xm_draw_buffer->gc, m );
}
}
diff --git a/xc/extras/Mesa/src/X/xm_span.c b/xc/extras/Mesa/src/X/xm_span.c
index eda81ee0e..bb2ca7f1a 100644
--- a/xc/extras/Mesa/src/X/xm_span.c
+++ b/xc/extras/Mesa/src/X/xm_span.c
@@ -1,4 +1,3 @@
-
/*
* Mesa 3-D graphics library
* Version: 3.5
@@ -22,7 +21,6 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/X/xm_span.c,v 1.3 2002/02/27 21:07:54 tsi Exp $ */
#include "glxheader.h"
#include "colormac.h"
diff --git a/xc/extras/Mesa/src/X/xmesaP.h b/xc/extras/Mesa/src/X/xmesaP.h
index 90f275a66..89aeae1dc 100644
--- a/xc/extras/Mesa/src/X/xmesaP.h
+++ b/xc/extras/Mesa/src/X/xmesaP.h
@@ -1,4 +1,3 @@
-/* $Id: xmesaP.h,v 1.18.22.2 2003/04/02 04:28:45 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/3dnow.c b/xc/extras/Mesa/src/X86/3dnow.c
index 01cd056b5..d50c428b2 100644
--- a/xc/extras/Mesa/src/X86/3dnow.c
+++ b/xc/extras/Mesa/src/X86/3dnow.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 4.1
+ * Version: 5.0.1
*
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -78,7 +78,10 @@ void _mesa_init_3dnow_transform_asm( void )
ASSIGN_XFORM_GROUP( 3dnow, 3 );
ASSIGN_XFORM_GROUP( 3dnow, 4 );
+ /* There's a bug somewhere in the 3dnow_normal.S file that causes
+ * bad shading. Disable for now.
ASSIGN_NORM_GROUP( 3dnow );
+ */
#ifdef DEBUG
_math_test_all_transform_functions( "3DNow!" );
diff --git a/xc/extras/Mesa/src/X86/assyntax.h b/xc/extras/Mesa/src/X86/assyntax.h
index 25da11604..0230d8d0d 100644
--- a/xc/extras/Mesa/src/X86/assyntax.h
+++ b/xc/extras/Mesa/src/X86/assyntax.h
@@ -23,7 +23,6 @@
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/X86/assyntax.h,v 1.12 2002/09/09 21:30:02 dawes Exp $ */
/*
* assyntax.h
diff --git a/xc/extras/Mesa/src/X86/common_x86.c b/xc/extras/Mesa/src/X86/common_x86.c
index 1dda8fff3..d4e4894aa 100644
--- a/xc/extras/Mesa/src/X86/common_x86.c
+++ b/xc/extras/Mesa/src/X86/common_x86.c
@@ -1,4 +1,3 @@
-/* $Id: common_x86.c,v 1.15.10.3 2003/04/02 04:28:46 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/common_x86_asm.S b/xc/extras/Mesa/src/X86/common_x86_asm.S
index fdc2fe9e4..d068564f2 100644
--- a/xc/extras/Mesa/src/X86/common_x86_asm.S
+++ b/xc/extras/Mesa/src/X86/common_x86_asm.S
@@ -1,4 +1,3 @@
-/* $Id: common_x86_asm.S,v 1.13.2.5 2003/04/02 04:28:46 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/common_x86_features.h b/xc/extras/Mesa/src/X86/common_x86_features.h
index dd0adff7c..fb7fb38c5 100644
--- a/xc/extras/Mesa/src/X86/common_x86_features.h
+++ b/xc/extras/Mesa/src/X86/common_x86_features.h
@@ -1,4 +1,3 @@
-/* $Id: common_x86_features.h,v 1.5.22.3 2003/04/02 04:28:46 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/mmx.h b/xc/extras/Mesa/src/X86/mmx.h
index d5ba00c3f..068d96237 100644
--- a/xc/extras/Mesa/src/X86/mmx.h
+++ b/xc/extras/Mesa/src/X86/mmx.h
@@ -1,4 +1,3 @@
-/* $Id: mmx.h,v 1.6.22.2 2002/12/05 15:24:42 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/X86/x86_cliptest.S b/xc/extras/Mesa/src/X86/x86_cliptest.S
index 7c5b892b9..8d6a5fe2c 100644
--- a/xc/extras/Mesa/src/X86/x86_cliptest.S
+++ b/xc/extras/Mesa/src/X86/x86_cliptest.S
@@ -22,7 +22,6 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/X86/x86_cliptest.S,v 1.4 2002/03/05 20:27:24 dawes Exp $ */
/*
* NOTE: Avoid using spaces in between '(' ')' and arguments, especially
diff --git a/xc/extras/Mesa/src/X86/x86_vertex.S b/xc/extras/Mesa/src/X86/x86_vertex.S
deleted file mode 100644
index b69c52fb2..000000000
--- a/xc/extras/Mesa/src/X86/x86_vertex.S
+++ /dev/null
@@ -1,309 +0,0 @@
-/* $XFree86: xc/extras/Mesa/src/X86/x86_vertex.S,v 1.2 2002/03/05 20:27:24 dawes Exp $ */
-
-#include "matypes.h"
-
-
- SEG_TEXT
-
-/*#define MAT_SX 0*/ /* accessed by REGIND !! */
-#define MAT_SY 20
-#define MAT_SZ 40
-#define MAT_TX 48
-#define MAT_TY 52
-#define MAT_TZ 56
-
-
-#define FP_ONE 1065353216
-#define FP_ZERO 0
-
-#define S0 REGOFF(0, ESI)
-#define S1 REGOFF(4, ESI)
-#define S2 REGOFF(8, ESI)
-#define S3 REGOFF(12, ESI)
-#define D0 REGOFF(0, EDI)
-#define D1 REGOFF(4, EDI)
-#define D2 REGOFF(8, EDI)
-#define D3 REGOFF(12, EDI)
-#define M0 REGOFF(0, EDX)
-#define M1 REGOFF(4, EDX)
-#define M2 REGOFF(8, EDX)
-#define M3 REGOFF(12, EDX)
-
-
-
-/*
- * void _mesa_v16_x86_general_xform ( GLfloat *dest,
- * const GLfloat *m,
- * const GLfloat *src,
- * GLuint src_stride,
- * GLuint count )
- */
-
-
-/* This is nothing more glamorous than an objdump of one of Josh's
- * routines hacked to match the above.
- */
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_v16_x86_general_xform )
-GLNAME( _mesa_v16_x86_general_xform ):
-
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
-
- MOV_L ( REGOFF(12, ESP), EAX ) /* dest */
- MOV_L ( REGOFF(16, ESP), ESI ) /* mat */
- MOV_L ( REGOFF(20, ESP), EDX ) /* src */
- MOV_L ( REGOFF(24, ESP), EDI ) /* src_stride */
- MOV_L ( REGOFF(28, ESP), ECX ) /* count */
-
-
-LLBL(v16x86_loop):
- FLD_S ( REGOFF( 0x0, EDX ) )
- FMUL_S ( REGOFF( 0x0, ESI ) )
- FLD_S ( REGOFF( 0x0, EDX ) )
- FMUL_S ( REGOFF( 0x4, ESI ) )
- FLD_S ( REGOFF( 0x0, EDX ) )
- FMUL_S ( REGOFF( 0x8, ESI ) )
- FLD_S ( REGOFF( 0x0, EDX ) )
- FMUL_S ( REGOFF( 0xc, ESI ) )
- FLD_S ( REGOFF( 0x4, EDX ) )
- FMUL_S ( REGOFF( 0x10, ESI ) )
- FLD_S ( REGOFF( 0x4, EDX ) )
- FMUL_S ( REGOFF( 0x14, ESI ) )
- FLD_S ( REGOFF( 0x4, EDX ) )
- FMUL_S ( REGOFF( 0x18, ESI ) )
- FLD_S ( REGOFF( 0x4, EDX ) )
- FMUL_S ( REGOFF( 0x1c, ESI ) )
- FXCH ( ST(3) )
- FADDP ( ST0,ST(7) )
- FXCH ( ST(1) )
- FADDP ( ST0,ST(5) )
- FADDP ( ST0,ST(3) )
- FADDP ( ST0,ST(1) )
- FLD_S ( REGOFF( 0x8, EDX ) )
- FMUL_S ( REGOFF( 0x20, ESI ) )
- FLD_S ( REGOFF( 0x8, EDX ) )
- FMUL_S ( REGOFF( 0x24, ESI ) )
- FLD_S ( REGOFF( 0x8, EDX ) )
- FMUL_S ( REGOFF( 0x28, ESI ) )
- FLD_S ( REGOFF( 0x8, EDX ) )
- FMUL_S ( REGOFF( 0x2c, ESI ) )
- FXCH ( ST(3) )
- FADDP ( ST0,ST(7) )
- FXCH ( ST(1) )
- FADDP ( ST0,ST(5) )
- FADDP ( ST0,ST(3) )
- FADDP ( ST0,ST(1) )
- FXCH ( ST(3) )
- FADD_S ( REGOFF( 0x30, ESI ) )
- FXCH ( ST(2) )
- FADD_S ( REGOFF( 0x34, ESI ) )
- FXCH ( ST(1) )
- FADD_S ( REGOFF( 0x38, ESI ) )
- FXCH ( ST(3) )
- FADD_S ( REGOFF( 0x3c, ESI ) )
- FXCH ( ST(2) )
- FSTP_S ( REGOFF( 0x0, EAX ) )
- FSTP_S ( REGOFF( 0x4, EAX ) )
- FXCH ( ST(1) )
- FSTP_S ( REGOFF( 0x8, EAX ) )
- FSTP_S ( REGOFF( 0xc, EAX ) )
- ADD_L ( CONST(64), EAX )
- ADD_L ( EDI, EDX )
- DEC_L ( ECX )
- JNE ( LLBL(v16x86_loop) )
-
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-/*
- * Table for clip test.
- *
- * bit6 = S3 < 0
- * bit5 = S2 < 0
- * bit4 = abs(S2) > abs(S3)
- * bit3 = S1 < 0
- * bit2 = abs(S1) > abs(S3)
- * bit1 = S0 < 0
- * bit0 = abs(S0) > abs(S3)
- */
-
-
- SEG_DATA
-
-clip_table:
- D_BYTE 0, 1, 0, 2, 4, 5, 4, 6
- D_BYTE 0, 1, 0, 2, 8, 9, 8, 10
- D_BYTE 32, 33, 32, 34, 36, 37, 36, 38
- D_BYTE 32, 33, 32, 34, 40, 41, 40, 42
- D_BYTE 0, 1, 0, 2, 4, 5, 4, 6
- D_BYTE 0, 1, 0, 2, 8, 9, 8, 10
- D_BYTE 16, 17, 16, 18, 20, 21, 20, 22
- D_BYTE 16, 17, 16, 18, 24, 25, 24, 26
- D_BYTE 63, 61, 63, 62, 55, 53, 55, 54
- D_BYTE 63, 61, 63, 62, 59, 57, 59, 58
- D_BYTE 47, 45, 47, 46, 39, 37, 39, 38
- D_BYTE 47, 45, 47, 46, 43, 41, 43, 42
- D_BYTE 63, 61, 63, 62, 55, 53, 55, 54
- D_BYTE 63, 61, 63, 62, 59, 57, 59, 58
- D_BYTE 31, 29, 31, 30, 23, 21, 23, 22
- D_BYTE 31, 29, 31, 30, 27, 25, 27, 26
-
- SEG_TEXT
-
-
-/*
-########################################
-##
-## _mesa_v16_x86_cliptest_points4
-##
-## Performs cliptesting equivalent to that done by cliptest_v16()
-## in vertices.c
-##
-## This is a hacked version of the original above.
-##
-########################################
-*/
-
-
-
-#define OFFSET_V16_SOURCE 4
-#define OFFSET_V16_LAST 8
-#define OFFSET_V16_OR 12
-#define OFFSET_V16_AND 16
-#define OFFSET_V16_MASK 20
-
-#define ARG_V16_SOURCE REGOFF(V16_FRAME_OFFSET+OFFSET_V16_SOURCE, ESP)
-#define ARG_V16_LAST REGOFF(V16_FRAME_OFFSET+OFFSET_V16_LAST, ESP)
-#define ARG_V16_OR REGOFF(V16_FRAME_OFFSET+OFFSET_V16_OR, ESP)
-#define ARG_V16_AND REGOFF(V16_FRAME_OFFSET+OFFSET_V16_AND, ESP)
-#define ARG_V16_MASK REGOFF(V16_FRAME_OFFSET+OFFSET_V16_MASK, ESP)
-
-
-#if defined(__ELF__) && defined(__PIC__) && !defined(ELFPIC)
-#define ELFPIC
-#endif
-
- GLOBL GLNAME(_mesa_v16_x86_cliptest_points4)
- ALIGNTEXT4
-
-GLNAME(_mesa_v16_x86_cliptest_points4):
-#ifdef ELFPIC
-#define V16_FRAME_OFFSET 20
-#else
-#define V16_FRAME_OFFSET 16
-#endif
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBP )
- PUSH_L( EBX )
-
-#ifdef ELFPIC
- /* store pointer to clip_table on stack */
- CALL( LLBL(v16_ctp4_get_eip) )
- ADD_L( CONST(_GLOBAL_OFFSET_TABLE_), EBX )
- MOV_L( REGOFF(clip_table@GOT, EBX), EBX )
- PUSH_L( EBX )
- JMP( LLBL(v16_ctp4_clip_table_ready) )
-
-LLBL(v16_ctp4_get_eip):
- /* store eip in ebx */
- MOV_L( REGIND(ESP), EBX )
- RET
-
-LLBL(v16_ctp4_clip_table_ready):
-#endif
-
- MOV_L( ARG_V16_SOURCE, ESI ) /* ptr to first source vertex */
- MOV_L( ARG_V16_LAST, EDX ) /* ptr to last source vertex */
- MOV_L( ARG_V16_OR, EBX )
- MOV_L( ARG_V16_AND, EBP )
- MOV_L( ARG_V16_MASK, EDI )
-
- CMP_L( EDX, ESI )
-
- MOV_B( REGIND(EBX), AL )
- MOV_B( REGIND(EBP), AH )
-
- JZ( LLBL(v16_ctp4_finish) )
-
- ALIGNTEXT4ifNOP
-LLBL(v16_ctp4_top):
-#if 0
- FLD1 /* F0 */
- FDIV_S( S3 )
-#endif
-
- MOV_L( S3, EBP )
- MOV_L( S2, EBX )
-
- XOR_L( ECX, ECX )
- ADD_L( EBP, EBP ) /* ebp = abs(S3)*2 ; carry = sign of S3 */
-
- ADC_L( ECX, ECX )
- ADD_L( EBX, EBX ) /* ebx = abs(S2)*2 ; carry = sign of S2 */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S2)*2 > abs(S3)*2 */
-
- ADC_L( ECX, ECX )
- MOV_L( S1, EBX )
-
- ADD_L( EBX, EBX ) /* ebx = abs(S1)*2 ; carry = sign of S1 */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S1)*2 > abs(S3)*2 */
-
- ADC_L( ECX, ECX )
- MOV_L( S0, EBX )
-
- ADD_L( EBX, EBX ) /* ebx = abs(S0)*2 ; carry = sign of S0 */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S0)*2 > abs(S3)*2 */
-
- ADC_L( ECX, ECX )
-
-#ifdef ELFPIC
- MOV_L( REGIND(ESP), EBP ) /* clip_table */
-
- MOV_B( REGBI(EBP, ECX), CL )
-#else
- MOV_B( REGOFF(clip_table,ECX), CL )
-#endif
-
- OR_B( CL, AL )
- AND_B( CL, AH )
-
- MOV_B( CL, REGIND(EDI) ) /* save clipmask */
- INC_L( EDI ) /* next clipmask */
-
-#if 0
- FSTP_S( S8 ) /* */ /* GR_VERTEX_OOW_OFFSET */
-#endif
-
- ADD_L( CONST(64), ESI ) /* next fxVertex */
-
- CMP_L( EDX, ESI ) /* finished? */
- JNZ( LLBL(v16_ctp4_top) )
-
- MOV_L( ARG_V16_OR, ECX )
- MOV_L( ARG_V16_AND, EDX )
-
- MOV_B( AL, REGIND(ECX) )
- MOV_B( AH, REGIND(EDX) )
-
-LLBL(v16_ctp4_finish):
-
-#ifdef ELFPIC
- POP_L( ESI ) /* discard ptr to clip_table */
-#endif
- POP_L( EBX )
- POP_L( EBP )
- POP_L( EDI )
- POP_L( ESI )
-
- RET
diff --git a/xc/extras/Mesa/src/config.h b/xc/extras/Mesa/src/config.h
index a085f88ee..7b82bd7d8 100644
--- a/xc/extras/Mesa/src/config.h
+++ b/xc/extras/Mesa/src/config.h
@@ -1,4 +1,3 @@
-/* $Id: config.h,v 1.18.2.2 2003/04/02 04:28:37 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/context.c b/xc/extras/Mesa/src/context.c
index 82037a2f6..c6baf57ec 100644
--- a/xc/extras/Mesa/src/context.c
+++ b/xc/extras/Mesa/src/context.c
@@ -984,19 +984,20 @@ init_attrib_groups( GLcontext *ctx )
ctx->Color.DitherFlag = GL_TRUE;
/* Current group */
- ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_WEIGHT], 0.0, 0.0, 0.0, 0.0 );
- ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 0.0 );
+ for (i = 0; i < VERT_ATTRIB_MAX; i++) {
+ ASSIGN_4V( ctx->Current.Attrib[i], 0.0, 0.0, 0.0, 1.0 );
+ }
+ /* special cases: */
+ ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_WEIGHT], 1.0, 0.0, 0.0, 1.0 );
+ ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 1.0 );
ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], 1.0, 1.0, 1.0, 1.0 );
- ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR1], 0.0, 0.0, 0.0, 0.0 );
- ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_FOG], 0.0, 0.0, 0.0, 0.0 );
- for (i = 0; i < MAX_TEXTURE_UNITS; i++)
- ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_TEX0 + i], 0.0, 0.0, 0.0, 1.0 );
ctx->Current.Index = 1;
ctx->Current.EdgeFlag = GL_TRUE;
ASSIGN_4V( ctx->Current.RasterPos, 0.0, 0.0, 0.0, 1.0 );
ctx->Current.RasterDistance = 0.0;
ASSIGN_4V( ctx->Current.RasterColor, 1.0, 1.0, 1.0, 1.0 );
+ ASSIGN_4V( ctx->Current.RasterSecondaryColor, 0.0, 0.0, 0.0, 0.0 );
ctx->Current.RasterIndex = 1;
for (i=0; i<MAX_TEXTURE_UNITS; i++)
ASSIGN_4V( ctx->Current.RasterTexCoords[i], 0.0, 0.0, 0.0, 1.0 );
@@ -1367,7 +1368,7 @@ init_attrib_groups( GLcontext *ctx )
ctx->Array.Color.Ptr = NULL;
ctx->Array.Color.Enabled = GL_FALSE;
ctx->Array.Color.Flags = CA_CLIENT_DATA;
- ctx->Array.SecondaryColor.Size = 4;
+ ctx->Array.SecondaryColor.Size = 3;
ctx->Array.SecondaryColor.Type = GL_FLOAT;
ctx->Array.SecondaryColor.Stride = 0;
ctx->Array.SecondaryColor.StrideB = 0;
diff --git a/xc/extras/Mesa/src/dd.h b/xc/extras/Mesa/src/dd.h
index 6e5f759f4..1df55ba20 100644
--- a/xc/extras/Mesa/src/dd.h
+++ b/xc/extras/Mesa/src/dd.h
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 4.1
diff --git a/xc/extras/Mesa/src/dlist.c b/xc/extras/Mesa/src/dlist.c
index 0afa4438f..1e67f2b0e 100644
--- a/xc/extras/Mesa/src/dlist.c
+++ b/xc/extras/Mesa/src/dlist.c
@@ -1,4 +1,3 @@
-/* $Id: dlist.c,v 1.20.16.3 2003/04/02 04:28:37 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/enable.c b/xc/extras/Mesa/src/enable.c
index dc35f2df9..a303a72d6 100644
--- a/xc/extras/Mesa/src/enable.c
+++ b/xc/extras/Mesa/src/enable.c
@@ -1,4 +1,3 @@
-/* $Id: enable.c,v 1.19.2.2 2003/04/02 04:28:38 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/extensions.c b/xc/extras/Mesa/src/extensions.c
index 087f636cc..9b6662246 100644
--- a/xc/extras/Mesa/src/extensions.c
+++ b/xc/extras/Mesa/src/extensions.c
@@ -1,4 +1,3 @@
-/* $Id: extensions.c,v 1.23.2.5 2003/04/02 04:28:38 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/get.c b/xc/extras/Mesa/src/get.c
index 8b50fe3c6..508d06921 100644
--- a/xc/extras/Mesa/src/get.c
+++ b/xc/extras/Mesa/src/get.c
@@ -1,8 +1,6 @@
-/* $Id: get.c,v 1.25.2.3 2003/04/02 04:28:38 idr Exp $ */
-
/*
* Mesa 3-D graphics library
- * Version: 5.0.1
+ * Version: 5.0.2
*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
@@ -476,8 +474,12 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
*params = INT_TO_BOOL( ctx->CurrentListNum );
break;
case GL_LIST_MODE:
- *params = ENUM_TO_BOOL( ctx->ExecuteFlag
- ? GL_COMPILE_AND_EXECUTE : GL_COMPILE );
+ if (!ctx->CompileFlag)
+ *params = 0;
+ else if (ctx->ExecuteFlag)
+ *params = ENUM_TO_BOOL(GL_COMPILE_AND_EXECUTE);
+ else
+ *params = ENUM_TO_BOOL(GL_COMPILE);
break;
case GL_INDEX_LOGIC_OP:
*params = ctx->Color.IndexLogicOpEnabled;
@@ -1256,7 +1258,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
break;
case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
CHECK_EXTENSION_B(EXT_secondary_color, pname);
- *params = INT_TO_BOOL(ctx->Array.SecondaryColor.Stride);
+ *params = INT_TO_BOOL(ctx->Array.SecondaryColor.Size);
break;
/* GL_EXT_fog_coord */
@@ -1277,6 +1279,10 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
CHECK_EXTENSION_B(EXT_fog_coord, pname);
*params = INT_TO_BOOL(ctx->Array.FogCoord.Stride);
break;
+ case GL_FOG_COORDINATE_SOURCE_EXT:
+ CHECK_EXTENSION_B(EXT_fog_coord, pname);
+ *params = ENUM_TO_BOOL(ctx->Fog.FogCoordinateSource);
+ break;
/* GL_EXT_texture_lod_bias */
case GL_MAX_TEXTURE_LOD_BIAS_EXT:
@@ -1368,11 +1374,12 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
break;
case GL_CURRENT_MATRIX_STACK_DEPTH_NV:
CHECK_EXTENSION_B(NV_vertex_program, pname);
- *params = (ctx->CurrentStack->Depth > 0) ? GL_TRUE : GL_FALSE;
+ *params = GL_TRUE;
break;
case GL_CURRENT_MATRIX_NV:
CHECK_EXTENSION_B(NV_vertex_program, pname);
- *params = (ctx->Transform.MatrixMode != 0) ? GL_TRUE : GL_FALSE;
+ for (i = 0; i < 16; i++)
+ params[i] = FLOAT_TO_BOOL(ctx->CurrentStack->Top->m[i]);
break;
case GL_VERTEX_PROGRAM_BINDING_NV:
CHECK_EXTENSION_B(NV_vertex_program, pname);
@@ -1845,8 +1852,12 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
*params = (GLdouble) ctx->CurrentListNum;
break;
case GL_LIST_MODE:
- *params = ctx->ExecuteFlag ? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE)
- : ENUM_TO_DOUBLE(GL_COMPILE);
+ if (!ctx->CompileFlag)
+ *params = 0.0;
+ else if (ctx->ExecuteFlag)
+ *params = ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE);
+ else
+ *params = ENUM_TO_DOUBLE(GL_COMPILE);
break;
case GL_INDEX_LOGIC_OP:
*params = (GLdouble) ctx->Color.IndexLogicOpEnabled;
@@ -2622,7 +2633,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
break;
case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
CHECK_EXTENSION_D(EXT_secondary_color, pname);
- *params = (GLdouble) ctx->Array.SecondaryColor.Stride;
+ *params = (GLdouble) ctx->Array.SecondaryColor.Size;
break;
/* GL_EXT_fog_coord */
@@ -2643,6 +2654,10 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
CHECK_EXTENSION_D(EXT_fog_coord, pname);
*params = (GLdouble) ctx->Array.FogCoord.Stride;
break;
+ case GL_FOG_COORDINATE_SOURCE_EXT:
+ CHECK_EXTENSION_D(EXT_fog_coord, pname);
+ *params = (GLdouble) ctx->Fog.FogCoordinateSource;
+ break;
/* GL_EXT_texture_lod_bias */
case GL_MAX_TEXTURE_LOD_BIAS_EXT:
@@ -2734,11 +2749,12 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
break;
case GL_CURRENT_MATRIX_STACK_DEPTH_NV:
CHECK_EXTENSION_D(NV_vertex_program, pname);
- *params = (GLdouble) ctx->CurrentStack->Depth;
+ *params = (GLdouble) ctx->CurrentStack->Depth + 1;
break;
case GL_CURRENT_MATRIX_NV:
CHECK_EXTENSION_D(NV_vertex_program, pname);
- *params = (GLdouble) ctx->Transform.MatrixMode;
+ for (i = 0; i < 16; i++)
+ params[i] = (GLdouble) ctx->CurrentStack->Top->m[i];
break;
case GL_VERTEX_PROGRAM_BINDING_NV:
CHECK_EXTENSION_D(NV_vertex_program, pname);
@@ -3211,8 +3227,12 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
*params = (GLfloat) ctx->CurrentListNum;
break;
case GL_LIST_MODE:
- *params = ctx->ExecuteFlag ? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE)
- : ENUM_TO_FLOAT(GL_COMPILE);
+ if (!ctx->CompileFlag)
+ *params = 0.0F;
+ else if (ctx->ExecuteFlag)
+ *params = ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE);
+ else
+ *params = ENUM_TO_FLOAT(GL_COMPILE);
break;
case GL_INDEX_LOGIC_OP:
*params = (GLfloat) ctx->Color.IndexLogicOpEnabled;
@@ -3964,7 +3984,7 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
break;
case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
CHECK_EXTENSION_F(EXT_secondary_color, pname);
- *params = (GLfloat) ctx->Array.SecondaryColor.Stride;
+ *params = (GLfloat) ctx->Array.SecondaryColor.Size;
break;
/* GL_EXT_fog_coord */
@@ -3985,6 +4005,10 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
CHECK_EXTENSION_F(EXT_fog_coord, pname);
*params = (GLfloat) ctx->Array.FogCoord.Stride;
break;
+ case GL_FOG_COORDINATE_SOURCE_EXT:
+ CHECK_EXTENSION_F(EXT_fog_coord, pname);
+ *params = (GLfloat) ctx->Fog.FogCoordinateSource;
+ break;
/* GL_EXT_texture_lod_bias */
case GL_MAX_TEXTURE_LOD_BIAS_EXT:
@@ -4076,11 +4100,12 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
break;
case GL_CURRENT_MATRIX_STACK_DEPTH_NV:
CHECK_EXTENSION_F(NV_vertex_program, pname);
- *params = (GLfloat) ctx->CurrentStack->Depth;
+ *params = (GLfloat) ctx->CurrentStack->Depth + 1;
break;
case GL_CURRENT_MATRIX_NV:
CHECK_EXTENSION_F(NV_vertex_program, pname);
- *params = (GLfloat) ctx->Transform.MatrixMode;
+ for (i = 0; i < 16; i++)
+ params[i] = ctx->CurrentStack->Top->m[i];
break;
case GL_VERTEX_PROGRAM_BINDING_NV:
CHECK_EXTENSION_F(NV_vertex_program, pname);
@@ -4554,8 +4579,12 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
*params = (GLint) ctx->CurrentListNum;
break;
case GL_LIST_MODE:
- *params = ctx->ExecuteFlag ? (GLint) GL_COMPILE_AND_EXECUTE
- : (GLint) GL_COMPILE;
+ if (!ctx->CompileFlag)
+ *params = 0;
+ else if (ctx->ExecuteFlag)
+ *params = (GLint) GL_COMPILE_AND_EXECUTE;
+ else
+ *params = (GLint) GL_COMPILE;
break;
case GL_INDEX_LOGIC_OP:
*params = (GLint) ctx->Color.IndexLogicOpEnabled;
@@ -5345,7 +5374,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
break;
case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
CHECK_EXTENSION_I(EXT_secondary_color, pname);
- *params = (GLint) ctx->Array.SecondaryColor.Stride;
+ *params = (GLint) ctx->Array.SecondaryColor.Size;
break;
/* GL_EXT_fog_coord */
@@ -5366,6 +5395,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
CHECK_EXTENSION_I(EXT_fog_coord, pname);
*params = (GLint) ctx->Array.FogCoord.Stride;
break;
+ case GL_FOG_COORDINATE_SOURCE_EXT:
+ CHECK_EXTENSION_I(EXT_fog_coord, pname);
+ *params = (GLint) ctx->Fog.FogCoordinateSource;
+ break;
/* GL_EXT_texture_lod_bias */
case GL_MAX_TEXTURE_LOD_BIAS_EXT:
@@ -5457,11 +5490,12 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
break;
case GL_CURRENT_MATRIX_STACK_DEPTH_NV:
CHECK_EXTENSION_I(NV_vertex_program, pname);
- *params = ctx->CurrentStack->Depth;
+ *params = ctx->CurrentStack->Depth + 1;
break;
case GL_CURRENT_MATRIX_NV:
CHECK_EXTENSION_I(NV_vertex_program, pname);
- *params = (GLint) ctx->Transform.MatrixMode;
+ for (i = 0; i < 16; i++)
+ params[i] = (GLint) ctx->CurrentStack->Top->m[i];
break;
case GL_VERTEX_PROGRAM_BINDING_NV:
CHECK_EXTENSION_I(NV_vertex_program, pname);
diff --git a/xc/extras/Mesa/src/glheader.h b/xc/extras/Mesa/src/glheader.h
index 794b99745..ea3ecee4a 100644
--- a/xc/extras/Mesa/src/glheader.h
+++ b/xc/extras/Mesa/src/glheader.h
@@ -22,7 +22,6 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/glheader.h,v 1.18 2002/09/09 21:29:38 dawes Exp $ */
#ifndef GLHEADER_H
diff --git a/xc/extras/Mesa/src/glthread.h b/xc/extras/Mesa/src/glthread.h
index 051965446..00710c105 100644
--- a/xc/extras/Mesa/src/glthread.h
+++ b/xc/extras/Mesa/src/glthread.h
@@ -22,7 +22,7 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/glthread.h,v 1.4 2002/02/22 19:25:32 dawes Exp $ */
+
/*
* Thread support for gl dispatch.
diff --git a/xc/extras/Mesa/src/imports.c b/xc/extras/Mesa/src/imports.c
index ef728186c..83e9ce0d7 100644
--- a/xc/extras/Mesa/src/imports.c
+++ b/xc/extras/Mesa/src/imports.c
@@ -1,4 +1,3 @@
-/* $Id: imports.c,v 1.4.22.3 2003/04/02 04:28:41 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/imports.h b/xc/extras/Mesa/src/imports.h
index c5856a07d..33c329c9c 100644
--- a/xc/extras/Mesa/src/imports.h
+++ b/xc/extras/Mesa/src/imports.h
@@ -1,4 +1,3 @@
-/* $Id: imports.h,v 1.4.22.3 2003/04/02 04:28:41 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/light.c b/xc/extras/Mesa/src/light.c
index 25ff41889..0e7f2295a 100644
--- a/xc/extras/Mesa/src/light.c
+++ b/xc/extras/Mesa/src/light.c
@@ -1242,11 +1242,6 @@ _mesa_compute_light_positions( GLcontext *ctx )
if (ctx->_NeedEyeCoords) {
COPY_4FV( light->_Position, light->EyePosition );
-#if 0
- light->_Position[0] /= light->_Position[3];
- light->_Position[1] /= light->_Position[3];
- light->_Position[2] /= light->_Position[3];
-#endif
}
else {
TRANSFORM_POINT( light->_Position, ctx->ModelviewMatrixStack.Top->inv,
diff --git a/xc/extras/Mesa/src/mmath.c b/xc/extras/Mesa/src/mmath.c
index 6abeb74cf..212628a4c 100644
--- a/xc/extras/Mesa/src/mmath.c
+++ b/xc/extras/Mesa/src/mmath.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/extras/Mesa/src/mmath.c,v 1.6 2002/02/22 19:25:36 dawes Exp $ */
+
/*
* Mesa 3-D graphics library
* Version: 3.5
diff --git a/xc/extras/Mesa/src/mmath.h b/xc/extras/Mesa/src/mmath.h
index b701b941d..1c3d17d59 100644
--- a/xc/extras/Mesa/src/mmath.h
+++ b/xc/extras/Mesa/src/mmath.h
@@ -1,8 +1,6 @@
-/* $Id: mmath.h,v 1.29.10.2 2003/04/02 04:28:41 idr Exp $ */
-
/*
* Mesa 3-D graphics library
- * Version: 5.0.1
+ * Version: 5.0.2
*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
@@ -189,22 +187,19 @@ do { \
/*
* Single precision ceiling, floor, and absolute value functions
*/
-#if defined(__sparc__) || defined(__NeXT__) /* XXX this probably isn't the ideal test */
-#define CEILF(x) ceil(x)
-#define FLOORF(x) floor(x)
-#define FABSF(x) fabs(x)
-#elif defined(__WIN32__) || defined(__IBMC__) || defined(__IBMCPP__)
-#define CEILF(x) ((GLfloat)ceil(x))
-#define FLOORF(x) ((GLfloat)floor(x))
-#define FABSF(x) ((GLfloat)fabs(x))
-#elif defined(XFree86LOADER) && defined(IN_MODULE)
+#if defined(XFree86LOADER) && defined(IN_MODULE)
#define CEILF(x) ((GLfloat) xf86ceil(x))
#define FLOORF(x) ((GLfloat) xf86floor(x))
#define FABSF(x) ((GLfloat) xf86fabs(x))
-#else
+#elif defined(__gnu_linux__)
+/* C99 functions */
#define CEILF(x) ceilf(x)
#define FLOORF(x) floorf(x)
#define FABSF(x) fabsf(x)
+#else
+#define CEILF(x) ((GLfloat) ceil(x))
+#define FLOORF(x) ((GLfloat) floor(x))
+#define FABSF(x) ((GLfloat) fabs(x))
#endif
diff --git a/xc/extras/Mesa/src/mtypes.h b/xc/extras/Mesa/src/mtypes.h
index 1a3248ae6..bd81cc73f 100644
--- a/xc/extras/Mesa/src/mtypes.h
+++ b/xc/extras/Mesa/src/mtypes.h
@@ -1,4 +1,3 @@
-/* $Id: mtypes.h,v 1.8.2.5 2003/04/02 04:28:41 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/pixel.c b/xc/extras/Mesa/src/pixel.c
index bf699d572..439e74003 100644
--- a/xc/extras/Mesa/src/pixel.c
+++ b/xc/extras/Mesa/src/pixel.c
@@ -1,4 +1,3 @@
-/* $Id: pixel.c,v 1.15.2.2 2003/04/02 04:28:41 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/points.c b/xc/extras/Mesa/src/points.c
index 00941e6f2..3d59b3300 100644
--- a/xc/extras/Mesa/src/points.c
+++ b/xc/extras/Mesa/src/points.c
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 4.1
diff --git a/xc/extras/Mesa/src/swrast/s_aaline.c b/xc/extras/Mesa/src/swrast/s_aaline.c
index acbfe9e72..b2f5f8681 100644
--- a/xc/extras/Mesa/src/swrast/s_aaline.c
+++ b/xc/extras/Mesa/src/swrast/s_aaline.c
@@ -1,4 +1,3 @@
-/* $Id: s_aaline.c,v 1.4.22.2 2003/04/02 04:28:46 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aalinetemp.h b/xc/extras/Mesa/src/swrast/s_aalinetemp.h
index 14bea1363..2adf91867 100644
--- a/xc/extras/Mesa/src/swrast/s_aalinetemp.h
+++ b/xc/extras/Mesa/src/swrast/s_aalinetemp.h
@@ -1,4 +1,3 @@
-/* $Id: s_aalinetemp.h,v 1.4.22.2 2003/04/02 04:28:47 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aatriangle.c b/xc/extras/Mesa/src/swrast/s_aatriangle.c
index ab98b8ddf..5d25e6ffe 100644
--- a/xc/extras/Mesa/src/swrast/s_aatriangle.c
+++ b/xc/extras/Mesa/src/swrast/s_aatriangle.c
@@ -1,4 +1,3 @@
-/* $Id: s_aatriangle.c,v 1.4.22.2 2003/04/02 04:28:47 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_aatritemp.h b/xc/extras/Mesa/src/swrast/s_aatritemp.h
index 21a6ba589..e76a2ac33 100644
--- a/xc/extras/Mesa/src/swrast/s_aatritemp.h
+++ b/xc/extras/Mesa/src/swrast/s_aatritemp.h
@@ -1,4 +1,3 @@
-/* $Id: s_aatritemp.h,v 1.4.22.2 2003/04/02 04:28:47 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_lines.c b/xc/extras/Mesa/src/swrast/s_lines.c
index eabfdcce0..6900261bd 100644
--- a/xc/extras/Mesa/src/swrast/s_lines.c
+++ b/xc/extras/Mesa/src/swrast/s_lines.c
@@ -1,9 +1,8 @@
-
/*
* Mesa 3-D graphics library
- * Version: 5.0
+ * Version: 5.0.2
*
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -64,7 +63,12 @@ compute_stipple_mask( GLcontext *ctx, GLuint len, GLubyte mask[] )
static void
draw_wide_line( GLcontext *ctx, struct sw_span *span, GLboolean xMajor )
{
+ GLchan colors[MAX_WIDTH][4];
GLint width, start;
+ GLboolean mutable = (ctx->Color.BlendEnabled ||
+ ctx->Texture._EnabledUnits ||
+ ctx->Fog.Enabled ||
+ *((GLuint *) ctx->Color.ColorMask) != 0xffffffff);
ASSERT(span->end < MAX_WIDTH);
@@ -75,6 +79,13 @@ draw_wide_line( GLcontext *ctx, struct sw_span *span, GLboolean xMajor )
else
start = width / 2 - 1;
+ if (mutable) {
+ /* Backup colors because they'll get modified during span write.
+ * This is a bit of hack. The problem is properly fixed in Mesa 5.1.
+ */
+ _mesa_memcpy(colors, span->array->rgba, span->end * 4 * sizeof(GLchan));
+ }
+
if (xMajor) {
GLint *y = span->array->y;
GLuint i;
@@ -94,6 +105,12 @@ draw_wide_line( GLcontext *ctx, struct sw_span *span, GLboolean xMajor )
_mesa_write_rgba_span(ctx, span);
else
_mesa_write_index_span(ctx, span);
+
+ if (w + 1 < width && mutable) {
+ /* restore original colors */
+ _mesa_memcpy(span->array->rgba, colors,
+ span->end * 4 * sizeof(GLchan));
+ }
}
}
else {
@@ -115,6 +132,11 @@ draw_wide_line( GLcontext *ctx, struct sw_span *span, GLboolean xMajor )
_mesa_write_rgba_span(ctx, span);
else
_mesa_write_index_span(ctx, span);
+ if (w + 1 < width && mutable) {
+ /* restore original colors */
+ _mesa_memcpy(span->array->rgba, colors,
+ span->end * 4 * sizeof(GLchan));
+ }
}
}
}
diff --git a/xc/extras/Mesa/src/swrast/s_span.c b/xc/extras/Mesa/src/swrast/s_span.c
index 8cd83f1ac..a43051964 100644
--- a/xc/extras/Mesa/src/swrast/s_span.c
+++ b/xc/extras/Mesa/src/swrast/s_span.c
@@ -1,4 +1,3 @@
-/* $Id: s_span.c,v 1.5.16.2 2003/04/02 04:28:47 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/swrast/s_texture.c b/xc/extras/Mesa/src/swrast/s_texture.c
index 1e370029f..9354731b3 100644
--- a/xc/extras/Mesa/src/swrast/s_texture.c
+++ b/xc/extras/Mesa/src/swrast/s_texture.c
@@ -1,8 +1,7 @@
-/* $Id: s_texture.c,v 1.8.2.4 2003/04/02 04:28:48 idr Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 5.0.1
+ * Version: 5.0.2
*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
@@ -2773,14 +2772,16 @@ _swrast_choose_texture_sample_func( GLcontext *ctx, GLuint texUnit,
/**
* Do texture application for GL_ARB/EXT_texture_env_combine.
- * Input:
- * ctx - rendering context
- * textureUnit - the texture unit to apply
- * n - number of fragments to process (span width)
- * primary_rgba - incoming fragment color array
- * texelBuffer - pointer to texel colors for all texture units
- * Input/Output:
- * rgba - incoming colors, which get modified here
+ * This function also supports GL_{EXT,ARB}_texture_env_dot3 and
+ * GL_ATI_texture_env_combine3
+ *
+ * \param ctx rendering context
+ * \param textureUnit the texture unit to apply
+ * \param n number of fragments to process (span width)
+ * \param primary_rgba incoming fragment color array
+ * \param texelBuffer pointer to texel colors for all texture units
+ *
+ * \param rgba incoming colors, which get modified here
*/
static INLINE void
texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
@@ -2796,10 +2797,16 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
#if CHAN_TYPE == GL_FLOAT
const GLchan RGBmult = (GLfloat) (1 << RGBshift);
const GLchan Amult = (GLfloat) (1 << Ashift);
+ static const GLchan one[4] = { 1.0, 1.0, 1.0, 1.0 };
+ static const GLchan zero[4] = { 0.0, 0.0, 0.0, 0.0 };
#else
const GLint half = (CHAN_MAX + 1) / 2;
+ static const GLchan one[4] = { CHAN_MAX, CHAN_MAX, CHAN_MAX, CHAN_MAX };
+ static const GLchan zero[4] = { 0, 0, 0, 0 };
#endif
GLuint i, j;
+ GLuint numColorArgs;
+ GLuint numAlphaArgs;
/* GLchan ccolor[3][4]; */
DEFMNARRAY(GLchan, ccolor, 3, 3 * MAX_WIDTH, 4); /* mac 32k limitation */
@@ -2823,54 +2830,70 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
/*
* Do operand setup for up to 3 operands. Loop over the terms.
*/
- for (j = 0; j < 3; j++) {
- const GLenum srcA = textureUnit->CombineSourceA[j];
+ switch (textureUnit->CombineModeRGB) {
+ case GL_REPLACE:
+ numColorArgs = 1;
+ break;
+ case GL_MODULATE:
+ case GL_ADD:
+ case GL_ADD_SIGNED:
+ case GL_SUBTRACT:
+ case GL_DOT3_RGB:
+ case GL_DOT3_RGBA:
+ case GL_DOT3_RGB_EXT:
+ case GL_DOT3_RGBA_EXT:
+ numColorArgs = 2;
+ break;
+ case GL_INTERPOLATE:
+ case GL_MODULATE_ADD_ATI:
+ case GL_MODULATE_SIGNED_ADD_ATI:
+ case GL_MODULATE_SUBTRACT_ATI:
+ numColorArgs = 3;
+ break;
+ default:
+ numColorArgs = 0;
+ ASSERT(0);
+ break;
+ }
+
+ switch (textureUnit->CombineModeA) {
+ case GL_REPLACE:
+ numAlphaArgs = 1;
+ break;
+ case GL_MODULATE:
+ case GL_ADD:
+ case GL_ADD_SIGNED:
+ case GL_SUBTRACT:
+ numAlphaArgs = 2;
+ break;
+ case GL_INTERPOLATE:
+ case GL_MODULATE_ADD_ATI:
+ case GL_MODULATE_SIGNED_ADD_ATI:
+ case GL_MODULATE_SUBTRACT_ATI:
+ numAlphaArgs = 3;
+ break;
+ default:
+ numAlphaArgs = 0;
+ ASSERT(0);
+ break;
+ }
+
+ for (j = 0; j < numColorArgs; j++) {
const GLenum srcRGB = textureUnit->CombineSourceRGB[j];
- switch (srcA) {
- case GL_TEXTURE:
- argA[j] = (const GLchan (*)[4])
- (texelBuffer + unit * (n * 4 * sizeof(GLchan)));
- break;
- case GL_PRIMARY_COLOR_EXT:
- argA[j] = primary_rgba;
- break;
- case GL_PREVIOUS_EXT:
- argA[j] = (const GLchan (*)[4]) rgba;
- break;
- case GL_CONSTANT_EXT:
- {
- GLchan alpha, (*c)[4] = ccolor[j];
- UNCLAMPED_FLOAT_TO_CHAN(alpha, textureUnit->EnvColor[3]);
- for (i = 0; i < n; i++)
- c[i][ACOMP] = alpha;
- argA[j] = (const GLchan (*)[4]) ccolor[j];
- }
- break;
- default:
- /* ARB_texture_env_crossbar source */
- {
- const GLuint srcUnit = srcA - GL_TEXTURE0_ARB;
- ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
- if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
- return;
- argA[j] = (const GLchan (*)[4])
- (texelBuffer + srcUnit * (n * 4 * sizeof(GLchan)));
- }
- }
switch (srcRGB) {
case GL_TEXTURE:
argRGB[j] = (const GLchan (*)[4])
(texelBuffer + unit * (n * 4 * sizeof(GLchan)));
break;
- case GL_PRIMARY_COLOR_EXT:
+ case GL_PRIMARY_COLOR:
argRGB[j] = primary_rgba;
break;
- case GL_PREVIOUS_EXT:
+ case GL_PREVIOUS:
argRGB[j] = (const GLchan (*)[4]) rgba;
break;
- case GL_CONSTANT_EXT:
+ case GL_CONSTANT:
{
GLchan (*c)[4] = ccolor[j];
GLchan red, green, blue, alpha;
@@ -2887,10 +2910,18 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
argRGB[j] = (const GLchan (*)[4]) ccolor[j];
}
break;
+ /* GL_ATI_texture_env_combine3 allows GL_ZERO & GL_ONE as sources.
+ */
+ case GL_ZERO:
+ argRGB[j] = & zero;
+ break;
+ case GL_ONE:
+ argRGB[j] = & one;
+ break;
default:
/* ARB_texture_env_crossbar source */
{
- const GLuint srcUnit = srcRGB - GL_TEXTURE0_ARB;
+ const GLuint srcUnit = srcRGB - GL_TEXTURE0;
ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
return;
@@ -2929,6 +2960,51 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
}
}
}
+ }
+
+
+ for (j = 0; j < numAlphaArgs; j++) {
+ const GLenum srcA = textureUnit->CombineSourceA[j];
+
+ switch (srcA) {
+ case GL_TEXTURE:
+ argA[j] = (const GLchan (*)[4])
+ (texelBuffer + unit * (n * 4 * sizeof(GLchan)));
+ break;
+ case GL_PRIMARY_COLOR:
+ argA[j] = primary_rgba;
+ break;
+ case GL_PREVIOUS:
+ argA[j] = (const GLchan (*)[4]) rgba;
+ break;
+ case GL_CONSTANT:
+ {
+ GLchan alpha, (*c)[4] = ccolor[j];
+ UNCLAMPED_FLOAT_TO_CHAN(alpha, textureUnit->EnvColor[3]);
+ for (i = 0; i < n; i++)
+ c[i][ACOMP] = alpha;
+ argA[j] = (const GLchan (*)[4]) ccolor[j];
+ }
+ break;
+ /* GL_ATI_texture_env_combine3 allows GL_ZERO & GL_ONE as sources.
+ */
+ case GL_ZERO:
+ argA[j] = & zero;
+ break;
+ case GL_ONE:
+ argA[j] = & one;
+ break;
+ default:
+ /* ARB_texture_env_crossbar source */
+ {
+ const GLuint srcUnit = srcA - GL_TEXTURE0;
+ ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
+ if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
+ return;
+ argA[j] = (const GLchan (*)[4])
+ (texelBuffer + srcUnit * (n * 4 * sizeof(GLchan)));
+ }
+ }
if (textureUnit->CombineOperandA[j] == GL_ONE_MINUS_SRC_ALPHA) {
const GLchan (*src)[4] = argA[j];
@@ -2938,17 +3014,6 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
dst[i][ACOMP] = CHAN_MAX - src[i][ACOMP];
}
}
-
- if (textureUnit->CombineModeRGB == GL_REPLACE &&
- textureUnit->CombineModeA == GL_REPLACE) {
- break; /* done, we need only arg0 */
- }
-
- if (j == 1 &&
- textureUnit->CombineModeRGB != GL_INTERPOLATE_EXT &&
- textureUnit->CombineModeA != GL_INTERPOLATE_EXT) {
- break; /* arg0 and arg1 are done. we don't need arg2. */
- }
}
/*
@@ -3155,6 +3220,93 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
}
}
break;
+ case GL_MODULATE_ADD_ATI:
+ {
+ const GLchan (*arg0)[4] = (const GLchan (*)[4]) argRGB[0];
+ const GLchan (*arg1)[4] = (const GLchan (*)[4]) argRGB[1];
+ const GLchan (*arg2)[4] = (const GLchan (*)[4]) argRGB[2];
+#if CHAN_TYPE != GL_FLOAT
+ const GLint shift = CHAN_BITS - RGBshift;
+#endif
+ for (i = 0; i < n; i++) {
+#if CHAN_TYPE == GL_FLOAT
+ rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) + arg1[i][RCOMP]) * RGBmult;
+ rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) + arg1[i][GCOMP]) * RGBmult;
+ rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) + arg1[i][BCOMP]) * RGBmult;
+#else
+ GLuint r = (PROD(arg0[i][RCOMP], arg2[i][RCOMP])
+ + ((GLuint) arg1[i][RCOMP] << CHAN_BITS)) >> shift;
+ GLuint g = (PROD(arg0[i][GCOMP], arg2[i][GCOMP])
+ + ((GLuint) arg1[i][GCOMP] << CHAN_BITS)) >> shift;
+ GLuint b = (PROD(arg0[i][BCOMP], arg2[i][BCOMP])
+ + ((GLuint) arg1[i][BCOMP] << CHAN_BITS)) >> shift;
+ rgba[i][RCOMP] = (GLchan) MIN2(r, CHAN_MAX);
+ rgba[i][GCOMP] = (GLchan) MIN2(g, CHAN_MAX);
+ rgba[i][BCOMP] = (GLchan) MIN2(b, CHAN_MAX);
+#endif
+ }
+ }
+ break;
+ case GL_MODULATE_SIGNED_ADD_ATI:
+ {
+ const GLchan (*arg0)[4] = (const GLchan (*)[4]) argRGB[0];
+ const GLchan (*arg1)[4] = (const GLchan (*)[4]) argRGB[1];
+ const GLchan (*arg2)[4] = (const GLchan (*)[4]) argRGB[2];
+#if CHAN_TYPE != GL_FLOAT
+ const GLint shift = CHAN_BITS - RGBshift;
+#endif
+ for (i = 0; i < n; i++) {
+#if CHAN_TYPE == GL_FLOAT
+ rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) + arg1[i][RCOMP] - 0.5) * RGBmult;
+ rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) + arg1[i][GCOMP] - 0.5) * RGBmult;
+ rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) + arg1[i][BCOMP] - 0.5) * RGBmult;
+#else
+ GLint r = (S_PROD(arg0[i][RCOMP], arg2[i][RCOMP])
+ + (((GLint) arg1[i][RCOMP] - half) << CHAN_BITS))
+ >> shift;
+ GLint g = (S_PROD(arg0[i][GCOMP], arg2[i][GCOMP])
+ + (((GLint) arg1[i][GCOMP] - half) << CHAN_BITS))
+ >> shift;
+ GLint b = (S_PROD(arg0[i][BCOMP], arg2[i][BCOMP])
+ + (((GLint) arg1[i][BCOMP] - half) << CHAN_BITS))
+ >> shift;
+ rgba[i][RCOMP] = (GLchan) CLAMP(r, 0, CHAN_MAX);
+ rgba[i][GCOMP] = (GLchan) CLAMP(g, 0, CHAN_MAX);
+ rgba[i][BCOMP] = (GLchan) CLAMP(b, 0, CHAN_MAX);
+#endif
+ }
+ }
+ break;
+ case GL_MODULATE_SUBTRACT_ATI:
+ {
+ const GLchan (*arg0)[4] = (const GLchan (*)[4]) argRGB[0];
+ const GLchan (*arg1)[4] = (const GLchan (*)[4]) argRGB[1];
+ const GLchan (*arg2)[4] = (const GLchan (*)[4]) argRGB[2];
+#if CHAN_TYPE != GL_FLOAT
+ const GLint shift = CHAN_BITS - RGBshift;
+#endif
+ for (i = 0; i < n; i++) {
+#if CHAN_TYPE == GL_FLOAT
+ rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) - arg1[i][RCOMP]) * RGBmult;
+ rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) - arg1[i][GCOMP]) * RGBmult;
+ rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) - arg1[i][BCOMP]) * RGBmult;
+#else
+ GLint r = (S_PROD(arg0[i][RCOMP], arg2[i][RCOMP])
+ - ((GLint) arg1[i][RCOMP] << CHAN_BITS))
+ >> shift;
+ GLint g = (S_PROD(arg0[i][GCOMP], arg2[i][GCOMP])
+ - ((GLint) arg1[i][GCOMP] << CHAN_BITS))
+ >> shift;
+ GLint b = (S_PROD(arg0[i][BCOMP], arg2[i][BCOMP])
+ - ((GLint) arg1[i][BCOMP] << CHAN_BITS))
+ >> shift;
+ rgba[i][RCOMP] = (GLchan) CLAMP(r, 0, CHAN_MAX);
+ rgba[i][GCOMP] = (GLchan) CLAMP(g, 0, CHAN_MAX);
+ rgba[i][BCOMP] = (GLchan) CLAMP(b, 0, CHAN_MAX);
+#endif
+ }
+ }
+ break;
default:
_mesa_problem(ctx, "invalid combine mode");
}
@@ -3262,7 +3414,66 @@ texture_combine( const GLcontext *ctx, GLuint unit, GLuint n,
}
}
break;
-
+ case GL_MODULATE_ADD_ATI:
+ {
+ const GLchan (*arg0)[4] = (const GLchan (*)[4]) argA[0];
+ const GLchan (*arg1)[4] = (const GLchan (*)[4]) argA[1];
+ const GLchan (*arg2)[4] = (const GLchan (*)[4]) argA[2];
+#if CHAN_TYPE != GL_FLOAT
+ const GLint shift = CHAN_BITS - Ashift;
+#endif
+ for (i = 0; i < n; i++) {
+#if CHAN_TYPE == GL_FLOAT
+ rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP]) + arg1[i][ACOMP]) * Amult;
+#else
+ GLuint a = (PROD(arg0[i][ACOMP], arg2[i][ACOMP])
+ + ((GLuint) arg1[i][ACOMP] << CHAN_BITS))
+ >> shift;
+ rgba[i][ACOMP] = (GLchan) CLAMP(a, 0, CHAN_MAX);
+#endif
+ }
+ }
+ break;
+ case GL_MODULATE_SIGNED_ADD_ATI:
+ {
+ const GLchan (*arg0)[4] = (const GLchan (*)[4]) argA[0];
+ const GLchan (*arg1)[4] = (const GLchan (*)[4]) argA[1];
+ const GLchan (*arg2)[4] = (const GLchan (*)[4]) argA[2];
+#if CHAN_TYPE != GL_FLOAT
+ const GLint shift = CHAN_BITS - Ashift;
+#endif
+ for (i = 0; i < n; i++) {
+#if CHAN_TYPE == GL_FLOAT
+ rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP]) + arg1[i][ACOMP] - 0.5F) * Amult;
+#else
+ GLint a = (S_PROD(arg0[i][ACOMP], arg2[i][ACOMP])
+ + (((GLint) arg1[i][ACOMP] - half) << CHAN_BITS))
+ >> shift;
+ rgba[i][ACOMP] = (GLchan) CLAMP(a, 0, CHAN_MAX);
+#endif
+ }
+ }
+ break;
+ case GL_MODULATE_SUBTRACT_ATI:
+ {
+ const GLchan (*arg0)[4] = (const GLchan (*)[4]) argA[0];
+ const GLchan (*arg1)[4] = (const GLchan (*)[4]) argA[1];
+ const GLchan (*arg2)[4] = (const GLchan (*)[4]) argA[2];
+#if CHAN_TYPE != GL_FLOAT
+ const GLint shift = CHAN_BITS - Ashift;
+#endif
+ for (i = 0; i < n; i++) {
+#if CHAN_TYPE == GL_FLOAT
+ rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP]) - arg1[i][ACOMP]) * Amult;
+#else
+ GLint a = (S_PROD(arg0[i][ACOMP], arg2[i][ACOMP])
+ - ((GLint) arg1[i][ACOMP] << CHAN_BITS))
+ >> shift;
+ rgba[i][ACOMP] = (GLchan) CLAMP(a, 0, CHAN_MAX);
+#endif
+ }
+ }
+ break;
default:
_mesa_problem(ctx, "invalid combine mode");
}
diff --git a/xc/extras/Mesa/src/swrast/s_tritemp.h b/xc/extras/Mesa/src/swrast/s_tritemp.h
index 2feeb8b13..58fa90c4f 100644
--- a/xc/extras/Mesa/src/swrast/s_tritemp.h
+++ b/xc/extras/Mesa/src/swrast/s_tritemp.h
@@ -1,4 +1,3 @@
-
/*
* Mesa 3-D graphics library
* Version: 3.5
@@ -22,7 +21,6 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/extras/Mesa/src/swrast/s_tritemp.h,v 1.2 2002/02/27 21:07:54 tsi Exp $ */
/*
* Triangle Rasterizer Template
diff --git a/xc/extras/Mesa/src/swrast/s_zoom.c b/xc/extras/Mesa/src/swrast/s_zoom.c
index 1581509bb..a8c1a939e 100644
--- a/xc/extras/Mesa/src/swrast/s_zoom.c
+++ b/xc/extras/Mesa/src/swrast/s_zoom.c
@@ -1,4 +1,3 @@
-/* $Id: s_zoom.c,v 1.5.16.2 2003/04/02 04:28:49 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/texcompress.c b/xc/extras/Mesa/src/texcompress.c
index 0ef0cb394..6ecf8cad0 100644
--- a/xc/extras/Mesa/src/texcompress.c
+++ b/xc/extras/Mesa/src/texcompress.c
@@ -1,4 +1,3 @@
-/* $Id: texcompress.c,v 1.2.2.2 2003/04/02 04:28:42 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/teximage.c b/xc/extras/Mesa/src/teximage.c
index 9c67c2f8a..8e1d63d35 100644
--- a/xc/extras/Mesa/src/teximage.c
+++ b/xc/extras/Mesa/src/teximage.c
@@ -1,8 +1,6 @@
-/* $Id: teximage.c,v 1.32.2.3 2003/04/02 04:28:42 idr Exp $ */
-
/*
* Mesa 3-D graphics library
- * Version: 5.0.1
+ * Version: 5.0.2
*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
@@ -447,7 +445,8 @@ is_proxy_target(GLenum target)
return (target == GL_PROXY_TEXTURE_1D ||
target == GL_PROXY_TEXTURE_2D ||
target == GL_PROXY_TEXTURE_3D ||
- target == GL_PROXY_TEXTURE_CUBE_MAP_ARB);
+ target == GL_PROXY_TEXTURE_CUBE_MAP_ARB ||
+ target == GL_PROXY_TEXTURE_RECTANGLE_NV);
}
diff --git a/xc/extras/Mesa/src/texobj.c b/xc/extras/Mesa/src/texobj.c
index b20262314..22042579e 100644
--- a/xc/extras/Mesa/src/texobj.c
+++ b/xc/extras/Mesa/src/texobj.c
@@ -1,8 +1,6 @@
-/* $Id: texobj.c,v 1.25.2.4 2003/04/02 04:28:42 idr Exp $ */
-
/*
* Mesa 3-D graphics library
- * Version: 5.0.1
+ * Version: 5.0.2
*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
@@ -90,7 +88,7 @@ _mesa_alloc_texture_object( struct gl_shared_state *shared,
obj->MaxAnisotropy = 1.0;
obj->CompareFlag = GL_FALSE; /* SGIX_shadow */
obj->CompareOperator = GL_TEXTURE_LEQUAL_R_SGIX; /* SGIX_shadow */
- obj->CompareMode = GL_LUMINANCE; /* ARB_shadow */
+ obj->CompareMode = GL_NONE; /* ARB_shadow */
obj->CompareFunc = GL_LEQUAL; /* ARB_shadow */
obj->DepthMode = GL_LUMINANCE; /* ARB_depth_texture */
obj->ShadowAmbient = 0.0F; /* ARB/SGIX_shadow_ambient */
diff --git a/xc/extras/Mesa/src/texstate.c b/xc/extras/Mesa/src/texstate.c
index 47a58f3c7..87024cc07 100644
--- a/xc/extras/Mesa/src/texstate.c
+++ b/xc/extras/Mesa/src/texstate.c
@@ -1,4 +1,3 @@
-/* $Id: texstate.c,v 1.29.2.7 2003/04/02 04:28:42 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/texstate.h b/xc/extras/Mesa/src/texstate.h
index 66e7dfd88..a9de0c6e0 100644
--- a/xc/extras/Mesa/src/texstate.h
+++ b/xc/extras/Mesa/src/texstate.h
@@ -1,8 +1,9 @@
+
/*
* Mesa 3-D graphics library
- * Version: 5.1
+ * Version: 5.0.1
*
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/xc/extras/Mesa/src/texstore.c b/xc/extras/Mesa/src/texstore.c
index 3424fe62a..1f20d2cfa 100644
--- a/xc/extras/Mesa/src/texstore.c
+++ b/xc/extras/Mesa/src/texstore.c
@@ -1,4 +1,3 @@
-/* $Id: texstore.c,v 1.7.2.3 2003/04/02 04:28:42 idr Exp $ */
/*
* Mesa 3-D graphics library
@@ -482,6 +481,7 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
baseInternalFormat == GL_ALPHA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_RGBA ||
+ baseInternalFormat == GL_COLOR_INDEX ||
baseInternalFormat == GL_DEPTH_COMPONENT);
if (transferOps & IMAGE_CONVOLUTION_BIT) {
diff --git a/xc/extras/Mesa/src/texutil_tmp.h b/xc/extras/Mesa/src/texutil_tmp.h
index d6b94376b..becbd24f1 100644
--- a/xc/extras/Mesa/src/texutil_tmp.h
+++ b/xc/extras/Mesa/src/texutil_tmp.h
@@ -1,3 +1,4 @@
+
/*
* Mesa 3-D graphics library
* Version: 4.0.2
diff --git a/xc/extras/Mesa/src/tnl/t_imm_api.c b/xc/extras/Mesa/src/tnl/t_imm_api.c
index 86e5636d6..86458d626 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_api.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_api.c
@@ -1,4 +1,3 @@
-/* $Id: t_imm_api.c,v 1.7.12.3 2003/04/02 04:28:50 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_imm_exec.c b/xc/extras/Mesa/src/tnl/t_imm_exec.c
index bf5050856..64c970118 100644
--- a/xc/extras/Mesa/src/tnl/t_imm_exec.c
+++ b/xc/extras/Mesa/src/tnl/t_imm_exec.c
@@ -511,8 +511,10 @@ void _tnl_execute_cassette( GLcontext *ctx, struct immediate *IM )
begin_state, saved_begin_state );
}
- if (ctx->Driver.CurrentExecPrimitive == GL_POLYGON+1)
- ctx->Driver.NeedFlush &= ~FLUSH_STORED_VERTICES;
+ /* Don't unset FLUSH_STORED_VERTICES flag here as the driver might
+ * have other stored data of its own & be relying on the
+ * FlushVertices notification to clear it.
+ */
}
diff --git a/xc/extras/Mesa/src/tnl/t_vb_program.c b/xc/extras/Mesa/src/tnl/t_vb_program.c
index 7611d4b4d..3cddb2be3 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_program.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_program.c
@@ -1,4 +1,3 @@
-/* $Id: t_vb_program.c,v 1.2.4.1 2003/04/02 04:28:50 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/tnl/t_vb_texgen.c b/xc/extras/Mesa/src/tnl/t_vb_texgen.c
index 25ae2bcd5..79601a836 100644
--- a/xc/extras/Mesa/src/tnl/t_vb_texgen.c
+++ b/xc/extras/Mesa/src/tnl/t_vb_texgen.c
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 5.0.2
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -367,7 +367,7 @@ static void texgen( GLcontext *ctx,
GLuint count = VB->Count;
GLfloat (*f)[3] = store->tmp_f;
GLfloat *m = store->tmp_m;
- GLuint holes = 0;
+ GLuint holes = 0;
if (texUnit->_GenFlags & TEXGEN_NEED_M) {
@@ -399,6 +399,7 @@ static void texgen( GLcontext *ctx,
}
if (holes) {
+ if (holes & VEC_DIRTY_3) _mesa_vector4f_clean_elem(out, count, 3);
if (holes & VEC_DIRTY_2) _mesa_vector4f_clean_elem(out, count, 2);
if (holes & VEC_DIRTY_1) _mesa_vector4f_clean_elem(out, count, 1);
if (holes & VEC_DIRTY_0) _mesa_vector4f_clean_elem(out, count, 0);
diff --git a/xc/extras/Mesa/src/tnl/t_vtx_api.c b/xc/extras/Mesa/src/tnl/t_vtx_api.c
index 4076051c8..5fb08a9b5 100644
--- a/xc/extras/Mesa/src/tnl/t_vtx_api.c
+++ b/xc/extras/Mesa/src/tnl/t_vtx_api.c
@@ -1,4 +1,3 @@
-/* $XFree86$ */
/**************************************************************************
Copyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
diff --git a/xc/extras/Mesa/src/tnl/t_vtx_api.h b/xc/extras/Mesa/src/tnl/t_vtx_api.h
index 6bfdbe8fe..ace962c31 100644
--- a/xc/extras/Mesa/src/tnl/t_vtx_api.h
+++ b/xc/extras/Mesa/src/tnl/t_vtx_api.h
@@ -1,4 +1,3 @@
-/* $XFree86$ */
/**************************************************************************
Copyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
diff --git a/xc/extras/Mesa/src/tnl/t_vtx_exec.c b/xc/extras/Mesa/src/tnl/t_vtx_exec.c
index 7e9db7892..c0dda08e8 100644
--- a/xc/extras/Mesa/src/tnl/t_vtx_exec.c
+++ b/xc/extras/Mesa/src/tnl/t_vtx_exec.c
@@ -1,4 +1,3 @@
-/* $XFree86$ */
/**************************************************************************
Copyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
diff --git a/xc/extras/Mesa/src/tnl/t_vtx_sse.c b/xc/extras/Mesa/src/tnl/t_vtx_sse.c
index 8998c901b..6d6ba356e 100644
--- a/xc/extras/Mesa/src/tnl/t_vtx_sse.c
+++ b/xc/extras/Mesa/src/tnl/t_vtx_sse.c
@@ -1,4 +1,3 @@
-/* $XFree86$ */
/**************************************************************************
Copyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
diff --git a/xc/extras/Mesa/src/tnl/t_vtx_x86.c b/xc/extras/Mesa/src/tnl/t_vtx_x86.c
index 7a55db72d..0d9421d1d 100644
--- a/xc/extras/Mesa/src/tnl/t_vtx_x86.c
+++ b/xc/extras/Mesa/src/tnl/t_vtx_x86.c
@@ -1,4 +1,3 @@
-/* $XFree86$ */
/**************************************************************************
Copyright 2002 Tungsten Graphics Inc., Cedar Park, Texas.
diff --git a/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h b/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h
index 0fc1a64e2..5aad0b562 100644
--- a/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h
+++ b/xc/extras/Mesa/src/tnl_dd/t_dd_vbtmp.h
@@ -1,9 +1,9 @@
/*
* Mesa 3-D graphics library
- * Version: 4.1
+ * Version: 5.0.1
*
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/xc/extras/Mesa/src/varray.h b/xc/extras/Mesa/src/varray.h
index 344309bd0..98a7733b5 100644
--- a/xc/extras/Mesa/src/varray.h
+++ b/xc/extras/Mesa/src/varray.h
@@ -1,4 +1,3 @@
-/* $Id: varray.h,v 1.11.22.2 2002/12/04 22:57:02 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vpexec.c b/xc/extras/Mesa/src/vpexec.c
index 182275276..8e6af9c34 100644
--- a/xc/extras/Mesa/src/vpexec.c
+++ b/xc/extras/Mesa/src/vpexec.c
@@ -1,4 +1,3 @@
-/* $Id: vpexec.c,v 1.1.4.1 2003/04/02 04:28:43 idr Exp $ */
/*
* Mesa 3-D graphics library
@@ -277,11 +276,11 @@ fetch_vector4( const struct vp_src_register *source,
const GLfloat *src;
if (source->RelAddr) {
- GLint reg = source->Register + machine->AddressReg;
- if (reg < VP_PROG_REG_START || reg > VP_PROG_REG_END)
+ const GLint reg = source->Register + machine->AddressReg;
+ if (reg < 0 || reg > VP_NUM_PROG_REGS)
src = zero;
else
- src = machine->Registers[reg];
+ src = machine->Registers[VP_PROG_REG_START + reg];
}
else {
src = machine->Registers[source->Register];
@@ -314,11 +313,11 @@ fetch_vector1( const struct vp_src_register *source,
const GLfloat *src;
if (source->RelAddr) {
- GLint reg = source->Register + machine->AddressReg;
- if (reg < VP_PROG_REG_START || reg > VP_PROG_REG_END)
+ const GLint reg = source->Register + machine->AddressReg;
+ if (reg < 0 || reg > VP_NUM_PROG_REGS)
src = zero;
else
- src = machine->Registers[reg];
+ src = machine->Registers[VP_PROG_REG_START + reg];
}
else {
src = machine->Registers[source->Register];
@@ -438,15 +437,11 @@ _mesa_exec_program(GLcontext *ctx, const struct vp_program *program)
floor_t0 = (float) floor(t[0]);
if (floor_t0 > FLT_MAX_EXP) {
SET_POS_INFINITY(q[0]);
- q[1] = 0.0F;
SET_POS_INFINITY(q[2]);
- q[3] = 1.0F;
}
else if (floor_t0 < FLT_MIN_EXP) {
q[0] = 0.0F;
- q[1] = 0.0F;
q[2] = 0.0F;
- q[3] = 0.0F;
}
else {
#ifdef USE_IEEE
@@ -457,10 +452,10 @@ _mesa_exec_program(GLcontext *ctx, const struct vp_program *program)
#else
q[0] = (GLfloat) pow(2.0, floor_t0);
#endif
- q[1] = t[0] - floor_t0;
q[2] = (GLfloat) (q[0] * LOG2(q[1]));
- q[3] = 1.0F;
}
+ q[1] = t[0] - floor_t0;
+ q[3] = 1.0F;
store_vector4( &inst->DstReg, machine, q );
}
break;
diff --git a/xc/extras/Mesa/src/vpexec.h b/xc/extras/Mesa/src/vpexec.h
index 08db6e389..5fed9d365 100644
--- a/xc/extras/Mesa/src/vpexec.h
+++ b/xc/extras/Mesa/src/vpexec.h
@@ -1,4 +1,3 @@
-/* $Id: vpexec.h,v 1.1.4.1 2003/04/02 04:28:43 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vpparse.c b/xc/extras/Mesa/src/vpparse.c
index 35bef73b7..4526d79b0 100644
--- a/xc/extras/Mesa/src/vpparse.c
+++ b/xc/extras/Mesa/src/vpparse.c
@@ -1,10 +1,9 @@
-/* $Id: vpparse.c,v 1.1.4.1 2003/04/02 04:28:43 idr Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 4.1
+ * Version: 5.0.1
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -1423,7 +1422,7 @@ _mesa_parse_program(GLcontext *ctx, GLenum dstTarget,
}
program->Instructions = newInst;
-#ifdef DEBUG_foo
+#if 0
_mesa_printf("--- glLoadProgramNV result ---\n");
_mesa_print_program(program);
_mesa_printf("------------------------------\n");
diff --git a/xc/extras/Mesa/src/vpparse.h b/xc/extras/Mesa/src/vpparse.h
index b17b8fbea..2f90f2162 100644
--- a/xc/extras/Mesa/src/vpparse.h
+++ b/xc/extras/Mesa/src/vpparse.h
@@ -1,4 +1,3 @@
-/* $Id: vpparse.h,v 1.1.4.1 2003/04/02 04:28:43 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vpstate.c b/xc/extras/Mesa/src/vpstate.c
index 49bee3926..2918aad93 100644
--- a/xc/extras/Mesa/src/vpstate.c
+++ b/xc/extras/Mesa/src/vpstate.c
@@ -1,4 +1,3 @@
-/* $Id: vpstate.c,v 1.1.4.1 2003/04/02 04:28:43 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/extras/Mesa/src/vpstate.h b/xc/extras/Mesa/src/vpstate.h
index be7b4be00..eb5d7655d 100644
--- a/xc/extras/Mesa/src/vpstate.h
+++ b/xc/extras/Mesa/src/vpstate.h
@@ -1,4 +1,3 @@
-/* $Id: vpstate.h,v 1.1.4.1 2003/04/02 04:28:43 idr Exp $ */
/*
* Mesa 3-D graphics library
diff --git a/xc/include/GL/glx.h b/xc/include/GL/glx.h
index 1bc010a7e..b02a237d8 100644
--- a/xc/include/GL/glx.h
+++ b/xc/include/GL/glx.h
@@ -1,7 +1,7 @@
#ifndef __GLX_glx_h__
#define __GLX_glx_h__
-/* $XFree86: xc/include/GL/glx.h,v 1.9 2002/02/22 21:32:50 dawes Exp $ */
+/* $XFree86: xc/include/GL/glx.h,v 1.10 2002/10/30 08:52:36 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/xc/include/GL/glxproto.h b/xc/include/GL/glxproto.h
index 2715d7f47..7405c55b6 100644
--- a/xc/include/GL/glxproto.h
+++ b/xc/include/GL/glxproto.h
@@ -1923,4 +1923,5 @@ typedef struct {
#define X_GLrop_ActiveStencilFaceEXT 4220
+
#endif /* _GLX_glxproto_h_ */
diff --git a/xc/lib/GL/dri/dri_util.c b/xc/lib/GL/dri/dri_util.c
index f2013dbda..f83128efc 100644
--- a/xc/lib/GL/dri/dri_util.c
+++ b/xc/lib/GL/dri/dri_util.c
@@ -59,7 +59,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifdef GLX_DIRECT_RENDERING
-#include <inttypes.h>
+#include <stdint.h>
#include <assert.h>
#include <stdarg.h>
#include <unistd.h>
diff --git a/xc/lib/GL/dri/drm/Imakefile b/xc/lib/GL/dri/drm/Imakefile
index e878b2502..149bd6c33 100644
--- a/xc/lib/GL/dri/drm/Imakefile
+++ b/xc/lib/GL/dri/drm/Imakefile
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/lib/GL/dri/drm/Imakefile,v 1.19 2002/02/22 21:32:52 dawes Exp $
+XCOMM $XFree86: xc/lib/GL/dri/drm/Imakefile,v 1.20 2002/10/30 12:51:25 alanh Exp $
#if GlxUseBuiltInDRIDriver
#define DoNormalLib (NormalLibGlx || SharedLibGlxWithoutPIC)
diff --git a/xc/lib/GL/glx/glxclient.h b/xc/lib/GL/glx/glxclient.h
index a95be5fde..51c254cb6 100644
--- a/xc/lib/GL/glx/glxclient.h
+++ b/xc/lib/GL/glx/glxclient.h
@@ -31,7 +31,7 @@
** published by SGI, but has not been independently verified as being
** compliant with the OpenGL(R) version 1.2.1 Specification.
*/
-/* $XFree86: xc/lib/GL/glx/glxclient.h,v 1.14 2002/02/22 21:32:53 dawes Exp $ */
+/* $XFree86: xc/lib/GL/glx/glxclient.h,v 1.15 2002/10/30 12:51:26 alanh Exp $ */
/*
* Direct rendering support added by Precision Insight, Inc.
@@ -757,6 +757,11 @@ extern char *__glXInternalQueryServerString( Display *dpy, int opcode,
extern char *__glXstrdup(const char *str);
+
+extern const char __glXGLClientExtensions[];
+extern char *__glXCombineExtensionStrings( const char *cext_string,
+ const char *sext_string );
+
/* Determine the internal API version */
typedef int (* PFNGLXGETINTERNALVERSIONPROC) ( void );
extern int __glXGetInternalVersion(void);
diff --git a/xc/lib/GL/glx/glxcmds.c b/xc/lib/GL/glx/glxcmds.c
index 9c5770130..c35bf071c 100644
--- a/xc/lib/GL/glx/glxcmds.c
+++ b/xc/lib/GL/glx/glxcmds.c
@@ -49,7 +49,7 @@
#include "glxextensions.h"
#include <sys/time.h>
-static const char __glXGLClientExtensions[] =
+const char __glXGLClientExtensions[] =
"GL_ARB_depth_texture "
"GL_ARB_imaging "
"GL_ARB_multitexture "
@@ -1186,6 +1186,61 @@ char *__glXInternalQueryServerString( Display *dpy, int opcode,
return buf;
}
+#define SEPARATOR " "
+
+char *__glXCombineExtensionStrings( const char *cext_string, const char *sext_string )
+{
+ int clen, slen;
+ char *combo_string, *token, *s1;
+ const char *s2, *end;
+
+ /*
+ ** String can't be longer than min(cstring, sstring)
+ ** pull tokens out of shortest string
+ ** include space in combo_string for final separator and null terminator
+ */
+ if ( (clen = strlen( cext_string)) > (slen = strlen( sext_string)) ) {
+ combo_string = (char *) Xmalloc( slen + 2 );
+ s1 = (char *) Xmalloc( slen + 2 ); strcpy( s1, sext_string );
+ s2 = cext_string;
+ } else {
+ combo_string = (char *) Xmalloc( clen + 2 );
+ s1 = (char *) Xmalloc( clen + 2 ); strcpy( s1, cext_string);
+ s2 = sext_string;
+ }
+ if (!combo_string || !s1) {
+ if (combo_string) Xfree(combo_string);
+ if (s1) Xfree(s1);
+ return NULL;
+ }
+ combo_string[0] = '\0';
+
+ /* Get first extension token */
+ token = strtok( s1, SEPARATOR);
+ while ( token != NULL ) {
+
+ /*
+ ** if token in second string then save it
+ ** beware of extension names which are prefixes of other extension names
+ */
+ const char *p = s2;
+ end = p + strlen(p);
+ while (p < end) {
+ int n = strcspn(p, SEPARATOR);
+ if ((strlen(token) == n) && (strncmp(token, p, n) == 0)) {
+ combo_string = strcat( combo_string, token);
+ combo_string = strcat( combo_string, SEPARATOR);
+ }
+ p += (n + 1);
+ }
+
+ /* Get next extension token */
+ token = strtok( NULL, SEPARATOR);
+ }
+ Xfree(s1);
+ return combo_string;
+}
+
const char *GLX_PREFIX(glXQueryExtensionsString)( Display *dpy, int screen )
{
__GLXFBConfig *pConfig;
@@ -2783,10 +2838,6 @@ static struct name_address_pair GLX_functions[] = {
/*** GLX_SGI_swap_control ***/
{ "glXSwapIntervalSGI", (GLvoid *) glXSwapIntervalSGI, NULL },
- /*** GLX_MESA_swap_control ***/
- { "glXSwapIntervalMESA", (GLvoid *) glXSwapIntervalMESA, NULL },
- { "glXGetSwapIntervalMESA", (GLvoid *) glXGetSwapIntervalMESA, NULL },
-
/*** GLX_SGI_video_sync ***/
{ "glXGetVideoSyncSGI", (GLvoid *) glXGetVideoSyncSGI, NULL },
{ "glXWaitVideoSyncSGI", (GLvoid *) glXWaitVideoSyncSGI, NULL },
@@ -2860,6 +2911,16 @@ static struct name_address_pair GLX_functions[] = {
/*** GLX_MESA_set_3dfx_mode ***/
{ "glXSet3DfxModeMESA", (GLvoid *) glXSet3DfxModeMESA, NULL },
+ /*** GLX_MESA_swap_control ***/
+ { "glXSwapIntervalMESA", (GLvoid *) glXSwapIntervalMESA, NULL },
+ { "glXGetSwapIntervalMESA", (GLvoid *) glXGetSwapIntervalMESA, NULL },
+
+ /*** GLX_MESA_swap_frame_usage ***/
+ { "glXBeginFrameTrackingMESA", (GLvoid *) glXBeginFrameTrackingMESA, NULL },
+ { "glXEndFrameTrackingMESA", (GLvoid *) glXEndFrameTrackingMESA, NULL },
+ { "glXGetFrameUsageMESA", (GLvoid *) glXGetFrameUsageMESA, NULL },
+ { "glXQueryFrameTrackingMESA", (GLvoid *) glXQueryFrameTrackingMESA, NULL },
+
/*** GLX_ARB_get_proc_address ***/
{ "glXGetProcAddressARB", (GLvoid *) glXGetProcAddressARB, NULL },
diff --git a/xc/lib/GL/glx/glxext.c b/xc/lib/GL/glx/glxext.c
index 3c45b740e..f168e4c13 100644
--- a/xc/lib/GL/glx/glxext.c
+++ b/xc/lib/GL/glx/glxext.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/glx/glxext.c,v 1.14 2002/02/22 21:32:53 dawes Exp $ */
+/* $XFree86: xc/lib/GL/glx/glxext.c,v 1.16 2003/01/20 21:37:19 tsi Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
diff --git a/xc/lib/GL/glx/pixel.c b/xc/lib/GL/glx/pixel.c
index 5c26f6df5..7236165c2 100644
--- a/xc/lib/GL/glx/pixel.c
+++ b/xc/lib/GL/glx/pixel.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/glx/pixel.c,v 1.6 2002/02/22 21:32:54 dawes Exp $ */
+/* $XFree86: xc/lib/GL/glx/pixel.c,v 1.7 2002/10/30 12:51:26 alanh Exp $ */
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
diff --git a/xc/lib/GL/glx/single2.c b/xc/lib/GL/glx/single2.c
index 06514d85a..ebd8a863a 100644
--- a/xc/lib/GL/glx/single2.c
+++ b/xc/lib/GL/glx/single2.c
@@ -983,7 +983,8 @@ const GLubyte *glGetString(GLenum name)
gc->version = s;
break;
case GL_EXTENSIONS:
- gc->extensions = s;
+ gc->extensions = __glXCombineExtensionStrings( s, __glXGLClientExtensions );
+ XFree( s );
break;
}
}
diff --git a/xc/lib/GL/mesa/src/X86/Imakefile b/xc/lib/GL/mesa/src/X86/Imakefile
index f04ed7078..96795bd0c 100644
--- a/xc/lib/GL/mesa/src/X86/Imakefile
+++ b/xc/lib/GL/mesa/src/X86/Imakefile
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/lib/GL/mesa/src/X86/Imakefile,v 1.23 2002/07/14 17:08:16 alanh Exp $
+XCOMM $XFree86: xc/lib/GL/mesa/src/X86/Imakefile,v 1.24 2002/11/25 12:58:55 tsi Exp $
/*
* Need both shared and unshared Mesa objects in the following cases:
diff --git a/xc/lib/GL/mesa/src/drv/common/vblank.h b/xc/lib/GL/mesa/src/drv/common/vblank.h
index 857fc1bd0..91c5d98ab 100644
--- a/xc/lib/GL/mesa/src/drv/common/vblank.h
+++ b/xc/lib/GL/mesa/src/drv/common/vblank.h
@@ -54,6 +54,7 @@ extern int driWaitForVBlank( GLuint * vbl_seq, GLuint flags,
do { \
if (0) fprintf(stderr, "%s: usleep for %u\n", __FUNCTION__, nr ); \
if (1) usleep( nr ); \
+ sched_yield(); \
} while( 0 )
#endif /* DRI_VBLANK_H */
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_points.c b/xc/lib/GL/mesa/src/drv/ffb/ffb_points.c
index ee956d371..6505530c7 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_points.c
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_points.c
@@ -26,7 +26,7 @@
*/
#include "mtypes.h"
-
+#include "mmath.h"
#include "ffb_dd.h"
#include "ffb_context.h"
#include "ffb_vb.h"
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_rendertmp.h b/xc/lib/GL/mesa/src/drv/ffb/ffb_rendertmp.h
index d1a376cd5..9d18db5fd 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_rendertmp.h
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_rendertmp.h
@@ -1,4 +1,4 @@
-/* $XFree86$ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_rendertmp.h,v 1.2 2003/01/29 23:00:40 dawes Exp $ */
#define IMPL_LOCAL_VARS \
ffbContextPtr fmesa = FFB_CONTEXT(ctx); \
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_state.c b/xc/lib/GL/mesa/src/drv/ffb/ffb_state.c
index 6f33a35d2..ba9bab988 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_state.c
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_state.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_state.c,v 1.4 2002/09/10 00:39:37 dawes Exp $
+/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_state.c,v 1.5 2002/10/30 12:51:27 alanh Exp $
*
* GLX Hardware Device Driver for Sun Creator/Creator3D
* Copyright (C) 2000, 2001 David S. Miller
@@ -26,7 +26,7 @@
*/
#include "mtypes.h"
-
+#include "colormac.h"
#include "mm.h"
#include "ffb_dd.h"
#include "ffb_span.h"
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c b/xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c
index d0d3c3b9d..63113f09c 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c,v 1.2 2002/02/22 21:32:59 dawes Exp $
+/* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_tris.c,v 1.3 2002/10/30 12:51:28 alanh Exp $
*
* GLX Hardware Device Driver for Sun Creator/Creator3D
* Copyright (C) 2000, 2001 David S. Miller
@@ -28,7 +28,7 @@
#include "glheader.h"
#include "mtypes.h"
#include "macros.h"
-
+#include "mmath.h"
#include "swrast/swrast.h"
#include "swrast_setup/swrast_setup.h"
#include "swrast/s_context.h"
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.c b/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.c
index 09c9d041e..40820c641 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.c
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.c
@@ -28,6 +28,7 @@
#include "ffb_xmesa.h"
#include "ffb_context.h"
#include "ffb_vb.h"
+#include "mmath.h"
#include "imports.h"
#include "tnl/t_context.h"
#include "swrast_setup/swrast_setup.h"
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.h b/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.h
index 925971af6..9eb6759f6 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.h
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_vb.h
@@ -5,7 +5,6 @@
#include "mtypes.h"
#include "macros.h"
-#include "mmath.h"
#include "tnl/t_context.h"
#include "swrast/swrast.h"
diff --git a/xc/lib/GL/mesa/src/drv/ffb/ffb_xmesa.c b/xc/lib/GL/mesa/src/drv/ffb/ffb_xmesa.c
index eff0d5d9f..fa87e8bb1 100644
--- a/xc/lib/GL/mesa/src/drv/ffb/ffb_xmesa.c
+++ b/xc/lib/GL/mesa/src/drv/ffb/ffb_xmesa.c
@@ -31,7 +31,6 @@
#include "context.h"
#include "matrix.h"
#include "simple_list.h"
-#include "mmath.h"
#include "imports.h"
#include "swrast/swrast.h"
diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c
index 1324ee6e9..47eb802b4 100644
--- a/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c
+++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c
@@ -23,7 +23,7 @@
* Kevin E. Martin <martin@valinux.com>
*
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.8 2002/02/22 21:33:02 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.9 2002/10/30 12:51:29 alanh Exp $ */
#include "gamma_context.h"
#include "glint_dri.h"
diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_lock.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_lock.c
index 12a48ee1f..631df03ae 100644
--- a/xc/lib/GL/mesa/src/drv/gamma/gamma_lock.c
+++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_lock.c
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_lock.c,v 1.4 2002/11/05 17:46:07 tsi Exp $ */
#include "gamma_context.h"
diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_state.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_state.c
index 867cd678b..8a7672067 100644
--- a/xc/lib/GL/mesa/src/drv/gamma/gamma_state.c
+++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_state.c
@@ -1,3 +1,4 @@
+/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_state.c,v 1.5 2002/11/05 17:46:07 tsi Exp $ */
/*
* Copyright 2001 by Alan Hourihane.
*
diff --git a/xc/lib/GL/mesa/src/drv/gamma/gamma_texstate.c b/xc/lib/GL/mesa/src/drv/gamma/gamma_texstate.c
index 3591bd24a..dfd82b489 100644
--- a/xc/lib/GL/mesa/src/drv/gamma/gamma_texstate.c
+++ b/xc/lib/GL/mesa/src/drv/gamma/gamma_texstate.c
@@ -1,3 +1,7 @@
+/* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_texstate.c,v 1.5 2002/11/05 17:46:07 tsi Exp $ */
+
+#include <stdlib.h>
+#include <stdio.h>
#include "glheader.h"
#include "macros.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c b/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c
index 640ce6623..6039aa2f6 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c,v 1.16 2002/09/15 21:07:49 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.c,v 1.18 2002/12/16 16:18:52 dawes Exp $ */
/*
* Copyright 2000-2001 VA Linux Systems, Inc.
* All Rights Reserved.
diff --git a/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h b/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h
index 3ef3db7c5..558ab274f 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h,v 1.10 2002/02/22 21:33:05 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mga_xmesa.h,v 1.12 2002/12/16 16:18:52 dawes Exp $ */
#ifndef _MGA_INIT_H_
#define _MGA_INIT_H_
@@ -46,7 +46,7 @@ typedef struct mga_screen_private_s {
int cpp; /* for front and back buffers */
GLint agpMode;
- unsigned int irq; /* IRQ number (0 means none) */
+ unsigned int irq; /* IRQ number (0 means none) */
unsigned int mAccess;
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgacontext.h b/xc/lib/GL/mesa/src/drv/mga/mgacontext.h
index d6c56c63a..6770c59a1 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgacontext.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mgacontext.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgacontext.h,v 1.5 2002/02/22 21:33:06 dawes Exp $*/
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgacontext.h,v 1.7 2002/12/16 16:18:52 dawes Exp $*/
/*
* Copyright 2000-2001 VA Linux Systems, Inc.
* All Rights Reserved.
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgadd.c b/xc/lib/GL/mesa/src/drv/mga/mgadd.c
index 580bcae79..bbbd9f41d 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgadd.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgadd.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgadd.c,v 1.13 2002/09/11 19:49:07 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgadd.c,v 1.14 2002/10/30 12:51:35 alanh Exp $ */
#include "mtypes.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c
index 246ab9d97..fadaafe5b 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.c
@@ -25,7 +25,7 @@
* Keith Whitwell <keith@tungstengraphics.com>
* Gareth Hughes <gareth@valinux.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.c,v 1.14 2002/09/18 17:11:40 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.c,v 1.16 2002/12/16 16:18:52 dawes Exp $ */
#include "mtypes.h"
#include "macros.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h
index 6d246bca2..2d959d824 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mgaioctl.h
@@ -25,7 +25,7 @@
* Keith Whitwell <keith@tungstengraphics.com>
* Gareth Hughes <gareth@valinux.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.h,v 1.10 2002/09/18 17:11:41 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaioctl.h,v 1.11 2002/10/30 12:51:36 alanh Exp $ */
#ifndef MGA_IOCTL_H
#define MGA_IOCTL_H
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgapixel.c b/xc/lib/GL/mesa/src/drv/mga/mgapixel.c
index 60f0a49a1..07e0c3a75 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgapixel.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgapixel.c
@@ -25,7 +25,7 @@
* Keith Whitwell <keith@tungstengraphics.com>
* Gareth Hughes <gareth@valinux.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgapixel.c,v 1.7 2002/09/18 17:11:41 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgapixel.c,v 1.9 2002/11/05 17:46:08 tsi Exp $ */
#include "enums.h"
#include "mtypes.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgapixel.h b/xc/lib/GL/mesa/src/drv/mga/mgapixel.h
index f0436ce6a..c44fd769a 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgapixel.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mgapixel.h
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgapixel.h,v 1.4 2002/02/22 21:33:07 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgapixel.h,v 1.5 2002/10/30 12:51:36 alanh Exp $ */
#ifndef MGA_PIXELS_H
#define MGA_PIXELS_H
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgarender.c b/xc/lib/GL/mesa/src/drv/mga/mgarender.c
index c0dbc9b38..516a99099 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgarender.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgarender.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgarender.c,v 1.3 2002/02/22 21:37:18 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgarender.c,v 1.4 2002/10/30 12:51:36 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgaspan.c b/xc/lib/GL/mesa/src/drv/mga/mgaspan.c
index fe45de1e9..684239865 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgaspan.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgaspan.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaspan.c,v 1.10 2002/02/26 23:37:35 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgaspan.c,v 1.11 2002/10/30 12:51:36 alanh Exp $ */
#include "mtypes.h"
#include "mgadd.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgastate.c b/xc/lib/GL/mesa/src/drv/mga/mgastate.c
index 353ff668c..bda711921 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgastate.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgastate.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgastate.c,v 1.12 2002/02/22 21:44:55 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgastate.c,v 1.13 2002/10/30 12:51:36 alanh Exp $ */
#include "mtypes.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgastate.h b/xc/lib/GL/mesa/src/drv/mga/mgastate.h
index 0f072d32b..afbe0aaf9 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgastate.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mgastate.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgastate.h,v 1.4 2002/02/22 21:44:55 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgastate.h,v 1.5 2002/10/30 12:51:36 alanh Exp $ */
/*
* Copyright 2000-2001 VA Linux Systems, Inc.
* All Rights Reserved.
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatex.c b/xc/lib/GL/mesa/src/drv/mga/mgatex.c
index fd0b32044..6f47b4a87 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgatex.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgatex.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatex.c,v 1.13 2002/02/22 21:44:55 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatex.c,v 1.14 2002/10/30 12:51:36 alanh Exp $ */
#include "glheader.h"
#include "mm.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c b/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c
index b4f60e83a..bd32ebbda 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgatexmem.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatexmem.c,v 1.6 2002/02/26 23:37:35 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatexmem.c,v 1.7 2002/10/30 12:51:36 alanh Exp $ */
#include "glheader.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatris.c b/xc/lib/GL/mesa/src/drv/mga/mgatris.c
index ce36cb7f5..949482f47 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgatris.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgatris.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.c,v 1.9 2002/02/22 21:44:56 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.c,v 1.10 2002/10/30 12:51:36 alanh Exp $ */
#include "mtypes.h"
#include "macros.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgatris.h b/xc/lib/GL/mesa/src/drv/mga/mgatris.h
index f2d76fad9..a8c0b8936 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgatris.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mgatris.h
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.h,v 1.9 2002/02/22 21:44:56 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgatris.h,v 1.10 2002/10/30 12:51:36 alanh Exp $ */
#ifndef MGATRIS_INC
#define MGATRIS_INC
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgavb.c b/xc/lib/GL/mesa/src/drv/mga/mgavb.c
index 51c02d735..04cd93ec9 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgavb.c
+++ b/xc/lib/GL/mesa/src/drv/mga/mgavb.c
@@ -24,7 +24,7 @@
* Authors:
* Keith Whitwell <keith@tungstengraphics.com>
*/
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.c,v 1.13 2002/02/26 23:37:35 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.c,v 1.14 2002/10/30 12:51:36 alanh Exp $ */
#include "mgacontext.h"
#include "mgavb.h"
diff --git a/xc/lib/GL/mesa/src/drv/mga/mgavb.h b/xc/lib/GL/mesa/src/drv/mga/mgavb.h
index 39a83c7f8..88cc3108d 100644
--- a/xc/lib/GL/mesa/src/drv/mga/mgavb.h
+++ b/xc/lib/GL/mesa/src/drv/mga/mgavb.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.h,v 1.7 2002/02/22 21:44:56 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/mga/mgavb.h,v 1.8 2002/10/30 12:51:36 alanh Exp $ */
/*
* Copyright 2000-2001 VA Linux Systems, Inc.
* All Rights Reserved.
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_context.c b/xc/lib/GL/mesa/src/drv/r128/r128_context.c
index 126a05f64..38a461ac0 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_context.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_context.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.c,v 1.7 2002/02/22 21:44:57 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.c,v 1.8 2002/10/30 12:51:38 alanh Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_context.h b/xc/lib/GL/mesa/src/drv/r128/r128_context.h
index 22f150770..585f06448 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_context.h
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_context.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.h,v 1.10 2002/02/22 21:44:57 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_context.h,v 1.12 2002/12/16 16:18:52 dawes Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_dd.c b/xc/lib/GL/mesa/src/drv/r128/r128_dd.c
index b201e33bb..d6b47efcc 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_dd.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_dd.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_dd.c,v 1.14 2002/09/10 00:39:39 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_dd.c,v 1.15 2002/10/30 12:51:38 alanh Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h b/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h
index aff80e9ee..b0f6b363a 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h,v 1.4 2002/02/22 21:44:58 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_ioctl.h,v 1.6 2002/12/16 16:18:53 dawes Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_lock.c b/xc/lib/GL/mesa/src/drv/r128/r128_lock.c
index 53050f3d5..7f819cdf7 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_lock.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_lock.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_lock.c,v 1.4 2002/02/22 21:44:58 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_lock.c,v 1.5 2002/10/30 12:51:38 alanh Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_lock.h b/xc/lib/GL/mesa/src/drv/r128/r128_lock.h
index 21c55ff9d..e734ba29d 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_lock.h
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_lock.h
@@ -42,7 +42,7 @@ extern void r128GetLock( r128ContextPtr rmesa, GLuint flags );
/* Turn DEBUG_LOCKING on to find locking conflicts.
*/
-#define DEBUG_LOCKING 1
+#define DEBUG_LOCKING 0
#if DEBUG_LOCKING
extern char *prevLockFile;
@@ -66,7 +66,7 @@ extern int prevLockLine;
fprintf( stderr, \
"LOCK SET!\n\tPrevious %s:%d\n\tCurrent: %s:%d\n", \
prevLockFile, prevLockLine, __FILE__, __LINE__ ); \
- abort( ); \
+ exit( 1 ); \
} \
} while (0)
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_screen.c b/xc/lib/GL/mesa/src/drv/r128/r128_screen.c
index 7705ca6ff..e8b8c731a 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_screen.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_screen.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.c,v 1.6 2002/02/22 21:44:58 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.c,v 1.8 2002/12/16 16:18:53 dawes Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
@@ -170,21 +170,6 @@ r128CreateScreen( __DRIscreenPrivate *sPriv )
r128DRIPriv->log2AGPTexGran;
}
- if (sPriv->drmMinor >= 3) {
- drmR128GetParam gp;
- int ret;
-
- gp.param = R128_PARAM_IRQ_NR;
- gp.value = &r128Screen->irq;
-
- ret = drmCommandWriteRead( sPriv->fd, DRM_R128_GETPARAM,
- &gp, sizeof(gp));
- if (ret) {
- fprintf(stderr, "drmR128GetParam (R128_PARAM_IRQ_NR): %d\n", ret);
- return NULL;
- }
- }
-
r128Screen->driScreen = sPriv;
return r128Screen;
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_screen.h b/xc/lib/GL/mesa/src/drv/r128/r128_screen.h
index 411b29b56..4b1a57292 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_screen.h
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_screen.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.h,v 1.6 2002/02/22 21:44:58 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_screen.h,v 1.7 2002/12/16 16:18:53 dawes Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_span.c b/xc/lib/GL/mesa/src/drv/r128/r128_span.c
index 653f893b3..57af0af92 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_span.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_span.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_span.c,v 1.7 2002/02/22 21:44:58 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_span.c,v 1.8 2002/10/30 12:51:39 alanh Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_state.c b/xc/lib/GL/mesa/src/drv/r128/r128_state.c
index a97f238b6..b4a2b7f3f 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_state.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_state.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_state.c,v 1.10 2002/09/10 00:39:39 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_state.c,v 1.11 2002/10/30 12:51:39 alanh Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tex.c b/xc/lib/GL/mesa/src/drv/r128/r128_tex.c
index 931f7180c..df7fa5c6e 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_tex.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_tex.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tex.c,v 1.12 2002/09/18 17:11:41 tsi Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tex.c,v 1.14 2002/11/05 17:46:08 tsi Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tris.c b/xc/lib/GL/mesa/src/drv/r128/r128_tris.c
index 5cf905700..4e2860288 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_tris.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_tris.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.c,v 1.7 2002/02/22 21:44:58 dawes Exp $ */ /* -*- c-basic-offset: 3 -*- */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.c,v 1.8 2002/10/30 12:51:43 alanh Exp $ */ /* -*- c-basic-offset: 3 -*- */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_tris.h b/xc/lib/GL/mesa/src/drv/r128/r128_tris.h
index d03772eb1..755d3320b 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_tris.h
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_tris.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.h,v 1.7 2002/02/22 21:44:58 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_tris.h,v 1.8 2002/10/30 12:51:43 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_vb.c b/xc/lib/GL/mesa/src/drv/r128/r128_vb.c
index 0488c35bf..d3691b693 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_vb.c
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_vb.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.c,v 1.14 2002/09/10 00:39:39 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.c,v 1.15 2002/10/30 12:51:43 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/r128/r128_vb.h b/xc/lib/GL/mesa/src/drv/r128/r128_vb.h
index 35686f87b..31afa74f1 100644
--- a/xc/lib/GL/mesa/src/drv/r128/r128_vb.h
+++ b/xc/lib/GL/mesa/src/drv/r128/r128_vb.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.h,v 1.7 2002/02/22 21:44:59 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/r128/r128_vb.h,v 1.8 2002/10/30 12:51:46 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_cmdbuf.c b/xc/lib/GL/mesa/src/drv/r200/r200_cmdbuf.c
index 7513ced2e..a64b32d91 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_cmdbuf.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_cmdbuf.c
@@ -195,6 +195,7 @@ GLushort *r200AllocEltsOpenEnded( r200ContextPtr rmesa,
cmd[1].i, primitive);
assert(!rmesa->dma.flush);
+ rmesa->glCtx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;
rmesa->dma.flush = r200FlushElts;
rmesa->store.elts_start = ((char *)cmd) - rmesa->store.cmd_buf;
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_context.c b/xc/lib/GL/mesa/src/drv/r200/r200_context.c
index 7b93c1e92..ec0776904 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_context.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_context.c
@@ -40,7 +40,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "simple_list.h"
#include "imports.h"
#include "matrix.h"
-#include "state.h"
#include "extensions.h"
#include "state.h"
@@ -401,7 +400,7 @@ GLboolean r200CreateContext( const __GLcontextModes *glVisual,
rmesa->do_usleeps = !getenv("R200_NO_USLEEPS");
- rmesa->vblank_flags = (rmesa->do_irqs)
+ rmesa->vblank_flags = (rmesa->do_irqs)
? driGetDefaultVBlankFlags() : VBLANK_FLAG_NO_IRQ;
rmesa->prefer_agp_client_texturing =
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_ioctl.c b/xc/lib/GL/mesa/src/drv/r200/r200_ioctl.c
index 3c6e5d6ec..99022f0a7 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_ioctl.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_ioctl.c
@@ -460,6 +460,8 @@ void r200CopyBuffer( const __DRIdrawablePrivate *dPriv )
}
rmesa->swap_ust = ust;
+
+ sched_yield();
}
void r200PageFlip( const __DRIdrawablePrivate *dPriv )
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_maos_arrays.c b/xc/lib/GL/mesa/src/drv/r200/r200_maos_arrays.c
index b82448095..f2abaff3a 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_maos_arrays.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_maos_arrays.c
@@ -37,7 +37,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "mtypes.h"
#include "colormac.h"
#include "imports.h"
-#include "mmath.h"
#include "macros.h"
#include "swrast_setup/swrast_setup.h"
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_span.c b/xc/lib/GL/mesa/src/drv/r200/r200_span.c
index 06bc01409..b469aec42 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_span.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_span.c
@@ -37,6 +37,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "glheader.h"
#include "imports.h"
#include "swrast/swrast.h"
+#include "colormac.h"
#include "r200_context.h"
#include "r200_ioctl.h"
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_state.c b/xc/lib/GL/mesa/src/drv/r200/r200_state.c
index fba9e84f6..f025a8847 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_state.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_state.c
@@ -37,7 +37,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "glheader.h"
#include "imports.h"
#include "api_arrayelt.h"
-#include "mmath.h"
#include "enums.h"
#include "colormac.h"
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_swtcl.c b/xc/lib/GL/mesa/src/drv/r200/r200_swtcl.c
index 191cee363..fa23a27cc 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_swtcl.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_swtcl.c
@@ -40,9 +40,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "enums.h"
#include "image.h"
#include "imports.h"
-#include "mmath.h"
#include "macros.h"
+#include "swrast/s_context.h"
#include "swrast/s_fog.h"
#include "swrast_setup/swrast_setup.h"
#include "math/m_translate.h"
@@ -417,9 +417,9 @@ static void flush_last_swtcl_prim( r200ContextPtr rmesa )
rmesa->swtcl.numverts = 0;
current->start = current->ptr;
-
- rmesa->dma.flush = 0;
}
+
+ rmesa->dma.flush = 0;
}
@@ -434,6 +434,7 @@ static __inline void *r200AllocDmaLowVerts( r200ContextPtr rmesa,
r200RefillCurrentDmaRegion( rmesa );
if (!rmesa->dma.flush) {
+ rmesa->glCtx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;
rmesa->dma.flush = flush_last_swtcl_prim;
}
@@ -1231,8 +1232,8 @@ void r200FlushVertices( GLcontext *ctx, GLuint flags )
{
_tnl_flush_vertices( ctx, flags );
- if (flags & FLUSH_STORED_VERTICES)
- R200_FIREVERTICES( R200_CONTEXT( ctx ) );
+ if (flags & FLUSH_STORED_VERTICES)
+ R200_NEWPRIM( R200_CONTEXT( ctx ) );
}
/**********************************************************************/
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_tcl.c b/xc/lib/GL/mesa/src/drv/r200/r200_tcl.c
index 53aa77901..1af66aece 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_tcl.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_tcl.c
@@ -36,7 +36,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "glheader.h"
#include "imports.h"
-#include "mmath.h"
#include "mtypes.h"
#include "enums.h"
#include "colormac.h"
@@ -290,6 +289,9 @@ static GLboolean r200_run_tcl_render( GLcontext *ctx,
if (rmesa->TclFallback)
return GL_TRUE; /* fallback to software t&l */
+ if (R200_DEBUG & DEBUG_PRIMS)
+ fprintf(stderr, "%s\n", __FUNCTION__);
+
if (VB->Count == 0)
return GL_FALSE;
@@ -340,7 +342,7 @@ static void r200_check_tcl_render( GLcontext *ctx,
if (ctx->Light.Enabled) {
inputs |= VERT_BIT_NORMAL;
- if (ctx->Light.ColorMaterialEnabled) {
+ if (1 || ctx->Light.ColorMaterialEnabled) {
inputs |= VERT_BIT_COLOR0;
}
}
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_tex.c b/xc/lib/GL/mesa/src/drv/r200/r200_tex.c
index db6cdaca4..048108188 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_tex.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_tex.c
@@ -38,7 +38,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "context.h"
#include "enums.h"
#include "image.h"
-#include "mmath.h"
#include "simple_list.h"
#include "texformat.h"
#include "texstore.h"
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_texmem.c b/xc/lib/GL/mesa/src/drv/r200/r200_texmem.c
index 9f2a28729..63dc38ffa 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_texmem.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_texmem.c
@@ -40,7 +40,6 @@ SOFTWARE.
#include "imports.h"
#include "context.h"
#include "colormac.h"
-#include "mmath.h"
#include "macros.h"
#include "simple_list.h"
#include "radeon_reg.h" /* gets definition for usleep */
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_texstate.c b/xc/lib/GL/mesa/src/drv/r200/r200_texstate.c
index 8940c3264..a6e8034ff 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_texstate.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_texstate.c
@@ -38,7 +38,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "imports.h"
#include "context.h"
#include "macros.h"
-#include "mmath.h"
#include "texformat.h"
#include "enums.h"
diff --git a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c
index 81d2bfab1..a2107e5b4 100644
--- a/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c
+++ b/xc/lib/GL/mesa/src/drv/r200/r200_vtxfmt.c
@@ -104,6 +104,9 @@ void r200_copy_to_current( GLcontext *ctx )
{
r200ContextPtr rmesa = R200_CONTEXT(ctx);
+ if (R200_DEBUG & DEBUG_VFMT)
+ fprintf(stderr, "%s\n", __FUNCTION__);
+
assert(ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT);
if (rmesa->vb.vtxfmt_0 & R200_VTX_N0) {
@@ -594,12 +597,10 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
* checking for overflow) is cheaper than sending floats
* directly.
*/
- if (ctx->Light.ColorMaterialEnabled) {
- if (1 || ctx->Color.AlphaEnabled)
- ind0 |= R200_VTX_FP_RGBA << R200_VTX_COLOR_0_SHIFT;
- else
- ind0 |= R200_VTX_FP_RGB << R200_VTX_COLOR_0_SHIFT;
- }
+ if (ctx->Light.ColorMaterialEnabled)
+ ind0 |= R200_VTX_FP_RGBA << R200_VTX_COLOR_0_SHIFT;
+ else
+ ind0 |= R200_VTX_PK_RGBA << R200_VTX_COLOR_0_SHIFT;
}
else {
/* TODO: make this data driven?
diff --git a/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc b/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc
index 6536654d5..175a3e3bf 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc
+++ b/xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc
@@ -1,4 +1,4 @@
-XCOMM $XFree86: xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc,v 1.3 2002/02/22 21:45:00 dawes Exp $
+XCOMM $XFree86: xc/lib/GL/mesa/src/drv/radeon/Imakefile.inc,v 1.4 2002/10/30 12:51:54 alanh Exp $
#ifndef MesaDrvSrcDir
#define MesaDrvSrcDir $(GLXLIBSRC)/mesa/src/drv
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c
index 169be3dea..6c0a7b8d0 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.c
@@ -36,10 +36,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "glheader.h"
-#include "imports.h"
#include "api_arrayelt.h"
#include "context.h"
#include "simple_list.h"
+#include "imports.h"
#include "matrix.h"
#include "extensions.h"
@@ -462,6 +462,7 @@ void radeonDestroyContext( __DRIcontextPrivate *driContextPriv )
if ( rmesa ) {
GLboolean release_texture_heaps;
+
release_texture_heaps = (rmesa->glCtx->Shared->RefCount == 1);
_swsetup_DestroyContext( rmesa->glCtx );
_tnl_DestroyContext( rmesa->glCtx );
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h
index 4004d3fe5..3e8816df2 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_context.h
@@ -40,18 +40,22 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifdef GLX_DIRECT_RENDERING
+#include <stdint.h>
+#include "dri_util.h"
+#include "radeon_common.h"
+#include "texmem.h"
+
+#include "macros.h"
+#include "mtypes.h"
+#include "colormac.h"
+
struct radeon_context;
typedef struct radeon_context radeonContextRec;
typedef struct radeon_context *radeonContextPtr;
-#include <stdint.h>
-#include "mtypes.h"
-#include "macros.h"
#include "radeon_lock.h"
#include "radeon_screen.h"
#include "mm.h"
-#include "texmem.h"
-#include "colormac.h"
/* Flags for software fallback cases */
/* See correponding strings in radeon_swtcl.c */
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c
index 6e911518f..3b3d9b8ce 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c,v 1.7 2002/09/16 18:05:19 eich Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.c,v 1.11 2003/01/29 22:04:59 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -296,6 +296,7 @@ GLushort *radeonAllocEltsOpenEnded( radeonContextPtr rmesa,
cmd[1].i, vertex_format, primitive);
assert(!rmesa->dma.flush);
+ rmesa->glCtx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;
rmesa->dma.flush = radeonFlushElts;
rmesa->store.elts_start = ((char *)cmd) - rmesa->store.cmd_buf;
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h
index 8b94d486c..f53b3efe9 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h,v 1.4 2002/09/16 18:05:20 eich Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_ioctl.h,v 1.6 2002/12/16 16:18:58 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c
index 643c9c10e..96a4f9d11 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c,v 1.4 2002/02/22 21:45:00 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.c,v 1.5 2002/10/30 12:51:55 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h
index 0bebb4bb2..783db7e92 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h,v 1.2 2002/02/22 21:45:00 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_lock.h,v 1.3 2002/10/30 12:51:55 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c
index b92b4f45a..65ef74d35 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c,v 1.4 2002/02/22 21:45:00 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.c,v 1.6 2002/12/16 16:18:58 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h
index 47408aa6b..2c69d8657 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h,v 1.3 2002/02/22 21:45:01 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_screen.h,v 1.5 2002/12/16 16:18:58 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_span.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_span.c
index d8b6dd9dd..029d7cd8e 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_span.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_span.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_span.c,v 1.5 2002/02/22 21:45:01 dawes Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_span.c,v 1.6 2002/10/30 12:51:56 alanh Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_state.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_state.c
index 2172fb3fb..dd8774f5d 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_state.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_state.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state.c,v 1.5 2002/09/16 18:05:20 eich Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state.c,v 1.8 2002/12/16 16:18:58 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 VA Linux Systems Inc., Fremont, California.
@@ -36,7 +36,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "glheader.h"
#include "imports.h"
#include "api_arrayelt.h"
-#include "mmath.h"
#include "enums.h"
#include "colormac.h"
@@ -1296,14 +1295,6 @@ static void radeonStencilOp( GLcontext *ctx, GLenum fail,
case GL_DECR:
rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_FAIL_DEC;
break;
-#if 0
- case GL_INCR_WRAP_EXT:
- rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_FAIL_INC_WRAP;
- break;
- case GL_DECR_WRAP_EXT:
- rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_FAIL_DEC_WRAP;
- break;
-#endif
case GL_INVERT:
rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_FAIL_INVERT;
break;
@@ -1325,14 +1316,6 @@ static void radeonStencilOp( GLcontext *ctx, GLenum fail,
case GL_DECR:
rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZFAIL_DEC;
break;
-#if 0
- case GL_INCR_WRAP_EXT:
- rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZFAIL_INC_WRAP;
- break;
- case GL_DECR_WRAP_EXT:
- rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZFAIL_DEC_WRAP;
- break;
-#endif
case GL_INVERT:
rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZFAIL_INVERT;
break;
@@ -1354,14 +1337,6 @@ static void radeonStencilOp( GLcontext *ctx, GLenum fail,
case GL_DECR:
rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZPASS_DEC;
break;
-#if 0
- case GL_INCR_WRAP_EXT:
- rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZPASS_INC_WRAP;
- break;
- case GL_DECR_WRAP_EXT:
- rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZPASS_DEC_WRAP;
- break;
-#endif
case GL_INVERT:
rmesa->hw.ctx.cmd[CTX_RB3D_ZSTENCILCNTL] |= RADEON_STENCIL_ZPASS_INVERT;
break;
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_state.h b/xc/lib/GL/mesa/src/drv/radeon/radeon_state.h
index a06c061f7..a181d427e 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_state.h
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_state.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state.h,v 1.3 2002/09/16 18:05:20 eich Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_state.h,v 1.5 2002/11/05 17:46:09 tsi Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c
index 12453c77e..4f0841489 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_state_init.c
@@ -30,7 +30,6 @@
#include "glheader.h"
#include "imports.h"
-#include "mmath.h"
#include "api_arrayelt.h"
#include "swrast/swrast.h"
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
index 9486bcc4c..583e88350 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_swtcl.c
@@ -38,7 +38,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "colormac.h"
#include "enums.h"
#include "imports.h"
-#include "mmath.h"
#include "macros.h"
#include "swrast_setup/swrast_setup.h"
@@ -403,9 +402,9 @@ static void flush_last_swtcl_prim( radeonContextPtr rmesa )
rmesa->swtcl.numverts = 0;
current->start = current->ptr;
-
- rmesa->dma.flush = 0;
}
+
+ rmesa->dma.flush = 0;
}
@@ -459,6 +458,7 @@ static __inline void *radeonAllocDmaLowVerts( radeonContextPtr rmesa,
radeonRefillCurrentDmaRegion( rmesa );
if (!rmesa->dma.flush) {
+ rmesa->glCtx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;
if (rmesa->dri.drmMinor == 1)
rmesa->dma.flush = flush_last_swtcl_prim_compat;
else
@@ -1145,8 +1145,8 @@ void radeonFlushVertices( GLcontext *ctx, GLuint flags )
{
_tnl_flush_vertices( ctx, flags );
- if (flags & FLUSH_STORED_VERTICES)
- RADEON_FIREVERTICES( RADEON_CONTEXT( ctx ) );
+ if (flags & FLUSH_STORED_VERTICES)
+ RADEON_NEWPRIM( RADEON_CONTEXT( ctx ) );
}
/**********************************************************************/
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c
index 3102b060d..b361815b6 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_tcl.c
@@ -36,7 +36,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "glheader.h"
#include "imports.h"
#include "light.h"
-#include "mmath.h"
#include "mtypes.h"
#include "enums.h"
@@ -354,7 +353,7 @@ static void radeon_check_tcl_render( GLcontext *ctx,
if (ctx->Light.Enabled) {
inputs |= VERT_BIT_NORMAL;
- if (ctx->Light.ColorMaterialEnabled) {
+ if (1 || ctx->Light.ColorMaterialEnabled) {
inputs |= VERT_BIT_COLOR0;
}
}
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c
index 596b32cae..27b793443 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c,v 1.4 2002/09/16 18:05:20 eich Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_texmem.c,v 1.7 2002/12/16 16:18:59 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -39,7 +39,6 @@ SOFTWARE.
#include "glheader.h"
#include "imports.h"
#include "context.h"
-#include "mmath.h"
#include "macros.h"
#include "simple_list.h"
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c
index 8fc6b5325..fe52f60da 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c,v 1.3 2002/09/16 18:05:21 eich Exp $ */
+/* $XFree86: xc/lib/GL/mesa/src/drv/radeon/radeon_texstate.c,v 1.6 2002/12/16 16:18:59 dawes Exp $ */
/**************************************************************************
Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
@@ -39,7 +39,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "colormac.h"
#include "context.h"
#include "macros.h"
-#include "mmath.h"
#include "texformat.h"
#include "enums.h"
diff --git a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
index 3d11518c1..b613e9eb4 100644
--- a/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
+++ b/xc/lib/GL/mesa/src/drv/radeon/radeon_vtxfmt.c
@@ -549,9 +549,6 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
if (rmesa->TclFallback || rmesa->vb.fell_back || ctx->CompileFlag)
return GL_FALSE;
- if (!_glapi_Context)
- return GL_FALSE;
-
if (ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT)
ctx->Driver.FlushVertices( ctx, FLUSH_UPDATE_CURRENT );
@@ -566,11 +563,11 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
* directly.
*/
if (ctx->Light.ColorMaterialEnabled) {
- ind |= RADEON_CP_VC_FRMT_FPCOLOR;
- if (ctx->Color.AlphaEnabled) {
- ind |= RADEON_CP_VC_FRMT_FPALPHA;
- }
+ ind |= (RADEON_CP_VC_FRMT_FPCOLOR |
+ RADEON_CP_VC_FRMT_FPALPHA);
}
+ else
+ ind |= RADEON_CP_VC_FRMT_PKCOLOR; /* for alpha? */
}
else {
/* TODO: make this data driven?
diff --git a/xc/programs/Xserver/GL/dri/dri.c b/xc/programs/Xserver/GL/dri/dri.c
index 9d60fc5c9..b08379099 100644
--- a/xc/programs/Xserver/GL/dri/dri.c
+++ b/xc/programs/Xserver/GL/dri/dri.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.35 2002/09/18 18:14:50 martin Exp $ */
+/* $XFree86: xc/programs/Xserver/GL/dri/dri.c,v 1.38 2002/11/20 18:10:24 dawes Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
diff --git a/xc/programs/Xserver/GL/dri/dristruct.h b/xc/programs/Xserver/GL/dri/dristruct.h
index ba3b9704a..e733ac210 100644
--- a/xc/programs/Xserver/GL/dri/dristruct.h
+++ b/xc/programs/Xserver/GL/dri/dristruct.h
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.11 2002/09/18 18:14:51 martin Exp $ */
+/* $XFree86: xc/programs/Xserver/GL/dri/dristruct.h,v 1.13 2002/11/20 18:10:24 dawes Exp $ */
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/Imakefile b/xc/programs/Xserver/hw/xfree86/drivers/geode/Imakefile
deleted file mode 100644
index 60af17575..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/Imakefile
+++ /dev/null
@@ -1,146 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/Imakefile,v 1.3 2002/10/23 08:16:56 alanh Exp $
-XCOMM Imakefile for the National Semiconductor Geode driver
-XCOMM that is based on the durango code.
-XCOMM
-XCOMM (c) 2000 National Semiconductor corporation
-XCOMM (c) 2000 by Juergen Schneider, Infomatec IAS GmbH
-XCOMM
-#define IHaveModules
-#include <Server.tmpl>
-
-XCOMM Turn this off for the Set-Top-Box (STB) mode which uses
-XCOMM the linux kernel driver interface.
-#if 1
-DURANGOSRCS = durango.c panel.c
-DURANGOOBJS = durango.o panel.o
-EXTINCLUDES = -I./gfx -I./panel
-#else
-DEFINES = -DSTB_X
-STBSRCS = galstub.c
-STBOBJS = galstub.o
-EXTINCLUDES = -I/usr/src/nsm -I/usr/src/linux/drivers/video/geode/gfx \
- -I/usr/src/linux/drivers/video/geode/panel
-#endif
-
-
-
-SRCS = geode_driver.c \
- geode_accel.c \
- geode_cursor.c \
- $(STBSRCS) \
- geode_dga.c \
- geode_video.c \
- geode_shadow.c \
- $(DURANGOSRCS)
-
-OBJS = geode_driver.o \
- geode_accel.o \
- geode_cursor.o \
- $(STBOBJS) \
- geode_dga.o \
- geode_video.o \
- geode_shadow.o \
- $(DURANGOOBJS)
-
-#if defined(XF86DriverSDK)
-INCLUDES = -I. -I../../include
-#else
-INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) -I$(SERVERSRC)/Xext \
- -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi \
- -I$(SERVERSRC)/cfb -I$(SERVERSRC)/fb -I$(XF86SRC)/xaa \
- -I$(XF86SRC)/vgahw -I$(XF86SRC)/ramdac \
- -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c \
- -I$(XF86SRC)/rac -I$(XF86SRC)/int10 \
- -I$(XF86SRC)/xf24_32bpp -I$(FONTINCSRC) \
- -I$(XF86SRC)/xf8_32bpp -I$(XF86SRC)/xf1bpp \
- -I$(XF86SRC)/xf4bpp -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
- -I$(XF86SRC)/ddc -I$(XF86SRC)/i2c -I$(EXTINCSRC) $(DRIINCLUDES) \
- -I$(XF86SRC)/shadowfb -I$(XF86SRC)/fbdevhw \
- -I$(XTOP)/include -I$(XF86OSSRC)/vbe -I$(SERVERSRC)/render \
- $(EXTINCLUDES)
-#endif
-
-
-#if MakeHasPosixVariableSubstitutions
-SubdirLibraryRule($(OBJS))
-#endif
-
-ModuleObjectRule()
-
-ObjectModuleTarget(geode,$(OBJS))
-
-InstallObjectModule(geode,$(MODULEDIR),drivers)
-
-#if !defined(XF86DriverSDK)
-CppManTarget(geode,)
-InstallModuleManPage(geode)
-#endif
-
-DependTarget()
-
-InstallDriverSDKNonExecFile(Imakefile,$(DRIVERSDKDIR)/drivers/geode)
-
-InstallDriverSDKNonExecFile(geode_driver.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(durango.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(galstub.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode_accel.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode_dga.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode_fourcc.h,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode_accel.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode.h,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode_shadow.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(geode_video.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(panel.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(regacc.c,$(DRIVERSDKDIR)/drivers/geode)
-InstallDriverSDKNonExecFile(gfx/disp_gu1.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/disp_gu2.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/durango.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_dcdr.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_defs.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_disp.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_i2c.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_init.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_mode.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_msr.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_regs.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_rndr.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_rtns.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_tv.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_type.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_vga.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_vid.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/gfx_vip.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/history.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/i2c_acc.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/i2c_gpio.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/init_gu1.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/init_gu2.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/msr_rdcl.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/release.txt,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/rndr_gu1.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/rndr_gu2.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/saa7114.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/tv_1200.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/tv_fs450.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/tv_fs450.h,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/vga_gu1.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/vid_1200.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/vid_5530.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/vid_rdcl.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(gfx/vip_1200.c,$(DRIVERSDKDIR)/drivers/geode/gfx)
-InstallDriverSDKNonExecFile(panel/92xx.h,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/cen9211.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/cen9211.h,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/dora9211.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/dora9211.h,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/drac9210.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/drac9210.h,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/panel.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/panel.h,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/platform.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/pnl_bios.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/pnl_defs.h,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/pnl_init.c,$(DRIVERSDKDIR)/drivers/geode/panel)
-InstallDriverSDKNonExecFile(panel/readme.txt,$(DRIVERSDKDIR)/drivers/geode/panel)
-
-InstallDriverSDKObjectModule(geode,$(DRIVERSDKMODULEDIR),drivers)
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/durango.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/durango.c
deleted file mode 100644
index b442035eb..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/durango.c
+++ /dev/null
@@ -1,618 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/durango.c,v 1.2 2002/10/18 20:52:41 dawes Exp $ */
-/*
- * $Workfile: durango.c $
- *
- * This is the main file used to add Durango graphics support to a software
- * project. The main reason to have a single file include the other files
- * is that it centralizes the location of the compiler options. This file
- * should be tuned for a specific implementation, and then modified as needed
- * for new Durango releases. The releases.txt file indicates any updates to
- * this main file, such as a new definition for a new hardware platform.
- *
- * In other words, this file should be copied from the Durango source files
- * once when a software project starts, and then maintained as necessary.
- * It should not be recopied with new versions of Durango unless the
- * developer is willing to tune the file again for the specific project.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/* COMPILER OPTIONS
- * These compiler options specify how the Durango routines are compiled
- * for the different hardware platforms. For best performance, a driver
- * would build for a specific platform. The "dynamic" switches are set
- * by diagnostic applications such as Darwin that will run on a variety
- * of platforms and use the appropriate code at runtime. Each component
- * may be separately dynamic, so that a driver has the option of being
- * tuned for a specific 2D accelerator, but will still run with a variety
- * of chipsets.
- */
-
-#define GFX_DISPLAY_DYNAMIC 0 /* runtime selection */
-#define GFX_DISPLAY_GU1 1 /* 1st generation display controller */
-#define GFX_DISPLAY_GU2 0 /* 2nd generation display controller */
-
-#define GFX_INIT_DYNAMIC 0 /* runtime selection */
-#define GFX_INIT_GU1 1 /* Geode family */
-#define GFX_INIT_GU2 0 /* Redcloud */
-
-#define GFX_MSR_DYNAMIC 0 /* runtime selection */
-#define GFX_MSR_REDCLOUD 0 /* Redcloud */
-
-#define GFX_2DACCEL_DYNAMIC 0 /* runtime selection */
-#define GFX_2DACCEL_GU1 1 /* 1st generation 2D accelerator */
-#define GFX_2DACCEL_GU2 0 /* 2nd generation 2D accelerator */
-
-#define GFX_VIDEO_DYNAMIC 1 /* runtime selection */
-#define GFX_VIDEO_CS5530 1 /* support for CS5530 */
-#define GFX_VIDEO_SC1200 1 /* support for SC1200 */
-#define GFX_VIDEO_REDCLOUD 0 /* support for Redcloud */
-
-#define GFX_VIP_DYNAMIC 0 /* runtime selection */
-#define GFX_VIP_SC1200 0 /* support for SC1200 */
-
-#define GFX_DECODER_DYNAMIC 0 /* runtime selection */
-#define GFX_DECODER_SAA7114 0 /* Philips SAA7114 decoder */
-
-#define GFX_TV_DYNAMIC 0 /* runtime selection */
-#define GFX_TV_FS451 0 /* Focus Enhancements FS450 */
-#define GFX_TV_SC1200 1 /* SC1200 integrated TV encoder */
-
-#define GFX_I2C_DYNAMIC 1 /* runtime selection */
-#define GFX_I2C_ACCESS 1 /* support for ACCESS.BUS */
-#define GFX_I2C_GPIO 1 /* support for CS5530 GPIOs */
-
-#define GFX_VGA_DYNAMIC 0 /* runtime selection */
-#define GFX_VGA_GU1 1 /* 1st generation graphics unit */
-
-#define FB4MB 1 /* Set to use 4Mb video ram for Pyramid */
-
-#define GFX_NO_IO_IN_WAIT_MACROS 0 /* Set to remove I/O accesses in GP bit testing */
-
-/* ROUTINES TO READ VALUES
- * These are routines used by Darwin or other diagnostics to read the
- * current state of the hardware. Display drivers or embedded applications can
- * reduce the size of the Durango code by not including these routines.
- */
-#define GFX_READ_ROUTINES 1 /* add routines to read values */
-
-/* VARIABLES USED FOR RUNTIME SELECTION
- * If part of the graphics subsystem is declared as dynamic, then the
- * following variables are used to specify which platform has been detected.
- * The variables are set in the "gfx_detect_cpu" routine. The values should
- * be bit flags to allow masks to be used to check for multiple platforms.
- */
-
-#if GFX_DISPLAY_DYNAMIC
-int gfx_display_type = 0;
-#endif
-
-#if GFX_INIT_DYNAMIC
-int gfx_init_type = 0;
-#endif
-
-#if GFX_MSR_DYNAMIC
-int gfx_msr_type = 0;
-#endif
-
-#if GFX_2DACCEL_DYNAMIC
-int gfx_2daccel_type = 0;
-#endif
-
-#if GFX_VIDEO_DYNAMIC
-int gfx_video_type = 0;
-#endif
-
-#if GFX_VIP_DYNAMIC
-int gfx_vip_type = 0;
-#endif
-
-#if GFX_DECODER_DYNAMIC
-int gfx_decoder_type = 0;
-#endif
-
-#if GFX_TV_DYNAMIC
-int gfx_tv_type = 0;
-#endif
-
-#if GFX_I2C_DYNAMIC
-int gfx_i2c_type = 0;
-#endif
-
-#if GFX_VGA_DYNAMIC
-int gfx_vga_type = 0;
-#endif
-
-/* HEADER FILE FOR DURANGO ROUTINE DEFINITIONS
- * Needed since some of the Durango routines call other Durango routines.
- * Also defines the size of chipset array (GFX_CSPTR_SIZE).
- */
-#include "gfx_rtns.h" /* routine definitions */
-
-/* DEFINE POINTERS TO MEMORY MAPPED REGIONS
- * These pointers are used by the Durango routines to access the hardware.
- * The variables must be set by the project's initialization code after
- * mapping the regions in the appropriate manner.
- */
-
-/* DEFINE VIRTUAL ADDRESSES */
-/* Note: These addresses define the starting base expected by all */
-/* Durango offsets. Under an OS that requires these pointers */
-/* to be mapped to linear addresses (i.e Windows), it may not */
-/* be possible to keep these base offsets. In these cases, */
-/* the addresses are modified to point to the beginning of the */
-/* relevant memory region and the access macros are adjusted */
-/* to subtract the offset from the default base. For example, */
-/* the register pointer could be moved to be 0x40008000, while */
-/* the WRITE_REG* macros are modified to subtract 0x8000 from */
-/* the offset. */
-
-unsigned char *gfx_virt_regptr = (unsigned char *)0x40000000;
-unsigned char *gfx_virt_fbptr = (unsigned char *)0x40800000;
-unsigned char *gfx_virt_vidptr = (unsigned char *)0x40010000;
-unsigned char *gfx_virt_vipptr = (unsigned char *)0x40015000;
-unsigned char *gfx_virt_spptr = (unsigned char *)0x40000000;
-unsigned char *gfx_virt_gpptr = (unsigned char *)0x40000000;
-
-/* DEFINE PHYSICAL ADDRESSES */
-unsigned char *gfx_phys_regptr = (unsigned char *)0x40000000;
-unsigned char *gfx_phys_fbptr = (unsigned char *)0x40800000;
-unsigned char *gfx_phys_vidptr = (unsigned char *)0x40010000;
-unsigned char *gfx_phys_vipptr = (unsigned char *)0x40015000;
-
-/* HEADER FILE FOR GRAPHICS REGISTER DEFINITIONS
- * This contains only constant definitions, so it should be able to be
- * included in any software project as is.
- */
-#include "gfx_regs.h" /* graphics register definitions */
-
-/* HEADER FILE FOR REGISTER ACCESS MACROS
- * This file contains the definitions of the WRITE_REG32 and similar macros
- * used by the Durango routines to access the hardware. The file assumes
- * that the environment can handle 32-bit pointer access. If this is not
- * the case, or if there are special requirements, then this header file
- * should not be included and the project must define the macros itself.
- * (A project may define WRITE_REG32 to call a routine, for example).
- */
-#include "gfx_defs.h" /* register access macros */
-
-/* IO MACROS AND ROUTINES
- * These macros must be defined before the initialization or I2C
- * routines will work properly.
- */
-
-#if defined(OS_WIN32) /* For Windows */
-
-/* VSA II CALL */
-
-void
-gfx_msr_asm_read(unsigned short msrReg, unsigned long msrAddr,
- unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- unsigned long temp1, temp2;
-
- _asm {
- mov dx, 0x0AC1C
- mov eax, 0x0FC530007
- out dx, eax add dl, 2 mov ecx, msrAddr mov cx, msrReg in ax, dx;
- EDX:EAX will contain MSR contents.mov temp1, edx mov temp2, eax}
-
- *ptrHigh = temp1;
- *ptrLow = temp2;
-}
-
-void
-gfx_msr_asm_write(unsigned short msrReg, unsigned long msrAddr,
- unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- unsigned long temp1 = *ptrHigh;
- unsigned long temp2 = *ptrLow;
-
- _asm {
-
- mov dx, 0x0AC1C
- mov eax, 0x0FC530007 out dx, eax add dl, 2 mov ecx, msrAddr;
- ECX contains msrAddr | msrReg mov cx, msrReg;
- mov ebx, temp1;
-
- <OR_mask_hi > mov eax, temp2;
- <OR_mask_hi > mov esi, 0;
- <AND_mask_hi > mov edi, 0;
- <AND_mask_lo > out dx, ax;
- MSR is written at this point}
-}
-
-unsigned char
-gfx_inb(unsigned short port)
-{
- unsigned char data;
-
- _asm {
- pushf mov dx, port in al, dx mov data, al popf}
- return (data);
-}
-
-unsigned short
-gfx_inw(unsigned short port)
-{
- unsigned short data;
-
- _asm {
- pushf mov dx, port in ax, dx mov data, ax popf}
- return (data);
-}
-
-unsigned long
-gfx_ind(unsigned short port)
-{
- unsigned long data;
-
- _asm {
- pushf mov dx, port in eax, dx mov data, eax popf}
- return (data);
-}
-
-void
-gfx_outb(unsigned short port, unsigned char data)
-{
- _asm {
- pushf mov al, data mov dx, port out dx, al popf}
-}
-
-void
-gfx_outw(unsigned short port, unsigned short data)
-{
- _asm {
- pushf mov ax, data mov dx, port out dx, ax popf}
-}
-
-void
-gfx_outd(unsigned short port, unsigned long data)
-{
- _asm {
- pushf mov eax, data mov dx, port out dx, eax popf}
-}
-
-#elif defined(OS_VXWORKS) || defined (OS_UNIX) /* VxWorks and Linux etc. */
-
-void
-gfx_msr_asm_read(unsigned short msrReg, unsigned long msrAddr,
- unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- /* ADD LINUX IMPLEMENTATION */
- ;
-}
-
-void
-gfx_msr_asm_write(unsigned short msrReg, unsigned long msrAddr,
- unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- /* ADD LINUX IMPLEMENTATION */
- ;
-}
-
-unsigned char
-gfx_inb(unsigned short port)
-{
- unsigned char value;
- __asm__ volatile ("inb %1,%0":"=a" (value):"d"(port));
-
- return value;
-}
-
-unsigned short
-gfx_inw(unsigned short port)
-{
- unsigned short value;
- __asm__ volatile ("in %1,%0":"=a" (value):"d"(port));
-
- return value;
-}
-
-unsigned long
-gfx_ind(unsigned short port)
-{
- unsigned long value;
- __asm__ volatile ("inl %1,%0":"=a" (value):"d"(port));
-
- return value;
-}
-
-void
-gfx_outb(unsigned short port, unsigned char data)
-{
- __asm__ volatile ("outb %0,%1"::"a" (data), "d"(port));
-}
-
-void
-gfx_outw(unsigned short port, unsigned short data)
-{
- __asm__ volatile ("out %0,%1"::"a" (data), "d"(port));
-}
-
-void
-gfx_outd(unsigned short port, unsigned long data)
-{
- __asm__ volatile ("outl %0,%1"::"a" (data), "d"(port));
-}
-
-#elif defined(XFree86Server)
-
-#include <xf86_ansic.h>
-#include <compiler.h>
-#define INB(port) inb(port)
-#define INW(port) inw(port)
-#define IND(port) inl(port)
-#define OUTB(port,data) outb(port, data)
-#define OUTW(port,data) outw(port, data)
-#define OUTD(port,data) outl(port, data)
-
-unsigned char
-gfx_inb(unsigned short port)
-{
- return inb(port);
-}
-
-unsigned short
-gfx_inw(unsigned short port)
-{
- return inw(port);
-}
-
-unsigned long
-gfx_ind(unsigned short port)
-{
- return inl(port);
-}
-
-void
-gfx_outb(unsigned short port, unsigned char data)
-{
- outb(port, data);
-}
-
-void
-gfx_outw(unsigned short port, unsigned short data)
-{
- outw(port, data);
-}
-
-void
-gfx_outd(unsigned short port, unsigned long data)
-{
- outl(port, data);
-}
-
-#else /* else nothing */
-
-unsigned char
-gfx_inb(unsigned short port)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
- return (0);
-}
-
-unsigned short
-gfx_inw(unsigned short port)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
- return (0);
-}
-
-unsigned long
-gfx_ind(unsigned short port)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
- return (0);
-}
-
-void
-gfx_outb(unsigned short port, unsigned char data)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
-}
-
-void
-gfx_outw(unsigned short port, unsigned short data)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
-}
-
-void
-gfx_outd(unsigned short port, unsigned long data)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
-}
-#endif
-
-#ifndef XFree86Server
-#define INB(port) gfx_inb(port)
-#define INW(port) gfx_inw(port)
-#define IND(port) gfx_ind(port)
-#define OUTB(port, data) gfx_outb(port, data)
-#define OUTW(port, data) gfx_outw(port, data)
-#define OUTD(port, data) gfx_outd(port, data)
-#endif
-
-/* INITIALIZATION ROUTINES
- * These routines are used during the initialization of the driver to
- * perform such tasks as detecting the type of CPU and video hardware.
- * The routines require the use of IO, so the above IO routines need
- * to be implemented before the initialization routines will work
- * properly.
- */
-
-#include "gfx_init.c"
-
-/* INCLUDE MSR ACCESS ROUTINES */
-
-#include "gfx_msr.c"
-
-/* INCLUDE GRAPHICS ENGINE ROUTINES
- * These routines are used to program the 2D graphics accelerator. If
- * the project does not use graphics acceleration (direct frame buffer
- * access only), then this file does not need to be included.
- */
-#include "gfx_rndr.c" /* graphics engine routines */
-
-/* INCLUDE DISPLAY CONTROLLER ROUTINES
- * These routines are used if the display mode is set directly. If the
- * project uses VGA registers to set a display mode, then these files
- * do not need to be included.
- */
-#include "gfx_mode.h" /* display mode tables */
-#include "gfx_disp.c" /* display controller routines */
-
-/* INCLUDE VIDEO OVERLAY ROUTINES
- * These routines control the video overlay hardware.
- */
-#include "gfx_vid.c" /* video overlay routines */
-
-/* VIDEO PORT AND VIDEO DECODER ROUTINES
- * These routines rely on the I2C routines.
- */
-#include "gfx_vip.c" /* video port routines */
-#include "gfx_dcdr.c" /* video decoder routines */
-
-/* I2C BUS ACCESS ROUTINES
- * These routines are used by the video decoder and possibly an
- * external TV encoer.
- */
-#include "gfx_i2c.c" /* I2C bus access routines */
-
-/* TV ENCODER ROUTINES
- * This file does not need to be included if the system does not
- * support TV output.
- */
-#include "gfx_tv.c" /* TV encoder routines */
-
-/* VGA ROUTINES
- * This file is used if setting display modes using VGA registers.
- */
-#include "gfx_vga.c" /* VGA routines */
-
-/* ROUTINES added accessing hardware reg */
-#include "regacc.c"
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/galstub.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/galstub.c
deleted file mode 100644
index a016531af..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/galstub.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/galstub.c,v 1.1 2002/10/11 14:32:58 alanh Exp $ */
-/*
- * $Workfile: galstub.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the file inclusions of the GAL
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#if defined(STB_X)
-#ifdef XFree86LOADER
-/* all driver need this */
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-/* pci stuff */
-#include "xf86PciInfo.h"
-#include "xf86Pci.h"
-#include "xf86cmap.h"
-#include "asm/page.h" /* #define for PAGE_* */
-
-#define makedev(major, minor) ((((unsigned int) (major)) << 8) \
- | ((unsigned int) (minor)))
-#endif
-
-#include "galfns.c"
-#endif /* STB_X */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode.h
deleted file mode 100644
index a081c0609..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode.h
+++ /dev/null
@@ -1,332 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode.h,v 1.1 2002/10/11 14:32:58 alanh Exp $ */
-/*
- * $Workfile: geode.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the data structures Geode driver.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#ifndef _GEODE_H_
-#define _GEODE_H_
-
-#include "xaa.h"
-#include "xf86Cursor.h"
-#include "vgaHW.h"
-#include "xf86xv.h"
-
-#if defined(STB_X)
-#define GFX(x) Gal_##x
-#else
-#define GFX(x) gfx_##x
-#endif
-
-#if defined(STB_X)
-#include "galproto.h"
-#else
-#include "gfx_rtns.h"
-#include "gfx_defs.h"
-#include "gfx_regs.h"
-#include "panel.h"
-
-typedef struct __TVPARAMS
-{
- unsigned int dwFlags;
- unsigned short wWidth;
- unsigned short wHeight;
- unsigned short wStandard;
- unsigned short wType;
- unsigned short wOutput;
- unsigned short wResolution;
- Bool bState;
-}
-TVPARAMS, *PTVPARAMS;
-
-typedef struct __DISPLAYTIMING
-{
- unsigned int dwDotClock;
- unsigned short wPitch;
- unsigned short wBpp;
- unsigned short wHTotal;
- unsigned short wHActive;
- unsigned short wHSyncStart;
- unsigned short wHSyncEnd;
- unsigned short wHBlankStart;
- unsigned short wHBlankEnd;
- unsigned short wVTotal;
- unsigned short wVActive;
- unsigned short wVSyncStart;
- unsigned short wVSyncEnd;
- unsigned short wVBlankStart;
- unsigned short wVBlankEnd;
- unsigned short wPolarity;
-}
-DISPLAYTIMING, *PDISPLAYTIMING;
-
-/* TV Timings */
-typedef struct __TVTIMING
-{
- unsigned long HorzTim;
- unsigned long HorzSync;
- unsigned long VertSync;
- unsigned long LineEnd;
- unsigned long VertDownscale;
- unsigned long HorzScaling;
- unsigned long TimCtrl1;
- unsigned long TimCtrl2;
- unsigned long Subfreq;
- unsigned long DispPos;
- unsigned long DispSize;
- unsigned long Debug;
- unsigned long DacCtrl;
- unsigned int DotClock;
-}
-TVTIMING, *PTVTIMING;
-
-#endif /* STB_X */
-
-/* XFree86 macros */
-#define GEODEPTR(p) ((GeodePtr)((p)->driverPrivate))
-
-#define DEBUGMSG(cond, drv_msg) if((cond)) xf86DrvMsg drv_msg
-
-#define DEFAULT_NUM_OF_BUF 20 /* default # of buffers */
-
-/* Overlay Transparency Key */
-#define TRANSPARENCY_KEY 255
-
-typedef struct
-{
- /* Private struct for the server */
- unsigned long cpu_version; /* [7:0] Type:1=GXLV,2=SC1400 */
- /* [15:8] Major version */
- /* [23:16] Minor version */
- unsigned long vid_version; /* [7:0] Type:1=CS5530,2=SC1400 */
-
- EntityInfoPtr pEnt;
- ScreenBlockHandlerProcPtr BlockHandler; /* needed for video */
- CloseScreenProcPtr CloseScreen;
- int Chipset;
- int FBLinearAddr;
- unsigned char *FBBase;
- unsigned long FBSize;
- int Pitch;
- Bool HWCursor;
- Bool NoAccel;
- Bool HWOverlay;
- Bool HWVideo;
- unsigned long ColorKey;
- unsigned long VideoKey;
-
- Bool TVSupport;
-#if defined(STB_X)
- GAL_TVPARAMS TvParam;
-#else
- TVPARAMS TvParam;
-#endif /* STB_X */
-
- int TVOx, TVOy, TVOw, TVOh;
- Bool TV_Overscan_On;
-
- Bool Panel;
- Pnl_PanelParams PnlParam;
-
- /* Flatpanel support from Bios */
- Bool FPInBios;
- int FPBX; /* xres */
- int FPBY; /* yres */
- int FPBB; /* bpp */
- int FPBF; /* freq */
-
- int Rotate;
- Bool ShadowFB;
- unsigned char *ShadowPtr;
- int ShadowPitch;
- void (*PointerMoved) (int index, int x, int y);
-
- Bool Compression;
- unsigned long CursorStartOffset;
- unsigned int CursorSize;
- xf86CursorInfoPtr CursorInfo;
- int CursorXHot;
- int CursorYHot;
- unsigned long OffscreenStartOffset;
- unsigned int OffscreenSize;
-
- /***Image Write structures ***/
-
- /* offset in video memory for ImageWrite Buffers */
- unsigned char **AccelImageWriteBufferOffsets;
- int NoOfImgBuffers;
- /*****************************************/
-/* Saved Console State */
-#if defined(STB_X)
- GAL_VGAMODEDATA FBgfxVgaRegs;
- GAL_DISPLAYTIMING FBgfxdisplaytiming;
- GAL_TVTIMING FBgfxtvtiming;
-#else
- gfx_vga_struct FBgfxVgaRegs;
- DISPLAYTIMING FBgfxdisplaytiming;
- TVTIMING FBtvtiming;
-#endif /* STB_X */
- int FBSoftVGAActive;
- unsigned int FBTVEnabled;
- unsigned long FBDisplayOffset;
-
- /* compression */
- int FBCompressionEnable;
- unsigned long FBCompressionOffset;
- unsigned short FBCompressionPitch;
- unsigned short FBCompressionSize;
-
- /* Save the Cursor offset of the FB */
- unsigned long FBCursorOffset;
-/*****************************************/
-
- XAAInfoRecPtr AccelInfoRec;
-
- DGAModePtr DGAModes;
- int numDGAModes;
- Bool DGAactive;
- int DGAViewportStatus;
-
- int videoKey;
- XF86VideoAdaptorPtr adaptor;
- int OverlaySkewX;
- int OverlaySkewY;
- int VideoZoomMax;
-}
-GeodeRec, *GeodePtr;
-
-#endif /* _GEODE_H_ */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode.man b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode.man
deleted file mode 100644
index f9ee9190c..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode.man
+++ /dev/null
@@ -1,31 +0,0 @@
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode.man,v 1.1 2002/10/11 14:32:58 alanh Exp $
-.\" shorthand for double quote that works everywhere.
-.ds q \N'34'
-.TH GEODE __drivermansuffix__ __vendorversion__
-.SH NAME
-geode \- Geode video driver
-.SH SYNOPSIS
-.nf
-.B "Section \*qDevice\*q"
-.BI " Identifier \*q" devname \*q
-.B " Driver \*qgeode\*q"
-\ \ ...
-.B EndSection
-.fi
-.SH DESCRIPTION
-.B geode
-is an driver for National Semiconductors GEODE processor family.
-It uses the DURANGO kit provided by National Semiconductors.
-.SH SUPPORTED HARDWARE
-The
-.B geode
-driver supports GXLV (5530 companion chip), SC1200, SC1400
-.SH CONFIGURATION DETAILS
-Please refer to XF86Config(5x) for general configuration
-details. This section only covers configuration details specific to this
-driver.
-.SH "SEE ALSO"
-XFree86(1), XF86Config(5x), xf86config(1), Xserver(1), X(1)
-.SH AUTHORS
-Juergen Schneider, Infomatec IAS GmbH
-Alan Hourihane <alanh@fairlite.demon.co.uk>
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_accel.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_accel.c
deleted file mode 100644
index 371d66622..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_accel.c
+++ /dev/null
@@ -1,1076 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_accel.c,v 1.1 2002/10/11 14:32:58 alanh Exp $ */
-/*
- * $Workfile: geode_accel.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file is consists of main Xfree
- * acceleration supported routines like solid fill used
- * here.
- * Project: Geode Xfree Frame buffer device driver.
- *
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/*
- * Fixes by
- * Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-
-/* Xfree86 header files */
-#include "vgaHW.h"
-#include "xf86.h"
-#include "xf86_ansic.h"
-#include "xaalocal.h"
-#include "xf86fbman.h"
-#include "miline.h"
-#include "xf86_libc.h"
-#include "xaarop.h"
-#include "geode.h"
-
-/* The following ROPs only use pattern and destination data.
- * They are used when the planemask specifies all planes (no mask).
- */
-
-static const int windowsROPpat[16] = {
- 0x00, 0xA0, 0x50, 0xF0, 0x0A, 0xAA, 0x5A, 0xFA,
- 0x05, 0xA5, 0x55, 0xF5, 0x0F, 0xAF, 0x5F, 0xFF
-};
-
-/* The following ROPs use source data to specify a planemask.
- * If the planemask (src) is one, then the result is the appropriate
- * combination of pattern and destination data. If the planemask (src)
- * is zero, then the result is always just destination data.
- */
-
-static const int windowsROPsrcMask[16] = {
- 0x22, 0xA2, 0x62, 0xE2, 0x2A, 0xAA, 0x6A, 0xEA,
- 0x26, 0xA6, 0x66, 0xE6, 0x2E, 0xAE, 0x6E, 0xEE
-};
-
-/* The following ROPs use pattern data to specify a planemask.
- * If the planemask (pat) is one, then the result is the appropriate
- * combination of source and destination data. If the planemask (pat)
- * is zero, then the result is always just destination data.
- */
-
-static const int windowsROPpatMask[16] = {
- 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
- 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA
-};
-
-/* STATIC VARIABLES FOR THIS FILE
- * Used to maintain state between setup and rendering calls.
- */
-
-static int GeodeTransparent;
-static int GeodeTransColor;
-static int Geodedstx;
-static int Geodedsty;
-static int Geodesrcx;
-static int Geodesrcy;
-static int Geodewidth;
-static int Geodeheight;
-static int Geodebpp;
-static int GeodeCounter;
-
-/* DECLARATION OF ROUTINES THAT ARE HOOKED */
-
-Bool GeodeAccelInit(ScreenPtr pScreen);
-void GeodeAccelSync(ScrnInfoPtr pScreenInfo);
-void GeodeSetupForFillRectSolid(ScrnInfoPtr pScreenInfo, int color, int rop,
- unsigned int planemask);
-void GeodeSubsequentFillRectSolid(ScrnInfoPtr pScreenInfo, int x, int y,
- int w, int h);
-void GeodeSetupFor8x8PatternMonoExpand(ScrnInfoPtr pScreenInfo,
- int patternx, int patterny, int fg,
- int bg, int rop,
- unsigned int planemask);
-void GeodeSubsequent8x8PatternMonoExpand(ScrnInfoPtr pScreenInfo,
- int patternx, int patterny, int x,
- int y, int w, int h);
-void GeodeSetupForScreenToScreenCopy(ScrnInfoPtr pScreenInfo, int xdir,
- int ydir, int rop,
- unsigned int planemask,
- int transparency_color);
-void GeodeSubsequentScreenToScreenCopy(ScrnInfoPtr pScreenInfo, int x1,
- int y1, int x2, int y2, int w, int h);
-void GeodeSetupForSolidLine(ScrnInfoPtr pScreenInfo, int color, int rop,
- unsigned int planemask);
-void GeodeSetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop,
- unsigned int planemask, int length,
- unsigned char *pattern);
-void GeodeSubsequentBresenhamLine(ScrnInfoPtr pScreenInfo, int x1, int y1,
- int absmaj, int absmin, int err, int len,
- int octant);
-void GeodeSubsequentHorVertLine(ScrnInfoPtr pScreenInfo, int x, int y,
- int len, int dir);
-
-void GeodeSetupForScanlineImageWrite(ScrnInfoPtr pScreenInfo,
- int rop, unsigned int planemask,
- int transparency_color, int bpp,
- int depth);
-
-void GeodeSubsequentScanlineImageWriteRect(ScrnInfoPtr pScreenInfo,
- int x, int y, int w, int h,
- int skipleft);
-
-void GeodeSubsequentImageWriteScanline(ScrnInfoPtr pScreenInfo, int bufno);
-
-#if 0
-void GeodeFillCacheBltRects(ScrnInfoPtr pScrn,
- int rop, unsigned int planemask,
- int nBox, BoxPtr pBox, int xorg, int yorg,
- XAACacheInfoPtr pCache);
-#endif
-
-static XAAInfoRecPtr localRecPtr;
-
-/*----------------------------------------------------------------------------
- * GeodeAccelInit.
- *
- * Description :This function sets up the supported acceleration routines and
- * appropriate flags.
- *
- * Parameters:
- * pScreen :Screeen pointer structure.
- *
- * Returns :TRUE on success and FALSE on Failure
- *
- * Comments :This function is called in GeodeScreenInit in
- geode_driver.c to set * the acceleration.
-*----------------------------------------------------------------------------
-*/
-Bool
-GeodeAccelInit(ScreenPtr pScreen)
-{
- GeodePtr pGeode;
- ScrnInfoPtr pScreenInfo;
- BoxRec AvailBox;
- RegionRec OffscreenRegion;
- unsigned long offset;
-
- pScreenInfo = xf86Screens[pScreen->myNum];
- pGeode = GEODEPTR(pScreenInfo);
-
- /* Getting the pointer for acceleration Inforecord */
- pGeode->AccelInfoRec = localRecPtr = XAACreateInfoRec();
-
- /* SET ACCELERATION FLAGS */
- localRecPtr->Flags = PIXMAP_CACHE | OFFSCREEN_PIXMAPS | LINEAR_FRAMEBUFFER;
-
- /* HOOK SYNCRONIZATION ROUTINE */
- localRecPtr->Sync = GeodeAccelSync;
-
- /* HOOK FILLED RECTANGLES */
- localRecPtr->SetupForSolidFill = GeodeSetupForFillRectSolid;
- localRecPtr->SubsequentSolidFillRect = GeodeSubsequentFillRectSolid;
- localRecPtr->SolidFillFlags = 0;
-
- /* HOOK 8x8 COLOR EXPAND PATTERNS */
- localRecPtr->SetupForMono8x8PatternFill =
- GeodeSetupFor8x8PatternMonoExpand;
- localRecPtr->SubsequentMono8x8PatternFillRect =
- GeodeSubsequent8x8PatternMonoExpand;
- localRecPtr->Mono8x8PatternFillFlags = BIT_ORDER_IN_BYTE_MSBFIRST |
- HARDWARE_PATTERN_PROGRAMMED_BITS | HARDWARE_PATTERN_SCREEN_ORIGIN;
-
- /* HOOK SCREEN TO SCREEN COPIES
- * * Set flag to only allow copy if transparency is enabled.
- */
- localRecPtr->SetupForScreenToScreenCopy = GeodeSetupForScreenToScreenCopy;
- localRecPtr->SubsequentScreenToScreenCopy =
- GeodeSubsequentScreenToScreenCopy;
-
- localRecPtr->ScreenToScreenCopyFlags = GXCOPY_ONLY | NO_TRANSPARENCY;
-
- /* HOOK BRESENHAM SOLID LINES */
- /* Do not hook unless flag can be set preventing use of planemask. */
- localRecPtr->SolidLineFlags = NO_PLANEMASK;
- localRecPtr->SetupForSolidLine = GeodeSetupForSolidLine;
- localRecPtr->SubsequentSolidBresenhamLine = GeodeSubsequentBresenhamLine;
- localRecPtr->SubsequentSolidHorVertLine = GeodeSubsequentHorVertLine;
- localRecPtr->SolidBresenhamLineErrorTermBits = 15;
-
-#if 0
- /* HOOK BRESENHAM DASHED LINES */
- localRecPtr->DashedLineFlags = NO_PLANEMASK;
- localRecPtr->DashPatternMaxLength = 64;
- localRecPtr->SetupForDashedLine = GeodeSetupForDashedLine;
- localRecPtr->SubsequentDashedBresenhamLine = GeodeSubsequentBresenhamLine;
- localRecPtr->DashedBresenhamLineErrorTermBits = 15;
-#endif
-
- /*
- * ImageWrite.
- *
- * SInce this uses off-screen scanline buffers, it is only of use when
- * complex ROPs are used. But since the current XAA pixmap cache code
- * only works when an ImageWrite is provided, the NO_GXCOPY flag is
- * temporarily disabled.
- */
- if (pGeode->AccelImageWriteBufferOffsets) {
- localRecPtr->ScanlineImageWriteFlags = NO_GXCOPY | NO_TRANSPARENCY;
- localRecPtr->NumScanlineImageWriteBuffers = pGeode->NoOfImgBuffers;
- localRecPtr->SetupForScanlineImageWrite =
- GeodeSetupForScanlineImageWrite;
- localRecPtr->SubsequentScanlineImageWriteRect =
- GeodeSubsequentScanlineImageWriteRect;
- localRecPtr->SubsequentImageWriteScanline =
- GeodeSubsequentImageWriteScanline;
-
- localRecPtr->ScanlineImageWriteBuffers =
- pGeode->AccelImageWriteBufferOffsets;
-
- offset = (unsigned long)pGeode->AccelImageWriteBufferOffsets[0] -
- (unsigned long)pGeode->FBBase;
- Geodesrcy = offset / pGeode->Pitch;
-
- Geodesrcx = offset & (pGeode->Pitch - 1);
- Geodesrcx >>= (Geodebpp >> 3) - 1;
- }
-
- /* CACHE COPY FUNCTION
- * *
- * * localRecPtr->FillCacheBltRects = GeodeFillCacheBltRects;
- * * localRecPtr->FillCacheBltRectsFlags = NO_TRANSPARENCY;
- */
-
- /* SET UP GRAPHICS MEMORY AVAILABLE FOR PIXMAP CACHE */
- AvailBox.x1 = 0;
- AvailBox.x2 = pScreenInfo->displayWidth;
- AvailBox.y1 = pGeode->OffscreenStartOffset / pGeode->Pitch;
- AvailBox.y2 = AvailBox.y1 +
- ((pGeode->OffscreenSize / pGeode->Pitch /
- (pScreenInfo->bitsPerPixel >> 3)));
-
- REGION_INIT(pScreen, &OffscreenRegion, &AvailBox, 2);
- if (!xf86InitFBManagerRegion(pScreen, &OffscreenRegion)) {
- xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR,
- "Region (%d,%d,%d,%d) at 0x%08lX not provided for pixmap caching.\n",
- OffscreenRegion.extents.x1,
- OffscreenRegion.extents.y1,
- OffscreenRegion.extents.x2,
- OffscreenRegion.extents.y2, OffscreenRegion.data);
- xf86DrvMsg(pScreenInfo->scrnIndex, X_ERROR,
- "Couln't initialize the offscreen memory manager.\n");
- } else {
- xf86DrvMsg(pScreenInfo->scrnIndex, X_PROBED,
- "Region (%d,%d,%d,%d) at 0x%08lX provided for pixmap caching.\n",
- OffscreenRegion.extents.x1,
- OffscreenRegion.extents.y1,
- OffscreenRegion.extents.x2,
- OffscreenRegion.extents.y2, OffscreenRegion.data);
- }
- REGION_UNINIT(pScreen, &OffscreenRegion);
-
- /* TEXT IS NOT HOOKED */
- /* Actually faster to not accelerate it. To accelerate, the data */
- /* is copied from the font data to a buffer by the OS, then the */
- /* driver copies it from the buffer to the BLT buffer, then the */
- /* rendering engine reads it from the BLT buffer. May be worthwhile */
- /* to hook text later with the second generation graphics unit that */
- /* can take the data directly. */
-
- return (XAAInit(pScreen, localRecPtr));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeAccelSync.
- *
- * Description :This function is called to syncronize with the graphics
- * engine and it waits the graphic engine is idle.This is
- * required before allowing direct access to the
- * framebuffer.
- * Parameters.
- * pScreenInfo:Screeen info pointer structure.
- *
- * Returns :none
- *
- * Comments :This function is called on geode_video routines.
-*----------------------------------------------------------------------------
-*/
-void
-GeodeAccelSync(ScrnInfoPtr pScreenInfo)
-{
- GFX(wait_until_idle());
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSetupForFillRectSolid.
- *
- * Description :This routine is called to setup the solid pattern
- * color for future rectangular fills or vectors.
- *
- * Parameters.
- * pScreenInfo
- * Ptr :Screen handler pointer having screen information.
- * color :Specifies the color to be filled up in defined area.
- * rop :Specifies the raster operation value.
- * planemask :Specifies the masking value based rop srcdata.
- *
- * Returns :none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSetupForFillRectSolid(ScrnInfoPtr pScreenInfo,
- int color, int rop, unsigned int planemask)
-{
- GFX(set_solid_pattern((unsigned long)color));
-
- /* CHECK IF PLANEMASK IS NOT USED (ALL PLANES ENABLED) */
- if (planemask == (unsigned int)-1) {
- /* USE NORMAL PATTERN ROPs IF ALL PLANES ARE ENABLED */
- GFX(set_raster_operation(windowsROPpat[rop & 0x0F]));
- } else {
- /* SELECT ROP THAT USES SOURCE DATA FOR PLANEMASK */
- GFX(set_solid_source((unsigned long)planemask));
- GFX(set_raster_operation(windowsROPsrcMask[rop & 0x0F]));
- }
-}
-
- /*----------------------------------------------------------------------------
- * GeodeSubsequentFillRectSolid.
- *
- * Description :This routine is used to fill the rectangle of previously
- * specified solid pattern.
- *
- * Parameters.
- * pScreenInfo :Screen handler pointer having screen information.
- * x and y :Specifies the x and y co-ordinatesarea.
- * w and h :Specifies width and height respectively.
- *
- * Returns :none
- *
- * Comments :desired pattern can be set before this function by
- * gfx_set_solid_pattern.
- * Sample application uses:
- * - Window backgrounds.
- * - x11perf: rectangle tests (-rect500).
- * - x11perf: fill trapezoid tests (-trap100).
- * - x11perf: horizontal line segments (-hseg500).
- *----------------------------------------------------------------------------
-*/
-void
-GeodeSubsequentFillRectSolid(ScrnInfoPtr pScreenInfo, int x, int y, int w,
- int h)
-{
- /* SIMPLY PASS THE PARAMETERS TO THE DURANGO ROUTINE */
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- if (pGeode->TV_Overscan_On) {
- x += pGeode->TVOx;
- y += pGeode->TVOy;
- }
-
- GFX(pattern_fill((unsigned short)x, (unsigned short)y,
- (unsigned short)w, (unsigned short)h));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSetupFor8x8PatternMonoExpand
- *
- * Description :This routine is called to fill the monochrome pattern of
- * 8x8.
- * Parameters.
- * pScreenInfo :Screen handler pointer having screen information.
- * patternx:This is set from on rop data.
- * patterny:This is set based on rop data.
- * fg :Specifies the foreground color
- * bg :Specifies the background color
- * planemask :Specifies the value of masking from rop data
-
- * Returns :none.
- *
- * Comments :none.
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSetupFor8x8PatternMonoExpand(ScrnInfoPtr pScreenInfo,
- int patternx, int patterny, int fg,
- int bg, int rop, unsigned int planemask)
-{
- int trans = (bg == -1);
-
- /* LOAD PATTERN COLORS AND DATA */
- GFX(set_mono_pattern((unsigned long)bg, (unsigned long)fg,
- (unsigned long)patternx, (unsigned long)patterny,
- (unsigned char)trans));
-
- /* CHECK IF PLANEMASK IS NOT USED (ALL PLANES ENABLED) */
- if (planemask == (unsigned int)-1) {
- /* USE NORMAL PATTERN ROPs IF ALL PLANES ARE ENABLED */
- GFX(set_raster_operation(windowsROPpat[rop & 0x0F]));
- } else {
- /* SELECT ROP THAT USES SOURCE DATA FOR PLANEMASK */
- GFX(set_solid_source((unsigned long)planemask));
- GFX(set_raster_operation(windowsROPsrcMask[rop & 0x0F]));
- }
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSubsequent8x8PatternMonoExpand
- *
- * Description :This routine is called to fill a ractanglethe
- * monochrome pattern of previusly loaded pattern.
- *
- * Parameters.
- * pScreenInfo :Screen handler pointer having screen information.
- * patternx :This is set from on rop data.
- * patterny :This is set based on rop data.
- * fg :Specifies the foreground color
- * bg :Specifies the background color
- * planemask :Specifies the value of masking from rop data
-
- * Returns :none
- *
- * Comments :The patterns specified is ignored inside the function
- * Sample application uses:
- * - Patterned desktops
- * - x11perf: stippled rectangle tests (-srect500).
- * - x11perf: opaque stippled rectangle tests (-osrect500).
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSubsequent8x8PatternMonoExpand(ScrnInfoPtr pScreenInfo,
- int patternx, int patterny, int x, int y,
- int w, int h)
-{
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- if (pGeode->TV_Overscan_On) {
- x += pGeode->TVOx;
- y += pGeode->TVOy;
- }
-
- /* SIMPLY PASS THE PARAMETERS TO THE DURANGO ROUTINE */
- /* Ignores specified pattern. */
- GFX(pattern_fill((unsigned short)x, (unsigned short)y,
- (unsigned short)w, (unsigned short)h));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSetupForScreenToScreenCopy
- *
- * Description :This function is used to set up the planemask and raster
- * for future Bliting functionality.
- *
- * Parameters:
- * pScreenInfo :Screen handler pointer having screen information.
- * xdir :This is set based on rop data.
- * ydir :This is set based on rop data.
- * rop :sets the raster operation
- * transparency:tobeadded
- * planemask :Specifies the value of masking from rop data
-
- * Returns :none
- *
- * Comments :The patterns specified is ignored inside the function
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSetupForScreenToScreenCopy(ScrnInfoPtr pScreenInfo,
- int xdir, int ydir, int rop,
- unsigned int planemask,
- int transparency_color)
-{
- GFX(set_solid_pattern((unsigned long)planemask));
- /* SET RASTER OPERATION FOR USING PATTERN AS PLANE MASK */
- GFX(set_raster_operation(windowsROPpatMask[rop & 0x0F]));
-
- /* SAVE TRANSPARENCY FLAG */
- GeodeTransparent = (transparency_color == -1) ? 0 : 1;
- GeodeTransColor = transparency_color;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSubsquentScreenToScreenCopy
- *
- * Description :This function is called to perform a screen to screen
- * BLT using the previously specified planemask,raster
- * operation and * transparency flag
- *
- * Parameters.
- * pScreenInfo :Screen handler pointer having screen information.
- * x1 :x -coordinates of the source window
- * y1 :y-co-ordinates of the source window
- * x2 :x -coordinates of the destination window
- * y2 :y-co-ordinates of the destination window
- * w :Specifies width of the window to be copied
- * h :Height of the window to be copied.
- * Returns :none
- *
- * Comments :The patterns specified is ignored inside the function
- * Sample application uses (non-transparent):
- * - Moving windows.
- * - x11perf: scroll tests (-scroll500).
- * - x11perf: copy from window to window (-copywinwin500).
- *
- * No application found using transparency.
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSubsequentScreenToScreenCopy(ScrnInfoPtr pScreenInfo,
- int x1, int y1, int x2, int y2, int w,
- int h)
-{
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- if (pGeode->TV_Overscan_On) {
- x1 += pGeode->TVOx;
- y1 += pGeode->TVOy;
- x2 += pGeode->TVOx;
- y2 += pGeode->TVOy;
- }
-
- if (GeodeTransparent) {
- /* CALL ROUTINE FOR TRANSPARENT SCREEN TO SCREEN BLT
- * * Should only be called for the "copy" raster operation.
- */
- GFX(screen_to_screen_xblt((unsigned short)x1, (unsigned short)y1,
- (unsigned short)x2, (unsigned short)y2,
- (unsigned short)w, (unsigned short)h,
- (unsigned short)GeodeTransColor));
- } else {
- /* CALL ROUTINE FOR NORMAL SCREEN TO SCREEN BLT */
- GFX(screen_to_screen_blt((unsigned short)x1, (unsigned short)y1,
- (unsigned short)x2, (unsigned short)y2,
- (unsigned short)w, (unsigned short)h));
- }
-}
-
-void
-GeodeSetupForScanlineImageWrite(ScrnInfoPtr pScreenInfo,
- int rop, unsigned int planemask,
- int transparency_color, int bpp, int depth)
-{
- GFX(set_solid_pattern((unsigned long)planemask));
- /* SET RASTER OPERATION FOR USING PATTERN AS PLANE MASK */
- GFX(set_raster_operation(windowsROPpatMask[rop & 0x0F]));
-
- /* SAVE TRANSPARENCY FLAG */
- GeodeTransparent = (transparency_color == -1) ? 0 : 1;
- GeodeTransColor = transparency_color;
- Geodebpp = bpp;
-}
-
-void
-GeodeSubsequentScanlineImageWriteRect(ScrnInfoPtr pScreenInfo,
- int x, int y, int w, int h,
- int skipleft)
-{
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- Geodedstx = x;
- Geodedsty = y;
-
- if (pGeode->TV_Overscan_On) {
- Geodedstx += pGeode->TVOx;
- Geodedsty += pGeode->TVOy;
- }
-
- Geodewidth = w;
- Geodeheight = h;
-
- GeodeCounter = 0;
-}
-
-void
-GeodeSubsequentImageWriteScanline(ScrnInfoPtr pScreenInfo, int bufno)
-{
-
- GeodePtr pGeode;
- int blt_height = 0;
- char blit = FALSE;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- GeodeCounter++;
-
- if ((Geodeheight <= pGeode->NoOfImgBuffers) &&
- (GeodeCounter == Geodeheight)) {
- blit = TRUE;
- blt_height = Geodeheight;
- } else if ((Geodeheight > pGeode->NoOfImgBuffers)
- && (GeodeCounter == pGeode->NoOfImgBuffers)) {
- blit = TRUE;
- Geodeheight -= pGeode->NoOfImgBuffers;
- blt_height = pGeode->NoOfImgBuffers;
- } else
- return;
-
- if (blit) {
-
- blit = FALSE;
-
- GeodeCounter = 0;
-
- if (GeodeTransparent) {
- /* CALL ROUTINE FOR TRANSPARENT SCREEN TO SCREEN BLT
- * * Should only be called for the "copy" raster operation.
- */
- GFX(screen_to_screen_xblt((unsigned short)Geodesrcx,
- (unsigned short)Geodesrcy,
- (unsigned short)Geodedstx,
- (unsigned short)Geodedsty,
- (unsigned short)Geodewidth,
- (unsigned short)blt_height,
- (unsigned short)GeodeTransColor));
- } else {
- /* CALL ROUTINE FOR NORMAL SCREEN TO SCREEN BLT */
- GFX(screen_to_screen_blt((unsigned short)Geodesrcx,
- (unsigned short)Geodesrcy,
- (unsigned short)Geodedstx,
- (unsigned short)Geodedsty,
- (unsigned short)Geodewidth,
- (unsigned short)blt_height));
- }
- Geodedsty += blt_height;
- GeodeAccelSync(pScreenInfo);
- }
-
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSetupForSolidLine
- *
- * Description :This function is used setup the solid line color for
- * future line draws.
- *
- *
- * Parameters.
- * pScreenInfo :Screen handler pointer having screen information.
- * color :Specifies the color value od line
- * rop :Specifies rop values.
- * Planemask :Specifies planemask value.
- * Returns :none
- *
- * Comments :none
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSetupForSolidLine(ScrnInfoPtr pScreenInfo,
- int color, int rop, unsigned int planemask)
-{
- /* LOAD THE SOLID PATTERN COLOR */
- GFX(set_solid_pattern((unsigned long)color));
-
- /* USE NORMAL PATTERN ROPs IF ALL PLANES ARE ENABLED */
- GFX(set_raster_operation(windowsROPpat[rop & 0x0F]));
-}
-
-unsigned short vector_mode_table[] = {
- VM_MAJOR_INC | VM_MINOR_INC | VM_X_MAJOR,
- VM_MAJOR_INC | VM_MINOR_INC | VM_Y_MAJOR,
- VM_MAJOR_INC | VM_Y_MAJOR,
- VM_MINOR_INC | VM_X_MAJOR,
- VM_X_MAJOR,
- VM_Y_MAJOR,
- VM_MINOR_INC | VM_Y_MAJOR,
- VM_MAJOR_INC | VM_X_MAJOR,
-};
-
-/*---------------------------------------------------------------------------
- * GeodeSubsequentBresenhamLine
- *
- * Description :This function is used to render a vector using the
- * specified bresenham parameters.
- *
- * Parameters:
- * pScreenInfo :Screen handler pointer having screen information.
- * x1 :Specifies the starting x position
- * y1 :Specifies starting y possition
- * absmaj :Specfies the Bresenman absolute major.
- * absmin :Specfies the Bresenman absolute minor.
- * err :Specifies the bresenham err term.
- * len :Specifies the length of the vector interms of pixels.
- * octant :not used in this function,may be added for standard
- * interface.
- * Returns :none
- *
- * Comments :none
- * Sample application uses:
- * - Window outlines on window move.
- * - x11perf: line segments (-seg500).
-*----------------------------------------------------------------------------
-*/
-void
-GeodeSubsequentBresenhamLine(ScrnInfoPtr pScreenInfo,
- int x1, int y1, int absmaj, int absmin, int err,
- int len, int octant)
-{
- unsigned short flags;
- int octant_reg;
- int axial, init, diag;
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- if (pGeode->TV_Overscan_On) {
- x1 += pGeode->TVOx;
- y1 += pGeode->TVOy;
- }
-
- /*ErrorF("BresenhamLine(%d, %d, %d, %d, %d, %d, %d)\n",
- * x1, y1, absmaj, absmin, err, len, octant);
- */
-
- /* DETERMINE YMAJOR AND DIRECTION FLAGS */
- if (octant & YMAJOR) {
- if (!(octant & YDECREASING)) {
- if (!(octant & XDECREASING))
- octant_reg = 1;
- else
- octant_reg = 2;
- } else {
- if (!(octant & XDECREASING))
- octant_reg = 6;
- else
- octant_reg = 5;
- }
- } else {
- if (!(octant & YDECREASING)) {
- if (!(octant & XDECREASING))
- octant_reg = 0;
- else
- octant_reg = 3;
- } else {
- if (!(octant & XDECREASING))
- octant_reg = 7;
- else
- octant_reg = 4;
- }
- }
-
- flags = vector_mode_table[octant_reg & 7];
-
- /* DETERMINE BRESENHAM PARAMETERS */
-
- axial = ((int)absmin << 1);
- init = axial - (int)absmaj;
- diag = init - (int)absmaj;
-
- /* ADJUST INITIAL ERROR
- * * Adjust by -1 for certain directions so that the vector
- * * hits the same pixels when drawn in either direction.
- * * The Gamma value is assumed to account for the initial
- * * error adjustment for clipped lines.
- */
-
- init += err;
-
- /* CALL ROUTINE TO DRAW VECTOR */
-
- GFX(bresenham_line((unsigned short)x1, (unsigned short)y1,
- (unsigned short)len, (unsigned short)init,
- (unsigned short)axial, (unsigned short)diag,
- (unsigned short)flags);
- )
-}
-
-/*---------------------------------------------------------------------------
- * GeodeSubsequentHorVertLine
- *
- * This routine is called to render a vector using the specified Bresenham
- * parameters.
- *
- * Sample application uses:
- * - Window outlines on window move.
- * - x11perf: line segments (-hseg500).
- * - x11perf: line segments (-vseg500).
- *---------------------------------------------------------------------------
- */
-void
-GeodeSubsequentHorVertLine(ScrnInfoPtr pScreenInfo,
- int x, int y, int len, int dir)
-{
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- if (pGeode->TV_Overscan_On) {
- x += pGeode->TVOx;
- y += pGeode->TVOy;
- }
- GFX(pattern_fill((unsigned short)x, (unsigned short)y,
- (unsigned short)((dir == DEGREES_0) ? len : 1),
- (unsigned short)((dir == DEGREES_0) ? 1 : len)));
-}
-
-void
-GeodeSetupForDashedLine(ScrnInfoPtr pScrn, int fg, int bg, int rop,
- unsigned int planemask, int length,
- unsigned char *pattern)
-{
- int trans = (bg == -1);
- unsigned long *pat = (unsigned long *)pattern;
-
- /* LOAD PATTERN COLORS AND DATA */
-
- GFX(set_mono_pattern((unsigned long)bg, (unsigned long)fg,
- (unsigned long)pat, (unsigned long)pat,
- (unsigned char)trans));
-
- /* CHECK IF PLANEMASK IS NOT USED (ALL PLANES ENABLED) */
-
- if (planemask == (unsigned int)-1) {
- /* USE NORMAL PATTERN ROPs IF ALL PLANES ARE ENABLED */
-
- GFX(set_raster_operation(windowsROPpat[rop & 0x0F]));
- } else {
- /* SELECT ROP THAT USES SOURCE DATA FOR PLANEMASK */
-
- GFX(set_solid_source((unsigned long)planemask));
- GFX(set_raster_operation(windowsROPsrcMask[rop & 0x0F]));
- }
-}
-
-#if 0
-void
-GeodeFillCacheBltRects(ScrnInfoPtr pScrn, int rop, unsigned int planemask,
- int nBox, BoxPtr pBox, int xorg, int yorg,
- XAACacheInfoPtr pCache)
-{
- XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_SCRNINFOPTR(pScrn);
- int x, y;
- int phaseY, phaseX, skipleft, height, width, w, blit_w, blit_h, start;
-
- ErrorF("FillCacheBltRects\n");
-
- (*infoRec->SetupForScreenToScreenCopy) (pScrn, 1, 1, rop, planemask,
- pCache->trans_color);
-
- while (nBox--) {
- y = pBox->y1;
- phaseY = (y - yorg) % pCache->orig_h;
- if (phaseY < 0)
- phaseY += pCache->orig_h;
- phaseX = (pBox->x1 - xorg) % pCache->orig_w;
- if (phaseX < 0)
- phaseX += pCache->orig_w;
- height = pBox->y2 - y;
- width = pBox->x2 - pBox->x1;
- start = phaseY ? (pCache->orig_h - phaseY) : 0;
-
- /* This is optimized for WRAM */
-
- if ((rop == GXcopy) && (height >= (pCache->orig_h + start))) {
- w = width;
- skipleft = phaseX;
- x = pBox->x1;
- blit_h = pCache->orig_h;
-
- while (1) {
- blit_w = pCache->w - skipleft;
- if (blit_w > w)
- blit_w = w;
- (*infoRec->SubsequentScreenToScreenCopy) (pScrn,
- pCache->x + skipleft,
- pCache->y, x, y + start,
- blit_w, blit_h);
- w -= blit_w;
- if (!w)
- break;
- x += blit_w;
- skipleft = (skipleft + blit_w) % pCache->orig_w;
- }
- height -= blit_h;
- if (start) {
- (*infoRec->SubsequentScreenToScreenCopy) (pScrn,
- pBox->x1, y + blit_h,
- pBox->x1, y, width,
- start);
- height -= start;
- y += start;
- }
- start = blit_h;
-
- while (height) {
- if (blit_h > height)
- blit_h = height;
- (*infoRec->SubsequentScreenToScreenCopy) (pScrn,
- pBox->x1, y,
- pBox->x1, y + start,
- width, blit_h);
- height -= blit_h;
- start += blit_h;
- blit_h <<= 1;
- }
- } else {
- while (1) {
- w = width;
- skipleft = phaseX;
- x = pBox->x1;
- blit_h = pCache->h - phaseY;
- if (blit_h > height)
- blit_h = height;
-
- while (1) {
- blit_w = pCache->w - skipleft;
- if (blit_w > w)
- blit_w = w;
- (*infoRec->SubsequentScreenToScreenCopy) (pScrn,
- pCache->x + skipleft,
- pCache->y + phaseY,
- x, y, blit_w,
- blit_h);
- w -= blit_w;
- if (!w)
- break;
- x += blit_w;
- skipleft = (skipleft + blit_w) % pCache->orig_w;
- }
- height -= blit_h;
- if (!height)
- break;
- y += blit_h;
- phaseY = (phaseY + blit_h) % pCache->orig_h;
- }
- }
- pBox++;
- }
-
- SET_SYNC_FLAG(infoRec);
-}
-#endif
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_cursor.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_cursor.c
deleted file mode 100644
index 9a73b3924..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_cursor.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_cursor.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: geode_cursor.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: Xfree cursor implementation routines
- * for geode HWcursor init.setting cursor color,image etc
- * are done here.
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "xf86PciInfo.h"
-#include "geode.h"
-
-/* Forward declarations of the functions */
-Bool GeodeHWCursorInit(ScreenPtr pScreen);
-static void GeodeSetCursorColors(ScrnInfoPtr pScreenInfo, int bg, int fg);
-static void GeodeSetCursorPosition(ScrnInfoPtr pScreenInfo, int x, int y);
-void GeodeLoadCursorImage(ScrnInfoPtr pScreenInfo, unsigned char *src);
-void GeodeHideCursor(ScrnInfoPtr pScreenInfo);
-void GeodeShowCursor(ScrnInfoPtr pScreenInfo);
-static Bool GeodeUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs);
-
-/*----------------------------------------------------------------------------
- * GeodeHWCursorInit.
- *
- * Description :This function sets the cursor information by probing the
- * hardware.
- *
- * Parameters.
- * pScreen :Screeen pointer structure.
- *
- * Returns :TRUE on success and FALSE on Failure
- *
- * Comments :Geode supports the hardware_cursor,no need to enable SW
- * cursor.
-*----------------------------------------------------------------------------
-*/
-Bool
-GeodeHWCursorInit(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];
- GeodePtr pGeode = GEODEPTR(pScreenInfo);
- xf86CursorInfoPtr infoPtr;
-
- infoPtr = xf86CreateCursorInfoRec();
- if (!infoPtr)
- return FALSE;
- /* the geode structure is intiallized with the cursor infoRec */
- pGeode->CursorInfo = infoPtr;
- infoPtr->MaxWidth = 32;
- infoPtr->MaxHeight = 32;
- /* seeting up the cursor flags */
- infoPtr->Flags = HARDWARE_CURSOR_BIT_ORDER_MSBFIRST |
- HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
- HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED;
- /* cursor info ptr is intiallized with the values obtained from
- * * durnago calls
- */
- infoPtr->SetCursorColors = GeodeSetCursorColors;
- infoPtr->SetCursorPosition = GeodeSetCursorPosition;
- infoPtr->LoadCursorImage = GeodeLoadCursorImage;
- infoPtr->HideCursor = GeodeHideCursor;
- infoPtr->ShowCursor = GeodeShowCursor;
- infoPtr->UseHWCursor = GeodeUseHWCursor;
- return (xf86InitCursor(pScreen, infoPtr));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSetCursorColors.
- *
- * Description :This function sets the cursor foreground and background
- * colors
- * Parameters:
- * pScreen: Screeen pointer structure.
- * bg: Specifies the color value of cursor background color.
- * fg: Specifies the color value of cursor foreground color.
- * Returns: none.
- *
- * Comments: The integer color value passed by this function is
- * converted into * RGB value by the gfx_set_color routines.
- *----------------------------------------------------------------------------
- */
-static void
-GeodeSetCursorColors(ScrnInfoPtr pScreenInfo, int bg, int fg)
-{
- GFX(set_cursor_colors(bg, fg));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSetCursorPosition.
- *
- * Description :This function sets the cursor co -ordinates and enable the
- * cursor.
- *
- * Parameters:
- * pScreen: Screeen pointer structure.
- * x: Specifies the x-cordinates of the cursor.
- * y: Specifies the y co-ordinate of the cursor.
- * Returns: none.
- *
- *----------------------------------------------------------------------------
- */
-static void
-GeodeSetCursorPosition(ScrnInfoPtr pScreenInfo, int x, int y)
-{
- GeodePtr pGeode = GEODEPTR(pScreenInfo);
-
- if (pGeode->TV_Overscan_On) {
- x += pGeode->TVOx;
- y += pGeode->TVOy;
- }
- GFX(set_cursor_position(pGeode->CursorStartOffset, x, y, 0, 0));
- GFX(set_cursor_enable(1));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeLoadCursorImage
- *
- * Description :This function loads the 32x32 cursor pattern.The shape
- * and color is set by AND and XOR masking of arrays of 32
- * DWORD.
- * Parameters:
- * pScreen: Screeen pointer structure.
- * src : Specifies cursor data.
- * Returns : none
- *
- *----------------------------------------------------------------------------
-*/
-void
-GeodeLoadCursorImage(ScrnInfoPtr pScreenInfo, unsigned char *src)
-{
- int i, j;
- unsigned long shape;
- unsigned long mask;
- unsigned long andMask[32] = { 0, };
- unsigned long xorMask[32] = { 0, };
- GeodePtr pGeode = GEODEPTR(pScreenInfo);
-
- j = 0;
- for (i = 0; i < 32; i++) {
- if (src) {
- shape = ((unsigned long)src[i * 4] << 24) |
- ((unsigned long)src[i * 4 + 1] << 16) |
- ((unsigned long)src[i * 4 + 2] << 8) |
- ((unsigned long)src[i * 4 + 3] << 0);
- mask = ((unsigned long)src[i * 4 + 128] << 24) |
- ((unsigned long)src[i * 4 + 1 + 128] << 16) |
- ((unsigned long)src[i * 4 + 2 + 128] << 8) |
- ((unsigned long)src[i * 4 + 3 + 128] << 0);
- } else {
- mask = 0x0;
- shape = 0xFFFFFFFF;
- }
-
- andMask[i] = ~(mask);
- xorMask[i] = shape & mask;
- }
-
- GFX(set_cursor_shape32(pGeode->CursorStartOffset, andMask, xorMask));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeHideCursor.
- *
- * Description :This function will disable the cursor.
- *
- * Parameters:
- * pScreen: Handles to the Screeen pointer structure.
- *
- * Returns: none.
- *
- * Comments: gfx_set_cursor enable function is hardcoded to disable
- * the cursor.
- *----------------------------------------------------------------------------
- */
-void
-GeodeHideCursor(ScrnInfoPtr pScreenInfo)
-{
- GFX(set_cursor_enable(0));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeShowCursor
- *
- * Description :This function will enable the cursor.
- *
- * Parameters:
- * pScreen :Handles to the Screeen pointer structure.
- *
- * Returns :none
- *
- * Comments :gfx_set_cursor enable function is hardcoded to enable the
- * cursor
- *----------------------------------------------------------------------------
-*/
-void
-GeodeShowCursor(ScrnInfoPtr pScreenInfo)
-{
- GFX(set_cursor_enable(1));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeUseHwCursor.
- *
- * Description :This function will sets the hardware cursor flag in
- * pscreen structure.
- *
- * Parameters.
- * pScreen :Handles to the Screeen pointer structure.
- *
- * Returns :none
- *
- * Comments :none
- *
- *----------------------------------------------------------------------------
-*/
-static Bool
-GeodeUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
-{
- ScrnInfoPtr pScreenInfo = XF86SCRNINFO(pScreen);
-
- if (pScreenInfo->currentMode->Flags & V_DBLSCAN)
- return FALSE;
- return TRUE;
-}
-
-/* End of File */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_dga.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_dga.c
deleted file mode 100644
index bbefe6831..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_dga.c
+++ /dev/null
@@ -1,504 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_dga.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: geode_dga.c $
- * $Revision: 1.2.8.2 $
- *
- * File contents: DGA(Direct Acess Graphics mode) is feature of
- * XFree86 that allows the program to access directly to video
- * memory on the graphics card.DGA supports the double
- * flickering.This file has the functions to support the DGA
- * modes.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Pci.h"
-#include "xf86PciInfo.h"
-#include "xaa.h"
-#include "xaalocal.h"
-#include "geode.h"
-#include "dgaproc.h"
-
-/* forward declarations */
-Bool GeodeDGAInit(ScreenPtr pScreen);
-static Bool Geode_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
- int *, int *, int *);
-static void Geode_CloseFramebuffer(ScrnInfoPtr pScrn);
-static Bool Geode_SetMode(ScrnInfoPtr, DGAModePtr);
-static int Geode_GetViewport(ScrnInfoPtr);
-static void Geode_SetViewport(ScrnInfoPtr, int, int, int);
-static void Geode_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
-static void Geode_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
-
-extern void GeodeAdjustFrame(int, int, int, int);
-extern Bool GeodeSwitchMode(int, DisplayModePtr, int);
-extern void GeodeAccelSync(ScrnInfoPtr pScreenInfo);
-
-static DGAFunctionRec GeodeDGAFuncs = {
- Geode_OpenFramebuffer,
- Geode_CloseFramebuffer,
- Geode_SetMode,
- Geode_SetViewport,
- Geode_GetViewport,
- GeodeAccelSync,
- Geode_FillRect,
- Geode_BlitRect,
- NULL
-};
-
-/*----------------------------------------------------------------------------
- * GeodeDGAInit.
- *
- * Description :This function is used to intiallize the DGA modes and sets the
- viewport based on the screen mode.
- * Parameters.
- * pScreeen :Pointer to screen info structure.
- *
- * Returns :TRUE on success and FALSE on failure.
- *
- * Comments :This function prepares the DGA mode settings for
- * other func reference.
- *
-*----------------------------------------------------------------------------
-*/
-Bool
-GeodeDGAInit(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- GeodePtr pGeode = GEODEPTR(pScrn);
- DGAModePtr modes = NULL, newmodes = NULL, currentMode;
- DisplayModePtr pMode, firstMode;
- int Bpp = pScrn->bitsPerPixel >> 3;
- int num = 0;
- Bool oneMore;
-
- pMode = firstMode = pScrn->modes;
- DEBUGMSG(0, (0, X_NONE, "GeodeDGAInit\n"));
- while (pMode) {
-
- /* redundant but it can be used in future:if(0). */
- if (0) { /*pScrn->displayWidth != pMode->HDisplay */
- /* memory is allocated for dga to
- *setup the viewport and mode parameters
- */
- newmodes = xrealloc(modes, (num + 2) * sizeof(DGAModeRec));
- oneMore = TRUE;
- } else {
- /* one record is allocated here */
- newmodes = xrealloc(modes, (num + 1) * sizeof(DGAModeRec));
- oneMore = FALSE;
- }
- if (!newmodes) {
- xfree(modes);
- return FALSE;
- }
- modes = newmodes;
-
- SECOND_PASS: /* DGA mode flgas and viewport parametrs are set here. */
-
- currentMode = modes + num;
- num++;
- currentMode->mode = pMode;
- currentMode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE;
- currentMode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
- if (pMode->Flags & V_DBLSCAN)
- currentMode->flags |= DGA_DOUBLESCAN;
- if (pMode->Flags & V_INTERLACE)
- currentMode->flags |= DGA_INTERLACED;
- currentMode->byteOrder = pScrn->imageByteOrder;
- currentMode->depth = pScrn->depth;
- currentMode->bitsPerPixel = pScrn->bitsPerPixel;
- currentMode->red_mask = pScrn->mask.red;
- currentMode->green_mask = pScrn->mask.green;
- currentMode->blue_mask = pScrn->mask.blue;
- currentMode->visualClass = (Bpp == 1) ? PseudoColor : TrueColor;
- currentMode->viewportWidth = pMode->HDisplay;
- currentMode->viewportHeight = pMode->VDisplay;
- currentMode->xViewportStep = 1;
- currentMode->yViewportStep = 1;
- currentMode->viewportFlags = DGA_FLIP_RETRACE;
- currentMode->offset = 0;
- currentMode->address = pGeode->FBBase;
- if (oneMore) { /* first one is narrow width */
- currentMode->bytesPerScanline = ((pMode->HDisplay * Bpp) + 3) & ~3L;
- currentMode->imageWidth = pMode->HDisplay;
- currentMode->imageHeight = pMode->VDisplay;
- currentMode->pixmapWidth = currentMode->imageWidth;
- currentMode->pixmapHeight = currentMode->imageHeight;
- currentMode->maxViewportX = currentMode->imageWidth -
- currentMode->viewportWidth;
- /* this might need to get clamped to some maximum */
- currentMode->maxViewportY = currentMode->imageHeight -
- currentMode->viewportHeight;
- oneMore = FALSE;
- goto SECOND_PASS;
- } else {
- currentMode->bytesPerScanline =
- ((pScrn->displayWidth * Bpp) + 3) & ~3L;
- currentMode->imageWidth = pScrn->displayWidth;
- currentMode->imageHeight = pMode->VDisplay;
- currentMode->pixmapWidth = currentMode->imageWidth;
- currentMode->pixmapHeight = currentMode->imageHeight;
- currentMode->maxViewportX = currentMode->imageWidth -
- currentMode->viewportWidth;
- /* this might need to get clamped to some maximum */
- currentMode->maxViewportY = currentMode->imageHeight -
- currentMode->viewportHeight;
- }
- pMode = pMode->next;
- if (pMode == firstMode)
- break;
- }
- pGeode->numDGAModes = num;
- pGeode->DGAModes = modes;
- return DGAInit(pScreen, &GeodeDGAFuncs, modes, num);
-}
-
-/*----------------------------------------------------------------------------
- * Geode_SetMode.
- *
- * Description :This function is sets into the DGA mode.
- *.
- * Parameters.
- * pScreeen :Pointer to screen info structure.
- * pMode :Points to the DGAmode ptr data
- * Returns :TRUE on success and FALSE on failure.
- *
- * Comments :none.
- *
- *
-*----------------------------------------------------------------------------
-*/
-static Bool
-Geode_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode)
-{
- static int OldDisplayWidth[MAXSCREENS];
- int index = pScrn->pScreen->myNum;
- GeodePtr pGeode = GEODEPTR(pScrn);
-
- DEBUGMSG(0, (0, X_NONE, "Geode_SetMode\n"));
- if (!pMode) {
- /* restore the original mode
- * * put the ScreenParameters back
- */
- pScrn->displayWidth = OldDisplayWidth[index];
- GeodeSwitchMode(index, pScrn->currentMode, 0);
- pGeode->DGAactive = FALSE;
- } else {
- if (!pGeode->DGAactive) { /* save the old parameters */
- OldDisplayWidth[index] = pScrn->displayWidth;
- pGeode->DGAactive = TRUE;
- }
- pScrn->displayWidth = pMode->bytesPerScanline /
- (pMode->bitsPerPixel >> 3);
- GeodeSwitchMode(index, pMode->mode, 0);
- }
- /* enable/disable cursor */
- if (pGeode->HWCursor) {
-#if defined(STB_X)
- Gal_set_compression_state(((pGeode->DGAactive) ?
- GAL_COMPRESSION_DISABLE :
- GAL_COMPRESSION_ENABLE));
- Gal_set_cursor_enable(!pGeode->DGAactive);
-#else
- gfx_set_cursor_enable(!pGeode->DGAactive);
- gfx_set_compression_enable(!pGeode->DGAactive);
-#endif /* STB_X */
- }
-
- return TRUE;
-}
-
-/*----------------------------------------------------------------------------
- * Geode_GetViewPort.
- *
- * Description :This function is Gets the viewport window memory.
- *.
- * Parameters.
- * pScrn :Pointer to screen info structure.
- *
- * Returns :returns the viewport status.
- *
- * Comments :none.
- *
- *
-*----------------------------------------------------------------------------
-*/
-static int
-Geode_GetViewport(ScrnInfoPtr pScrn)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
-
- return pGeode->DGAViewportStatus;
-}
-
-/*----------------------------------------------------------------------------
- * Geode_SetViewPort.
- *
- * Description :This function is Gets the viewport window memory.
- *
- * Parameters.
- * pScrn :Pointer to screen info structure.
- x :x-cordinate of viewport window
- * y :y-codinate of the viewport window.
- * flags :indicates the viewport to be flipped or not.
- * Returns :returns the viewport status as zero.
- *
- * Comments :none.
- *
-*----------------------------------------------------------------------------
-*/
-static void
-Geode_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
-
- GeodeAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
- pGeode->DGAViewportStatus = 0; /*GeodeAdjustFrame loops until finished */
-}
-
-/*----------------------------------------------------------------------------
- * Geode_FillRect.
- *
- * Description :This function is Gets the viewport window memory.
- *.
- * Parameters.
- * pScrn :Pointer to screen info structure.
- * x :x-cordinate of viewport window
- * y :y-codinate of the viewport window.
- * w :width of the rectangle
- * h :height of the rectangle.
- * color :color to be filled in rectangle.
- *
- * Returns :returns the viewport status as zero.
- *
- * Comments :This function is implemented by solidfill routines..
- *
-*----------------------------------------------------------------------------
-*/
-static void
-Geode_FillRect(ScrnInfoPtr pScrn, int x, int y,
- int w, int h, unsigned long color)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
-
- if (pGeode->AccelInfoRec) {
- (*pGeode->AccelInfoRec->SetupForSolidFill) (pScrn, color, GXcopy, ~0);
- (*pGeode->AccelInfoRec->SubsequentSolidFillRect) (pScrn, x, y, w, h);
- SET_SYNC_FLAG(pGeode->AccelInfoRec);
- }
-}
-
-/*----------------------------------------------------------------------------
- * Geode_BlitRect.
- *
- * Description :This function implementing Blit and it moves a
- * Rectangular block of data from one location to other
- * Location.
- *
- * Parameters.
- * pScrn :Pointer to screen info structure.
- * srcx :x-cordinate of the src rectangle
- * srcy :y-codinate of src rectangle.
- * w :width of the rectangle
- * h :height of the rectangle.
- * dstx :x-cordinate of the dst rectangle.
- * dsty :y -coordinates of the dst rectangle.
- * Returns :none.
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-static void
-Geode_BlitRect(ScrnInfoPtr pScrn,
- int srcx, int srcy, int w, int h, int dstx, int dsty)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
-
- if (pGeode->AccelInfoRec) {
- int xdir = ((srcx < dstx) && (srcy == dsty)) ? -1 : 1;
- int ydir = (srcy < dsty) ? -1 : 1;
-
- (*pGeode->AccelInfoRec->SetupForScreenToScreenCopy)
- (pScrn, xdir, ydir, GXcopy, ~0, -1);
- (*pGeode->AccelInfoRec->SubsequentScreenToScreenCopy) (pScrn, srcx,
- srcy, dstx, dsty,
- w, h);
- SET_SYNC_FLAG(pGeode->AccelInfoRec);
- }
-}
-
-/*----------------------------------------------------------------------------
- * Geode_OpenFramebuffer.
- *
- * Description :This function open the framebuffer driver for DGA.
- *
- * Parameters.
- * pScrn :Pointer to screen info structure.
- * srcx :x-cordinate of the src rectangle
- * srcy :y-codinate of src rectangle.
- * w :width of the rectangle
- * h :height of the rectangle.
- * dstx :x-cordinate of the dst rectangle.
- * dsty :y -coordinates of the dst rectangle.
- * Returns :none.
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-static Bool
-Geode_OpenFramebuffer(ScrnInfoPtr pScrn,
- char **name, unsigned char **mem,
- int *size, int *offset, int *flags)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
-
- *name = NULL; /* no special device */
- *mem = (unsigned char *)pGeode->FBLinearAddr;
- *size = pGeode->FBSize;
- *offset = 0;
- *flags = DGA_NEED_ROOT;
- return TRUE;
-}
-
-static void
-Geode_CloseFramebuffer(ScrnInfoPtr pScrn)
-{
-}
-
-/* end of file */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_driver.c
deleted file mode 100644
index f054bdc40..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_driver.c
+++ /dev/null
@@ -1,2997 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_driver.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: geode_driver.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This is the main module configures the interfacing
- * with the X server. The individual modules will be
- * loaded based upon the options selected from the
- * XF86Config. This file also has modules for finding
- * supported modes, turning on the modes based on options.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/*
- * Lots of fixes & updates
- * Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-
-#define DEBUG(x)
-
-#define GEODE_TRACE 0
-#define MAGIC 0
-/* Flat Panel HACK!!!! */
-extern int gfx_dont_program;
-
-#if GEODE_TRACE
-/* ANSI C does not allow var arg macros */
-#define GeodeDebug(args) ErrorF##args
-#else
-#define GeodeDebug(args)
-#endif
-
-/* Includes that are used by all drivers */
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86_ansic.h"
-#include "xf86Resources.h"
-
-/* We may want inb() and outb() */
-#include "compiler.h"
-
-/* We may want to access the PCI config space */
-#include "xf86PciInfo.h"
-#include "xf86Pci.h"
-
-/* Colormap handling stuff */
-#include "xf86cmap.h"
-
-/* Frame buffer stuff */
-#include "fb.h"
-#include "shadowfb.h"
-
-/* Machine independent stuff */
-#include "mipointer.h"
-#include "mibank.h"
-#include "micmap.h"
-/* All drivers implementing backing store need this */
-#include "mibstore.h"
-#include "vgaHW.h"
-#include "vbe.h"
-
-/* Check for some extensions */
-#ifdef XFreeXDGA
-#define _XF86_DGA_SERVER_
-#include "extensions/xf86dgastr.h"
-#endif /* XFreeXDGA */
-
-#ifdef DPMSExtension
-#include "globals.h"
-#include "opaque.h"
-#define DPMS_SERVER
-#include "extensions/dpms.h"
-#endif /* DPMSExtension */
-
-/* Our private include file (this also includes the durango headers) */
-#include "geode.h"
-
-#define PCI_VENDOR_ID_CYRIX 0x1078
-#define PCI_VENDOR_ID_NS 0x100b
-
-#define PCI_CHIP_5530 0x0104
-#define PCI_CHIP_SC1200 0x0504
-#define PCI_CHIP_SC1400 0x0104
-
-/* A few things all drivers should have */
-#define GEODE_NAME "GEODE"
-#define GEODE_DRIVER_NAME "geode"
-
-/* This should match the durango code version.
- * The patchlevel may be used to indicate changes in geode.c
- */
-#define GEODE_VERSION_NAME "1.2.2"
-#define GEODE_VERSION_MAJOR 1
-#define GEODE_VERSION_MINOR 2
-#define GEODE_PATCHLEVEL 2
-#define GEODE_VERSION_CURRENT ((GEODE_VERSION_MAJOR << 24) | \
- (GEODE_VERSION_MINOR << 16) | GEODE_PATCHLEVEL)
-
-typedef struct _MemOffset
-{
- unsigned long xres;
- unsigned long yres;
- unsigned long bpp;
- unsigned long CBOffset;
- unsigned short CBPitch;
- unsigned short CBSize;
- unsigned long CurOffset;
- unsigned long OffScreenOffset;
-}
-MemOffset;
-
-/* predefined memory address for compression and cursor offsets
- * if COMPRESSION enabled.
- */
-MemOffset GeodeMemOffset[] = {
- {640, 480, 8, 640, 1024, 272, 0x78000, 0x78100},
- {640, 480, 16, 1280, 2048, 272, 0x610, 0xF0000},
- {800, 600, 8, 800, 1024, 208, 0x96000, 0x96100},
- {800, 600, 16, 1600, 2048, 272, 0x12C000, 0x12C100},
- {1024, 768, 8, 0xC0000, 272, 272, 0xF3000, 0xF3100},
- {1024, 768, 16, 0x180000, 272, 272, 0x1B3000, 0x1B3100},
- {1152, 864, 8, 1152, 2048, 272, 0x590, 0x1B0000},
- {1152, 864, 16, 2304, 4096, 272, 0xA10, 0x360000},
- {1280, 1024, 8, 1280, 2048, 272, 0x610, 0x200000},
- {1280, 1024, 16, 2560, 4096, 272, 0xB10, 0x400000},
-
- /* PAL TV modes */
-
- {704, 576, 16, 1408, 2048, 272, 0x690, 0x120000},
- {720, 576, 16, 1440, 2048, 272, 0x6B0, 0x120000},
- {768, 576, 16, 1536, 2048, 256, 0x700, 0x120000},
-
- /* NTSC TV modes */
-
- {704, 480, 16, 1408, 2048, 272, 0x690, 0xF0000},
- {720, 480, 16, 1440, 2048, 272, 0x6B0, 0xF0000}
-
-};
-static int MemIndex = 0;
-
-/* Forward definitions */
-static const OptionInfoRec *GeodeAvailableOptions(int chipid, int busid);
-static void GeodeIdentify(int);
-static Bool GeodeProbe(DriverPtr, int);
-static Bool GeodePreInit(ScrnInfoPtr, int);
-static Bool GeodeScreenInit(int, ScreenPtr, int, char **);
-static Bool GeodeEnterVT(int, int);
-static void GeodeLeaveVT(int, int);
-static void GeodeFreeScreen(int, int);
-void GeodeAdjustFrame(int, int, int, int);
-Bool GeodeSwitchMode(int, DisplayModePtr, int);
-static int GeodeValidMode(int, DisplayModePtr, Bool, int);
-static void GeodeLoadPalette(ScrnInfoPtr pScreenInfo,
- int numColors, int *indizes,
- LOCO * colors, VisualPtr pVisual);
-static Bool GeodeMapMem(ScrnInfoPtr);
-static Bool GeodeUnmapMem(ScrnInfoPtr);
-
-extern Bool GeodeAccelInit(ScreenPtr pScreen);
-extern Bool GeodeHWCursorInit(ScreenPtr pScreen);
-extern void GeodeHideCursor(ScrnInfoPtr pScreenInfo);
-extern void GeodeShowCursor(ScrnInfoPtr pScreenInfo);
-extern void GeodePointerMoved(int index, int x, int y);
-extern void GeodeRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
-extern void GeodeRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
-extern void GeodeRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
-extern void GeodeInitVideo(ScreenPtr pScreen);
-extern Bool GeodeDGAInit(ScreenPtr pScreen);
-extern void GeodeLoadCursorImage(ScrnInfoPtr pScreenInfo, unsigned char *src);
-
-void get_tv_overscan_geom(const char *options, int *X, int *Y, int *W,
- int *H);
-
-#if !defined(STB_X)
-extern unsigned char *XpressROMPtr;
-#endif /* STB_X */
-
-/* driver record contains the functions needed by the server after loading
- * the driver module.
- */
-DriverRec GEODE = {
- GEODE_VERSION_CURRENT,
- GEODE_DRIVER_NAME,
- GeodeIdentify,
- GeodeProbe,
- GeodeAvailableOptions,
- NULL,
- 0
-};
-
-/* Supported chipsets */
-static SymTabRec GeodeChipsets[] = {
- {PCI_CHIP_5530, "5530"},
- {PCI_CHIP_SC1200, "SC1200"},
- {PCI_CHIP_SC1400, "SC1400"},
- {-1, NULL}
-};
-
-static PciChipsets GeodePCIchipsets[] = {
- {PCI_CHIP_5530, PCI_CHIP_5530, RES_SHARED_VGA},
- {PCI_CHIP_SC1200, PCI_CHIP_SC1200, RES_SHARED_VGA},
- {PCI_CHIP_SC1400, PCI_CHIP_SC1400, RES_SHARED_VGA},
- {-1, -1, RES_UNDEFINED},
-};
-
-/* option flags are self-explanatory */
-typedef enum
-{
- OPTION_SW_CURSOR,
- OPTION_HW_CURSOR,
- OPTION_COMPRESSION,
- OPTION_NOACCEL,
- OPTION_TV_SUPPORT,
- OPTION_TV_OUTPUT,
- OPTION_TV_OVERSCAN,
- OPTION_SHADOW_FB,
- OPTION_ROTATE,
- OPTION_FLATPANEL,
- OPTION_FLATPANEL_IN_BIOS,
- OPTION_OVERLAY,
- OPTION_COLOR_KEY,
- OPTION_VIDEO_KEY,
- OPTION_IMG_BUFS,
- OPTION_DONT_PROGRAM
-}
-GeodeOpts;
-
-static OptionInfoRec GeodeOptions[] = {
- {OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_HW_CURSOR, "HWcursor", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_COMPRESSION, "Compression", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_TV_SUPPORT, "TV", OPTV_ANYSTR, {0}, FALSE},
- {OPTION_TV_OUTPUT, "TV_Output", OPTV_ANYSTR, {0}, FALSE},
- {OPTION_TV_OVERSCAN, "TVOverscan", OPTV_ANYSTR, {0}, FALSE},
- {OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE},
- {OPTION_FLATPANEL, "FlatPanel", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_FLATPANEL_IN_BIOS, "FlatPanelInBios", OPTV_BOOLEAN, {0}, FALSE},
- {OPTION_OVERLAY, "Overlay", OPTV_ANYSTR, {0}, FALSE},
- {OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, FALSE},
- {OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE},
- {OPTION_IMG_BUFS, "ImageWriteBuffers", OPTV_INTEGER, {0}, FALSE },
- {OPTION_DONT_PROGRAM, "DontProgram", OPTV_BOOLEAN, {0}, FALSE},
- {-1, NULL, OPTV_NONE, {0}, FALSE}
-};
-
-/* List of symbols from other modules that this module references.The purpose
-* is that to avoid unresolved symbol warnings
-*/
-static const char *vgahwSymbols[] = {
- "vgaHWGetHWRec",
- "vgaHWUnlock",
- "vgaHWInit",
- "vgaHWSave",
- "vgaHWRestore",
- "vgaHWProtect",
- "vgaHWGetIOBase",
- "vgaHWMapMem",
- "vgaHWLock",
- "vgaHWFreeHWRec",
- "vgaHWSaveScreen",
- NULL
-};
-
-static const char *vbeSymbols[] = {
- "VBEInit",
- "vbeDoEDID",
- "vbeFree",
- NULL
-};
-
-static const char *fbSymbols[] = {
- "fbScreenInit",
- "fbPictureInit",
- NULL
-};
-
-static const char *xaaSymbols[] = {
- "XAADestroyInfoRec",
- "XAACreateInfoRec",
- "XAAInit",
- "XAAScreenIndex",
- NULL
-};
-
-static const char *ramdacSymbols[] = {
- "xf86InitCursor",
- "xf86CreateCursorInfoRec",
- "xf86DestroyCursorInfoRec",
- NULL
-};
-
-static const char *shadowSymbols[] = {
- "ShadowFBInit",
- NULL
-};
-
-#ifdef XFree86LOADER
-
-/* Module loader interface */
-
-static MODULESETUPPROTO(GeodeSetup);
-
-static XF86ModuleVersionInfo GeodeVersionRec = {
- "geode",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XF86_VERSION_CURRENT,
- GEODE_VERSION_MAJOR, GEODE_VERSION_MINOR, GEODE_PATCHLEVEL,
- ABI_CLASS_VIDEODRV, /* This is a video driver */
- ABI_VIDEODRV_VERSION,
- MOD_CLASS_VIDEODRV,
- {0, 0, 0, 0}
-};
-
-/*
- * This data is accessed by the loader. The name must be the module name
- * followed by "ModuleInit".
- */
-XF86ModuleData geodeModuleData = { &GeodeVersionRec, GeodeSetup, NULL };
-
-/*-------------------------------------------------------------------------
- * GeodeSetup.
- *
- * Description :This function sets up the driver in X list and load the
- * module symbols through xf86loader routines..
- *
- * Parameters.
- * Module :Pointer to the geode module
- * options :Driver module options.
- * ErrorMajor:Major no
- * ErrorMinor:Minor no.
- *
- * Returns :NULL on success
- *
- * Comments :Module setup is done by this function
- *
- *-------------------------------------------------------------------------
-*/
-static pointer
-GeodeSetup(pointer Module, pointer Options, int *ErrorMajor, int *ErrorMinor)
-{
- static Bool Initialised = FALSE;
-
- if (!Initialised) {
- Initialised = TRUE;
- xf86AddDriver(&GEODE, Module, 0);
- /* Tell the loader about symbols from other modules that this
- * module might refer to.
- */
- LoaderRefSymLists(vgahwSymbols, fbSymbols, vbeSymbols,
- xaaSymbols, ramdacSymbols, shadowSymbols, NULL);
- return (pointer) TRUE;
- }
- /*The return value must be non-NULL on success */
- if (ErrorMajor)
- *ErrorMajor = LDR_ONCEONLY;
- return NULL;
-}
-#endif /*End of XFree86Loader */
-
-/* This functions may be used in future implementations */
-
-#if 0
-/* This is not used code and it may be used for vga setup */
-static void
-print_gxm_gfx_reg(GeodePtr pGeode, unsigned int count)
-{
- int i, base = 0x8300;
- unsigned int *preg;
-
- GeodeDebug(("Geode Registers:\n"));
- for (i = 0; i <= count; i += 4) {
- preg = (unsigned int *)(gfx_regptr + base + i);
- DEBUGMSG(0, (0, X_NONE, "%x = %x\n", base + i, *preg));
- }
- GeodeDebug(("CS5530 Display Registers:\n"));
- base = 0x24;
- for (i = 0; i <= 8; i += 4) {
- preg = (unsigned int *)(gfx_vidptr + base + i);
- DEBUGMSG(0, (0, X_NONE, "%x = %x\n", base + i, *preg));
- }
-}
-
-static unsigned char
-gfx_inb(unsigned short port)
-{
- unsigned char value;
- __asm__ volatile ("inb %1,%0":"=a" (value):"d"(port));
-
- return value;
-}
-
-static void
-gfx_outb(unsigned short port, unsigned char data)
-{
- __asm__ volatile ("outb %0,%1"::"a" (data), "d"(port));
-}
-
-static void
-print_gxm_vga_reg()
-{
- int i, index, data;
-
- GeodeDebug(("Geode CRT Registers:\n"));
-
- index = 0x3d4;
- data = 0x3d5;
- for (i = 0; i < STD_CRTC_REGS; i++) {
- OUTB(index, (unsigned char)i);
- DEBUGMSG(0, (0, X_NONE, "CRT[%x] = %x\n", i, INB(data)));
- }
- for (i = 0; i < EXT_CRTC_REGS; i++) {
- OUTB(index, (unsigned char)0x40 + i);
- DEBUGMSG(0, (0, X_NONE, "CRT[%x] = %x\n", 0x40 + i, INB(data)));
- }
-
- index = 0x3c4;
- data = 0x3c5;
- for (i = 0; i <= 4; i++) {
- OUTB(index, (unsigned char)i);
- DEBUGMSG(0, (0, X_NONE, "SR[%x] = %x\n", i, INB(data)));
- }
-
- index = 0x3ce;
- data = 0x3cf;
- for (i = 0; i <= 8; i++) {
- OUTB(index, (unsigned char)i);
- DEBUGMSG(0, (0, X_NONE, "GR[%x] = %x\n", i, INB(data)));
- }
-
-#if 0
- index = 0x3c0;
- data = 0x3c1;
- for (i = 0; i <= 0x14; i++) {
- INB(0x3da);
- OUTB(index, (unsigned char)i);
- DEBUGMSG(0, (0, X_NONE, "AR[%x] = %x\n", i, INB(data)));
- }
-
- DEBUGMSG(0, (0, X_NONE, "MISC = %x\n", INB(0x3CC)));
-#endif
-}
-#endif /* end of Geode_reg_settings */
-
-/*----------------------------------------------------------------------------
- * GeodeGetRec.
- *
- * Description :This function allocate an GeodeRec and hooked into
- * pScreenInfo str driverPrivate member of ScreeenInfo
- * structure.
- * Parameters.
- * pScreenInfo :Pointer handle to the screenonfo structure.
- *
- * Returns :allocated pScreeninfo structure.
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-static GeodePtr
-GeodeGetRec(ScrnInfoPtr pScreenInfo)
-{
- if (!pScreenInfo->driverPrivate)
- pScreenInfo->driverPrivate = xnfcalloc(sizeof(GeodeRec), 1);
- return GEODEPTR(pScreenInfo);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeFreeRec.
- *
- * Description :This function deallocate an GeodeRec and freed from
- * pScreenInfo str driverPrivate member of ScreeenInfo
- * structure.
- * Parameters.
- * pScreenInfo :Pointer handle to the screenonfo structure.
- *
- * Returns :none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-static void
-GeodeFreeRec(ScrnInfoPtr pScreenInfo)
-{
- if (pScreenInfo->driverPrivate == NULL) {
- return;
- }
- xfree(pScreenInfo->driverPrivate);
- pScreenInfo->driverPrivate = NULL;
-}
-
-/*-------------------------------------------------------------------------
- * GeodeIdentify.
- *
- * Description : This function identify an Geodefamily version.
- *
- *
- * Parameters.
- * flags : flags may be used in GeodePreInit*
- *
- * Returns : none
- *
- * Comments : none
- *
-*------------------------------------------------------------------------
-*/
-static void
-GeodeIdentify(int flags)
-{
- xf86PrintChipsets(GEODE_NAME,
- "Geode family driver (version " GEODE_VERSION_NAME ") "
- "for chipsets", GeodeChipsets);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeAvailableOptions.
- *
- * Description :This function returns the geodeoptions set geodeoption
- *
- * Parameters.
- * chipid :This will identify the chipset.
- * busid :This will identify the PCI busid
- *
- * Returns :ptr to GeodeOptions.
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-static const OptionInfoRec *
-GeodeAvailableOptions(int chipid, int busid)
-{
- return GeodeOptions;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeProbe.
- *
- * Description :This is to find that hardware is claimed by another
- * driver if not claim the slot & allocate ScreenInfoRec.
- *
- * Parameters.
- * drv :a pointer to the geode driver
- * flags :flags may passed to check the config and probe detect
- *
- * Returns :TRUE on success and FALSE on failure.
- *
- * Comments :This should ne minimal probe and it should under no
- * circumstances change the state of the hardware.Don't do
- * any intiallizations other than the required
- * ScreenInforec.
-*----------------------------------------------------------------------------
-*/
-
-static Bool
-GeodeProbe(DriverPtr drv, int flags)
-{
- Bool foundScreen = FALSE;
- int numDevSections, numUsed;
- GDevPtr *devSections = NULL;
- int *usedChips = NULL;
- int i;
-
- GeodeDebug(("GeodeProbe: Probing for supported devices!\n"));
- /*
- * *Find the config file Device sections that match this
- * *driver, and return if there are none.
- */
- if ((numDevSections = xf86MatchDevice(GEODE_NAME, &devSections)) <= 0) {
- GeodeDebug(("GeodeProbe: failed 1!\n"));
- return FALSE;
- }
- /* PCI BUS */
- if (xf86GetPciVideoInfo()) {
- numUsed = xf86MatchPciInstances(GEODE_NAME, PCI_VENDOR_ID_NS,
- GeodeChipsets, GeodePCIchipsets,
- devSections, numDevSections,
- drv, &usedChips);
- if (numUsed <= 0) {
- /* Check for old CYRIX vendor ID (5530) */
- numUsed = xf86MatchPciInstances(GEODE_NAME,
- PCI_VENDOR_ID_CYRIX,
- GeodeChipsets, GeodePCIchipsets,
- devSections, numDevSections,
- drv, &usedChips);
- }
-
- if (numUsed > 0) {
- if (flags & PROBE_DETECT)
- foundScreen = TRUE;
- else {
- /* Durango only supports one instance, */
- /* so take the first one */
- for (i = 0; i < numUsed; i++) {
- /* Allocate a ScrnInfoRec */
- ScrnInfoPtr pScrn = xf86AllocateScreen(drv, 0);
-
- pScrn->driverVersion = GEODE_VERSION_CURRENT;
- pScrn->driverName = GEODE_DRIVER_NAME;
- pScrn->name = GEODE_NAME;
- pScrn->Probe = GeodeProbe;
- pScrn->PreInit = GeodePreInit;
- pScrn->ScreenInit = GeodeScreenInit;
- pScrn->SwitchMode = GeodeSwitchMode;
- pScrn->AdjustFrame = GeodeAdjustFrame;
- pScrn->EnterVT = GeodeEnterVT;
- pScrn->LeaveVT = GeodeLeaveVT;
- pScrn->FreeScreen = GeodeFreeScreen;
- pScrn->ValidMode = GeodeValidMode;
- foundScreen = TRUE;
- xf86ConfigActivePciEntity(pScrn,
- usedChips[i],
- GeodePCIchipsets,
- NULL, NULL, NULL, NULL, NULL);
- }
- }
- }
- }
-
- if (usedChips)
- xfree(usedChips);
- if (devSections)
- xfree(devSections);
- GeodeDebug(("GeodeProbe: result (%d)!\n", foundScreen));
- return foundScreen;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSaveScreen.
- *
- * Description :This is todo the screen blanking
- *
- * Parameters.
- * pScreen :Handle to ScreenPtr structure.
- * mode :mode is used by vgaHWSaveScren to check blnak os on.
- *
- * Returns :TRUE on success and FALSE on failure.
- *
- * Comments :none
-*----------------------------------------------------------------------------
-*/
-static Bool
-GeodeSaveScreen(ScreenPtr pScreen, int mode)
-{
- GeodeDebug(("GeodeSaveScreen!\n"));
- return vgaHWSaveScreen(pScreen, mode);
-}
-
-/*----------------------------------------------------------------------------
- * get_tv_overscan_geom.
- *
- * Description :This is todo the screen blanking
- *
- * Parameters:
- * options : Pointer to the display options.
- * X: Pointer to the offset of the screen X-co-ordinate.
- * Y: Pointer to the offset of the screen Y-co-ordinate.
- * W: Pointer to the width of the screen.
- * H: Pointer to the height of the screen.
- * Returns : none.
- *
- * Comments :none
- *------------------------------------------------------------------------
- */
-void
-get_tv_overscan_geom(const char *options, int *X, int *Y, int *W, int *H)
-{
- char *tv_opt;
-
- tv_opt = strtok((char *)options, ":");
- *X = strtoul(tv_opt, NULL, 0);
- tv_opt = strtok(NULL, ":");
- *Y = strtoul(tv_opt, NULL, 0);
- tv_opt = strtok(NULL, ":");
- *W = strtoul(tv_opt, NULL, 0);
- tv_opt = strtok(NULL, ":");
- *H = strtoul(tv_opt, NULL, 0);
-}
-
-static void
-GeodeProbeDDC(ScrnInfoPtr pScrn, int index)
-{
- vbeInfoPtr pVbe;
-
- if (xf86LoadSubModule(pScrn, "vbe")) {
- pVbe = VBEInit(NULL, index);
- ConfiguredMonitor = vbeDoEDID(pVbe, NULL);
- vbeFree(pVbe);
- }
-}
-
-/*----------------------------------------------------------------------------
- * GeodePreInit.
- *
- * Description :This function is called only once ate teh server startup
- *
- * Parameters.
- * pScreenInfo :Handle to ScreenPtr structure.
- * flags :flags may be used to check the probeed one with config.
- *
- * Returns :TRUE on success and FALSE on failure.
- *
- * Comments :none.
- *----------------------------------------------------------------------------
- */
-static Bool
-GeodePreInit(ScrnInfoPtr pScreenInfo, int flags)
-{
- static ClockRange GeodeClockRange =
- { NULL, 25175, 135000, 0, FALSE, TRUE, 1, 1, 0 };
- MessageType from;
- int i = 0;
- GeodePtr pGeode;
- char *mod = NULL;
- char *reqSymbol = NULL;
-
-#if defined(STB_X)
- GAL_ADAPTERINFO sAdapterInfo;
-#endif /* STB_X */
- unsigned int PitchInc, minPitch, maxPitch;
- const char *s;
- char **modes;
- char **tvmodes_defa;
-
- GeodeDebug(("GeodePreInit!\n"));
- /* Allocate driver private structure */
- if (!(pGeode = GeodeGetRec(pScreenInfo)))
- return FALSE;
-
- /* This is the general case */
- for (i = 0; i < pScreenInfo->numEntities; i++) {
- pGeode->pEnt = xf86GetEntityInfo(pScreenInfo->entityList[i]);
- if (pGeode->pEnt->resources)
- return FALSE;
- pGeode->Chipset = pGeode->pEnt->chipset;
- pScreenInfo->chipset = (char *)xf86TokenToString(GeodeChipsets,
- pGeode->pEnt->chipset);
- }
-
- if (flags & PROBE_DETECT) {
- GeodeProbeDDC(pScreenInfo, pGeode->pEnt->index);
- return TRUE;
- }
-
- /* If the vgahw module would be needed it would be loaded here */
- if (!xf86LoadSubModule(pScreenInfo, "vgahw")) {
- return FALSE;
- }
- xf86LoaderReqSymLists(vgahwSymbols, NULL);
- GeodeDebug(("GeodePreInit(1)!\n"));
- /* Do the durango hardware detection */
-#if defined(STB_X)
- if (!Gal_initialize_interface())
- return FALSE;
- if (Gal_get_adapter_info(&sAdapterInfo)) {
- pGeode->cpu_version = sAdapterInfo.dwCPUVersion;
- pGeode->vid_version = sAdapterInfo.dwVideoVersion;
- pGeode->FBSize = sAdapterInfo.dwFrameBufferSize;
- /* update the max clock from the one system suports */
- GeodeClockRange.maxClock = sAdapterInfo.dwMaxSupportedPixelClock;
- pGeode->FBLinearAddr = sAdapterInfo.dwFrameBufferBase;
-
- if (!GeodeMapMem(pScreenInfo))
- return FALSE;
-
- pGeode->HWVideo = pGeode->vid_version;
- } else {
- return FALSE;
- }
-#else
- pGeode->cpu_version = gfx_detect_cpu();
- pGeode->vid_version = gfx_detect_video();
- pGeode->FBLinearAddr = gfx_get_frame_buffer_base();
- pGeode->FBSize = gfx_get_frame_buffer_size();
- /* update the max clock from the one system suports */
- GeodeClockRange.maxClock = gfx_get_max_supported_pixel_clock();
-
- if (!GeodeMapMem(pScreenInfo))
- return FALSE;
-
- /* does this make sense!?!? */
- pGeode->HWVideo = gfx_detect_video();
-
- DEBUGMSG(1,
- (0, X_INFO,
- "Geode chip info: cpu:%x vid:%x size:%x base:%x, rom:%X\n",
- pGeode->cpu_version, pGeode->vid_version, pGeode->FBSize,
- pGeode->FBBase, XpressROMPtr));
-#endif /* STB_X */
-
- /* Fill in the monitor field */
- pScreenInfo->monitor = pScreenInfo->confScreen->monitor;
- GeodeDebug(("GeodePreInit(2)!\n"));
- /* Determine depth, bpp, etc. */
- if (!xf86SetDepthBpp(pScreenInfo, 8, 8, 8, 0)) {
- return FALSE;
- } else {
- switch (pScreenInfo->depth) {
- case 8:
- case 16:
- break;
- default:
- /* Depth not supported */
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_ERROR,
- "Given depth (%d bpp) is not supported by this driver\n",
- pScreenInfo->depth));
- return FALSE;
- }
- }
-
- /*This must happen after pScreenInfo->display has been set
- * * because xf86SetWeight references it.
- */
- if (pScreenInfo->depth > 8) {
- /* The defaults are OK for us */
- rgb zeros = { 0, 0, 0 };
-
- if (!xf86SetWeight(pScreenInfo, zeros, zeros)) {
- return FALSE;
- } else {
- /* XXX Check if the returned weight is supported */
- }
- }
- xf86PrintDepthBpp(pScreenInfo);
- GeodeDebug(("GeodePreInit(3)!\n"));
- if (!xf86SetDefaultVisual(pScreenInfo, -1))
- return FALSE;
- GeodeDebug(("GeodePreInit(4)!\n"));
-
- /* The new cmap layer needs this to be initialized */
- if (pScreenInfo->depth > 1) {
- Gamma zeros = { 0.0, 0.0, 0.0 };
-
- if (!xf86SetGamma(pScreenInfo, zeros)) {
- return FALSE;
- }
- }
- GeodeDebug(("GeodePreInit(5)!\n"));
- /* We use a programmable clock */
- pScreenInfo->progClock = TRUE;
-
- /*Collect all of the relevant option flags
- * *(fill in pScreenInfo->options)
- */
- xf86CollectOptions(pScreenInfo, NULL);
-
- /*Process the options */
- xf86ProcessOptions(pScreenInfo->scrnIndex, pScreenInfo->options,
- GeodeOptions);
-
- /*Set the bits per RGB for 8bpp mode */
- if (pScreenInfo->depth == 8) {
- /* Default to 8 */
- pScreenInfo->rgbBits = 8;
- }
- from = X_DEFAULT;
- pGeode->HWCursor = TRUE;
- /*
- * *The preferred method is to use the "hw cursor" option as a tri-state
- * *option, with the default set above.
- */
- if (xf86GetOptValBool(GeodeOptions, OPTION_HW_CURSOR, &pGeode->HWCursor)) {
- from = X_CONFIG;
- }
- /* For compatibility, accept this too (as an override) */
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_SW_CURSOR, FALSE)) {
- from = X_CONFIG;
- pGeode->HWCursor = FALSE;
- }
- DEBUGMSG(1, (pScreenInfo->scrnIndex, from, "Using %s cursor\n",
- pGeode->HWCursor ? "HW" : "SW"));
-
- pGeode->Compression = FALSE;
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_COMPRESSION, FALSE)) {
- pGeode->Compression = TRUE;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG, "Compression \
- enabled\n"));
- }
-
- pGeode->NoAccel = FALSE;
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_NOACCEL, FALSE)) {
- pGeode->NoAccel = TRUE;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG, "Acceleration \
- disabled\n"));
- }
-
- pGeode->TVSupport = FALSE;
- if ((s = xf86GetOptValString(GeodeOptions, OPTION_TV_SUPPORT))) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG, "TV = %s\n", s));
- if (!xf86NameCmp(s, "PAL-768x576")) {
- pGeode->TvParam.wStandard = TV_STANDARD_PAL;
- pGeode->TvParam.wType = GFX_ON_TV_SQUARE_PIXELS;
- pGeode->TvParam.wWidth = 768;
- pGeode->TvParam.wHeight = 576;
- pGeode->TVSupport = TRUE;
- } else if (!xf86NameCmp(s, "PAL-720x576")) {
- pGeode->TvParam.wStandard = TV_STANDARD_PAL;
- pGeode->TvParam.wType = GFX_ON_TV_NO_SCALING;
- pGeode->TvParam.wWidth = 720;
- pGeode->TvParam.wHeight = 576;
- pGeode->TVSupport = TRUE;
- } else if (!xf86NameCmp(s, "NTSC-640x480")) {
- pGeode->TvParam.wStandard = TV_STANDARD_NTSC;
- pGeode->TvParam.wType = GFX_ON_TV_SQUARE_PIXELS;
- pGeode->TvParam.wWidth = 640;
- pGeode->TvParam.wHeight = 480;
- pGeode->TVSupport = TRUE;
- } else if (!xf86NameCmp(s, "NTSC-720x480")) {
- pGeode->TvParam.wStandard = TV_STANDARD_NTSC;
- pGeode->TvParam.wType = GFX_ON_TV_NO_SCALING;
- pGeode->TvParam.wWidth = 720;
- pGeode->TvParam.wHeight = 480;
- pGeode->TVSupport = TRUE;
- }
-
- if (pGeode->TVSupport == TRUE) {
- unsigned int status = 0;
-
- GFX(get_tv_enable(&status));
-
- DEBUGMSG(1, (0, X_PROBED, "status %d \n", status));
- if (status == 0) {
- pGeode->TVSupport = FALSE;
- DEBUGMSG(1, (0, X_NONE, "Not a TV Supported Platform\n"));
- }
- pGeode->TvParam.wOutput = TV_OUTPUT_S_VIDEO; /* default */
- /* Now find the output */
- if (pGeode->TVSupport) {
- if ((s = xf86GetOptValString(GeodeOptions, OPTION_TV_OUTPUT))) {
- if (!xf86NameCmp(s, "COMPOSITE")) {
- pGeode->TvParam.wOutput = TV_OUTPUT_COMPOSITE;
- } else if (!xf86NameCmp(s, "SVIDEO")) {
- pGeode->TvParam.wOutput = TV_OUTPUT_S_VIDEO;
- } else if (!xf86NameCmp(s, "YUV")) {
- pGeode->TvParam.wOutput = TV_OUTPUT_YUV;
- } else if (!xf86NameCmp(s, "SCART")) {
- pGeode->TvParam.wOutput = TV_OUTPUT_SCART;
- }
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "TVOutput = %s %d\n", s,
- pGeode->TvParam.wOutput));
- }
- }
- }
-
- /*TV can be turned on only in 16BPP mode */
- if ((pScreenInfo->depth == 8) && (pGeode->TVSupport == TRUE)) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "Warning TV Disabled, TV Can't be supported in 8Bpp !!!\n"));
- pGeode->TVSupport = FALSE;
- }
- }
-
- /* If TV Supported then check for TVO support */
- if (pGeode->TVSupport == TRUE) {
- pGeode->TVOx = 0;
- pGeode->TVOy = 0;
- pGeode->TVOw = 0;
- pGeode->TVOh = 0;
- pGeode->TV_Overscan_On = FALSE;
- if ((s = xf86GetOptValString(GeodeOptions, OPTION_TV_OVERSCAN))) {
- get_tv_overscan_geom(s, &(pGeode->TVOx),
- &(pGeode->TVOy), &(pGeode->TVOw),
- &(pGeode->TVOh));
-
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "TVO %d %d %d %d\n", pGeode->TVOx, pGeode->TVOy,
- pGeode->TVOw, pGeode->TVOh));
-
- if ((pGeode->TVOx >= 0 && pGeode->TVOy >= 0) &&
- (pGeode->TVOh > 0 && pGeode->TVOw > 0)) {
- if (((pGeode->TVOx + pGeode->TVOw) <= pGeode->TvParam.wWidth) &&
- ((pGeode->TVOy + pGeode->TVOh) <= pGeode->TvParam.wHeight)) {
- pGeode->TV_Overscan_On = TRUE;
- }
- }
- }
- }
-
- /* If TV is not selected and currently TV is enabled, disable the TV out */
- if (pGeode->TVSupport == FALSE) {
- unsigned int status = 0;
-
- GFX(get_tv_enable(&status));
- if (status)
- GFX(set_tv_enable(0));
- }
-
- pGeode->NoOfImgBuffers = DEFAULT_NUM_OF_BUF; /* default # of buffers */
- if(!xf86GetOptValInteger(GeodeOptions, OPTION_IMG_BUFS,
- &(pGeode->NoOfImgBuffers))) {
- if(pGeode->NoOfImgBuffers < 0)
- pGeode->NoOfImgBuffers = DEFAULT_NUM_OF_BUF; /* default # of buffers */
- }
-
- pGeode->Panel = FALSE;
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_FLATPANEL, FALSE)) {
- DEBUGMSG(0, (pScreenInfo->scrnIndex, X_CONFIG, "FlatPanel Selected\n"));
- pGeode->Panel = TRUE;
- }
-
- pGeode->FPInBios = FALSE;
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_FLATPANEL_IN_BIOS, FALSE)) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "FlatPanel Support from BIOS\n"));
- pGeode->FPInBios = TRUE;
- }
-
- DEBUGMSG(0, (pScreenInfo->scrnIndex, X_CONFIG,
- "FP Bios %d %d\n", pGeode->FPInBios, pGeode->Panel));
-
- /* if FP not supported in BIOS, then turn off user option */
- if (pGeode->FPInBios) {
- int ret;
-
- /* check if bios supports FP */
-#if defined(STB_X)
- Gal_get_softvga_state(&ret);
- if (!ret) {
- /* its time to wakeup softvga */
- Gal_set_softvga_state(TRUE);
- Gal_vga_mode_switch(0);
- }
- Gal_pnl_enabled_in_bios(&pGeode->FPInBios);
-
- if (pGeode->FPInBios) {
- Gal_pnl_info_from_bios(&pGeode->FPBX, &pGeode->FPBY,
- &pGeode->FPBB, &pGeode->FPBF);
- }
- if (!ret) {
- /* its time to put softvga back to sleep */
- Gal_set_softvga_state(FALSE);
- Gal_vga_mode_switch(1);
- }
-#else
- ret = gfx_get_softvga_active();
- if (!ret) {
- /* its time to wakeup softvga */
- gfx_enable_softvga();
- gfx_vga_mode_switch(0);
- }
- pGeode->FPInBios = Pnl_IsPanelEnabledInBIOS();
- if (pGeode->FPInBios) {
- Pnl_GetPanelInfoFromBIOS(&pGeode->FPBX, &pGeode->FPBY,
- &pGeode->FPBB, &pGeode->FPBF);
- }
- if (!ret) {
- /* its time to put softvga back to sleep */
- gfx_disable_softvga();
- gfx_vga_mode_switch(1);
- }
-#endif
- if (pGeode->FPInBios == 0) {
- pGeode->Panel = 0;
- } else {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_PROBED,
- "Flat Panel Dimensions (from BIOS) %dx%d\n",
- pGeode->FPBX, pGeode->FPBY));
- }
- }
-
- DEBUGMSG(0, (pScreenInfo->scrnIndex, X_CONFIG,
- "FP Bios %d %d\n", pGeode->FPInBios, pGeode->Panel));
-
- /* if Panel enabled and Flatpanel support not from BIOS then
- * detect if the platform can support a panel */
-
- if (pGeode->Panel && (!pGeode->FPInBios)) {
- pGeode->PnlParam.PanelPresent = 1;
-#if defined(STB_X)
- Gal_pnl_get_params(PNL_PLATFORM | PNL_PANELCHIP | PNL_PANELSTAT,
- &(pGeode->PnlParam));
-#else
- pGeode->PnlParam.Flags = PNL_PLATFORM | PNL_PANELCHIP | PNL_PANELSTAT;
-
- Pnl_GetPanelParam(&(pGeode->PnlParam));
-#endif /* STB_X */
- DEBUGMSG(0, (pScreenInfo->scrnIndex, X_CONFIG,
- "chip = %X\n", pGeode->PnlParam.PanelChip));
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "%s Platform with %s Chip, %s Panel %dx%d %dBpp%sColor \n",
- ((pGeode->PnlParam.Platform ==
- CENTAURUS_PLATFORM) ? "Centaurus" : ((pGeode->PnlParam.
- Platform ==
- DORADO_PLATFORM) ?
- "Dorado" :
- "Unknown")),
- ((pGeode->PnlParam.
- PanelChip & PNL_9210) ? "9210" : ((pGeode->PnlParam.
- PanelChip &
- PNL_9211_A) ? "9211_A"
- : ((pGeode->PnlParam.
- PanelChip &
- PNL_9211_C) ?
- "9211_C" :
- "Unknown"))),
- ((pGeode->PnlParam.PanelStat.
- Type & PNL_TFT) ? "TFT" : ((pGeode->PnlParam.PanelStat.
- Type & PNL_SSTN) ? "SSTN"
- : ((pGeode->PnlParam.
- PanelStat.
- Type & PNL_DSTN) ? "DSTN"
- : "Unknown"))),
- pGeode->PnlParam.PanelStat.XRes,
- pGeode->PnlParam.PanelStat.YRes,
- pGeode->PnlParam.PanelStat.Depth,
- ((pGeode->PnlParam.PanelStat.
- MonoColor & PNL_MONO_PANEL) ? " Mono" : ((pGeode->
- PnlParam.
- PanelStat.
- MonoColor &
- PNL_COLOR_PANEL)
- ? " " :
- " Unknown"))
- ));
-
- /* check if we found a vaild configuration */
- if ((pGeode->PnlParam.Platform == OTHER_PLATFORM) ||
- (pGeode->PnlParam.PanelChip & PNL_UNKNOWN_CHIP) ||
- (pGeode->PnlParam.PanelStat.Type & PNL_UNKNOWN_PANEL) ||
- (pGeode->PnlParam.PanelStat.MonoColor & PNL_UNKNOWN_COLOR)) {
- pGeode->Panel = FALSE;
- }
- }
-
- DEBUGMSG(0, (0, X_CONFIG, "FP Bios pGeode->Panel %d \n", pGeode->Panel));
-
- /* if panel not selected and Panel can be supported.
- * Power down the panel.
- */
- if (!pGeode->Panel) {
-#if defined(STB_X)
- Gal_pnl_powerdown();
-#else
- Pnl_PowerDown();
-#endif /* STB_X */
- }
-
- pGeode->ShadowFB = FALSE;
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_SHADOW_FB, FALSE)) {
- pGeode->ShadowFB = TRUE;
- pGeode->NoAccel = TRUE;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "Using \"Shadow Framebuffer\" - acceleration disabled\n"));
- }
-
- if (xf86ReturnOptValBool(GeodeOptions, OPTION_DONT_PROGRAM, FALSE)) {
- gfx_dont_program = 1;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "Don't Program enabled\n"));
- } else
- gfx_dont_program = 0;
-
- pGeode->Rotate = 0;
- if ((s = xf86GetOptValString(GeodeOptions, OPTION_ROTATE))) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG, "Rotating - %s\n", s));
- if (!xf86NameCmp(s, "CW")) {
- pGeode->ShadowFB = TRUE;
- pGeode->NoAccel = TRUE;
- pGeode->HWCursor = FALSE;
- pGeode->Rotate = 1;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "Rotating screen clockwise - acceleration disabled\n"));
- } else {
- if (!xf86NameCmp(s, "CCW")) {
- pGeode->ShadowFB = TRUE;
- pGeode->NoAccel = TRUE;
- pGeode->HWCursor = FALSE;
- pGeode->Rotate = -1;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "Rotating screen counter clockwise - acceleration \
- disabled\n"));
- } else {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "\"%s\" is not a valid value for Option \"Rotate\"\n",
- s));
- DEBUGMSG(1,
- (pScreenInfo->scrnIndex, X_INFO,
- "Valid options are \"CW\" or \"CCW\"\n"));
- }
- }
- }
-
- if ((s = xf86GetOptValString(GeodeOptions, OPTION_OVERLAY))) {
- if (!*s || !xf86NameCmp(s, "8,16") || !xf86NameCmp(s, "16,8")) {
- if (pScreenInfo->bitsPerPixel == 16) {
- pGeode->HWOverlay = TRUE;
- if (!xf86GetOptValInteger
- (GeodeOptions, OPTION_COLOR_KEY, &(pScreenInfo->colorKey)))
- pScreenInfo->colorKey = TRANSPARENCY_KEY;
- pScreenInfo->overlayFlags = OVERLAY_8_16_DUALFB;
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "PseudoColor overlay enabled.\n"));
- } else {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_WARNING,
- "Option \"Overlay\" is not supported in this configuration\n"));
- }
- } else {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_WARNING,
- "\"%s\" is not a valid value for Option \"Overlay\"\n",
- s));
- }
- }
- if (1 || pGeode->HWOverlay) {
- if (xf86GetOptValInteger(GeodeOptions, OPTION_VIDEO_KEY,
- &(pGeode->videoKey))) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_CONFIG,
- "video key set to 0x%x\n", pGeode->videoKey));
- } else {
- pGeode->videoKey = (1 << pScreenInfo->offset.red) |
- (1 << pScreenInfo->offset.green) |
- (((pScreenInfo->mask.blue >> pScreenInfo->offset.blue) - 1)
- << pScreenInfo->offset.blue);
- }
- }
-
- /* XXX Init further private data here */
-
- /*
- * * This shouldn't happen because such problems should be caught in
- * * GeodeProbe(), but check it just in case.
- */
- if (pScreenInfo->chipset == NULL) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_ERROR,
- "ChipID 0x%04X is not recognised\n", pGeode->Chipset));
- return FALSE;
- }
- if (pGeode->Chipset < 0) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_ERROR,
- "Chipset \"%s\" is not recognised\n",
- pScreenInfo->chipset));
- return FALSE;
- }
- GeodeDebug(("GeodePreInit(6)!\n"));
-
- /*
- * * Init the screen with some values
- */
- DEBUGMSG(1, (pScreenInfo->scrnIndex, from,
- "Video I/O registers at 0x%08lX\n",
- (unsigned long)VGAHW_GET_IOBASE()));
-
- if (pScreenInfo->memPhysBase == 0) {
- from = X_PROBED;
-#if defined(STB_X)
- pScreenInfo->memPhysBase = sAdapterInfo.dwFrameBufferBase;
-#else
- pScreenInfo->memPhysBase = gfx_get_frame_buffer_base();
-#endif /* STB_X */
- }
- DEBUGMSG(1, (pScreenInfo->scrnIndex, from,
- "Linear framebuffer at 0x%08lX\n",
- (unsigned long)pScreenInfo->memPhysBase));
-
- if (pGeode->pEnt->device->videoRam == 0) {
- from = X_PROBED;
- pScreenInfo->videoRam = pGeode->FBSize / 1024;
- } else {
- pScreenInfo->videoRam = pGeode->pEnt->device->videoRam;
- from = X_CONFIG;
- }
- DEBUGMSG(1, (pScreenInfo->scrnIndex, from,
- "VideoRam: %d kByte\n",
- (unsigned long)pScreenInfo->videoRam));
-
- GeodeDebug(("GeodePreInit(7)!\n"));
-
- /*
- * * xf86ValidateModes will check that the mode HTotal and VTotal values
- * * don't exceed the chipset's limit if pScreenInfo->maxHValue adn
- * * pScreenInfo->maxVValue are set. Since our GeodeValidMode()
- * * already takes care of this, we don't worry about setting them here.
- */
- /* Select valid modes from those available */
- /*
- * * min pitch 1024, max 2048 (Pixel count)
- * * min height 480, max 1024 (Pixel count)
- */
- minPitch = 1024;
- maxPitch = 2048;
- if (pScreenInfo->depth == 16) {
- PitchInc = 1024 << 4; /* in bits */
- } else {
- PitchInc = 1024 << 3; /* in bits */
- }
-
- /* by default use what user sets in the XF86Config file */
- modes = pScreenInfo->display->modes;
- if (pGeode->TVSupport == TRUE) {
- char str[20];
-
- sprintf(str, "%dx%d-%d",
- pGeode->TvParam.wWidth,
- pGeode->TvParam.wHeight,
- ((pGeode->TvParam.wStandard == TV_STANDARD_PAL) ? 50 : 60));
-
- tvmodes_defa = (char **)malloc(sizeof(char *) * 2);
- tvmodes_defa[0] = (char *)malloc(strlen(str));
- tvmodes_defa[1] = NULL;
- strcpy(str, tvmodes_defa[0]);
-
- modes = tvmodes_defa;
- }
-
- i = xf86ValidateModes(pScreenInfo,
- pScreenInfo->monitor->Modes,
- modes,
- &GeodeClockRange,
- NULL, minPitch, maxPitch,
- PitchInc, 480, 1024,
- pScreenInfo->display->virtualX,
- pScreenInfo->display->virtualY,
-#if defined(STB_X)
- sAdapterInfo.dwFrameBufferSize,
-#else
- gfx_get_frame_buffer_size(),
-#endif /* STB_X */
- LOOKUP_BEST_REFRESH);
-
- DEBUGMSG(1, (pScreenInfo->scrnIndex, from,
- "xf86ValidateModes: %d %d %d\n",
- pScreenInfo->virtualX,
- pScreenInfo->virtualY, pScreenInfo->displayWidth));
- if (i == -1) {
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
- GeodeDebug(("GeodePreInit(8)!\n"));
- /* Prune the modes marked as invalid */
- xf86PruneDriverModes(pScreenInfo);
- GeodeDebug(("GeodePreInit(9)!\n"));
- if (i == 0 || pScreenInfo->modes == NULL) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_ERROR,
- "No valid modes found\n"));
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
- GeodeDebug(("GeodePreInit(10)!\n"));
- xf86SetCrtcForModes(pScreenInfo, 0);
- GeodeDebug(("GeodePreInit(11)!\n"));
- /* Set the current mode to the first in the list */
- pScreenInfo->currentMode = pScreenInfo->modes;
- GeodeDebug(("GeodePreInit(12)!\n"));
- /* Print the list of modes being used */
- xf86PrintModes(pScreenInfo);
- GeodeDebug(("GeodePreInit(13)!\n"));
- /* Set the display resolution */
- xf86SetDpi(pScreenInfo, 0, 0);
- GeodeDebug(("GeodePreInit(14)!\n"));
- /* Load bpp-specific modules */
- mod = NULL;
- switch (pScreenInfo->bitsPerPixel) {
- case 8:
- case 16:
- mod = "fb";
- reqSymbol = "fbScreenInit";
- break;
- }
- if (mod && !xf86LoadSubModule(pScreenInfo, mod)) {
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
- xf86LoaderReqSymbols(reqSymbol, NULL);
- GeodeDebug(("GeodePreInit(15)!\n"));
- if (pGeode->NoAccel == FALSE) {
- if (!xf86LoadSubModule(pScreenInfo, "xaa")) {
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
- xf86LoaderReqSymLists(xaaSymbols, NULL);
- }
- if (pGeode->HWCursor == TRUE) {
- if (!xf86LoadSubModule(pScreenInfo, "ramdac")) {
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
- xf86LoaderReqSymLists(ramdacSymbols, NULL);
- }
- /* Load shadowfb if needed */
- if (pGeode->ShadowFB) {
- if (!xf86LoadSubModule(pScreenInfo, "shadowfb")) {
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
- xf86LoaderReqSymLists(shadowSymbols, NULL);
- }
- if (xf86RegisterResources(pGeode->pEnt->index, NULL, ResExclusive)) {
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_ERROR,
- "xf86RegisterResources() found resource conflicts\n"));
- GeodeFreeRec(pScreenInfo);
- return FALSE;
- }
-
- GeodeUnmapMem(pScreenInfo);
-
- GeodeDebug(("GeodePreInit(16)!\n"));
- GeodeDebug(("GeodePreInit(17)!\n"));
- GeodeDebug(("GeodePreInit ... done successfully!\n"));
- return TRUE;
-}
-
-#if 0
-/*----------------------------------------------------------------------------
- * GeodeRestoreEx.
- *
- * Description :This function restores the mode that was saved on server
- entry
- * Parameters.
- * pScreenInfo :Handle to ScreenPtr structure.
- * Pmode :poits to screen mode
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static void
-GeodeRestoreEx(ScrnInfoPtr pScreenInfo, DisplayModePtr pMode)
-{
- GeodePtr pGeode;
-
- GeodeDebug(("GeodeRestoreEx!\n"));
- /* Get driver private structure */
- if (!(pGeode = GeodeGetRec(pScreenInfo)))
- return;
- /* Restore the extended registers */
-#if defined(STB_X)
- pGeode->FBgfxVgaRegs.dwFlags = GFX_VGA_FLAG_MISC_OUTPUT |
- GFX_VGA_FLAG_STD_CRTC | GFX_VGA_FLAG_EXT_CRTC;
- Gal_vga_restore(&(pGeode->FBgfxVgaRegs));
-#else
- gfx_vga_restore(&(pGeode->FBgfxVgaRegs),
- GFX_VGA_FLAG_MISC_OUTPUT |
- GFX_VGA_FLAG_STD_CRTC | GFX_VGA_FLAG_EXT_CRTC);
-#endif /* STB_X */
-}
-#endif
-
-/*----------------------------------------------------------------------------
- * GeodeCalculatePitchBytes.
- *
- * Description :This function restores the mode that was saved on server
- *
- * Parameters.
- * pScreenInfo :Handle to ScreenPtr structure.
- * Pmode :Points to screenmode
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static int
-GeodeCalculatePitchBytes(ScrnInfoPtr pScreenInfo)
-{
- GeodePtr pGeode;
- int lineDelta = pScreenInfo->virtualX * (pScreenInfo->bitsPerPixel >> 3);
-
- pGeode = GEODEPTR(pScreenInfo);
-
- /* needed in Rotate mode when in accel is turned off */
- if (1) { /*!pGeode->NoAccel */
- /* Force to 1K or 2K if acceleration is enabled
- * we should check for pyramid here!!
- */
- if (lineDelta > 2048)
- lineDelta = 4096;
- else if (lineDelta > 1024)
- lineDelta = 2048;
- else
- lineDelta = 1024;
- }
-
- DEBUGMSG(1,
- (0, X_PROBED, "pitch %d %d\n", pScreenInfo->virtualX, lineDelta));
-
- return lineDelta;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeGetRefreshRate.
- *
- * Description :This function restores the mode that saved on server
- *
- * Parameters.
- * Pmode :Pointer to the screen modes
- *
- * Returns :It returns the selected refresh rate.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static int
-GeodeGetRefreshRate(DisplayModePtr pMode)
-{
-#define THRESHOLD 2
- int i;
- static int validRates[] = { 50, 56, 60, 70, 72, 75, 85 }; /* Hz */
- unsigned long dotClock;
- int refreshRate;
- int selectedRate;
-
- dotClock = pMode->SynthClock * 1000;
- refreshRate = dotClock / pMode->CrtcHTotal / pMode->CrtcVTotal;
- selectedRate = validRates[0];
- for (i = 0; i < (sizeof(validRates) / sizeof(validRates[0])); i++) {
- if (validRates[i] < (refreshRate + THRESHOLD)) {
- selectedRate = validRates[i];
- }
- }
- return selectedRate;
-}
-
-#if 1
-static void
-clear_screen(int width, int height)
-{
- /* clean up the frame buffer memory */
-
- GFX(set_solid_pattern(0));
- GFX(set_raster_operation(0xF0));
- GFX(pattern_fill(0, 0, width, height));
-}
-#endif
-
-/*----------------------------------------------------------------------------
- * GeodeSetMode.
- *
- * Description :This function sets parametrs for screen mode
- *
- * Parameters.
- * pScreenInfo :Pointer to the screenInfo structure.
- * Pmode :Pointer to the screen modes
- *
- * Returns :TRUE on success and FALSE on Failure.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-
-static Bool
-GeodeSetMode(ScrnInfoPtr pScreenInfo, DisplayModePtr pMode)
-{
- GeodePtr pGeode;
-
- /* unsigned int compOffset, compPitch, compSize; */
- GeodeDebug(("GeodeSetMode!\n"));
- pGeode = GEODEPTR(pScreenInfo);
-
- /* Set the VT semaphore */
- pScreenInfo->vtSema = TRUE;
-
- /* The timing will be adjusted later */
- GeodeDebug(("Set display mode: %dx%d-%d (%dHz)\n",
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel, GeodeGetRefreshRate(pMode)));
- GeodeDebug(("Before setting the mode\n"));
-#if 0
- if ((pMode->CrtcHDisplay >= 640) && (pMode->CrtcVDisplay >= 480))
- if (1) {
-#endif
- GFX(set_display_bpp(pScreenInfo->bitsPerPixel));
-
- if (pGeode->TVSupport == TRUE) {
- pGeode->TvParam.bState = 1; /* enable */
- /* wWidth and wHeight already set in init. */
-#if defined(STB_X)
- Gal_tv_set_params(GAL_TVSTATE | GAL_TVOUTPUT |
- GAL_TVFORMAT | GAL_TVRESOLUTION,
- &(pGeode->TvParam));
-#else
- /* sequence might be important */
- gfx_set_tv_display(pGeode->TvParam.wWidth,
- pGeode->TvParam.wHeight);
- gfx_set_tv_format(pGeode->TvParam.wStandard,
- pGeode->TvParam.wType);
- gfx_set_tv_output(pGeode->TvParam.wOutput);
- gfx_set_tv_enable(pGeode->TvParam.bState);
-
-#endif /* STB_X */
- } else { /* TV not selected */
-
- DEBUGMSG(0, (0, X_PROBED, "Setting Display for CRT or TFT\n"));
-
- if (pGeode->Panel) {
- DEBUGMSG(0, (0, X_PROBED, "Setting Display for TFT\n"));
- if (gfx_dont_program) {
- if (pGeode->FPBX != pMode->CrtcHDisplay &&
- pGeode->FPBY != pMode->CrtcVDisplay) {
- gfx_dont_program = 0;
- DEBUGMSG(1,
- (1, X_PROBED,
- "Disabling Dont Program - Panel/Res mismatch %dx%d != %dx%d\n",
- pGeode->FPBX, pGeode->FPBY,
- pMode->CrtcHDisplay, pMode->CrtcVDisplay));
- }
- }
-#if defined(STB_X)
- if (pGeode->FPInBios) {
- DEBUGMSG(0, (0, X_PROBED, "Restore Panel %d %d %d %d %d\n",
- pGeode->FPBX,
- pGeode->FPBY,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel));
- Gal_set_fixed_timings(pGeode->FPBX, pGeode->FPBY,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel);
- } else {
- DEBUGMSG(0, (0, X_PROBED, "Restore Panel %d %d %d %d %d\n",
- pGeode->PnlParam.PanelStat.XRes,
- pGeode->PnlParam.PanelStat.YRes,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel));
-
- Gal_set_fixed_timings(pGeode->PnlParam.PanelStat.XRes,
- pGeode->PnlParam.PanelStat.YRes,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel);
- Gal_pnl_init(&(pGeode->PnlParam));
- }
-#else
- GeodeDebug(("0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", READ_REG32(DC_OUTPUT_CFG), READ_REG32(DC_TIMING_CFG), READ_REG32(DC_GENERAL_CFG), READ_REG32(DC_H_TIMING_1), READ_REG32(DC_H_TIMING_2), READ_REG32(DC_H_TIMING_3), READ_REG32(DC_FP_H_TIMING), READ_REG32(DC_V_TIMING_1), READ_REG32(DC_V_TIMING_2), READ_REG32(DC_V_TIMING_3), READ_REG32(DC_FP_V_TIMING)));
-
- if (pGeode->FPInBios) {
- DEBUGMSG(0, (0, X_PROBED, "Restore Panel %d %d %d %d %d\n",
- pGeode->FPBX,
- pGeode->FPBY,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel));
-
-#ifdef MAGIC
- /* XXX: We do this twice - magic ! */
- gfx_set_fixed_timings(pGeode->FPBX, pGeode->FPBY,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel);
-#endif
- gfx_set_fixed_timings(pGeode->FPBX, pGeode->FPBY,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel);
- } else {
- DEBUGMSG(0, (0, X_PROBED, "Restore Panel %d %d %d %d %d\n",
- pGeode->PnlParam.PanelStat.XRes,
- pGeode->PnlParam.PanelStat.YRes,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel));
-#ifdef MAGIC
- /* XXX: We do this twice - magic ! */
- gfx_set_fixed_timings(pGeode->PnlParam.PanelStat.XRes,
- pGeode->PnlParam.PanelStat.YRes,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel);
-#endif
- gfx_set_fixed_timings(pGeode->PnlParam.PanelStat.XRes,
- pGeode->PnlParam.PanelStat.YRes,
- pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel);
- Pnl_InitPanel(&(pGeode->PnlParam));
- }
- GeodeDebug(("0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n", READ_REG32(DC_OUTPUT_CFG), READ_REG32(DC_TIMING_CFG), READ_REG32(DC_GENERAL_CFG), READ_REG32(DC_H_TIMING_1), READ_REG32(DC_H_TIMING_2), READ_REG32(DC_H_TIMING_3), READ_REG32(DC_FP_H_TIMING), READ_REG32(DC_V_TIMING_1), READ_REG32(DC_V_TIMING_2), READ_REG32(DC_V_TIMING_3), READ_REG32(DC_FP_V_TIMING)));
-#endif /* STB_X */
- } else {
- /* display is crt */
- DEBUGMSG(0, (0, X_PROBED, "Setting Display for CRT\n"));
-#if defined(STB_X)
- Gal_set_display_mode(pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel,
- GeodeGetRefreshRate(pMode));
-
- /* adjust the pitch */
- Gal_set_display_pitch(pGeode->Pitch);
-#else
-#ifdef MAGIC
- /* XXX: We do this twice - magic ! */
- gfx_set_display_mode(pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel,
- GeodeGetRefreshRate(pMode));
-#endif
- gfx_set_display_mode(pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel,
- GeodeGetRefreshRate(pMode));
-
- /* adjust the pitch */
- gfx_set_display_pitch(pGeode->Pitch);
-#endif /* STB_X */
- }
- /* enable crt */
-#if defined(STB_X)
- Gal_set_crt_state(CRT_ENABLE);
-#else
-#ifdef MAGIC
- /* XXX: We do this twice - magic ! */
- gfx_set_crt_enable(CRT_ENABLE);
-#endif
- gfx_set_crt_enable(CRT_ENABLE);
-#endif /* STB_X */
- }
-
- GFX(set_display_offset(0L));
- GFX(wait_vertical_blank());
-
- pGeode->CursorSize = 256;
-
- /* enable compression if option selected */
- if (pGeode->Compression) {
- pGeode->CursorStartOffset = GeodeMemOffset[MemIndex].CurOffset;
- /* set the compression parameters,and it will be turned on later. */
-#if defined(STB_X)
- Gal_set_compression_parameters(GAL_COMPRESSION_ALL,
- GeodeMemOffset[MemIndex].CBOffset,
- GeodeMemOffset[MemIndex].CBPitch,
- GeodeMemOffset[MemIndex].CBSize -
- 16);
-
- /* set the compression buffer, all parameters already set */
- Gal_set_compression_state(GAL_COMPRESSION_ENABLE);
-#else
- gfx_set_compression_offset(GeodeMemOffset[MemIndex].CBOffset);
- gfx_set_compression_pitch(GeodeMemOffset[MemIndex].CBPitch);
- gfx_set_compression_size(GeodeMemOffset[MemIndex].CBSize - 16);
-
- /* set the compression buffer, all parameters already set */
- gfx_set_compression_enable(1);
-#endif /* STB_X */
-
- } else {
- /* Default cursor offset, end of the frame buffer */
- pGeode->CursorStartOffset = pGeode->FBSize - pGeode->CursorSize;
- }
- if (pGeode->HWCursor) {
- /* Load blank cursor */
- GeodeLoadCursorImage(pScreenInfo, NULL);
- GFX(set_cursor_position(pGeode->CursorStartOffset, 0, 0, 0, 0));
- GFX(set_cursor_enable(1));
- }
-#if 0
- } else {
- GeodeDebug(("GeodeRestoreEx ... "));
- GeodeRestoreEx(pScreenInfo, pMode);
- GeodeDebug(("done.\n"));
- }
-#endif
-
- GeodeDebug(("done.\n"));
- /* Reenable the hardware cursor after the mode switch */
- if (pGeode->HWCursor == TRUE) {
- GeodeDebug(("GeodeShowCursor ... "));
- GeodeShowCursor(pScreenInfo);
- GeodeDebug(("done.\n"));
- }
- /* Restore the contents in the screen info */
- GeodeDebug(("After setting the mode\n"));
- return TRUE;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeEnterGraphics.
- *
- * Description :This function will intiallize the displaytiming
- structure for nextmode and switch to VGA mode.
- *
- * Parameters.
- * pScreen :Screen information will be stored in this structure.
- * pScreenInfo :Pointer to the screenInfo structure.
- *
- * Returns :TRUE on success and FALSE on Failure.
- *
- * Comments :gfx_vga_mode_switch() will start and end the
- * switching based on the arguments 0 or 1.soft_vga
- * is disabled in this function.
-*----------------------------------------------------------------------------
-*/
-static Bool
-GeodeEnterGraphics(ScreenPtr pScreen, ScrnInfoPtr pScreenInfo)
-{
- GeodePtr pGeode;
- vgaHWPtr hwp = VGAHWPTR(pScreenInfo);
-
- GeodeDebug(("GeodeEnterGraphics!\n"));
- vgaHWUnlock(hwp);
- /* Should we re-save the text mode on each VT enter? */
- pGeode = GeodeGetRec(pScreenInfo);
-#if 0
- print_gxm_gfx_reg(pGeode, 0x4C);
- print_gxm_vga_reg();
-#endif
- /* This routine saves the current VGA state in Durango VGA structure */
-#if defined(STB_X)
- Gal_get_softvga_state(&pGeode->FBSoftVGAActive);
- pGeode->FBgfxVgaRegs.dwFlags = GFX_VGA_FLAG_MISC_OUTPUT |
- GFX_VGA_FLAG_STD_CRTC | GFX_VGA_FLAG_EXT_CRTC;
- Gal_vga_save(&(pGeode->FBgfxVgaRegs));
-#else
- pGeode->FBSoftVGAActive = gfx_get_softvga_active();
- gfx_vga_save(&(pGeode->FBgfxVgaRegs),
- GFX_VGA_FLAG_MISC_OUTPUT |
- GFX_VGA_FLAG_STD_CRTC | GFX_VGA_FLAG_EXT_CRTC);
-#endif /* STB_X */
- DEBUGMSG(0, (0, X_PROBED, "VSA = %d\n", pGeode->FBSoftVGAActive));
-
- vgaHWSave(pScreenInfo, &VGAHWPTR(pScreenInfo)->SavedReg,
- VGA_SR_ALL);
-
-#if defined(STB_X)
- Gal_get_display_timing(&pGeode->FBgfxdisplaytiming);
- Gal_tv_get_timings(0, &pGeode->FBgfxtvtiming);
-
- /* Save Display offset */
- Gal_get_display_offset(&(pGeode->FBDisplayOffset));
-
- /* Save the current Compression state */
- Gal_get_compression_state(&(pGeode->FBCompressionEnable));
- Gal_get_compression_parameters(GAL_COMPRESSION_ALL,
- &(pGeode->FBCompressionOffset),
- &(pGeode->FBCompressionPitch),
- &(pGeode->FBCompressionSize));
-
- /* Save Cursor offset */
- {
- unsigned short x, y, xhot, yhot;
-
- Gal_get_cursor_position(&(pGeode->FBCursorOffset),
- &x, &y, &xhot, &yhot);
- }
- /* Save the Panel state */
- Gal_pnl_save();
-
- /* its time to put softvga to sleep */
- Gal_set_softvga_state(FALSE);
- Gal_vga_mode_switch(1);
-
-#else
- /* Save TV State */
- gfx_get_tv_enable(&(pGeode->FBTVEnabled));
- if (pGeode->FBTVEnabled) {
- /* TV Format */
- pGeode->FBtvtiming.HorzTim = READ_VID32(SC1200_TVOUT_HORZ_TIM);
- pGeode->FBtvtiming.HorzSync = READ_VID32(SC1200_TVOUT_HORZ_SYNC);
- pGeode->FBtvtiming.VertSync = READ_VID32(SC1200_TVOUT_VERT_SYNC);
- pGeode->FBtvtiming.LineEnd = READ_VID32(SC1200_TVOUT_LINE_END);
- pGeode->FBtvtiming.VertDownscale =
- READ_VID32(SC1200_TVOUT_VERT_DOWNSCALE);
- pGeode->FBtvtiming.HorzScaling = READ_VID32(SC1200_TVOUT_HORZ_SCALING);
- pGeode->FBtvtiming.TimCtrl1 = READ_VID32(SC1200_TVENC_TIM_CTRL_1);
- pGeode->FBtvtiming.TimCtrl2 = READ_VID32(SC1200_TVENC_TIM_CTRL_2);
- pGeode->FBtvtiming.Subfreq = READ_VID32(SC1200_TVENC_SUB_FREQ);
- pGeode->FBtvtiming.DispPos = READ_VID32(SC1200_TVENC_DISP_POS);
- pGeode->FBtvtiming.DispSize = READ_VID32(SC1200_TVENC_DISP_SIZE);
- /* TV Output */
- pGeode->FBtvtiming.TimCtrl2 = READ_VID32(SC1200_TVENC_TIM_CTRL_2);
- pGeode->FBtvtiming.Debug = READ_VID32(SC1200_TVOUT_DEBUG);
- /* TV Enable */
- pGeode->FBtvtiming.DacCtrl = READ_VID32(SC1200_TVENC_DAC_CONTROL);
- }
-
- /* Save CRT State */
- pGeode->FBgfxdisplaytiming.dwDotClock = gfx_get_clock_frequency();
- pGeode->FBgfxdisplaytiming.wPitch = gfx_get_display_pitch();
- pGeode->FBgfxdisplaytiming.wBpp = gfx_get_display_bpp();
- pGeode->FBgfxdisplaytiming.wHTotal = gfx_get_htotal();
- pGeode->FBgfxdisplaytiming.wHActive = gfx_get_hactive();
- pGeode->FBgfxdisplaytiming.wHSyncStart = gfx_get_hsync_start();
- pGeode->FBgfxdisplaytiming.wHSyncEnd = gfx_get_hsync_end();
- pGeode->FBgfxdisplaytiming.wHBlankStart = gfx_get_hblank_start();
- pGeode->FBgfxdisplaytiming.wHBlankEnd = gfx_get_hblank_end();
- pGeode->FBgfxdisplaytiming.wVTotal = gfx_get_vtotal();
- pGeode->FBgfxdisplaytiming.wVActive = gfx_get_vactive();
- pGeode->FBgfxdisplaytiming.wVSyncStart = gfx_get_vsync_start();
- pGeode->FBgfxdisplaytiming.wVSyncEnd = gfx_get_vsync_end();
- pGeode->FBgfxdisplaytiming.wVBlankStart = gfx_get_vblank_start();
- pGeode->FBgfxdisplaytiming.wVBlankEnd = gfx_get_vblank_end();
- pGeode->FBgfxdisplaytiming.wPolarity = gfx_get_sync_polarities();
-
- /* Save Display offset */
- pGeode->FBDisplayOffset = gfx_get_display_offset();
-
- /* Save the current Compression state */
- pGeode->FBCompressionEnable = gfx_get_compression_enable();
- pGeode->FBCompressionOffset = gfx_get_compression_offset();
- pGeode->FBCompressionPitch = gfx_get_compression_pitch();
- pGeode->FBCompressionSize = gfx_get_compression_size();
-
- /* Save Cursor offset */
- pGeode->FBCursorOffset = gfx_get_cursor_offset();
-
- /* Save the Panel state */
- Pnl_SavePanelState();
-
- /* its time to put softvga to sleep */
- gfx_disable_softvga();
- gfx_vga_mode_switch(1);
-
-#endif /* STB_X */
-
- if (!GeodeSetMode(pScreenInfo, pScreenInfo->currentMode)) {
- return FALSE;
- }
-#if 1
- /* clear the frame buffer, for annoying noise during mode switch */
- clear_screen(pScreenInfo->currentMode->CrtcHDisplay,
- pScreenInfo->currentMode->CrtcVDisplay);
-#endif
- return TRUE;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeLeaveGraphics:
- *
- * Description :This function will restore the displaymode parameters
- * and switches the VGA mode
- *
- * Parameters.
- * pScreen :Screen information will be stored in this structure.
- * pScreenInfo :Pointer to the screenInfo structure.
- *
- *
- * Returns :none.
- *
- * Comments : gfx_vga_mode_switch() will start and end the switching
- * based on the arguments 0 or 1.soft_vga is disabled in
- * this function.
-*----------------------------------------------------------------------------
-*/
-static void
-GeodeLeaveGraphics(ScrnInfoPtr pScreenInfo)
-{
- GeodePtr pGeode;
-
- GeodeDebug(("GeodeLeaveGraphics!\n"));
- pGeode = GEODEPTR(pScreenInfo);
-
-#if 1
- /* clear the frame buffer, when leaving X */
- clear_screen(pScreenInfo->virtualX, pScreenInfo->virtualY);
-#endif
-
-#if defined(STB_X)
- Gal_set_display_timing(&pGeode->FBgfxdisplaytiming);
- Gal_tv_set_timings(0, &pGeode->FBgfxtvtiming);
- Gal_set_display_offset(pGeode->FBDisplayOffset);
-
- /* Restore Panel */
- if (pGeode->PnlParam.PanelPresent == PNL_PANELPRESENT) {
- Gal_pnl_restore();
- }
-
- /* Restore Cursor */
- Gal_set_cursor_position(pGeode->FBCursorOffset, 0, 0, 0, 0);
-
- /* Restore the previous Compression state */
- if (pGeode->FBCompressionEnable) {
- Gal_set_compression_parameters(GAL_COMPRESSION_ALL,
- pGeode->FBCompressionOffset,
- pGeode->FBCompressionPitch,
- pGeode->FBCompressionSize);
-
- Gal_set_compression_state(GAL_COMPRESSION_ENABLE);
- }
-#else
- GeodeDebug(("GeodeLeaveGraphics(1)!\n"));
- /* Restore Panel */
- if (pGeode->PnlParam.PanelPresent == PNL_PANELPRESENT) {
- Pnl_RestorePanelState();
- }
-
- GeodeDebug(("GeodeLeaveGraphics(2)!\n"));
- /* Restore TV */
- if (pGeode->FBTVEnabled) {
- /* TV Format */
- WRITE_VID32(SC1200_TVOUT_HORZ_TIM, pGeode->FBtvtiming.HorzTim);
- WRITE_VID32(SC1200_TVOUT_HORZ_SYNC, pGeode->FBtvtiming.HorzSync);
- WRITE_VID32(SC1200_TVOUT_VERT_SYNC, pGeode->FBtvtiming.VertSync);
- WRITE_VID32(SC1200_TVOUT_LINE_END, pGeode->FBtvtiming.LineEnd);
- WRITE_VID32(SC1200_TVOUT_VERT_DOWNSCALE,
- pGeode->FBtvtiming.VertDownscale);
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, pGeode->FBtvtiming.HorzScaling);
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, pGeode->FBtvtiming.TimCtrl1);
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, pGeode->FBtvtiming.TimCtrl2);
- WRITE_VID32(SC1200_TVENC_SUB_FREQ, pGeode->FBtvtiming.Subfreq);
- WRITE_VID32(SC1200_TVENC_DISP_POS, pGeode->FBtvtiming.DispPos);
- WRITE_VID32(SC1200_TVENC_DISP_SIZE, pGeode->FBtvtiming.DispSize);
- /* TV Output */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, pGeode->FBtvtiming.TimCtrl2);
- /* WRITE_VID32(SC1200_TVENC_DAC_CONTROL, tmp); */
- WRITE_VID32(SC1200_TVOUT_DEBUG, pGeode->FBtvtiming.Debug);
- /* TV Enable */
- WRITE_VID32(SC1200_TVENC_DAC_CONTROL, pGeode->FBtvtiming.DacCtrl);
- }
- GeodeDebug(("GeodeLeaveGraphics(3)!\n"));
-
- /* Restore CRT */
- gfx_set_display_timings(pGeode->FBgfxdisplaytiming.wBpp,
- pGeode->FBgfxdisplaytiming.wPolarity,
- pGeode->FBgfxdisplaytiming.wHActive,
- pGeode->FBgfxdisplaytiming.wHBlankStart,
- pGeode->FBgfxdisplaytiming.wHSyncStart,
- pGeode->FBgfxdisplaytiming.wHSyncEnd,
- pGeode->FBgfxdisplaytiming.wHBlankEnd,
- pGeode->FBgfxdisplaytiming.wHTotal,
- pGeode->FBgfxdisplaytiming.wVActive,
- pGeode->FBgfxdisplaytiming.wVBlankStart,
- pGeode->FBgfxdisplaytiming.wVSyncStart,
- pGeode->FBgfxdisplaytiming.wVSyncEnd,
- pGeode->FBgfxdisplaytiming.wVBlankEnd,
- pGeode->FBgfxdisplaytiming.wVTotal,
- pGeode->FBgfxdisplaytiming.dwDotClock);
-
- gfx_set_display_pitch(pGeode->FBgfxdisplaytiming.wPitch);
-
- GeodeDebug(("GeodeLeaveGraphics(4)!\n"));
- gfx_set_display_offset(pGeode->FBDisplayOffset);
- GeodeDebug(("GeodeLeaveGraphics(5)!\n"));
-
- /* Restore Cursor */
- gfx_set_cursor_position(pGeode->FBCursorOffset, 0, 0, 0, 0);
- GeodeDebug(("GeodeLeaveGraphics(6)!\n"));
-
- /* Restore the previous Compression state */
- if (pGeode->FBCompressionEnable) {
- gfx_set_compression_offset(pGeode->FBCompressionOffset);
- gfx_set_compression_pitch(pGeode->FBCompressionPitch);
- gfx_set_compression_size(pGeode->FBCompressionSize);
- gfx_set_compression_enable(1);
- }
- GeodeDebug(("GeodeLeaveGraphics(7)!\n"));
-#endif /* STB_X */
-
- /* We need this to get back to vga mode when soft-vga
- * * kicks in.
- * * We actually need to examine the attribute Ctlr to find out
- * * what kinda crap (grafix or text) we need to enter in
- * * For now just lookout for 720x400
- */
-#if 0
- if ((pGeode->FBgfxdisplaytiming.wHActive == 720) &&
- (pGeode->FBgfxdisplaytiming.wVActive == 400))
-#else
- if (pGeode->FBSoftVGAActive)
-#endif
- {
- /* VSA was active before we started. Since we disabled it
- * we got to enable it */
-#if defined(STB_X)
- Gal_set_softvga_state(TRUE);
- Gal_vga_mode_switch(1);
- Gal_vga_clear_extended();
- pGeode->FBgfxVgaRegs.dwFlags = GFX_VGA_FLAG_MISC_OUTPUT |
- GFX_VGA_FLAG_STD_CRTC | GFX_VGA_FLAG_EXT_CRTC;
- Gal_vga_restore(&(pGeode->FBgfxVgaRegs));
- Gal_vga_mode_switch(0);
-#else
- GeodeDebug(("GeodeLeaveGraphics(8)!\n"));
- gfx_enable_softvga();
- GeodeDebug(("GeodeLeaveGraphics(9)!\n"));
- gfx_vga_mode_switch(1);
- GeodeDebug(("GeodeLeaveGraphics(10)!\n"));
- gfx_vga_clear_extended();
- GeodeDebug(("GeodeLeaveGraphics(11)!\n"));
- gfx_vga_restore(&(pGeode->FBgfxVgaRegs),
- GFX_VGA_FLAG_MISC_OUTPUT |
- GFX_VGA_FLAG_STD_CRTC | GFX_VGA_FLAG_EXT_CRTC);
- GeodeDebug(("GeodeLeaveGraphics(12)!\n"));
- gfx_vga_mode_switch(0);
-#endif /* STB_X */
- vgaHWRestore(pScreenInfo, &VGAHWPTR(pScreenInfo)->SavedReg,
- VGA_SR_ALL);
- GeodeDebug(("GeodeLeaveGraphics(13)!\n"));
- }
-#if 0
- print_gxm_gfx_reg(pGeode, 0x4C);
- print_gxm_vga_reg();
-#endif
- GeodeDebug(("GeodeLeaveGraphics Done!\n"));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeCloseScreen.
- *
- * Description :This function will restore the original mode
- * and also it unmap video memory
- *
- * Parameters.
- * ScrnIndex :Screen index value of the screen will be closed.
- * pScreen :Pointer to the screen structure.
- *
- *
- * Returns :TRUE on success and FALSE on Failure.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static Bool
-GeodeCloseScreen(int scrnIndex, ScreenPtr pScreen)
-{
- ScrnInfoPtr pScreenInfo = xf86Screens[scrnIndex];
- GeodePtr pGeode;
-
- GeodeDebug(("GeodeCloseScreen!\n"));
- pGeode = GEODEPTR(pScreenInfo);
- /* Shouldn't try to restore graphics, if we're already in textmode */
- if (pScreenInfo->vtSema)
- GeodeLeaveGraphics(pScreenInfo);
- if (pGeode->AccelInfoRec)
- XAADestroyInfoRec(pGeode->AccelInfoRec);
- pScreenInfo->vtSema = FALSE;
- if (pGeode->DGAModes)
- xfree(pGeode->DGAModes);
- pGeode->DGAModes = 0;
- if (pGeode->ShadowPtr)
- xfree(pGeode->ShadowPtr);
- if (pGeode->AccelImageWriteBufferOffsets)
- xfree(pGeode->AccelImageWriteBufferOffsets);
-
- GeodeUnmapMem(pScreenInfo);
-
- pScreen->CloseScreen = pGeode->CloseScreen;
- return (*pScreen->CloseScreen) (scrnIndex, pScreen);
-}
-
-#ifdef DPMSExtension
-/*----------------------------------------------------------------------------
- * GeodeDPMSet.
- *
- * Description :This function sets geode into Power Management
- * Signalling mode.
- *
- * Parameters.
- * pScreenInfo :Pointer to screen info strucrure.
- * mode :Specifies the power management mode.
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static void
-GeodeDPMSSet(ScrnInfoPtr pScreenInfo, int mode, int flags)
-{
- GeodePtr pGeode;
-
- pGeode = GEODEPTR(pScreenInfo);
-
- GeodeDebug(("GeodeDPMSSet!\n"));
-
- /* Check if we are actively controlling the display */
- if (!pScreenInfo->vtSema) {
- ErrorF("GeodeDPMSSet called when we not controlling the VT!\n");
- return;
- }
- switch (mode) {
- case DPMSModeOn:
- /* Screen: On; HSync: On; VSync: On */
-#if defined(STB_X)
- Gal_set_crt_state(CRT_ENABLE);
- if (pGeode->Panel)
- Gal_pnl_powerup();
-#else
- gfx_set_crt_enable(CRT_ENABLE);
- if (pGeode->Panel)
- Pnl_PowerUp();
-#endif /* STB_X */
- if (pGeode->TVSupport)
- GFX(set_tv_enable(1));
- break;
-
- case DPMSModeStandby:
- /* Screen: Off; HSync: Off; VSync: On */
-#if defined(STB_X)
- Gal_set_crt_state(CRT_STANDBY);
- if (pGeode->Panel)
- Gal_pnl_powerdown();
-#else
- gfx_set_crt_enable(CRT_STANDBY);
- if (pGeode->Panel)
- Pnl_PowerDown();
-#endif /* STB_X */
- if (pGeode->TVSupport)
- GFX(set_tv_enable(0));
- break;
-
- case DPMSModeSuspend:
- /* Screen: Off; HSync: On; VSync: Off */
-#if defined(STB_X)
- Gal_set_crt_state(CRT_SUSPEND);
- if (pGeode->Panel)
- Gal_pnl_powerdown();
-#else
- gfx_set_crt_enable(CRT_SUSPEND);
- if (pGeode->Panel)
- Pnl_PowerDown();
-#endif /* STB_X */
- if (pGeode->TVSupport)
- GFX(set_tv_enable(0));
- break;
- case DPMSModeOff:
- /* Screen: Off; HSync: Off; VSync: Off */
-#if defined(STB_X)
- Gal_set_crt_state(CRT_DISABLE);
- if (pGeode->Panel)
- Gal_pnl_powerdown();
-#else
- gfx_set_crt_enable(CRT_DISABLE);
- if (pGeode->Panel)
- Pnl_PowerDown();
-#endif /* STB_X */
- if (pGeode->TVSupport)
- GFX(set_tv_enable(0));
- break;
- }
-}
-#endif
-
-/*----------------------------------------------------------------------------
- * GeodeScreenInit.
- *
- * Description :This function will be called at the each ofserver
- * generation.
- *
- * Parameters.
- * scrnIndex :Specfies the screenindex value during generation.
- * pScreen :Pointer to screen info strucrure.
- * argc :parameters for command line arguments count
- * argv :command line arguments if any it is not used.
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static Bool
-GeodeScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
-{
- ScrnInfoPtr pScreenInfo = xf86Screens[pScreen->myNum];
- GeodePtr pGeode;
- int i;
- unsigned char *FBStart;
- unsigned int req_offscreenmem;
- int width, height, displayWidth;
- VisualPtr visual;
-
- GeodeDebug(("GeodeScreenInit!\n"));
-
- /* Get driver private */
- pGeode = GeodeGetRec(pScreenInfo);
- GeodeDebug(("GeodeScreenInit(0)!\n"));
-
- /*
- * * Allocate a vgaHWRec
- */
- if (!vgaHWGetHWRec(pScreenInfo))
- return FALSE;
- VGAHWPTR(pScreenInfo)->MapSize = 0x10000; /* Standard 64k VGA window */
- if (!vgaHWMapMem(pScreenInfo))
- return FALSE;
-
- if (!GeodeMapMem(pScreenInfo))
- return FALSE;
-
- vgaHWGetIOBase(VGAHWPTR(pScreenInfo));
- pGeode->Pitch = GeodeCalculatePitchBytes(pScreenInfo);
-
- /* find the index to our operating mode the offsets are located */
- for (i = 0; i < (sizeof(GeodeMemOffset) / sizeof(MemOffset)); i++) {
- if ((pScreenInfo->virtualX == GeodeMemOffset[i].xres) &&
- (pScreenInfo->virtualY == GeodeMemOffset[i].yres) &&
- (pScreenInfo->bitsPerPixel == GeodeMemOffset[i].bpp)) {
- MemIndex = i;
- break;
- }
- }
- if (MemIndex == -1) /* no match */
- return FALSE;
- pGeode->CursorSize = 8 * 32; /* 32 DWORDS */
-
- /* Compute cursor buffer */
- if (pGeode->Compression) {
- pGeode->CursorStartOffset = GeodeMemOffset[MemIndex].CurOffset;
- } else {
- /* Default cursor offset, end of the frame buffer */
- pGeode->CursorStartOffset = pGeode->FBSize - pGeode->CursorSize;
- }
-
- if (pGeode->HWCursor) {
- if ((pGeode->CursorStartOffset + pGeode->CursorSize) > pGeode->FBSize) {
- /* Not enough memory for HW cursor disable it */
- pGeode->HWCursor = FALSE;
- pGeode->CursorSize = 0;
- DEBUGMSG(1, (scrnIndex, X_ERROR,
- "Not enough memory for HW cursor. HW cursor disabled.\n"));
- } else {
- DEBUGMSG(1, (scrnIndex, X_PROBED,
- "HW cursor offset: 0x%08lX (%d bytes allocated)\n",
- pGeode->CursorStartOffset, pGeode->CursorSize));
- }
- } else {
- pGeode->CursorSize = 0;
- }
-
- /* set the offscreen offset accordingly */
- if (pGeode->Compression) {
- pGeode->OffscreenStartOffset =
- (GeodeMemOffset[MemIndex].OffScreenOffset + pGeode->Pitch - 1)
- & (~(pGeode->Pitch - 1));
- pGeode->OffscreenSize = pGeode->FBSize - pGeode->OffscreenStartOffset;
- } else {
- pGeode->OffscreenStartOffset = pGeode->Pitch * pScreenInfo->virtualY;
- pGeode->OffscreenSize = pGeode->FBSize -
- pGeode->OffscreenStartOffset - pGeode->CursorSize;
- }
-
- if (pGeode->OffscreenSize < 0)
- pGeode->OffscreenSize = 0;
- if ((pGeode->OffscreenStartOffset + pGeode->OffscreenSize) >
- pGeode->FBSize) {
- pGeode->OffscreenSize = 0;
- DEBUGMSG(1, (scrnIndex, X_ERROR, "No offscreen memory available.\n"));
- } else {
- DEBUGMSG(1, (scrnIndex, X_PROBED,
- "Offscreen memory offset: 0x%08lX (0x%08lX bytes available)\n",
- pGeode->OffscreenStartOffset, pGeode->OffscreenSize));
- }
-
- /* XAA Image Write support needs two entire line buffers. */
- req_offscreenmem = pGeode->NoOfImgBuffers * pGeode->Pitch;
- pGeode->AccelImageWriteBufferOffsets = NULL;
- if (req_offscreenmem > pGeode->OffscreenSize) {
- DEBUGMSG(1, (scrnIndex, X_PROBED,
- "Offscreen memory not adequate for acceleration\n"));
- } else {
- pGeode->OffscreenSize -= req_offscreenmem;
- pGeode->AccelImageWriteBufferOffsets =
- xalloc(sizeof(unsigned long) * pGeode->NoOfImgBuffers);
-
- pGeode->AccelImageWriteBufferOffsets[0] = (unsigned char *)(((unsigned
- long)
- pGeode->
- FBBase) +
- pGeode->
- OffscreenStartOffset);
-
- for (i = 1; i < pGeode->NoOfImgBuffers; i++) {
- pGeode->AccelImageWriteBufferOffsets[i] =
- pGeode->AccelImageWriteBufferOffsets[i - 1] + pGeode->Pitch;
- }
-
- for (i = 0; i < pGeode->NoOfImgBuffers; i++) {
- DEBUGMSG(0, (scrnIndex, X_PROBED,
- "memory %x %x\n", pGeode->FBBase,
- pGeode->AccelImageWriteBufferOffsets[i]));
- }
- }
-
- /* Initialise graphics mode */
- if (!GeodeEnterGraphics(pScreen, pScreenInfo))
- return FALSE;
-
- GeodeAdjustFrame(scrnIndex, pScreenInfo->frameX0, pScreenInfo->frameY0, 0);
- GeodeDebug(("GeodeScreenInit(1)!\n"));
-
- /* Reset visual list */
- miClearVisualTypes();
- GeodeDebug(("GeodeScreenInit(2)!\n"));
-
- /* Setup the visual we support */
- if (pScreenInfo->bitsPerPixel > 8) {
- if (!miSetVisualTypes(pScreenInfo->depth,
- TrueColorMask,
- pScreenInfo->rgbBits,
- pScreenInfo->defaultVisual)) {
- return FALSE;
- }
- } else {
- if (!miSetVisualTypes(pScreenInfo->depth,
- miGetDefaultVisualMask(pScreenInfo->depth),
- pScreenInfo->rgbBits,
- pScreenInfo->defaultVisual)) {
- return FALSE;
- }
- }
- GeodeDebug(("GeodeScreenInit(3)!\n"));
-
- /* Set this for RENDER extension */
- miSetPixmapDepths();
-
- /* Call the framebuffer layer's ScreenInit function, and fill in other
- * * pScreen fields.
- */
-
- if (pGeode->TV_Overscan_On) {
- width = pGeode->TVOw;
- height = pGeode->TVOh;
- GeodeDebug(("width : %d , height : %d", width, height));
- } else {
- width = pScreenInfo->virtualX;
- height = pScreenInfo->virtualY;
- }
-
- displayWidth = pScreenInfo->displayWidth;
- if (pGeode->Rotate) {
- if (pGeode->TV_Overscan_On) {
- width = pGeode->TVOh;
- height = pGeode->TVOw;
- } else {
- width = pScreenInfo->virtualY;
- height = pScreenInfo->virtualX;
- }
- }
- if (pGeode->ShadowFB) {
- pGeode->ShadowPitch = BitmapBytePad(pScreenInfo->bitsPerPixel * width);
- pGeode->ShadowPtr = xalloc(pGeode->ShadowPitch * height);
- displayWidth = pGeode->ShadowPitch / (pScreenInfo->bitsPerPixel >> 3);
- FBStart = pGeode->ShadowPtr;
- } else {
- pGeode->ShadowPtr = NULL;
-
- if (pGeode->TV_Overscan_On) {
- GeodeDebug(("pGeode->Pitch (%d)!\n", pGeode->Pitch));
- FBStart = pGeode->FBBase + (pGeode->Pitch * pGeode->TVOy) +
- (pGeode->TVOx << ((pScreenInfo->depth >> 3) - 1));
- } else {
- FBStart = pGeode->FBBase;
- }
- DEBUGMSG(1, (0, X_PROBED, "FBStart %X \n", FBStart));
- }
-
- /* Initialise the framebuffer */
- switch (pScreenInfo->depth) {
- case 8:
- case 16:
- if (!fbScreenInit(pScreen, FBStart, width, height,
- pScreenInfo->xDpi, pScreenInfo->yDpi,
- displayWidth, pScreenInfo->bitsPerPixel))
- return FALSE;
- break;
- default:
- DEBUGMSG(1, (scrnIndex, X_ERROR,
- "Internal error: invalid bpp (%d) "
- "in GeodeScreenInit. Geode only supports 8 and 16 bpp.\n",
- pScreenInfo->bitsPerPixel));
- return FALSE;
- }
- GeodeDebug(("GeodeScreenInit(4)!\n"));
- xf86SetBlackWhitePixels(pScreen);
-
- if (!pGeode->ShadowFB && (!pGeode->TV_Overscan_On)) {
- GeodeDGAInit(pScreen);
- }
- GeodeDebug(("GeodeScreenInit(5)!\n"));
- if (pScreenInfo->bitsPerPixel > 8) {
- /* Fixup RGB ordering */
- visual = pScreen->visuals + pScreen->numVisuals;
- while (--visual >= pScreen->visuals) {
- if ((visual->class | DynamicClass) == DirectColor) {
- visual->offsetRed = pScreenInfo->offset.red;
- visual->offsetGreen = pScreenInfo->offset.green;
- visual->offsetBlue = pScreenInfo->offset.blue;
- visual->redMask = pScreenInfo->mask.red;
- visual->greenMask = pScreenInfo->mask.green;
- visual->blueMask = pScreenInfo->mask.blue;
- }
- }
- }
-
- /* must be after RGB ordering fixed */
- fbPictureInit(pScreen, 0, 0);
-
- GeodeDebug(("GeodeScreenInit(6)!\n"));
- if (!pGeode->NoAccel) {
- GeodeAccelInit(pScreen);
- }
- GeodeDebug(("GeodeScreenInit(7)!\n"));
- miInitializeBackingStore(pScreen);
- xf86SetBackingStore(pScreen);
- GeodeDebug(("GeodeScreenInit(8)!\n"));
- /* Initialise software cursor */
- miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
- /* Initialize HW cursor layer.
- * * Must follow software cursor initialization
- */
- if (pGeode->HWCursor) {
- if (!GeodeHWCursorInit(pScreen))
- DEBUGMSG(1, (pScreenInfo->scrnIndex, X_ERROR,
- "Hardware cursor initialization failed\n"));
- }
- GeodeDebug(("GeodeScreenInit(9)!\n"));
- /* Setup default colourmap */
- if (!miCreateDefColormap(pScreen)) {
- return FALSE;
- }
- GeodeDebug(("GeodeScreenInit(10)!\n"));
- /* Initialize colormap layer.
- * * Must follow initialization of the default colormap
- */
- if (!xf86HandleColormaps(pScreen, 256, 8,
- GeodeLoadPalette, NULL,
- CMAP_PALETTED_TRUECOLOR |
- CMAP_RELOAD_ON_MODE_SWITCH)) {
- return FALSE;
- }
- GeodeDebug(("GeodeScreenInit(11)!\n"));
-
- if (pGeode->ShadowFB) {
- RefreshAreaFuncPtr refreshArea = GeodeRefreshArea;
-
- if (pGeode->Rotate) {
- if (!pGeode->PointerMoved) {
- pGeode->PointerMoved = pScreenInfo->PointerMoved;
- pScreenInfo->PointerMoved = GeodePointerMoved;
- }
- switch (pScreenInfo->bitsPerPixel) {
- case 8:
- refreshArea = GeodeRefreshArea8;
- break;
- case 16:
- refreshArea = GeodeRefreshArea16;
- break;
- }
- }
- ShadowFBInit(pScreen, refreshArea);
- }
-#ifdef DPMSExtension
- xf86DPMSInit(pScreen, GeodeDPMSSet, 0);
-#endif
- GeodeDebug(("GeodeScreenInit(12)!\n"));
-
- if (pGeode->TV_Overscan_On) {
- GeodeDebug(("pGeode->Pitch (%d)!\n", pGeode->Pitch));
-
- pScreenInfo->memPhysBase = (unsigned long)(pGeode->FBBase +
- (pGeode->Pitch *
- pGeode->TVOy) +
- (pGeode->
- TVOx <<
- ((pScreenInfo->depth >> 3) -
- 1)));
- GeodeDebug(("->memPhysBase (%X)!\n", pScreenInfo->memPhysBase));
- } else {
- pScreenInfo->memPhysBase = (unsigned long)pGeode->FBBase;
- }
- pScreenInfo->fbOffset = 0;
-
- GeodeDebug(("GeodeScreenInit(13)!\n"));
- GeodeInitVideo(pScreen); /* needed for video */
- /* Wrap the screen's CloseScreen vector and set its
- * SaveScreen vector
- */
- pGeode->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = GeodeCloseScreen;
- pScreen->SaveScreen = GeodeSaveScreen;
- GeodeDebug(("GeodeScreenInit(14)!\n"));
- /* Report any unused options */
- if (serverGeneration == 1) {
- xf86ShowUnusedOptions(pScreenInfo->scrnIndex, pScreenInfo->options);
- }
- return TRUE;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeSwitchMode.
- *
- * Description :This function will switches the screen mode
- *
- * Parameters:
- * scrnIndex :Specfies the screen index value.
- * pMode :pointer to the mode structure.
- * flags :may be used for status check?.
- *
- * Returns :Returns TRUE on success and FALSE on failure.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-Bool
-GeodeSwitchMode(int scrnIndex, DisplayModePtr pMode, int flags)
-{
- GeodeDebug(("GeodeSwitchMode!\n"));
- return GeodeSetMode(xf86Screens[scrnIndex], pMode);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeAdjustFrame.
- *
- * Description :This function is used to intiallize the start
- * address of the memory.
- * Parameters.
- * scrnIndex :Specfies the screen index value.
- * x :x co-ordinate value interms of pixels.
- * y :y co-ordinate value interms of pixels.
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-void
-GeodeAdjustFrame(int scrnIndex, int x, int y, int flags)
-{
- ScrnInfoPtr pScreenInfo = xf86Screens[scrnIndex];
- GeodePtr pGeode;
- unsigned long offset;
-
- pGeode = GeodeGetRec(pScreenInfo);
- offset = (unsigned long)y *(unsigned long)pGeode->Pitch;
-
- offset += x;
- if (pScreenInfo->bitsPerPixel > 8) {
- offset += x;
- }
- GFX(set_display_offset(offset));
-}
-
-/*----------------------------------------------------------------------------
- * GeodeEnterVT.
- *
- * Description :This is called when VT switching back to the X server
- *
- * Parameters.
- * scrnIndex :Specfies the screen index value.
- * flags :Not used inside the function.
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static Bool
-GeodeEnterVT(int scrnIndex, int flags)
-{
- GeodeDebug(("GeodeEnterVT!\n"));
- return GeodeEnterGraphics(NULL, xf86Screens[scrnIndex]);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeLeaveVT.
- *
- * Description :This is called when VT switching X server text mode.
- *
- * Parameters.
- * scrnIndex :Specfies the screen index value.
- * flags :Not used inside the function.
- *
- * Returns :none.
- *
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static void
-GeodeLeaveVT(int scrnIndex, int flags)
-{
- GeodeDebug(("GeodeLeaveVT!\n"));
- GeodeLeaveGraphics(xf86Screens[scrnIndex]);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeFreeScreen.
- *
- * Description :This is called to free any persistent data structures.
- *
- * Parameters.
- * scrnIndex :Specfies the screen index value.
- * flags :Not used inside the function.
- *
- * Returns :none.
- *
- * Comments :This will be called only when screen being deleted..
-*----------------------------------------------------------------------------
-*/
-static void
-GeodeFreeScreen(int scrnIndex, int flags)
-{
- GeodeDebug(("GeodeFreeScreen!\n"));
- if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
- vgaHWFreeHWRec(xf86Screens[scrnIndex]);
- GeodeFreeRec(xf86Screens[scrnIndex]);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeValidMode.
- *
- * Description :This function checks if a mode is suitable for selected
- * chipset.
- * Parameters.
- * scrnIndex :Specfies the screen index value.
- * pMode :Pointer to the screen mode structure..
- * verbose :not used for implementation.
- * flags :not used for implementation
- *
- * Returns :MODE_OK if the specified mode is supported or
- * MODE_NO_INTERLACE.
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-static int
-GeodeValidMode(int scrnIndex, DisplayModePtr pMode, Bool Verbose, int flags)
-{
- ScrnInfoPtr pScreenInfo = xf86Screens[scrnIndex];
- int ret = -1;
- GeodePtr pGeode;
-
- pGeode = GeodeGetRec(pScreenInfo);
- DEBUGMSG(0, (0, X_NONE, "GeodeValidateMode: %dx%d %d %d\n",
- pMode->CrtcHDisplay, pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel, GeodeGetRefreshRate(pMode)));
- if (pGeode->TVSupport == TRUE) {
- if ((pGeode->TvParam.wWidth == pMode->CrtcHDisplay) &&
- (pGeode->TvParam.wHeight == pMode->CrtcVDisplay)) {
- DEBUGMSG(0, (0, X_NONE, "TV mode"));
-#if defined(STB_X)
- Gal_is_tv_mode_supported(0, &(pGeode->TvParam), &ret);
-#else
- ret = gfx_is_tv_display_mode_supported(pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pGeode->TvParam.wStandard);
-#endif
- }
- } else {
- DEBUGMSG(0, (0, X_NONE, "CRT mode"));
- if (pMode->Flags & V_INTERLACE)
- return MODE_NO_INTERLACE;
-#if defined(STB_X)
- Gal_is_display_mode_supported(pMode->CrtcHDisplay, pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel,
- GeodeGetRefreshRate(pMode), &ret);
-#else
- ret = gfx_is_display_mode_supported(pMode->CrtcHDisplay,
- pMode->CrtcVDisplay,
- pScreenInfo->bitsPerPixel,
- GeodeGetRefreshRate(pMode));
-#endif /* STB_X */
- }
-
- DEBUGMSG(0, (0, X_NONE, "ret = %d\n", ret));
- if (ret == -1) { /* mode not supported */
- return MODE_NO_INTERLACE;
- }
-
- return MODE_OK;
-}
-
-/*----------------------------------------------------------------------------
- * GeodeLoadPalette.
- *
- * Description :This function sets the palette entry used for graphics data
- *
- * Parameters.
- * pScreenInfo:Points the screeninfo structure.
- * numColors:Specifies the no of colors it supported.
- * indizes :This is used get index value .
- * LOCO :to be added.
- * pVisual :to be added.
- *
- * Returns :MODE_OK if the specified mode is supported or
- * MODE_NO_INTERLACE.
- * Comments :none.
-*----------------------------------------------------------------------------
-*/
-
-static void
-GeodeLoadPalette(ScrnInfoPtr pScreenInfo,
- int numColors, int *indizes, LOCO * colors,
- VisualPtr pVisual)
-{
- int i, index, color;
-
- for (i = 0; i < numColors; i++) {
- index = indizes[i] & 0xFF;
- color = (((unsigned long)(colors[index].red & 0xFF)) << 16) |
- (((unsigned long)(colors[index].green & 0xFF)) << 8) |
- ((unsigned long)(colors[index].blue & 0xFF));
- DEBUGMSG(0, (0, X_NONE, "GeodeLoadPalette: %d %d %X\n",
- numColors, index, color));
- GFX(set_display_palette_entry(index, color));
- }
-}
-
-static Bool
-GeodeMapMem(ScrnInfoPtr pScreenInfo)
-{
- GeodePtr pGeode = GEODEPTR(pScreenInfo);
-
-#if defined(STB_X)
- pGeode->FBBase = (unsigned char *)xf86MapVidMem(pScreenInfo->scrnIndex,
- VIDMEM_FRAMEBUFFER,
- pGeode->FBLinearAddr,
- pGeode->FBSize);
-
-#else
- /* SET DURANGO REGISTER POINTERS
- * * The method of mapping from a physical address to a linear address
- * * is operating system independent. Set variables to linear address.
- */
- gfx_virt_regptr = (unsigned char *)xf86MapVidMem(pScreenInfo->scrnIndex,
- VIDMEM_MMIO,
- (unsigned int)
- gfx_get_cpu_register_base
- (), 0x9000);
- gfx_virt_spptr = gfx_virt_regptr;
- gfx_virt_vidptr = (unsigned char *)xf86MapVidMem(pScreenInfo->scrnIndex,
- VIDMEM_MMIO,
- (unsigned int)
- gfx_get_vid_register_base
- (), 0x1000);
- gfx_virt_fbptr =
- (unsigned char *)xf86MapVidMem(pScreenInfo->scrnIndex,
- VIDMEM_FRAMEBUFFER,
- pGeode->FBLinearAddr, pGeode->FBSize);
-
- /* CHECK IF REGISTERS WERE MAPPED SUCCESSFULLY */
- if ((!gfx_virt_regptr) ||
- (!gfx_virt_spptr) || (!gfx_virt_vidptr) || (!gfx_virt_fbptr)) {
- DEBUGMSG(1, (0, X_NONE, "Could not map hardware registers.\n"));
- return (FALSE);
- }
-
- /* Map the XpressROM ptr to read what platform are we on */
- XpressROMPtr = (unsigned char *)xf86MapVidMem(pScreenInfo->scrnIndex,
- VIDMEM_FRAMEBUFFER, 0xF0000,
- 0x10000);
-
- if (!XpressROMPtr)
- return FALSE;
-
- pGeode->FBBase = gfx_virt_fbptr;
-#endif
-
- return TRUE;
-}
-
-/*
- * Unmap the framebuffer and MMIO memory.
- */
-
-static Bool
-GeodeUnmapMem(ScrnInfoPtr pScreenInfo)
-{
- GeodePtr pGeode = GEODEPTR(pScreenInfo);
-
-#if !defined(STB_X)
- /* unmap all the memory map's */
- xf86UnMapVidMem(pScreenInfo->scrnIndex, gfx_virt_regptr, 0x9000);
- xf86UnMapVidMem(pScreenInfo->scrnIndex, gfx_virt_vidptr, 0x1000);
- xf86UnMapVidMem(pScreenInfo->scrnIndex, gfx_virt_fbptr, pGeode->FBSize);
- xf86UnMapVidMem(pScreenInfo->scrnIndex, XpressROMPtr, 0x10000);
-#endif /* STB_X */
-
- return TRUE;
-}
-
-/* End of file */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_fourcc.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_fourcc.h
deleted file mode 100644
index f4475dc0c..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_fourcc.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_fourcc.h,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: geode_fourcc.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file consists of main Xfree video macro definitions.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#define FOURCC_Y2YU 0x55593259
-#define XVIMAGE_Y2YU \
- { \
- FOURCC_Y2YU, \
- XvYUV, \
- LSBFirst, \
- {'Y','2','Y','U', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 16, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 2, 2, \
- 1, 1, 1, \
- {'Y','V','Y','U', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#define FOURCC_YVYU 0x55595659
-#define XVIMAGE_YVYU \
- { \
- FOURCC_YVYU, \
- XvYUV, \
- LSBFirst, \
- {'Y','V','Y','U', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 16, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 8, 8, \
- 1, 2, 2, \
- 1, 1, 1, \
- {'Y','V','Y','U', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
-
-#define FOURCC_Y800 0x30303859
-#define XVIMAGE_Y800 \
- { \
- FOURCC_Y800, \
- XvYUV, \
- LSBFirst, \
- {'Y','8','0','0', \
- 0x00,0x00,0x00,0x10,0x80,0x00,0x00,0xAA,0x00,0x38,0x9B,0x71}, \
- 8, \
- XvPacked, \
- 1, \
- 0, 0, 0, 0, \
- 8, 0, 0, \
- 1, 0, 0, \
- 1, 0, 0, \
- {'Y','8','0','0', \
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
- XvTopToBottom \
- }
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_shadow.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_shadow.c
deleted file mode 100644
index bf5398f9b..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_shadow.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_shadow.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: geode_shadow.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: Direct graphics display routines are implemented and
- * graphics rendering are all done in memory.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86Resources.h"
-#include "xf86_ansic.h"
-#include "xf86PciInfo.h"
-#include "xf86Pci.h"
-#include "geode.h"
-#include "shadowfb.h"
-#include "servermd.h"
-
-/*----------------------------------------------------------------------------
- * GeodeRefreshArea.
- *
- * Description :This function copies the memory to be displayed from the
- * shadow pointer.
- * Parameters.
- * pScrn :Pointer to screen structure.
- * num :Specifies the num of squarebox area to be displayed.
- * pbox :Points to square of memory to be displayed.
- * Returns :none
- *
- * Comments : none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
- int width, height, Bpp, FBPitch;
- unsigned char *src, *dst;
-
- Bpp = pScrn->bitsPerPixel >> 3;
- FBPitch = BitmapBytePad(pScrn->displayWidth * pScrn->bitsPerPixel);
- while (num--) {
- width = (pbox->x2 - pbox->x1) * Bpp;
- height = pbox->y2 - pbox->y1;
- src = pGeode->ShadowPtr + (pbox->y1 * pGeode->ShadowPitch) +
- (pbox->x1 * Bpp);
- dst = pGeode->FBBase + (pbox->y1 * FBPitch) + (pbox->x1 * Bpp);
- while (height--) {
- memcpy(dst, src, width);
- dst += FBPitch;
- src += pGeode->ShadowPitch;
- }
-
- pbox++;
- }
-}
-
-/*----------------------------------------------------------------------------
- * GeodePointerMoved.
- *
- * Description :This function moves one screen memory from one area to other.
- *
- * Parameters.
- * index :Pointer to screen index.
- * x :Specifies the new x co-ordinates of new area.
- * y :Specifies the new y co-ordinates of new area.
- * Returns :none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodePointerMoved(int index, int x, int y)
-{
- ScrnInfoPtr pScrn = xf86Screens[index];
- GeodePtr pGeode = GEODEPTR(pScrn);
- int newX, newY;
-
- if (pGeode->Rotate == 1) {
- newX = pScrn->pScreen->height - y - 1;
- newY = x;
- } else {
- newX = y;
- newY = pScrn->pScreen->width - x - 1;
- }
- (*pGeode->PointerMoved) (index, newX, newY);
-}
-
-/*----------------------------------------------------------------------------
- * GeodeRefreshArea8.
- *
- * Description :This function copies the memory to be displayed from the
- * shadow pointer by 8bpp.
- * Parameters.
- * pScrn :Pointer to screen structure.
- * num :Specifies the num of squarebox area to be displayed.
- * pbox :Points to square of memory to be displayed.
- * Returns :none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
- int count, width, height, y1, y2, dstPitch, srcPitch;
- CARD8 *dstPtr, *srcPtr, *src;
- CARD32 *dst;
-
- dstPitch = pScrn->displayWidth;
- srcPitch = -pGeode->Rotate * pGeode->ShadowPitch;
- while (num--) {
- width = pbox->x2 - pbox->x1;
- y1 = pbox->y1 & ~3;
- y2 = (pbox->y2 + 3) & ~3;
- height = (y2 - y1) >> 2; /* in dwords */
-
- if (pGeode->Rotate == 1) {
- dstPtr = pGeode->FBBase +
- (pbox->x1 * dstPitch) + pScrn->virtualX - y2;
- srcPtr = pGeode->ShadowPtr + ((1 - y2) * srcPitch) + pbox->x1;
- } else {
- dstPtr = pGeode->FBBase +
- ((pScrn->virtualY - pbox->x2) * dstPitch) + y1;
- srcPtr = pGeode->ShadowPtr + (y1 * srcPitch) + pbox->x2 - 1;
- }
- while (width--) {
- src = srcPtr;
- dst = (CARD32 *) dstPtr;
- count = height;
- while (count--) {
- *(dst++) = src[0] | (src[srcPitch] << 8) |
- (src[srcPitch * 2] << 16) | (src[srcPitch * 3] << 24);
- src += srcPitch * 4;
- }
- srcPtr += pGeode->Rotate;
- dstPtr += dstPitch;
- }
- pbox++;
- }
-}
-
-/*----------------------------------------------------------------------------
- * GeodeRefreshArea16.
- *
- * Description :This function copies the memory to be displayed from the
- * shadow pointer by 16bpp.
- * Parameters:
- * pScrn :Pointer to screen structure.
- * num :Specifies the num of squarebox area to be displayed.
- * pbox :Points to square of memory to be displayed.
- * Returns :none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
- int count, width, height, y1, y2, dstPitch, srcPitch;
- CARD16 *dstPtr, *srcPtr, *src;
- CARD32 *dst;
-
- dstPitch = pScrn->displayWidth;
- srcPitch = -pGeode->Rotate * pGeode->ShadowPitch >> 1;
- while (num--) {
- width = pbox->x2 - pbox->x1;
- y1 = pbox->y1 & ~1;
- y2 = (pbox->y2 + 1) & ~1;
- height = (y2 - y1) >> 1; /* in dwords */
- if (pGeode->Rotate == 1) {
- dstPtr = (CARD16 *) pGeode->FBBase +
- (pbox->x1 * dstPitch) + pScrn->virtualX - y2;
- srcPtr = (CARD16 *) pGeode->ShadowPtr +
- ((1 - y2) * srcPitch) + pbox->x1;
- } else {
- dstPtr = (CARD16 *) pGeode->FBBase +
- ((pScrn->virtualY - pbox->x2) * dstPitch) + y1;
- srcPtr = (CARD16 *) pGeode->ShadowPtr +
- (y1 * srcPitch) + pbox->x2 - 1;
- }
-
- while (width--) {
- src = srcPtr;
- dst = (CARD32 *) dstPtr;
- count = height;
- while (count--) {
- *(dst++) = src[0] | (src[srcPitch] << 16);
- src += srcPitch * 2;
- }
- srcPtr += pGeode->Rotate;
- dstPtr += dstPitch;
- }
-
- pbox++;
- }
-}
-
-/*----------------------------------------------------------------------------
- * GeodeRefreshArea24.
- *
- * Description :This function copies the memory to be displayed from the
- * shadow pointer by 24bpp.
- * Parameters.
- * pScrn :Pointer to screen structure.
- * num :Specifies the num of squarebox area to be displayed.
- * pbox :Points to square of memory to be displayed.
- * Returns :none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
- int count, width, height, y1, y2, dstPitch, srcPitch;
- CARD8 *dstPtr, *srcPtr, *src;
- CARD32 *dst;
-
- dstPitch = BitmapBytePad(pScrn->displayWidth * 24);
- srcPitch = -pGeode->Rotate * pGeode->ShadowPitch;
- while (num--) {
- width = pbox->x2 - pbox->x1;
- y1 = pbox->y1 & ~3;
- y2 = (pbox->y2 + 3) & ~3;
- height = (y2 - y1) >> 2; /* blocks of 3 dwords */
- if (pGeode->Rotate == 1) {
- dstPtr = pGeode->FBBase +
- (pbox->x1 * dstPitch) + ((pScrn->virtualX - y2) * 3);
- srcPtr = pGeode->ShadowPtr + ((1 - y2) * srcPitch) + (pbox->x1 * 3);
- } else {
- dstPtr = pGeode->FBBase +
- ((pScrn->virtualY - pbox->x2) * dstPitch) + (y1 * 3);
- srcPtr = pGeode->ShadowPtr + (y1 * srcPitch) + (pbox->x2 * 3) - 3;
- }
- while (width--) {
- src = srcPtr;
- dst = (CARD32 *) dstPtr;
- count = height;
- while (count--) {
- dst[0] = src[0] | (src[1] << 8) | (src[2] << 16) |
- (src[srcPitch] << 24);
- dst[1] = src[srcPitch + 1] | (src[srcPitch + 2] << 8) |
- (src[srcPitch * 2] << 16) | (src[(srcPitch * 2) + 1] << 24);
- dst[2] = src[(srcPitch * 2) + 2] | (src[srcPitch * 3] << 8) |
- (src[(srcPitch * 3) + 1] << 16) |
- (src[(srcPitch * 3) + 2] << 24);
- dst += 3;
- src += srcPitch * 4;
- }
- srcPtr += pGeode->Rotate * 3;
- dstPtr += dstPitch;
- }
- pbox++;
- }
-}
-
-/*----------------------------------------------------------------------------
- * GeodeRefreshArea32.
- *
- * Description :This function copies the memory to be displayed from the
- * shadow pointer by 32bpp.
- * Parameters:
- * pScrn :Pointer to screen structure.
- * num :Specifies the num of squarebox area to be displayed.
- * pbox :Points to square of memory to be displayed.
- * Returns : none
- *
- * Comments :none
- *
-*----------------------------------------------------------------------------
-*/
-void
-GeodeRefreshArea32(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
- int count, width, height, dstPitch, srcPitch;
- CARD32 *dstPtr, *srcPtr, *src, *dst;
-
- dstPitch = pScrn->displayWidth;
- srcPitch = -pGeode->Rotate * pGeode->ShadowPitch >> 2;
- while (num--) {
- width = pbox->x2 - pbox->x1;
- height = pbox->y2 - pbox->y1;
-
- if (pGeode->Rotate == 1) {
- dstPtr = (CARD32 *) pGeode->FBBase +
- (pbox->x1 * dstPitch) + pScrn->virtualX - pbox->y2;
- srcPtr = (CARD32 *) pGeode->ShadowPtr +
- ((1 - pbox->y2) * srcPitch) + pbox->x1;
- } else {
- dstPtr = (CARD32 *) pGeode->FBBase +
- ((pScrn->virtualY - pbox->x2) * dstPitch) + pbox->y1;
- srcPtr = (CARD32 *) pGeode->ShadowPtr +
- (pbox->y1 * srcPitch) + pbox->x2 - 1;
- }
- while (width--) {
- src = srcPtr;
- dst = dstPtr;
- count = height;
- while (count--) {
- *(dst++) = *src;
- src += srcPitch;
- }
- srcPtr += pGeode->Rotate;
- dstPtr += dstPitch;
- }
- pbox++;
- }
-}
-
-/* End of file */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_video.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_video.c
deleted file mode 100644
index eb3121bf2..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/geode_video.c
+++ /dev/null
@@ -1,1220 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/geode_video.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: geode_video.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file consists of main Xfree video supported routines.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode Xfree frame buffer driver
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Geode Xfree frame buffer driver
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Geode Xfree frame buffer driver
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/*
- * Fixes & Extensions to support Y800 greyscale modes
- * Alan Hourihane <alanh@fairlite.demon.co.uk>
- */
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86Resources.h"
-#include "xf86_ansic.h"
-#include "compiler.h"
-#include "xf86PciInfo.h"
-#include "xf86Pci.h"
-#include "xf86fbman.h"
-#include "regionstr.h"
-
-#include "geode.h"
-#include "Xv.h"
-#include "xaa.h"
-#include "xaalocal.h"
-#include "dixstruct.h"
-#include "fourcc.h"
-#include "geode_fourcc.h"
-
-#define OFF_DELAY 200 /* milliseconds */
-#define FREE_DELAY 60000
-
-#define OFF_TIMER 0x01
-#define FREE_TIMER 0x02
-#define CLIENT_VIDEO_ON 0x04
-
-#define TIMER_MASK (OFF_TIMER | FREE_TIMER)
-
-#ifndef XvExtension
-void
-GeodeInitVideo(ScreenPtr pScreen)
-{
-}
-
-void
-GeodeResetVideo(ScrnInfoPtr pScrn)
-{
-}
-#else
-
-void GeodeInitVideo(ScreenPtr pScreen);
-void GeodeResetVideo(ScrnInfoPtr pScrn);
-static XF86VideoAdaptorPtr GeodeSetupImageVideo(ScreenPtr);
-static void GeodeInitOffscreenImages(ScreenPtr);
-static void GeodeStopVideo(ScrnInfoPtr, pointer, Bool);
-static int GeodeSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer);
-static int GeodeGetPortAttribute(ScrnInfoPtr, Atom, INT32 *, pointer);
-static void GeodeQueryBestSize(ScrnInfoPtr, Bool,
- short, short, short, short, unsigned int *,
- unsigned int *, pointer);
-static int GeodePutImage(ScrnInfoPtr, short, short, short, short, short,
- short, short, short, int, unsigned char *, short,
- short, Bool, RegionPtr, pointer);
-static int GeodeQueryImageAttributes(ScrnInfoPtr, int, unsigned short *,
- unsigned short *, int *, int *);
-
-static void GeodeBlockHandler(int, pointer, pointer, pointer);
-
-extern void GeodeAccelSync(ScrnInfoPtr pScreenInfo);
-
-#define MAKE_ATOM(a) MakeAtom(a, sizeof(a) - 1, TRUE)
-
-#define DBUF 0
-
-static Atom xvColorKey, xvColorKeyMode, xvFilter
-#if DBUF
- , xvDoubleBuffer
-#endif
- ;
-
-void
-GeodeInitVideo(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- XF86VideoAdaptorPtr *adaptors, *newAdaptors = NULL;
- XF86VideoAdaptorPtr newAdaptor = NULL;
- GeodePtr pGeode = GEODEPTR(pScrn);
- int num_adaptors;
-
- DEBUGMSG(0, (0, X_NONE, "InitVideo\n"));
-
- if (pGeode->HWVideo) {
- newAdaptor = GeodeSetupImageVideo(pScreen);
- GeodeInitOffscreenImages(pScreen);
- }
-
- num_adaptors = xf86XVListGenericAdaptors(pScrn, &adaptors);
-
- if (newAdaptor) {
- if (!num_adaptors) {
- num_adaptors = 1;
- adaptors = &newAdaptor;
- } else {
- newAdaptors = /* need to free this someplace */
- xalloc((num_adaptors + 1) * sizeof(XF86VideoAdaptorPtr *));
- if (newAdaptors) {
- memcpy(newAdaptors, adaptors, num_adaptors *
- sizeof(XF86VideoAdaptorPtr));
- newAdaptors[num_adaptors] = newAdaptor;
- adaptors = newAdaptors;
- num_adaptors++;
- }
- }
- }
-
- if (num_adaptors)
- xf86XVScreenInit(pScreen, adaptors, num_adaptors);
-
- if (newAdaptors)
- xfree(newAdaptors);
-}
-
-/* client libraries expect an encoding */
-static XF86VideoEncodingRec DummyEncoding[1] = {
- {
- 0,
- "XV_IMAGE",
- 1024, 1024,
- {1, 1}
- }
-};
-
-#define NUM_FORMATS 4
-
-static XF86VideoFormatRec Formats[NUM_FORMATS] = {
- {8, PseudoColor}, {15, TrueColor}, {16, TrueColor}, {24, TrueColor}
-};
-
-#if DBUF
-#define NUM_ATTRIBUTES 4
-#else
-#define NUM_ATTRIBUTES 3
-#endif
-
-static XF86AttributeRec Attributes[NUM_ATTRIBUTES] = {
-#if DBUF
- {XvSettable | XvGettable, 0, 1, "XV_DOUBLE_BUFFER"},
-#endif
- {XvSettable | XvGettable, 0, (1 << 24) - 1, "XV_COLORKEY"},
- {XvSettable | XvGettable, 0, 1, "XV_FILTER"},
- {XvSettable | XvGettable, 0, 1, "XV_COLORKEYMODE"},
-};
-
-#define NUM_IMAGES 7
-
-static XF86ImageRec Images[NUM_IMAGES] = {
- XVIMAGE_UYVY,
- XVIMAGE_YUY2,
- XVIMAGE_Y2YU,
- XVIMAGE_YVYU,
- XVIMAGE_Y800,
- XVIMAGE_I420,
- XVIMAGE_YV12
-};
-
-typedef struct
-{
- FBAreaPtr area;
- FBLinearPtr linear;
- RegionRec clip;
- CARD32 colorKey;
- CARD32 colorKeyMode;
- CARD32 filter;
- CARD32 videoStatus;
- Time offTime;
- Time freeTime;
-#if DBUF
- Bool doubleBuffer;
- int currentBuffer;
-#endif
-}
-GeodePortPrivRec, *GeodePortPrivPtr;
-
-#define GET_PORT_PRIVATE(pScrn) \
- (GeodePortPrivPtr)((GEODEPTR(pScrn))->adaptor->pPortPrivates[0].ptr)
-
-static INT32
-GeodeSetColorkey(ScrnInfoPtr pScrn, GeodePortPrivPtr pPriv)
-{
- int red, green, blue;
- unsigned long key;
-
- DEBUGMSG(0, (0, X_NONE, "ColorKey\n"));
- switch (pScrn->depth) {
- case 8:
- GFX(get_display_palette_entry(pPriv->colorKey & 0xFF, &key));
- red = ((key >> 16) & 0xFF);
- green = ((key >> 8) & 0xFF);
- blue = (key & 0xFF);
- break;
- default:
- red = (pPriv->colorKey & pScrn->mask.red) >> pScrn->offset.red << (8 -
- pScrn->
- weight.
- red);
- green =
- (pPriv->colorKey & pScrn->mask.green) >> pScrn->offset.
- green << (8 - pScrn->weight.green);
- blue = (pPriv->colorKey & pScrn->mask.blue) >> pScrn->offset.
- blue << (8 - pScrn->weight.blue);
- break;
- }
- GFX(set_video_color_key
- ((blue | (green << 8) | (red << 16)), 0xFCFCFC,
- (pPriv->colorKeyMode == 0)));
- REGION_EMPTY(pScrn->pScreen, &pPriv->clip);
- return 0;
-}
-
-void
-GeodeResetVideo(ScrnInfoPtr pScrn)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
- GeodePortPrivPtr pPriv = pGeode->adaptor->pPortPrivates[0].ptr;
-
- DEBUGMSG(0, (0, X_NONE, "ResetVideo\n"));
- GeodeAccelSync(pScrn);
- GFX(set_video_palette(NULL));
- GeodeSetColorkey(pScrn, pPriv);
- GFX(set_video_filter(pPriv->filter, pPriv->filter));
-}
-
-static XF86VideoAdaptorPtr
-GeodeSetupImageVideo(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
- GeodePtr pGeode = GEODEPTR(pScrn);
- XF86VideoAdaptorPtr adapt;
- GeodePortPrivPtr pPriv;
-
- DEBUGMSG(0, (0, X_NONE, "SetupImageVideo\n"));
- if (!(adapt = xcalloc(1, sizeof(XF86VideoAdaptorRec) +
- sizeof(GeodePortPrivRec) + sizeof(DevUnion))))
- return NULL;
-
- adapt->type = XvWindowMask | XvInputMask | XvImageMask;
- adapt->flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
- adapt->name = "National Semiconductor Corporation";
- adapt->nEncodings = 1;
- adapt->pEncodings = DummyEncoding;
- adapt->nFormats = NUM_FORMATS;
- adapt->pFormats = Formats;
- adapt->nPorts = 1;
- adapt->pPortPrivates = (DevUnion *) (&adapt[1]);
- pPriv = (GeodePortPrivPtr) (&adapt->pPortPrivates[1]);
- adapt->pPortPrivates[0].ptr = (pointer) (pPriv);
- adapt->pAttributes = Attributes;
- adapt->nImages = NUM_IMAGES;
- adapt->nAttributes = NUM_ATTRIBUTES;
- adapt->pImages = Images;
- adapt->PutVideo = NULL;
- adapt->PutStill = NULL;
- adapt->GetVideo = NULL;
- adapt->GetStill = NULL;
- adapt->StopVideo = GeodeStopVideo;
- adapt->SetPortAttribute = GeodeSetPortAttribute;
- adapt->GetPortAttribute = GeodeGetPortAttribute;
- adapt->QueryBestSize = GeodeQueryBestSize;
- adapt->PutImage = GeodePutImage;
- adapt->QueryImageAttributes = GeodeQueryImageAttributes;
-
- pPriv->colorKey = pGeode->videoKey;
- pPriv->colorKeyMode = 0;
- pPriv->filter = 0;
- pPriv->videoStatus = 0;
-#if DBUF
- pPriv->doubleBuffer = TRUE;
- pPriv->currentBuffer = 0; /* init to first buffer */
-#endif
-
- /* gotta uninit this someplace */
- REGION_INIT(pScreen, &pPriv->clip, NullBox, 0);
-
- pGeode->adaptor = adapt;
-
- pGeode->BlockHandler = pScreen->BlockHandler;
- pScreen->BlockHandler = GeodeBlockHandler;
-
- xvColorKey = MAKE_ATOM("XV_COLORKEY");
- xvColorKeyMode = MAKE_ATOM("XV_COLORKEYMODE");
- xvFilter = MAKE_ATOM("XV_FILTER");
-#if DBUF
- xvDoubleBuffer = MAKE_ATOM("XV_DOUBLE_BUFFER");
-#endif
-
- GeodeResetVideo(pScrn);
-
- return adapt;
-}
-
-static Bool
-RegionsEqual(RegionPtr A, RegionPtr B)
-{
- int *dataA, *dataB;
- int num;
-
- num = REGION_NUM_RECTS(A);
- if (num != REGION_NUM_RECTS(B))
- return FALSE;
-
- if ((A->extents.x1 != B->extents.x1) ||
- (A->extents.x2 != B->extents.x2) ||
- (A->extents.y1 != B->extents.y1) || (A->extents.y2 != B->extents.y2))
- return FALSE;
-
- dataA = (int *)REGION_RECTS(A);
- dataB = (int *)REGION_RECTS(B);
-
- while (num--) {
- if ((dataA[0] != dataB[0]) || (dataA[1] != dataB[1]))
- return FALSE;
- dataA += 2;
- dataB += 2;
- }
-
- return TRUE;
-}
-
-static void
-GeodeStopVideo(ScrnInfoPtr pScrn, pointer data, Bool exit)
-{
- GeodePortPrivPtr pPriv = (GeodePortPrivPtr) data;
-
- REGION_EMPTY(pScrn->pScreen, &pPriv->clip);
-
- GeodeAccelSync(pScrn);
- if (exit) {
- if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
- GFX(set_video_enable(0));
- }
- if (pPriv->area) {
- xf86FreeOffscreenArea(pPriv->area);
- pPriv->area = NULL;
- }
- pPriv->videoStatus = 0;
- } else {
- if (pPriv->videoStatus & CLIENT_VIDEO_ON) {
- pPriv->videoStatus |= OFF_TIMER;
- pPriv->offTime = currentTime.milliseconds + OFF_DELAY;
- }
- }
-}
-
-static int
-GeodeSetPortAttribute(ScrnInfoPtr pScrn,
- Atom attribute, INT32 value, pointer data)
-{
- GeodePortPrivPtr pPriv = (GeodePortPrivPtr) data;
-
- GeodeAccelSync(pScrn);
- DEBUGMSG(0, (0, X_NONE, "SetPortAttribute\n"));
- if (attribute == xvColorKey) {
- pPriv->colorKey = value;
- GeodeSetColorkey(pScrn, pPriv);
-#if DBUF
- } else if (attribute == xvDoubleBuffer) {
- if ((value < 0) || (value > 1))
- return BadValue;
- pPriv->doubleBuffer = value;
-#endif
- } else if (attribute == xvColorKeyMode) {
- pPriv->colorKeyMode = value;
- GeodeSetColorkey(pScrn, pPriv);
- } else if (attribute == xvFilter) {
- pPriv->filter = value;
- GFX(set_video_filter(pPriv->filter, pPriv->filter));
- } else
- return BadMatch;
-
- return Success;
-}
-
-static int
-GeodeGetPortAttribute(ScrnInfoPtr pScrn,
- Atom attribute, INT32 * value, pointer data)
-{
- GeodePortPrivPtr pPriv = (GeodePortPrivPtr) data;
-
- if (attribute == xvColorKey) {
- *value = pPriv->colorKey;
-#if DBUF
- } else if (attribute == xvDoubleBuffer) {
- *value = pPriv->doubleBuffer ? 1 : 0;
-#endif
- } else if (attribute == xvColorKeyMode) {
- *value = pPriv->colorKeyMode;
- } else if (attribute == xvFilter) {
- *value = pPriv->filter;
- } else
- return BadMatch;
-
- return Success;
-}
-
-static void
-GeodeQueryBestSize(ScrnInfoPtr pScrn,
- Bool motion,
- short vid_w, short vid_h,
- short drw_w, short drw_h,
- unsigned int *p_w, unsigned int *p_h, pointer data)
-{
- DEBUGMSG(0, (0, X_NONE, "QueryBestSize\n"));
- *p_w = drw_w;
- *p_h = drw_h;
-
- if (*p_w > 16384)
- *p_w = 16384;
-}
-
-static void
-GeodeCopyGreyscale(unsigned char *src,
- unsigned char *dst,
- int srcPitch, int dstPitch, int h, int w)
-{
- int i;
- unsigned char *src2 = src;
- unsigned char *dst2 = dst;
- unsigned char *dst3;
- unsigned char *src3;
-
- dstPitch <<= 1;
-
- while (h--) {
- dst3 = dst2;
- src3 = src2;
- for (i = 0; i < w; i++) {
- *dst3++ = *src3++; /* Copy Y data */
- *dst3++ = 0x80; /* Fill UV with 0x80 - greyscale */
- }
- src3 = src2;
- for (i = 0; i < w; i++) {
- *dst3++ = *src3++; /* Copy Y data */
- *dst3++ = 0x80; /* Fill UV with 0x80 - greyscale */
- }
- dst2 += dstPitch;
- src2 += srcPitch;
- }
-}
-
-#if 1
-static void
-GeodeCopyData(unsigned char *src,
- unsigned char *dst, int srcPitch, int dstPitch, int h, int w)
-{
- w <<= 1;
- while (h--) {
- memcpy(dst, src, w);
- src += srcPitch;
- dst += dstPitch;
- }
-}
-#else
-static void
-GeodeCopyData(unsigned char *src, unsigned char *dst,
- int srcPitch, int dstPitch, int h, int w)
-{
- /* calc the # of dwords to xfer */
- int d = w >> 1;
-
- srcPitch -= (w << 1);
- dstPitch -= (w << 1);
- /* Any left words, if dwords w will be even */
- w &= 1;
- while (h--) { /* this is equivalent of memcpy */
- /* copy the dwords first */
- __asm__ __volatile__("rep\n\t" "movsl\n\t"::"S"(src), "D"(dst), "c"(d));
-
- if (w) { /* any words left */
- __asm__ __volatile__("movsw (%esi), (%edi)\n\t");
- }
- /* reint the counter in ecx */
- __asm__ __volatile__("movl %0, %%ecx\n\t"::"m"(d));
-
- /* set the ptr's for the next xfer */
- src += srcPitch;
- dst += dstPitch;
- }
-}
-#endif
-
-static void
-GeodeCopyMungedData(unsigned char *src1,
- unsigned char *src2,
- unsigned char *src3,
- unsigned char *dst1,
- int srcPitch, int srcPitch2, int dstPitch, int h, int w)
-{
- CARD32 *dstCur = (CARD32 *) dst1;
- CARD32 *dstNext = (CARD32 *) dst1;
- int i, j, k, m, n;
- CARD32 crcb;
-
-#if 0
- long oldtime, newtime;
-#endif
-
- DEBUGMSG(0, (0, X_NONE, "CopyMungedData\n"));
- /* dstPitch is in byte count, but we write longs.
- * so divide dstpitch by 4
- */
- dstPitch >>= 2;
- /* Width is in byte but video data is 16bit
- */
- w >>= 1;
- /* We render 2 scanlines at one shot, handle the odd count */
- m = h & 1;
- /* decrement the height since we write 2 scans */
- h -= 1;
- /* we traverse by 2 bytes in src Y */
- srcPitch <<= 1;
-#if 0
- UpdateCurrentTime();
- oldtime = currentTime.milliseconds;
-#endif
-
- for (j = 0; j < h; j += 2) {
- /* calc the next dest scan start */
- dstNext = dstCur + dstPitch;
- for (i = 0; i < w; i++) {
- /* crcb is same for the x pixel for 2 scans */
- crcb = (src3[i] << 8) | (src2[i] << 24);
-
- n = i << 1;
-
- /* write the first scan pixel DWORD */
- dstCur[i] = src1[n] | (src1[n + 1] << 16) | crcb;
-
- /* calc the offset of next pixel */
- k = n + srcPitch;
-
- /* write the 2nd scan pixel DWORD */
- dstNext[i] = src1[k] | (src1[k + 1] << 16) | crcb;
- }
- /* increment the offsets */
-
- /* Y */
- src1 += srcPitch;
- /* crcb */
- src2 += srcPitch2;
- src3 += srcPitch2;
- /* processed dest */
- dstCur += (dstPitch << 1);
- }
-
- /* if any scans remaining */
- if (m) {
- for (i = 0, k = 0; i < w; i++, k += 2)
- {
- dstCur[i] = src1[k] | (src1[k + 1] << 16) |
- (src3[i] << 8) | (src2[i] << 24);
- }
- }
-#if 0
- UpdateCurrentTime();
- newtime = currentTime.milliseconds;
- DEBUGMSG(1, (0, X_NONE, "CMD %d\n", newtime - oldtime));
-#endif
-}
-
-static FBAreaPtr
-GeodeAllocateMemory(ScrnInfoPtr pScrn, FBAreaPtr area, int numlines)
-{
- ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
- FBAreaPtr new_area;
-
- DEBUGMSG(0, (0, X_NONE, "AllocateMemory\n"));
-
- if (area) {
- if ((area->box.y2 - area->box.y1) >= numlines)
- return area;
-
- if (xf86ResizeOffscreenArea(area, pScrn->displayWidth, numlines))
- return area;
-
- xf86FreeOffscreenArea(area);
- }
-
- new_area = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
- numlines, 0, NULL, NULL, NULL);
-
- if (!new_area) {
- int max_w, max_h;
-
- xf86QueryLargestOffscreenArea(pScreen, &max_w, &max_h, 0,
- FAVOR_WIDTH_THEN_AREA, PRIORITY_EXTREME);
-
- if ((max_w < pScrn->displayWidth) || (max_h < numlines))
- return NULL;
-
- xf86PurgeUnlockedOffscreenAreas(pScreen);
- new_area = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth,
- numlines, 0, NULL, NULL, NULL);
- }
-
- return new_area;
-}
-
-static void
-GeodeDisplayVideo(ScrnInfoPtr pScrn,
- int id,
- int offset,
- short width, short height,
- int pitch,
- int x1, int y1, int x2, int y2,
- BoxPtr dstBox,
- short src_w, short src_h, short drw_w, short drw_h)
-{
- GeodePtr pGeode = GEODEPTR(pScrn);
-
-/* DisplayModePtr mode = pScrn->currentMode; */
- GeodeAccelSync(pScrn);
-
- DEBUGMSG(0, (0, X_NONE, "DisplayVideo %x, %d %d, %d %d\n",
- id, width, height, drw_w, drw_h));
- GFX(set_video_enable(1));
-
- switch (id) {
- case FOURCC_UYVY: /* UYVY */
- GFX(set_video_format(VIDEO_FORMAT_UYVY));
- break;
- case FOURCC_Y800: /* Y800 - greyscale - we munge it! */
- case FOURCC_YV12:
- case FOURCC_I420:
- case FOURCC_YUY2: /* YUY2 */
- GFX(set_video_format(VIDEO_FORMAT_YUYV));
- break;
- case FOURCC_Y2YU: /* Y2YU */
- GFX(set_video_format(VIDEO_FORMAT_Y2YU));
- break;
- case FOURCC_YVYU: /* YVYU */
- GFX(set_video_format(VIDEO_FORMAT_YVYU));
- break;
- }
-
- if (pGeode->TV_Overscan_On) {
- dstBox->x1 += pGeode->TVOx;
- dstBox->y1 += pGeode->TVOy;
- }
-
- GFX(set_video_size(width, height));
- GFX(set_video_offset(offset));
- GFX(set_video_window(dstBox->x1, dstBox->y1, drw_w, drw_h));
- GFX(set_video_scale(src_w, src_h, drw_w, drw_h));
-
- /* enable color conversion from YUV to RGB */
-#if defined(STB_X)
- Gal_set_video_color_space(0);
-#else
- gfx_set_color_space_YUV(0);
-#endif /* STB_X */
-}
-
-#define DummyScreen screenInfo.screens[0]
-
-static int
-GeodePutImage(ScrnInfoPtr pScrn,
- short src_x, short src_y,
- short drw_x, short drw_y,
- short src_w, short src_h,
- short drw_w, short drw_h,
- int id, unsigned char *buf,
- short width, short height,
- Bool sync, RegionPtr clipBoxes, pointer data)
-{
- GeodePortPrivPtr pPriv = (GeodePortPrivPtr) data;
- GeodePtr pGeode = GEODEPTR(pScrn);
- BoxRec dstBox;
- int srcPitch = 0, srcPitch2 = 0, dstPitch = 0;
- INT32 x1, x2, y1, y2;
- int top, left, npixels, nlines;
- int offset, s1offset = 0, s2offset = 0, s3offset = 0;
- unsigned char *dst_start;
- int pitch, new_h;
-
- DEBUGMSG(0, (0, X_NONE, "PutImage %x\n", id));
-
- if (drw_w > 16384)
- drw_w = 16384;
-
- /* Clip */
- x1 = src_x;
- x2 = src_x + src_w;
- y1 = src_y;
- y2 = src_y + src_h;
-
- if ((x1 >= x2) || (y1 >= y2))
- return Success;
-
- dstBox.x1 = drw_x;
- dstBox.x2 = drw_x + drw_w;
- dstBox.y1 = drw_y;
- dstBox.y2 = drw_y + drw_h;
-
- dstBox.x1 -= pScrn->frameX0;
- dstBox.x2 -= pScrn->frameX0;
- dstBox.y1 -= pScrn->frameY0;
- dstBox.y2 -= pScrn->frameY0;
-
- pitch = pScrn->bitsPerPixel * pScrn->displayWidth >> 3;
-
- dstPitch = ((width << 1) + 3) & ~3;
-
- switch (id) {
- case FOURCC_YV12:
- case FOURCC_I420:
- srcPitch = (width + 3) & ~3; /* of luma */
- s2offset = srcPitch * height;
- srcPitch2 = ((width >> 1) + 3) & ~3;
- s3offset = (srcPitch2 * (height >> 1)) + s2offset;
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- case FOURCC_Y800:
- default:
- srcPitch = (width << 1);
- break;
- }
-
- /* Find how many pitch scanlines required to store the data */
- new_h = ((dstPitch * height) + pitch - 1) / pitch;
-
-#if DBUF
- if (pPriv->doubleBuffer)
- new_h <<= 1;
-#endif
-
- if (!(pPriv->area = GeodeAllocateMemory(pScrn, pPriv->area, new_h)))
- return BadAlloc;
-
- /* copy data */
- top = y1;
- left = x1 & ~1;
- npixels = ((x2 + 1) & ~1) - left;
-
- switch (id) {
- case FOURCC_YV12:
- case FOURCC_I420:
- {
- int tmp;
-
- top &= ~1;
- offset = (pPriv->area->box.y1 * pitch) + (top * dstPitch);
-
-#if DBUF
- if (pPriv->doubleBuffer && pPriv->currentBuffer)
- offset += (new_h >> 1) * pitch;
-#endif
-
- dst_start = pGeode->FBBase + offset + left;
- tmp = ((top >> 1) * srcPitch2) + (left >> 1);
- s2offset += tmp;
- s3offset += tmp;
- if (id == FOURCC_I420) {
- tmp = s2offset;
- s2offset = s3offset;
- s3offset = tmp;
- }
- nlines = ((y2 + 1) & ~1) - top;
- s1offset = (top * srcPitch) + left;
- }
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- case FOURCC_Y800:
- default:
- left <<= 1;
- buf += (top * srcPitch) + left;
- nlines = y2 - top;
- offset = (pPriv->area->box.y1 * pitch) + (top * dstPitch);
-
-#if DBUF
- if (pPriv->doubleBuffer && pPriv->currentBuffer)
- offset += (new_h >> 1) * pitch;
-#endif
-
- dst_start = pGeode->FBBase + offset + left;
- break;
- }
-
- /* update cliplist */
- if (!RegionsEqual(&pPriv->clip, clipBoxes)) {
- REGION_COPY(pScreen, &pPriv->clip, clipBoxes);
- if (pPriv->colorKeyMode == 0) {
- /* draw these */
- xf86XVFillKeyHelper(pScrn->pScreen, pPriv->colorKey, clipBoxes);
- }
- }
-
- switch (id) {
- case FOURCC_Y800:
- GeodeCopyGreyscale(buf, dst_start, srcPitch, dstPitch, nlines, npixels);
- break;
- case FOURCC_YV12:
- case FOURCC_I420:
- GeodeCopyMungedData(buf + s1offset, buf + s2offset,
- buf + s3offset, dst_start, srcPitch, srcPitch2,
- dstPitch, nlines, npixels);
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- default:
- GeodeCopyData(buf, dst_start, srcPitch, dstPitch, nlines, npixels);
- break;
- }
-
- GeodeDisplayVideo(pScrn, id, offset, width, height, dstPitch,
- x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h);
-
-#if DBUF
- pPriv->currentBuffer ^= 1;
-#endif
-
- pPriv->videoStatus = CLIENT_VIDEO_ON;
-
- return Success;
-}
-
-static int
-GeodeQueryImageAttributes(ScrnInfoPtr pScrn,
- int id,
- unsigned short *w, unsigned short *h,
- int *pitches, int *offsets)
-{
- int size;
- int tmp;
-
- DEBUGMSG(0, (0, X_NONE, "QueryImageAttributes %X\n", id));
-
- if (*w > 1024)
- *w = 1024;
- if (*h > 1024)
- *h = 1024;
-
- *w = (*w + 1) & ~1;
- if (offsets)
- offsets[0] = 0;
-
- switch (id) {
- case FOURCC_YV12:
- case FOURCC_I420:
- *h = (*h + 1) & ~1;
- size = (*w + 3) & ~3;
- if (pitches)
- pitches[0] = size;
- size *= *h;
- if (offsets)
- offsets[1] = size;
- tmp = ((*w >> 1) + 3) & ~3;
- if (pitches)
- pitches[1] = pitches[2] = tmp;
- tmp *= (*h >> 1);
- size += tmp;
- if (offsets)
- offsets[2] = size;
- size += tmp;
- break;
- case FOURCC_UYVY:
- case FOURCC_YUY2:
- case FOURCC_Y800:
- default:
- size = *w << 1;
- if (pitches)
- pitches[0] = size;
- size *= *h;
- break;
- }
- return size;
-}
-
-static void
-GeodeBlockHandler(int i,
- pointer blockData, pointer pTimeout, pointer pReadmask)
-{
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrn = xf86Screens[i];
- GeodePtr pGeode = GEODEPTR(pScrn);
- GeodePortPrivPtr pPriv = GET_PORT_PRIVATE(pScrn);
-
- pScreen->BlockHandler = pGeode->BlockHandler;
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
- pScreen->BlockHandler = GeodeBlockHandler;
-
- if (pPriv->videoStatus & TIMER_MASK) {
- UpdateCurrentTime();
- if (pPriv->videoStatus & OFF_TIMER) {
- if (pPriv->offTime < currentTime.milliseconds) {
- GFX(set_video_enable(0));
- pPriv->videoStatus = FREE_TIMER;
- pPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
- }
- } else { /* FREE_TIMER */
- if (pPriv->freeTime < currentTime.milliseconds) {
- if (pPriv->area) {
- xf86FreeOffscreenArea(pPriv->area);
- pPriv->area = NULL;
- }
- pPriv->videoStatus = 0;
- }
- }
- }
-}
-
-/****************** Offscreen stuff ***************/
-
-typedef struct
-{
- FBAreaPtr area;
- FBLinearPtr linear;
- Bool isOn;
-}
-OffscreenPrivRec, *OffscreenPrivPtr;
-
-static int
-GeodeAllocateSurface(ScrnInfoPtr pScrn,
- int id,
- unsigned short w,
- unsigned short h, XF86SurfacePtr surface)
-{
- FBAreaPtr area;
- int pitch, fbpitch, numlines;
- OffscreenPrivPtr pPriv;
-
- if ((w > 1024) || (h > 1024))
- return BadAlloc;
-
- w = (w + 1) & ~1;
- pitch = ((w << 1) + 15) & ~15;
- fbpitch = pScrn->bitsPerPixel * pScrn->displayWidth >> 3;
- numlines = ((pitch * h) + fbpitch - 1) / fbpitch;
-
- if (!(area = GeodeAllocateMemory(pScrn, NULL, numlines)))
- return BadAlloc;
-
- surface->width = w;
- surface->height = h;
-
- if (!(surface->pitches = xalloc(sizeof(int))))
- return BadAlloc;
- if (!(surface->offsets = xalloc(sizeof(int)))) {
- xfree(surface->pitches);
- return BadAlloc;
- }
- if (!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) {
- xfree(surface->pitches);
- xfree(surface->offsets);
- return BadAlloc;
- }
-
- pPriv->area = area;
-
- pPriv->isOn = FALSE;
-
- surface->pScrn = pScrn;
- surface->id = id;
- surface->pitches[0] = pitch;
- surface->offsets[0] = area->box.y1 * fbpitch;
- surface->devPrivate.ptr = (pointer) pPriv;
-
- return Success;
-}
-
-static int
-GeodeStopSurface(XF86SurfacePtr surface)
-{
- OffscreenPrivPtr pPriv = (OffscreenPrivPtr) surface->devPrivate.ptr;
-
- if (pPriv->isOn) {
- pPriv->isOn = FALSE;
- }
-
- return Success;
-}
-
-static int
-GeodeFreeSurface(XF86SurfacePtr surface)
-{
- OffscreenPrivPtr pPriv = (OffscreenPrivPtr) surface->devPrivate.ptr;
-
- if (pPriv->isOn)
- GeodeStopSurface(surface);
- xf86FreeOffscreenArea(pPriv->area);
- xfree(surface->pitches);
- xfree(surface->offsets);
- xfree(surface->devPrivate.ptr);
-
- return Success;
-}
-
-static int
-GeodeGetSurfaceAttribute(ScrnInfoPtr pScrn, Atom attribute, INT32 * value)
-{
- return GeodeGetPortAttribute(pScrn, attribute, value,
- (pointer) (GET_PORT_PRIVATE(pScrn)));
-}
-
-static int
-GeodeSetSurfaceAttribute(ScrnInfoPtr pScrn, Atom attribute, INT32 value)
-{
- return GeodeSetPortAttribute(pScrn, attribute, value,
- (pointer) (GET_PORT_PRIVATE(pScrn)));
-}
-
-static int
-GeodeDisplaySurface(XF86SurfacePtr surface,
- short src_x, short src_y,
- short drw_x, short drw_y,
- short src_w, short src_h,
- short drw_w, short drw_h, RegionPtr clipBoxes)
-{
- OffscreenPrivPtr pPriv = (OffscreenPrivPtr) surface->devPrivate.ptr;
- ScrnInfoPtr pScrn = surface->pScrn;
- GeodePortPrivPtr portPriv = GET_PORT_PRIVATE(pScrn);
- INT32 x1, y1, x2, y2;
- BoxRec dstBox;
-
- x1 = src_x;
- x2 = src_x + src_w;
- y1 = src_y;
- y2 = src_y + src_h;
-
- dstBox.x1 = drw_x;
- dstBox.x2 = drw_x + drw_w;
- dstBox.y1 = drw_y;
- dstBox.y2 = drw_y + drw_h;
-
- if ((x1 >= x2) || (y1 >= y2))
- return Success;
-
- dstBox.x1 -= pScrn->frameX0;
- dstBox.x2 -= pScrn->frameX0;
- dstBox.y1 -= pScrn->frameY0;
- dstBox.y2 -= pScrn->frameY0;
-
- xf86XVFillKeyHelper(pScrn->pScreen, portPriv->colorKey, clipBoxes);
-
- GeodeDisplayVideo(pScrn, surface->id, surface->offsets[0],
- surface->width, surface->height, surface->pitches[0],
- x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h);
-
- pPriv->isOn = TRUE;
- if (portPriv->videoStatus & CLIENT_VIDEO_ON) {
- REGION_EMPTY(pScrn->pScreen, &portPriv->clip);
- UpdateCurrentTime();
- portPriv->videoStatus = FREE_TIMER;
- portPriv->freeTime = currentTime.milliseconds + FREE_DELAY;
- }
-
- return Success;
-}
-
-static void
-GeodeInitOffscreenImages(ScreenPtr pScreen)
-{
- XF86OffscreenImagePtr offscreenImages;
-
- /* need to free this someplace */
- if (!(offscreenImages = xalloc(sizeof(XF86OffscreenImageRec))))
- return;
-
- offscreenImages[0].image = &Images[0];
- offscreenImages[0].flags = VIDEO_OVERLAID_IMAGES | VIDEO_CLIP_TO_VIEWPORT;
- offscreenImages[0].alloc_surface = GeodeAllocateSurface;
- offscreenImages[0].free_surface = GeodeFreeSurface;
- offscreenImages[0].display = GeodeDisplaySurface;
- offscreenImages[0].stop = GeodeStopSurface;
- offscreenImages[0].setAttribute = GeodeSetSurfaceAttribute;
- offscreenImages[0].getAttribute = GeodeGetSurfaceAttribute;
- offscreenImages[0].max_width = 1024;
- offscreenImages[0].max_height = 1024;
- offscreenImages[0].num_attributes = NUM_ATTRIBUTES;
- offscreenImages[0].attributes = Attributes;
-
- xf86XVRegisterOffscreenImages(pScreen, offscreenImages, 1);
-}
-
-#endif /* !XvExtension */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu1.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu1.c
deleted file mode 100644
index 8fb952404..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu1.c
+++ /dev/null
@@ -1,2503 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu1.c,v 1.2 2002/10/18 20:02:39 tsi Exp $ */
-/*
- * $Workfile: disp_gu1.c $
- *
- * This file contains routines for the first generation display controller.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-void gu1_enable_compression(void); /* private routine definition */
-void gu1_disable_compression(void); /* private routine definition */
-void gfx_reset_video(void); /* private routine definition */
-int gfx_set_display_control(int sync_polarities); /* private routine definition */
-
-/* VIDEO BUFFER SIZE */
-
-unsigned long vid_buf_size = 0;
-int vid_enabled = 0;
-
-/*-----------------------------------------------------------------------------
- * GU1_DELAY_APPROXIMATE (PRIVATE ROUTINE - NOT PART OF DURANGO API)
- *
- * Delay the requested number of milliseconds by reading a register. This function
- * generally takes longer than the requested time.
- *-----------------------------------------------------------------------------*/
-void gu1_delay_approximate (unsigned long milliseconds)
-{
- /* ASSUME 300 MHz, 5 CLOCKS PER READ */
-
-# define READS_PER_MILLISECOND 60000L
-
- unsigned long loop;
- loop = milliseconds * READS_PER_MILLISECOND;
- while (loop-- > 0)
- {
- READ_REG32(DC_UNLOCK);
- }
-}
-
-/*-----------------------------------------------------------------------------
- * GU1_DELAY_PRECISE (PRIVATE ROUTINE - NOT PART OF DURANGO API)
- *
- * Delay the number of milliseconds on a more precise level, varying only by
- * 1/10 of a ms. This function should only be called if an SC1200 is present.
- *-----------------------------------------------------------------------------*/
-void gu1_delay_precise (unsigned long milliseconds)
-{
-#if GFX_VIDEO_SC1200
-
-#define LOOP 1000
- unsigned long i, timer_start, timer_end, total_ticks, previous_ticks, temp_ticks;
-
- /* Get current time */
- timer_start = IND(SC1200_CB_BASE_ADDR + SC1200_CB_TMVALUE);
-
- /* Calculate expected end time */
- if (INB(SC1200_CB_BASE_ADDR + SC1200_CB_TMCNFG) & SC1200_TMCLKSEL_27MHZ)
- total_ticks = 27000 * milliseconds; /* timer resolution is 27 MHz */
- else
- total_ticks = 1000 * milliseconds; /* timer resolution is 1 MHz */
-
- if (total_ticks > ((unsigned long)0xffffffff - timer_start)) /* wrap-around */
- timer_end = total_ticks - ((unsigned long)0xffffffff - timer_start);
- else
- timer_end = timer_start + total_ticks;
-
- /* in case of wrap around */
- if (timer_end < timer_start)
- {
- previous_ticks = timer_start;
- while (1)
- {
- temp_ticks = IND(SC1200_CB_BASE_ADDR + SC1200_CB_TMVALUE);
- if (temp_ticks < previous_ticks)
- break;
- else
- previous_ticks = temp_ticks;
- for (i = 0; i < LOOP; i++)
- READ_REG32(DC_UNLOCK);
- }
- }
- /* now the non-wrap around part */
- while (1)
- {
- for (i = 0; i < LOOP; i++)
- READ_REG32(DC_UNLOCK);
- if(IND(SC1200_CB_BASE_ADDR + SC1200_CB_TMVALUE) > timer_end)
- break;
- }
-
-#endif /* GFX_VIDEO_SC1200 */
-}
-
-/*-----------------------------------------------------------------------------
- * WARNING!!!! INACCURATE DELAY MECHANISM
- *
- * In an effort to keep the code self contained and operating system
- * independent, the delay loop just performs reads of a display controller
- * register. This time will vary for faster processors. The delay can always
- * be longer than intended, only effecting the time of the mode switch
- * (obviously want it to still be under a second). Problems with the hardware
- * only arise if the delay is not long enough.
- *
- * For the SC1200, the high resolution timer can be used as an accurate mechanism
- * for keeping time. However, in order to avoid a busy loop of IO reads, the
- * timer is polled in-between busy loops, and therefore the actual delay might
- * be longer than the requested delay by the time of one busy loop
- * (which on a 200 MHz system took 95 us)
- *
- * There are thus two delay functions which are called from the main API routine.
- * One is meant to be more precise and should only called if an SC1200 is present.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_delay_milliseconds(unsigned long milliseconds)
-#else
-void gfx_delay_milliseconds(unsigned long milliseconds)
-#endif
-{
-#if GFX_VIDEO_SC1200
-
-#if GFX_VIDEO_DYNAMIC
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- {
-#endif
- gu1_delay_precise(milliseconds);
- return;
-#if GFX_VIDEO_DYNAMIC
- }
-#endif
-
-#endif /* GFX_VIDEO_SC1200 */
-
- gu1_delay_approximate(milliseconds);
-}
-
-#if GFX_DISPLAY_DYNAMIC
-void gu1_delay_microseconds(unsigned long microseconds)
-#else
-void gfx_delay_microseconds(unsigned long microseconds)
-#endif
-{
- /* ASSUME 300 MHz, 2 CLOCKS PER INCREMENT */
-
- unsigned long loop_count = microseconds * 150;
-
- while (loop_count-- > 0)
- {
- ;
- }
-}
-/*-----------------------------------------------------------------------------
- * GFX_VIDEO_SHUTDOWN
- *
- * This routine disables the display controller output.
- *-----------------------------------------------------------------------------
- */
-void gu1_video_shutdown(void)
-{
- unsigned long unlock;
- unsigned long gcfg, tcfg;
-
- /* DISABLE COMPRESSION */
-
- gu1_disable_compression();
-
- /* ALSO DISABLE VIDEO */
- /* Use private "reset video" routine to do all that is needed. */
- /* SC1200, for example, also disables the alpha blending regions. */
-
- gfx_reset_video();
-
- /* UNLOCK THE DISPLAY CONTROLLER REGISTERS */
-
- unlock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
-
- /* READ THE CURRENT GX VALUES */
-
- gcfg = READ_REG32(DC_GENERAL_CFG);
- tcfg = READ_REG32(DC_TIMING_CFG);
-
- /* BLANK THE GX DISPLAY AND DISABLE THE TIMING GENERATOR */
-
- tcfg &= ~((unsigned long)DC_TCFG_BLKE | (unsigned long)DC_TCFG_TGEN);
- WRITE_REG32(DC_TIMING_CFG, tcfg);
-
- /* DELAY: WAIT FOR PENDING MEMORY REQUESTS */
- /* This delay is used to make sure that all pending requests to the */
- /* memory controller have completed before disabling the FIFO load. */
-
- gfx_delay_milliseconds(1);
-
- /* DISABLE DISPLAY FIFO LOAD AND DISABLE COMPRESSION */
-
- gcfg &= ~(unsigned long)(DC_GCFG_DFLE | DC_GCFG_CMPE | DC_GCFG_DECE);
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
- WRITE_REG32(DC_UNLOCK, unlock);
- return;
-}
-
-/*-----------------------------------------------------------------------------
- * GFX_SET_DISPLAY_BPP
- *
- * This routine programs the bpp in the display controller.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_display_bpp(unsigned short bpp)
-#else
-int gfx_set_display_bpp(unsigned short bpp)
-#endif
-{
- unsigned long ocfg, lock;
-
- lock = READ_REG32 (DC_UNLOCK);
- ocfg = READ_REG32 (DC_OUTPUT_CFG) & ~(DC_OCFG_8BPP | DC_OCFG_555);
-
- /* SET DC PIXEL FORMAT */
-
- if (bpp == 8) ocfg |= DC_OCFG_8BPP;
- else if (bpp == 15) ocfg |= DC_OCFG_555;
- else if (bpp != 16) return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_REG32 (DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32 (DC_OUTPUT_CFG, ocfg);
- WRITE_REG32 (DC_UNLOCK, lock);
-
- /* SET BPP IN GRAPHICS PIPELINE */
-
- gfx_set_bpp (bpp);
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------
- * GFX_SET_SPECIFIED_MODE
- * This routine uses the parameters in the specified display mode structure
- * to program the display controller hardware.
- *-----------------------------------------------------------------------------
- */
-int gu1_set_specified_mode(DISPLAYMODE *pMode, int bpp)
-{
- unsigned long unlock, value;
- unsigned long gcfg, tcfg, ocfg;
- unsigned long size, pitch;
- unsigned long vid_buf_size;
- unsigned long hactive, vactive;
- gbpp = bpp;
-
- /* CHECK WHETHER TIMING CHANGE IS ALLOWED */
- /* Flag used for locking also overrides timing change restriction */
-
- if (gfx_timing_lock && !(pMode->flags & GFX_MODE_LOCK_TIMING))
- return GFX_STATUS_ERROR;
-
- /* SET GLOBAL FLAG */
-
- if (pMode->flags & GFX_MODE_LOCK_TIMING)
- gfx_timing_lock = 1;
-
- /* DISABLE COMPRESSION */
-
- gu1_disable_compression();
-
- /* ALSO DISABLE VIDEO */
- /* Use private "reset video" routine to do all that is needed. */
- /* SC1200, for example, also disables the alpha blending regions. */
-
- gfx_reset_video();
-
- /* UNLOCK THE DISPLAY CONTROLLER REGISTERS */
-
- unlock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
-
- /* READ THE CURRENT GX VALUES */
-
- gcfg = READ_REG32(DC_GENERAL_CFG);
- tcfg = READ_REG32(DC_TIMING_CFG);
-
- /* BLANK THE GX DISPLAY AND DISABLE THE TIMING GENERATOR */
-
- tcfg &= ~((unsigned long)DC_TCFG_BLKE | (unsigned long)DC_TCFG_TGEN);
- WRITE_REG32(DC_TIMING_CFG, tcfg);
-
- /* DELAY: WAIT FOR PENDING MEMORY REQUESTS
- * This delay is used to make sure that all pending requests to the
- * memory controller have completed before disabling the FIFO load.
- */
-
- gfx_delay_milliseconds(1);
-
- /* DISABLE DISPLAY FIFO LOAD AND DISABLE COMPRESSION */
-
- gcfg &= ~(unsigned long)(DC_GCFG_DFLE | DC_GCFG_CMPE | DC_GCFG_DECE);
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
-
- /* CLEAR THE "DCLK_MUL" FIELD */
-
- gcfg &= ~(unsigned long)(DC_GCFG_DDCK | DC_GCFG_DPCK | DC_GCFG_DFCK);
- gcfg &= ~(unsigned long)DC_GCFG_DCLK_MASK;
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
-
- /* SET THE DOT CLOCK FREQUENCY */
- /* Mask off the divide by two bit (bit 31) */
-
- gfx_set_clock_frequency(pMode->frequency & 0x7FFFFFFF);
-
- /* DELAY: WAIT FOR THE PLL TO SETTLE */
- /* This allows the dot clock frequency that was just set to settle. */
-
- gfx_delay_milliseconds(1);
-
- /* SET THE "DCLK_MUL" FIELD OF DC_GENERAL_CFG */
- /* The GX hardware divides the dot clock, so 2x really means that the */
- /* internal dot clock equals the external dot clock. */
-
- if (pMode->frequency & 0x80000000) gcfg |= 0x0040;
- else gcfg |= 0x0080;
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
-
- /* DELAY: WAIT FOR THE ADL TO LOCK */
- /* This allows the clock generatation within GX to settle. This is */
- /* needed since some of the register writes that follow require that */
- /* clock to be present. */
-
- /* We do a few to ensure we're synced */
- gfx_delay_milliseconds(1);
- gfx_delay_milliseconds(1);
- gfx_delay_milliseconds(1);
- gfx_delay_milliseconds(1);
- gfx_delay_milliseconds(1);
- gfx_delay_milliseconds(1);
-
- /* SET THE GX DISPLAY CONTROLLER PARAMETERS */
-
- WRITE_REG32(DC_FB_ST_OFFSET, 0);
- WRITE_REG32(DC_CB_ST_OFFSET, 0);
- WRITE_REG32(DC_CURS_ST_OFFSET, 0);
-
- /* SET LINE SIZE AND PITCH */
- /* Flat panels use the current flat panel line size to */
- /* calculate the pitch, but load the true line size */
- /* for the mode into the "Frame Buffer Line Size" field */
- /* of DC_BUF_SIZE. */
-
- if (PanelEnable)
- size = ModeWidth;
- else
- size = pMode->hactive;
-
- if (bpp > 8) size <<= 1;
-
- /* ONLY PYRAMID SUPPORTS 4K LINE SIZE */
-
- if (size <= 1024)
- {
- pitch = 1024;
-
- /* SPECIAL CASE */
- /* Graphics acceleration in 16-bit pixel line double modes */
- /* requires a pitch of 2048. */
-
- if ((pMode->flags & GFX_MODE_LINE_DOUBLE) && bpp > 8)
- pitch <<= 1;
- }
- else
- {
- if (gfx_cpu_version == GFX_CPU_PYRAMID)
- pitch = (size <= 2048) ? 2048 : 4096;
- else
- pitch = 2048;
- }
- WRITE_REG32(DC_LINE_DELTA, pitch >> 2);
-
- if (PanelEnable)
- {
- size = pMode->hactive;
- if (bpp > 8)
- size <<= 1;
- }
-
- /* SAVE PREVIOUSLY STORED VIDEO BUFFER SIZE */
-
- vid_buf_size = READ_REG32(DC_BUF_SIZE) & 0x3FFF0000;
-
- /* ADD 2 TO SIZE FOR POSSIBLE START ADDRESS ALIGNMENTS */
-
- WRITE_REG32(DC_BUF_SIZE, ((size >> 3) + 2) | vid_buf_size);
-
- /* ALWAYS ENABLE "PANEL" DATA FROM MEDIAGX */
- /* That is really just the 18 BPP data bus to the companion chip */
-
- ocfg = DC_OCFG_PCKE | DC_OCFG_PDEL | DC_OCFG_PDEH;
-
- /* SET PIXEL FORMAT */
-
- if (bpp == 8) ocfg |= DC_OCFG_8BPP;
- else if (bpp == 15) ocfg |= DC_OCFG_555;
-
- /* ENABLE TIMING GENERATOR, SYNCS, AND FP DATA */
-
- tcfg = DC_TCFG_FPPE | DC_TCFG_HSYE | DC_TCFG_VSYE | DC_TCFG_BLKE |
- DC_TCFG_TGEN;
-
- /* SET FIFO PRIORITY, DCLK MULTIPLIER, AND FIFO ENABLE */
- /* Default 6/5 for FIFO, 2x for DCLK multiplier. */
-
- gcfg = (6 << DC_GCFG_DFHPEL_POS) | (5 << DC_GCFG_DFHPSL_POS) | DC_GCFG_DFLE;
-
- /* INCREASE FIFO PRIORITY FOR LARGE MODES */
-
- if (pMode->hactive==1280 && pMode->vactive==1024)
- {
- if ((bpp == 8) && (pMode->flags & GFX_MODE_85HZ))
- gcfg = (8l << DC_GCFG_DFHPEL_POS) | (7l << DC_GCFG_DFHPSL_POS) | DC_GCFG_DFLE;
- if ((bpp > 8) && (pMode->flags & GFX_MODE_75HZ))
- gcfg = (7l << DC_GCFG_DFHPEL_POS) | (6l << DC_GCFG_DFHPSL_POS) | DC_GCFG_DFLE;
- if ((bpp > 8) && (pMode->flags & GFX_MODE_85HZ))
- gcfg = (9l << DC_GCFG_DFHPEL_POS) | (8l << DC_GCFG_DFHPSL_POS) | DC_GCFG_DFLE;
- }
-
- /* SET DOT CLOCK MULTIPLIER */
- /* Bit 31 of frequency indicates divide frequency by two */
-
- if (pMode->frequency & 0x80000000) gcfg |= (1l << DC_GCFG_DCLK_POS);
- else gcfg |= (2l << DC_GCFG_DCLK_POS);
-
- /* DIVIDE VIDEO CLOCK */
- /* CPU core frequencies above 266 MHz will divide the video */
- /* clock by 4 to ensure that we are running below 150 MHz. */
-
- if(gfx_cpu_frequency > 266)
- gcfg |= DC_GCFG_VCLK_DIV;
-
- /* SET THE PIXEL AND LINE DOUBLE BITS IF NECESSARY */
-
- hactive = pMode->hactive;
- vactive = pMode->vactive;
- gfx_line_double = 0;
- gfx_pixel_double = 0;
-
- if (pMode->flags & GFX_MODE_LINE_DOUBLE)
- {
- gcfg |= DC_GCFG_LDBL;
- hactive <<= 1;
-
- /* SET GLOBAL FLAG */
-
- gfx_line_double = 1;
- }
-
- if (pMode->flags & GFX_MODE_PIXEL_DOUBLE)
- {
- tcfg |= DC_TCFG_PXDB;
- vactive <<= 1;
-
- /* SET GLOBAL FLAG */
-
- gfx_pixel_double = 1;
- }
-
- /* COMBINE AND SET TIMING VALUES */
-
- if (!gfx_dont_program) {
- value = (unsigned long) (hactive - 1) |
- (((unsigned long) (pMode->htotal - 1)) << 16);
- WRITE_REG32(DC_H_TIMING_1, value);
- value = (unsigned long) (pMode->hblankstart - 1) |
- (((unsigned long) (pMode->hblankend - 1)) << 16);
- WRITE_REG32(DC_H_TIMING_2, value);
- value = (unsigned long) (pMode->hsyncstart - 1) |
- (((unsigned long) (pMode->hsyncend - 1)) << 16);
- WRITE_REG32(DC_H_TIMING_3, value);
- WRITE_REG32(DC_FP_H_TIMING, value);
- value = (unsigned long) (vactive - 1) |
- (((unsigned long) (pMode->vtotal - 1)) << 16);
- WRITE_REG32(DC_V_TIMING_1, value);
- value = (unsigned long) (pMode->vblankstart - 1) |
- (((unsigned long) (pMode->vblankend - 1)) << 16);
- WRITE_REG32(DC_V_TIMING_2, value);
- value = (unsigned long) (pMode->vsyncstart - 1) |
- (((unsigned long) (pMode->vsyncend - 1)) << 16);
- WRITE_REG32(DC_V_TIMING_3, value);
- value = (unsigned long) (pMode->vsyncstart - 2) |
- (((unsigned long) (pMode->vsyncend - 2)) << 16);
- WRITE_REG32(DC_FP_V_TIMING, value);
- }
-
- WRITE_REG32(DC_OUTPUT_CFG, ocfg);
- WRITE_REG32(DC_TIMING_CFG, tcfg);
- gfx_delay_milliseconds(1); /* delay after TIMING_CFG */
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
-
- /* ENABLE FLAT PANEL CENTERING */
- /* For 640x480 modes displayed with the 9211 within a 800x600 */
- /* flat panel display, turn on flat panel centering. */
-
- if (PanelEnable)
- {
- if (ModeWidth < PanelWidth)
- {
- tcfg = READ_REG32(DC_TIMING_CFG);
- tcfg = tcfg | DC_TCFG_FCEN;
- WRITE_REG32(DC_TIMING_CFG, tcfg);
- gfx_delay_milliseconds(1); /* delay after TIMING_CFG */
- }
- }
-
- /* CONFIGURE DISPLAY OUTPUT FROM VIDEO PROCESSOR */
-
- gfx_set_display_control (((pMode->flags & GFX_MODE_NEG_HSYNC) ? 1 : 0) |
- ((pMode->flags & GFX_MODE_NEG_VSYNC) ? 2 : 0));
-
- /* RESTORE VALUE OF DC_UNLOCK */
-
- WRITE_REG32(DC_UNLOCK, unlock);
-
- /* ALSO WRITE GP_BLIT_STATUS FOR PITCH AND 8/18 BPP */
- /* Remember, only Pyramid supports 4K line pitch */
-
- value = 0;
- if (bpp > 8) value |= BC_16BPP;
- if( (gfx_cpu_version == GFX_CPU_PYRAMID) && ( pitch > 2048 ))
- value |= BC_FB_WIDTH_4096;
- else if (pitch > 1024)
- value |= BC_FB_WIDTH_2048;
- WRITE_REG16(GP_BLIT_STATUS, (unsigned short) value);
-
- return GFX_STATUS_OK;
-
-} /* end gfx_set_specified_mode() */
-
-/*----------------------------------------------------------------------------
- * GFX_IS_DISPLAY_MODE_SUPPORTED
- *
- * This routine sets the specified display mode.
- *
- * Returns the index of the mode if successful and mode returned, -1 if the mode
- * could not be found.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_is_display_mode_supported(int xres, int yres, int bpp, int hz)
-#else
-int gfx_is_display_mode_supported(int xres, int yres, int bpp, int hz)
-#endif
-{
- int mode=0;
- unsigned long hz_flag = 0, bpp_flag = 0;
-
- /* SET FLAGS TO MATCH REFRESH RATE */
-
- if (hz == 56) hz_flag = GFX_MODE_56HZ;
- else if (hz == 60) hz_flag = GFX_MODE_60HZ;
- else if (hz == 70) hz_flag = GFX_MODE_70HZ;
- else if (hz == 72) hz_flag = GFX_MODE_72HZ;
- else if (hz == 75) hz_flag = GFX_MODE_75HZ;
- else if (hz == 85) hz_flag = GFX_MODE_85HZ;
- else return -1;
-
- /* SET BPP FLAGS TO LIMIT MODE SELECTION */
-
- if (bpp == 8) bpp_flag = GFX_MODE_8BPP;
- else if (bpp == 15) bpp_flag = GFX_MODE_15BPP;
- else if (bpp == 16) bpp_flag = GFX_MODE_16BPP;
- else return -1;
-
- /* ONLY PYRAMID SUPPORTS 4K PITCH */
-
- if (gfx_cpu_version != GFX_CPU_PYRAMID && xres > 1024)
- {
- if (bpp > 8)
- return (-1); /* return with mode not found */
- }
-
- /* LOOP THROUGH THE AVAILABLE MODES TO FIND A MATCH */
-
- for (mode = 0; mode < NUM_GX_DISPLAY_MODES; mode++) {
- if ((DisplayParams[mode].hactive == (unsigned short)xres) &&
- (DisplayParams[mode].vactive == (unsigned short)yres) &&
- (DisplayParams[mode].flags & hz_flag) &&
- (DisplayParams[mode].flags & bpp_flag)) {
-
- /* SET THE DISPLAY CONTROLLER FOR THE SELECTED MODE */
-
- return(mode);
- }
- }
- return(-1);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_SET_DISPLAY_MODE
- *
- * This routine sets the specified display mode.
- *
- * Returns 1 if successful, 0 if mode could not be set.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_display_mode(int xres, int yres, int bpp, int hz)
-#else
-int gfx_set_display_mode(int xres, int yres, int bpp, int hz)
-#endif
-{
- int mode;
-
- /* DISABLE FLAT PANEL */
- /* Flat Panel settings are enabled by the function gfx_set_fixed_timings */
- /* and disabled by gfx_set_display_mode. */
-
- PanelEnable = 0;
-
- mode = gfx_is_display_mode_supported(xres, yres, bpp, hz);
- if(mode >= 0) {
- if (gu1_set_specified_mode(&DisplayParams[mode], bpp) == GFX_STATUS_OK)
- return(1);
- }
- return(0);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_SET_DISPLAY_TIMINGS
- *
- * This routine sets the display controller mode using the specified timing
- * values (as opposed to using the tables internal to Durango).
- *
- * Returns GFX_STATUS_OK on success, GFX_STATUS_ERROR otherwise.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_display_timings(unsigned short bpp, unsigned short flags,
- unsigned short hactive, unsigned short hblankstart,
- unsigned short hsyncstart, unsigned short hsyncend,
- unsigned short hblankend, unsigned short htotal,
- unsigned short vactive, unsigned short vblankstart,
- unsigned short vsyncstart, unsigned short vsyncend,
- unsigned short vblankend, unsigned short vtotal,
- unsigned long frequency)
-#else
-int gfx_set_display_timings(unsigned short bpp, unsigned short flags,
- unsigned short hactive, unsigned short hblankstart,
- unsigned short hsyncstart, unsigned short hsyncend,
- unsigned short hblankend, unsigned short htotal,
- unsigned short vactive, unsigned short vblankstart,
- unsigned short vsyncstart, unsigned short vsyncend,
- unsigned short vblankend, unsigned short vtotal,
- unsigned long frequency)
-#endif
-{
- /* SET MODE STRUCTURE WITH SPECIFIED VALUES */
-
- gfx_display_mode.flags = 0;
- if (flags & 1) gfx_display_mode.flags |= GFX_MODE_NEG_HSYNC;
- if (flags & 2) gfx_display_mode.flags |= GFX_MODE_NEG_VSYNC;
- if (flags & 0x1000) gfx_display_mode.flags |= GFX_MODE_LOCK_TIMING;
- gfx_display_mode.hactive = hactive;
- gfx_display_mode.hblankstart = hblankstart;
- gfx_display_mode.hsyncstart = hsyncstart;
- gfx_display_mode.hsyncend = hsyncend;
- gfx_display_mode.hblankend = hblankend;
- gfx_display_mode.htotal = htotal;
- gfx_display_mode.vactive = vactive;
- gfx_display_mode.vblankstart = vblankstart;
- gfx_display_mode.vsyncstart = vsyncstart;
- gfx_display_mode.vsyncend = vsyncend;
- gfx_display_mode.vblankend = vblankend;
- gfx_display_mode.vtotal = vtotal;
- gfx_display_mode.frequency = frequency;
-
- /* CALL ROUTINE TO SET MODE */
-
- return (gu1_set_specified_mode(&gfx_display_mode, bpp));
-}
-
-/*----------------------------------------------------------------------------
- * GFX_SET_VTOTAL
- *
- * This routine sets the display controller vertical total to
- * "vtotal". As a side effect it also sets vertical blank end.
- * It should be used when only this value needs to be changed,
- * due to speed considerations.
- *
- * Note: it is the caller's responsibility to make sure that
- * a legal vtotal is used, i.e. that "vtotal" is greater than or
- * equal to vsync end.
- *
- * Always returns 0.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_vtotal(unsigned short vtotal)
-#else
-int gfx_set_vtotal(unsigned short vtotal)
-#endif
-{
- unsigned long unlock, tcfg, timing1, timing2;
-
- /* UNLOCK THE DISPLAY CONTROLLER REGISTERS */
-
- unlock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
-
- /* READ THE CURRENT GX VALUES */
-
- tcfg = READ_REG32(DC_TIMING_CFG);
- timing1 = READ_REG32(DC_V_TIMING_1);
- timing2 = READ_REG32(DC_V_TIMING_2);
-
- /* DISABLE THE TIMING GENERATOR */
-
- WRITE_REG32(DC_TIMING_CFG, tcfg & ~(unsigned long)DC_TCFG_TGEN);
-
- /* WRITE NEW TIMING VALUES */
-
- WRITE_REG32(DC_V_TIMING_1, (timing1 & 0xffff) | (unsigned long)(vtotal - 1) << 16);
- WRITE_REG32(DC_V_TIMING_2, (timing2 & 0xffff) | (unsigned long)(vtotal - 1) << 16);
-
- /* RESTORE GX VALUES */
-
- WRITE_REG32(DC_TIMING_CFG, tcfg);
- WRITE_REG32(DC_UNLOCK, unlock);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_pitch
- *
- * This routine sets the pitch of the frame buffer to the specified value.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_display_pitch(unsigned short pitch)
-#else
-void gfx_set_display_pitch(unsigned short pitch)
-#endif
-{
- unsigned long value = 0;
- unsigned long lock = READ_REG32(DC_UNLOCK);
-
- value = READ_REG32(DC_LINE_DELTA) & 0xFFFFF000;
- value |= (pitch >> 2);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_LINE_DELTA, value);
- WRITE_REG32(DC_UNLOCK, lock);
-
- /* ALSO UPDATE PITCH IN GRAPHICS ENGINE */
- /* Pyramid alone supports 4K line pitch */
-
- value = (unsigned long) READ_REG16(GP_BLIT_STATUS);
- value &= ~(BC_FB_WIDTH_2048 | BC_FB_WIDTH_4096);
-
- if((gfx_cpu_version == GFX_CPU_PYRAMID) && ( pitch > 2048 ))
- value |= BC_FB_WIDTH_4096;
-
- else if( pitch > 1024 )
- value |= BC_FB_WIDTH_2048;
-
- WRITE_REG16(GP_BLIT_STATUS, (unsigned short) value);
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_offset
- *
- * This routine sets the start address of the frame buffer. It is
- * typically used to pan across a virtual desktop (frame buffer larger than
- * the displayed screen) or to flip the display between multiple buffers.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_display_offset(unsigned long offset)
-#else
-void gfx_set_display_offset(unsigned long offset)
-#endif
-{
- /* UPDATE FRAME BUFFER OFFSET */
-
- unsigned long lock;
- lock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
-
- /* START ADDRESS EFFECTS DISPLAY COMPRESSION */
- /* Disable compression for non-zero start addresss values. */
- /* Enable compression if offset is zero and comression is intended to */
- /* be enabled from a previous call to "gfx_set_compression_enable". */
- /* Compression should be disabled BEFORE the offset is changed */
- /* and enabled AFTER the offset is changed. */
-
- if (offset == 0)
- {
- WRITE_REG32(DC_FB_ST_OFFSET, offset);
- if (gfx_compression_enabled)
- {
- /* WAIT FOR THE OFFSET TO BE LATCHED */
- gfx_wait_vertical_blank ();
- gu1_enable_compression();
- }
- }
- else
- {
- /* ONLY DISABLE COMPRESSION ONCE */
-
- if (gfx_compression_active)
- gu1_disable_compression();
-
- WRITE_REG32(DC_FB_ST_OFFSET, offset);
- }
-
- WRITE_REG32(DC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_palette_entry
- *
- * This routine sets an palette entry in the display controller.
- * A 32-bit X:R:G:B value.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_display_palette_entry(unsigned long index, unsigned long palette)
-#else
-int gfx_set_display_palette_entry(unsigned long index, unsigned long palette)
-#endif
-{
- unsigned long data;
-
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_REG32(DC_PAL_ADDRESS, index);
- data = ((palette >> 2) & 0x0003F) |
- ((palette >> 4) & 0x00FC0) |
- ((palette >> 6) & 0x3F000);
- WRITE_REG32(DC_PAL_DATA, data);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_palette
- *
- * This routine sets the entire palette in the display controller.
- * A pointer is provided to a 256 entry table of 32-bit X:R:G:B values.
- * Restriction:
- * Due to SC1200 Issue #748 (in Notes DB) this function should be called only
- * when DCLK is active, i.e PLL is already powered up and genlock is not active.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_display_palette(unsigned long *palette)
-#else
-int gfx_set_display_palette(unsigned long *palette)
-#endif
-{
- unsigned long data, i;
- WRITE_REG32(DC_PAL_ADDRESS, 0);
- if (palette)
- {
- for (i = 0; i < 256; i++)
- {
- /* CONVERT 24 BPP COLOR DATA TO 18 BPP COLOR DATA */
-
- data = ((palette[i] >> 2) & 0x0003F) |
- ((palette[i] >> 4) & 0x00FC0) |
- ((palette[i] >> 6) & 0x3F000);
- WRITE_REG32(DC_PAL_DATA, data);
- }
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_enable
- *
- * This routine enables or disables the hardware cursor.
- *
- * WARNING: The cusrsor start offset must be set by setting the cursor
- * position before calling this routine to assure that memory reads do not
- * go past the end of graphics memory (this can hang GXm).
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_cursor_enable(int enable)
-#else
-void gfx_set_cursor_enable(int enable)
-#endif
-{
- unsigned long unlock, gcfg;
-
- /* SET OR CLEAR CURSOR ENABLE BIT */
-
- unlock = READ_REG32(DC_UNLOCK);
- gcfg = READ_REG32(DC_GENERAL_CFG);
- if (enable) gcfg |= DC_GCFG_CURE;
- else gcfg &= ~(DC_GCFG_CURE);
-
- /* WRITE NEW REGISTER VALUE */
-
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
- WRITE_REG32(DC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_colors
- *
- * This routine sets the colors of the hardware cursor.
- * Restriction:
- * Due to SC1200 Issue #748 (in Notes DB) this function should be called only
- * when DCLK is active, i.e PLL is already powered up.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
-#else
-void gfx_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
-#endif
-{
- unsigned long value;
-
- /* If genlock is enabled DCLK might be disabled in vertical blank. */
- /* Due to SC1200 Issue #748 in Notes DB this would fail the cursor color settings */
- /* So Wait for vertical blank to end */
-
-#if GFX_VIDEO_SC1200
- if (gfx_test_timing_active())
- while ((gfx_get_vline()) > gfx_get_vactive());
-#endif
-
- /* SET CURSOR COLORS */
-
- WRITE_REG32(DC_PAL_ADDRESS, 0x100);
- value = ((bkcolor & 0x000000FC) >> 2) |
- ((bkcolor & 0x0000FC00) >> (2+8-6)) |
- ((bkcolor & 0x00FC0000) >> (2+16-12));
- WRITE_REG32(DC_PAL_DATA, value);
- value = ((fgcolor & 0x000000FC) >> 2) |
- ((fgcolor & 0x0000FC00) >> (2+8-6)) |
- ((fgcolor & 0x00FC0000) >> (2+16-12));
- WRITE_REG32(DC_PAL_DATA, value);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_position
- *
- * This routine sets the position of the hardware cusror. The starting
- * offset of the cursor buffer must be specified so that the routine can
- * properly clip scanlines if the cursor is off the top of the screen.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_cursor_position(unsigned long memoffset,
- unsigned short xpos, unsigned short ypos,
- unsigned short xhotspot, unsigned short yhotspot)
-#else
-void gfx_set_cursor_position(unsigned long memoffset,
- unsigned short xpos, unsigned short ypos,
- unsigned short xhotspot, unsigned short yhotspot)
-#endif
-{
- unsigned long unlock;
-
- short x, y;
- short xoffset = 0;
- short yoffset = 0;
-
- /* SUPPORT CURSOR IN EMULATED VGA MODES */
- /* Timings are for twice the resolution */
-
- if (gfx_pixel_double)
- xpos <<= 1;
- if (gfx_line_double)
- ypos <<= 1;
-
- x = (short) xpos - (short) xhotspot;
- y = (short) ypos - (short) yhotspot;
- if (x < -31) return;
- if (y < -31) return;
- if (x < 0) { xoffset = -x; x = 0; }
- if (y < 0) { yoffset = -y; y = 0; }
- memoffset += (unsigned long) yoffset << 3;
-
- if (PanelEnable) {
- if (( ModeWidth > PanelWidth) || (ModeHeight > PanelHeight)) {
- gfx_enable_panning (xpos, ypos);
- x = x - (short)panelLeft;
- y = y - (short)panelTop;
- }
- }
-
- /* SET CURSOR POSITION */
-
- unlock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_CURS_ST_OFFSET, memoffset);
- WRITE_REG32(DC_CURSOR_X, (unsigned long) x |
- (((unsigned long) xoffset) << 11));
- WRITE_REG32(DC_CURSOR_Y, (unsigned long) y |
- (((unsigned long) yoffset) << 11));
- WRITE_REG32(DC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_shape32
- *
- * This routine loads 32x32 cursor data into the specified location in
- * graphics memory.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_cursor_shape32(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-#else
-void gfx_set_cursor_shape32(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-#endif
-{
- int i;
- unsigned long value;
- for (i = 0; i < 32; i++)
- {
- /* CONVERT TO 16 BITS AND MASK, 16 BITS XOR MASK PER DWORD */
-
- value = (andmask[i] & 0xFFFF0000) | (xormask[i] >> 16);
- WRITE_FB32(memoffset, value);
- memoffset += 4;
- value = (andmask[i] << 16) | (xormask[i] & 0x0000FFFF);
- WRITE_FB32(memoffset, value);
- memoffset += 4;
- }
-}
-
-/*---------------------------------------------------------------------------
- * gu1_enable_compression
- *
- * This is a private routine to this module (not exposed in the Durango API).
- * It enables display compression.
- *---------------------------------------------------------------------------
- */
-void gu1_enable_compression(void)
-{
- int i;
- unsigned long unlock, gcfg, offset;
-
- /* DO NOT ENABLE IF START ADDRESS IS NOT ZERO */
-
- offset = READ_REG32(DC_FB_ST_OFFSET) & 0x003FFFFF;
- if (offset != 0) return;
-
- /* DO NOT ENABLE IF WE ARE WITHIN AN EMULATED VGA MODE */
-
- if (gfx_line_double || gfx_pixel_double)
- return;
-
- /* SET GLOBAL INDICATOR */
-
- gfx_compression_active = 1;
-
- /* CLEAR DIRTY/VALID BITS IN MEMORY CONTROLLER */
- /* Software is required to do this before enabling compression. */
- /* Don't want controller to think that old lines are still valid. */
-
- for (i = 0; i < 1024; i++)
- {
- WRITE_REG32(MC_DR_ADD, i);
- WRITE_REG32(MC_DR_ACC, 0);
- }
-
- /* TURN ON COMPRESSION CONTROL BITS */
-
- unlock = READ_REG32(DC_UNLOCK);
- gcfg = READ_REG32(DC_GENERAL_CFG);
- gcfg |= DC_GCFG_CMPE | DC_GCFG_DECE;
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
- WRITE_REG32(DC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gu1_disable_compression
- *
- * This is a private routine to this module (not exposed in the Durango API).
- * It disables display compression.
- *---------------------------------------------------------------------------
- */
-void gu1_disable_compression(void)
-{
- unsigned long unlock, gcfg;
-
- /* SET GLOBAL INDICATOR */
-
- gfx_compression_active = 0;
-
- /* TURN OFF COMPRESSION CONTROL BITS */
-
- unlock = READ_REG32(DC_UNLOCK);
- gcfg = READ_REG32(DC_GENERAL_CFG);
- gcfg &= ~(DC_GCFG_CMPE | DC_GCFG_DECE);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_GENERAL_CFG, gcfg);
- WRITE_REG32(DC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_enable
- *
- * This routine enables or disables display compression.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_compression_enable(int enable)
-#else
-int gfx_set_compression_enable(int enable)
-#endif
-{
- /* SET GLOBAL VARIABLE FOR INTENDED STATE */
- /* Compression can only be enabled for non-zero start address values. */
- /* Keep state to enable compression on start address changes. */
-
- gfx_compression_enabled = enable;
- if (enable) gu1_enable_compression();
- else gu1_disable_compression();
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_offset
- *
- * This routine sets the base offset for the compression buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_compression_offset(unsigned long offset)
-#else
-int gfx_set_compression_offset(unsigned long offset)
-#endif
-{
- unsigned long lock;
-
- /* MUST BE 16-BYTE ALIGNED FOR GXLV */
-
- if (offset & 0x0F) return(1);
-
- /* SET REGISTER VALUE */
-
- lock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_CB_ST_OFFSET, offset);
- WRITE_REG32(DC_UNLOCK, lock);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_pitch
- *
- * This routine sets the pitch, in bytes, of the compression buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_compression_pitch(unsigned short pitch)
-#else
-int gfx_set_compression_pitch(unsigned short pitch)
-#endif
-{
- unsigned long lock, line_delta;
-
- /* SET REGISTER VALUE */
-
- lock = READ_REG32(DC_UNLOCK);
- line_delta = READ_REG32(DC_LINE_DELTA) & 0xFF800FFF;
- line_delta |= ((unsigned long)pitch << 10l) & 0x007FF000;
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_LINE_DELTA, line_delta);
- WRITE_REG32(DC_UNLOCK, lock);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_size
- *
- * This routine sets the line size of the compression buffer, which is the
- * maximum number of bytes allowed to store a compressed line.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_compression_size(unsigned short size)
-#else
-int gfx_set_compression_size(unsigned short size)
-#endif
-{
- unsigned long lock, buf_size;
-
- /* SUBTRACT 16 FROM SIZE */
- /* The display controller will actually write */
- /* 2 extra QWords. So, if we assume that "size" */
- /* refers to the allocated size, we must subtract */
- /* 16 bytes. */
-
- size -= 16;
-
- /* SET REGISTER VALUE */
-
- lock = READ_REG32(DC_UNLOCK);
- buf_size = READ_REG32(DC_BUF_SIZE) & 0xFFFF01FF;
- buf_size |= (((size >> 2) + 1) & 0x7F) << 9;
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- WRITE_REG32(DC_BUF_SIZE, buf_size);
- WRITE_REG32(DC_UNLOCK, lock);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine enables/disables video on GX.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_display_video_enable(int enable)
-#else
-void gfx_set_display_video_enable(int enable)
-#endif
-{
- unsigned long lock, gcfg, buf_size;
- lock = READ_REG32 (DC_UNLOCK);
- gcfg = READ_REG32 (DC_GENERAL_CFG);
- buf_size = READ_REG32 (DC_BUF_SIZE);
-
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
-
- vid_enabled = enable;
-
- /* SET THE BUFFER SIZE TO A NON-ZERO VALUE ONLY WHEN */
- /* ENABLING VIDEO */
-
- if (enable)
- {
- gcfg |= (DC_GCFG_VIDE | DC_GCFG_VRDY);
- WRITE_REG32 (DC_GENERAL_CFG, gcfg);
-
- WRITE_REG32 (DC_BUF_SIZE, (buf_size & 0x0000FFFFl) | vid_buf_size);
- }
-
- /* CLEAR THE VIDEO BUFFER SIZE WHEN DISABLING VIDEO */
-
- else
- {
- gcfg &= ~(DC_GCFG_VIDE);
- WRITE_REG32 (DC_GENERAL_CFG, gcfg);
-
- vid_buf_size = buf_size & 0xFFFF0000l;
- WRITE_REG32 (DC_BUF_SIZE, buf_size & 0x0000FFFFl);
- }
-
- WRITE_REG32(DC_UNLOCK, lock);
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_size (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_size". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_display_video_size(unsigned short width, unsigned short height)
-#else
-void gfx_set_display_video_size(unsigned short width, unsigned short height)
-#endif
-{
- unsigned long lock, size, value;
- size = (unsigned long) (width << 1) * (unsigned long) height;
-
- /* STORE THE VIDEO BUFFER SIZE AS A GLOBAL */
-
- vid_buf_size = ((size + 63) >> 6) << 16;
-
- /* DO NOT SET THE VIDEO SIZE IF VIDEO IS DISABLED */
-
- if (!vid_enabled)
- return;
-
- lock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- value = READ_REG32(DC_BUF_SIZE) & 0x0000FFFF;
- value |= vid_buf_size;
- WRITE_REG32(DC_BUF_SIZE, value);
- WRITE_REG32(DC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_offset (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_offset". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_display_video_offset(unsigned long offset)
-#else
-void gfx_set_display_video_offset(unsigned long offset)
-#endif
-{
- unsigned long lock;
- lock = READ_REG32(DC_UNLOCK);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- offset &= 0x003FFFFF;
- WRITE_REG32(DC_VID_ST_OFFSET, offset);
- WRITE_REG32(DC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_priority_high
- *
- * This routine controls the x-bus round robin arbitration mechanism.
- * When enable is TRUE, graphics pipeline requests and non-critical display
- * controller requests are arbitrated at the same priority as processor
- * requests. When FALSE processor requests are arbitrated at a higher priority.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_set_display_priority_high(int enable)
-#else
-void gfx_set_display_priority_high(int enable)
-#endif
-{
- unsigned long lock, control;
- lock = READ_REG32(DC_UNLOCK);
- control = READ_REG32(MC_MEM_CNTRL1);
- WRITE_REG32(DC_UNLOCK, DC_UNLOCK_VALUE);
- if (enable)
- control |= MC_XBUSARB;
- else control &= ~(MC_XBUSARB);
- WRITE_REG32(MC_MEM_CNTRL1, control);
- WRITE_REG32(DC_UNLOCK, lock);
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_timing_active
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_test_timing_active(void)
-#else
-int gfx_test_timing_active(void)
-#endif
-{
- if (READ_REG32(DC_TIMING_CFG) & DC_TCFG_TGEN)
- return(1);
- else return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_vertical_active
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_test_vertical_active(void)
-#else
-int gfx_test_vertical_active(void)
-#endif
-{
- if (READ_REG32(DC_TIMING_CFG) & DC_TCFG_VNA)
- return(0);
- else return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_wait_vertical_blank
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_wait_vertical_blank(void)
-#else
-int gfx_wait_vertical_blank(void)
-#endif
-{
- if (gfx_test_timing_active())
- {
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_enable_panning
- *
- * This routine enables the panning when the Mode is bigger than the panel
- * size.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_enable_panning(int x, int y)
-#else
-void gfx_enable_panning(int x, int y)
-#endif
-{
- unsigned long modeBytesPerPixel;
- unsigned long modeBytesPerScanline = 0;
- unsigned long startAddress = 0;
-
- modeBytesPerPixel = (gbpp + 7)/8;
- modeBytesPerScanline = (((ModeWidth + 1023) / 1024) * 1024) * modeBytesPerPixel;
-
- /* TEST FOR NO-WORK */
-
- if (x >= DeltaX && (unsigned short)x < (PanelWidth + DeltaX) &&
- y >= DeltaY && (unsigned short)y < (PanelHeight + DeltaY))
- return;
-
-
- /* ADJUST PANNING VARIABLES WHEN CURSOR EXCEEDS BOUNDARY */
- /* Test the boundary conditions for each coordinate and update */
- /* all variables and the starting offset accordingly. */
-
- if (x < DeltaX)
- DeltaX = x;
-
- else if ((unsigned short)x >= (DeltaX + PanelWidth))
- DeltaX = x - PanelWidth + 1;
-
- if (y < DeltaY)
- DeltaY = y;
-
- else if ((unsigned short)y >= (DeltaY + PanelHeight))
- DeltaY = y - PanelHeight + 1;
-
-
- /* CALCULATE THE START OFFSET */
-
- startAddress = (DeltaX * modeBytesPerPixel) + (DeltaY * modeBytesPerScanline);
-
- gfx_set_display_offset(startAddress);
-
-
- /* SET PANEL COORDINATES */
- /* Panel's x position must be DWORD aligned */
-
- panelTop = DeltaY;
- panelLeft = DeltaX * modeBytesPerPixel;
-
- if (panelLeft & 3)
- panelLeft = (panelLeft & 0xFFFFFFFC) + 4;
-
- panelLeft /= modeBytesPerPixel;
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_fixed_timings
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_fixed_timings(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#else
-int gfx_set_fixed_timings(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#endif
-{
- int mode;
-
- ModeWidth = width;
- ModeHeight = height;
- PanelWidth = (unsigned short)panelResX;
- PanelHeight = (unsigned short)panelResY;
- PanelEnable = 1;
-
- /* LOOP THROUGH THE AVAILABLE MODES TO FIND A MATCH */
- for (mode = 0; mode < NUM_FIXED_TIMINGS_MODES; mode++) {
- if ((FixedParams[mode].xres == width) &&
- (FixedParams[mode].yres == height) &&
- (FixedParams[mode].panelresx == panelResX) &&
- (FixedParams[mode].panelresy == panelResY)) {
-
- /* SET THE 92xx FOR THE SELECTED MODE */
- FIXEDTIMINGS *fmode = &FixedParams[mode];
-
- gfx_set_display_timings(bpp, 3, fmode->hactive,fmode->hblankstart, fmode->hsyncstart, fmode->hsyncend,
- fmode->hblankend, fmode->htotal, fmode->vactive, fmode->vblankstart,
- fmode->vsyncstart, fmode->vsyncend, fmode->vblankend, fmode->vtotal, fmode->frequency);
-
- return(1);
- } /* end if() */
- } /* end for() */
-
- return(-1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_panel_present
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_set_panel_present(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#else
-int gfx_set_panel_present(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#endif
-{
- /* SET VALID BPP */
- /* 16BPP is the default. */
-
- if (bpp != 8 && bpp != 15 && bpp != 16)
- bpp = 16;
-
- /* RECORD PANEL PARAMETERS */
- /* This routine does not touch any panel timings. It is used when custom panel */
- /* settings are set up in advance by the BIOS or an application, but the */
- /* application still requires access to other panel functionality provided by */
- /* Durango (i.e. panning). */
-
- ModeWidth = width;
- ModeHeight = height;
- PanelWidth = (unsigned short)panelResX;
- PanelHeight = (unsigned short)panelResY;
- PanelEnable = 1;
- gbpp = bpp;
-
- /* PROGRAM THE BPP IN THE DISPLAY CONTROLLER */
-
- gfx_set_display_bpp (bpp);
-
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------*
- * THE FOLLOWING READ ROUTINES ARE ALWAYS INCLUDED: *
- * gfx_get_hsync_end, gfx_get_htotal, gfx_get_vsync_end, gfx_get_vtotal *
- * are used by the video overlay routines. *
- * *
- * gfx_get_vline and gfx_vactive are used to prevent an issue for the *
- * SC1200. *
- * *
- * The others are part of the Durango API. *
- *-----------------------------------------------------------------------*/
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_pitch
- *
- * This routine returns the current pitch of the frame buffer, in bytes.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_display_pitch(void)
-#else
-unsigned short gfx_get_display_pitch(void)
-#endif
-{
- unsigned long value;
- if (gfx_cpu_version == GFX_CPU_PYRAMID) {/* Pyramid update for 4KB line pitch */
- value = (READ_REG32(DC_LINE_DELTA) & 0x07FF) << 2;
- } else {
- value = (READ_REG32(DC_LINE_DELTA) & 0x03FF) << 2;
- }
-
- return((unsigned short) value);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_GET_DISPLAY_DETAILS
- *
- * This routine gets the specified display mode.
- *
- * Returns 1 if successful, 0 if mode could not be get.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_display_details(unsigned int mode, int *xres, int *yres, int *hz)
-#else
-int gfx_get_display_details(unsigned int mode, int *xres, int *yres, int *hz)
-#endif
-{
- if(mode < NUM_GX_DISPLAY_MODES){
- if(DisplayParams[mode].flags & GFX_MODE_56HZ)
- *hz = 56;
- else if(DisplayParams[mode].flags & GFX_MODE_60HZ)
- *hz = 60;
- else if(DisplayParams[mode].flags & GFX_MODE_70HZ)
- *hz = 70;
- else if(DisplayParams[mode].flags & GFX_MODE_72HZ)
- *hz = 72;
- else if(DisplayParams[mode].flags & GFX_MODE_75HZ)
- *hz = 75;
- else if(DisplayParams[mode].flags & GFX_MODE_85HZ)
- *hz = 85;
-
- *xres = DisplayParams[mode].hactive;
- *yres = DisplayParams[mode].vactive;
-
- return(1);
- }
- return(0);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_GET_DISPLAY_MODE_COUNT
- *
- * Returns number of modes supported.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_display_mode_count(void)
-#else
-int gfx_get_display_mode_count(void)
-#endif
-{
- return(NUM_GX_DISPLAY_MODES);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_frame_buffer_line_size
- *
- * Returns the current frame buffer line size, in bytes
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_frame_buffer_line_size(void)
-#else
-unsigned long gfx_get_frame_buffer_line_size(void)
-#endif
-{
- return ((READ_REG32 (DC_BUF_SIZE) & 0x1FF) << 3);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_mode_frequency_supported
- *
- * This routine examines if the requested mode with pixel frequency is supported.
- *
- * Returns >0 if successful , <0 if freq. could not be found and matched.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_mode_frequency_supported(int xres, int yres, int bpp, unsigned long frequency)
-#else
-int gfx_mode_frequency_supported(int xres, int yres, int bpp, unsigned long frequency)
-#endif
-{
- int index;
- unsigned long value;
- unsigned long bpp_flag = 0;
-
- bpp_flag = GFX_MODE_8BPP;
- if (bpp > 8) bpp_flag = GFX_MODE_16BPP;
-
- for (index = 0; index < NUM_GX_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].hactive == (unsigned short)xres) &&
- (DisplayParams[index].vactive == (unsigned short)yres) &&
- (DisplayParams[index].flags & bpp_flag) &&
- (DisplayParams[index].frequency == frequency))
- {
- int hz=0;
- value = DisplayParams[index].flags;
-
- if (value & GFX_MODE_60HZ) hz = 60;
- else if (value & GFX_MODE_70HZ) hz = 70;
- else if (value & GFX_MODE_72HZ) hz = 72;
- else if (value & GFX_MODE_75HZ) hz = 75;
- else if (value & GFX_MODE_85HZ) hz = 85;
- return(hz);
- }
- }
- return(-1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_refreshrate_from_frequency
- *
- * This routine maps the frequency to close match refresh rate
- *
- * Returns .
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#else
-int gfx_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#endif
-{
- int index, closematch=0;
- unsigned long value;
- unsigned long bpp_flag = 0;
- long min, diff;
-
- *hz = 60;
-
- bpp_flag = GFX_MODE_8BPP;
- if (bpp > 8) bpp_flag = GFX_MODE_16BPP;
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- min = 0x7fffffff;
- for (index = 0; index < NUM_GX_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].htotal == (unsigned short)xres) &&
- (DisplayParams[index].vtotal == (unsigned short)yres) &&
- (DisplayParams[index].flags & bpp_flag))
- {
- diff = (long)frequency - (long)DisplayParams[index].frequency;
- if(diff < 0) diff = -diff;
-
- if (diff < min)
- {
- min = diff;
- closematch = index;
- }
- }
- }
-
- value = DisplayParams[closematch].flags;
-
- if (value & GFX_MODE_60HZ) *hz = 60;
- else if (value & GFX_MODE_70HZ) *hz = 70;
- else if (value & GFX_MODE_72HZ) *hz = 72;
- else if (value & GFX_MODE_75HZ) *hz = 75;
- else if (value & GFX_MODE_85HZ) *hz = 85;
-
- return(1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_refreshrate_from_mode
- *
- * This routine is identical to the gfx_get_refreshrate_from_frequency,
- * except that the active timing values are compared instead of the total
- * values. Some modes (such as 70Hz and 72Hz) may be confused in this routine.
- *
- * Returns .
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#else
-int gfx_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#endif
-{
- int index, closematch=0;
- unsigned long value;
- unsigned long bpp_flag = 0;
- long min, diff;
-
- *hz = 60;
-
- bpp_flag = GFX_MODE_8BPP;
- if (bpp > 8) bpp_flag = GFX_MODE_16BPP;
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- min = 0x7fffffff;
- for (index = 0; index < NUM_GX_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].hactive == (unsigned short)xres) &&
- (DisplayParams[index].vactive == (unsigned short)yres) &&
- (DisplayParams[index].flags & bpp_flag))
- {
- diff = (long)frequency - (long)DisplayParams[index].frequency;
- if(diff < 0) diff = -diff;
-
- if (diff < min)
- {
- min = diff;
- closematch = index;
- }
- }
- }
-
- value = DisplayParams[closematch].flags;
-
- if (value & GFX_MODE_60HZ) *hz = 60;
- else if (value & GFX_MODE_70HZ) *hz = 70;
- else if (value & GFX_MODE_72HZ) *hz = 72;
- else if (value & GFX_MODE_75HZ) *hz = 75;
- else if (value & GFX_MODE_85HZ) *hz = 85;
-
- return(1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_frequency_from_refreshrate
- *
- * This routine maps the refresh rate to the closest matching PLL frequency.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz, int *frequency)
-#else
-int gfx_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz, int *frequency)
-#endif
-{
- int index, retval = -1;
- unsigned long hz_flag = 0;
- unsigned long bpp_flag = 0;
-
- *frequency = 0;
-
- if (hz == 60) hz_flag = GFX_MODE_60HZ;
- else if (hz == 70) hz_flag = GFX_MODE_70HZ;
- else if (hz == 72) hz_flag = GFX_MODE_72HZ;
- else if (hz == 75) hz_flag = GFX_MODE_75HZ;
- else if (hz == 85) hz_flag = GFX_MODE_85HZ;
-
- bpp_flag = GFX_MODE_8BPP;
- if (bpp > 8) bpp_flag = GFX_MODE_16BPP;
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
-
- for (index = 0; index < NUM_GX_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].hactive == (unsigned short)xres) &&
- (DisplayParams[index].vactive == (unsigned short)yres) &&
- (DisplayParams[index].flags & bpp_flag) &&
- (DisplayParams[index].flags & hz_flag))
- {
- *frequency = DisplayParams[index].frequency;
- retval = 1;
- }
- }
- return retval;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_max_supported_pixel_clock
- *
- * This routine returns the maximum recommended speed for the pixel clock. The
- * return value is an integer of the format xxxyyy, where xxx.yyy is the maximum
- * floating point pixel clock speed.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_max_supported_pixel_clock (void)
-#else
-unsigned long gfx_get_max_supported_pixel_clock (void)
-#endif
-
-{
- /* PYRAMID CAN HANDLE 157.5 MHz */
-
- if (gfx_cpu_version == GFX_CPU_PYRAMID)
- return 157500;
-
- /* EVERYTHING ELSE IS 135.0 MHz */
-
- return 135000;
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_display_mode
- *
- * This routine gets the specified display mode.
- *
- * Returns >0 if successful and mode returned, <0 if mode could not be found.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
-#else
-int gfx_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
-#endif
-{
- int mode=0;
- unsigned long pll_freq = 0, bpp_flag = 0;
-
- *xres = gfx_get_hactive();
- *yres = gfx_get_vactive();
- *bpp = gfx_get_display_bpp();
- pll_freq = gfx_get_clock_frequency();
-
- /* SUPPORT EMULATED VGA MODES */
-
- if (gfx_pixel_double)
- *xres >>= 1;
-
- if (gfx_line_double)
- *yres >>= 1;
-
- /* SET BPP FLAGS TO LIMIT MODE SELECTION */
-
- bpp_flag = GFX_MODE_8BPP;
- if (*bpp > 8) bpp_flag = GFX_MODE_16BPP;
-
- for (mode = 0; mode < NUM_GX_DISPLAY_MODES; mode++) {
- if ((DisplayParams[mode].hactive == (unsigned short)*xres) &&
- (DisplayParams[mode].vactive == (unsigned short)*yres) &&
- (DisplayParams[mode].frequency == pll_freq) &&
- (DisplayParams[mode].flags & bpp_flag)) {
-
- pll_freq = DisplayParams[mode].flags;
-
- if (pll_freq & GFX_MODE_56HZ) *hz = 56;
- else if (pll_freq & GFX_MODE_60HZ) *hz = 60;
- else if (pll_freq & GFX_MODE_70HZ) *hz = 70;
- else if (pll_freq & GFX_MODE_72HZ) *hz = 72;
- else if (pll_freq & GFX_MODE_75HZ) *hz = 75;
- else if (pll_freq & GFX_MODE_85HZ) *hz = 85;
-
- return(1);
- }
- }
- return(-1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hactive
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_hactive(void)
-#else
-unsigned short gfx_get_hactive(void)
-#endif
-{
- return((unsigned short)((READ_REG32(DC_H_TIMING_1) & 0x07F8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hsync_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_hsync_start(void)
-#else
-unsigned short gfx_get_hsync_start(void)
-#endif
-{
- return((unsigned short)((READ_REG32(DC_H_TIMING_3) & 0x07F8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hsync_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_hsync_end(void)
-#else
-unsigned short gfx_get_hsync_end(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(DC_H_TIMING_3) >> 16) & 0x07F8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_htotal
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_htotal(void)
-#else
-unsigned short gfx_get_htotal(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(DC_H_TIMING_1) >> 16) & 0x07F8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vactive
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vactive(void)
-#else
-unsigned short gfx_get_vactive(void)
-#endif
-{
- return((unsigned short)((READ_REG32(DC_V_TIMING_1) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsync_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vsync_end(void)
-#else
-unsigned short gfx_get_vsync_end(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(DC_V_TIMING_3) >> 16) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vtotal
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vtotal(void)
-#else
-unsigned short gfx_get_vtotal(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(DC_V_TIMING_1) >> 16) & 0x07FF) + 1));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_bpp
- *
- * This routine returns the current color depth of the active display.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_display_bpp(void)
-#else
-unsigned short gfx_get_display_bpp(void)
-#endif
-{
- switch(READ_REG32(DC_OUTPUT_CFG) & 3)
- {
- case 0: return(16);
- case 2: return(15);
- }
- return(8);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vline
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vline(void)
-#else
-unsigned short gfx_get_vline(void)
-#endif
-{
- unsigned short current_scan_line;
-
- /* Read similar value twice to ensure that the value is not transitioning */
-
- do current_scan_line = (unsigned short)READ_REG32(DC_V_LINE_CNT) & 0x07FF;
- while(current_scan_line != (unsigned short)(READ_REG32(DC_V_LINE_CNT) & 0x07FF));
-
- return(current_scan_line);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_display_offset(void)
-#else
-unsigned long gfx_get_display_offset(void)
-#endif
-{
- return(READ_REG32(DC_FB_ST_OFFSET) & 0x003FFFFF);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_cursor_offset(void)
-#else
-unsigned long gfx_get_cursor_offset(void)
-#endif
-{
- return(READ_REG32(DC_CURS_ST_OFFSET) & 0x003FFFFF);
-}
-
-
-#if GFX_READ_ROUTINES
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-/*---------------------------------------------------------------------------
- * gfx_get_hblank_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_hblank_start(void)
-#else
-unsigned short gfx_get_hblank_start(void)
-#endif
-{
- return((unsigned short)((READ_REG32(DC_H_TIMING_2) & 0x07F8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hblank_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_hblank_end(void)
-#else
-unsigned short gfx_get_hblank_end(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(DC_H_TIMING_2) >> 16) & 0x07F8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vblank_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vblank_start(void)
-#else
-unsigned short gfx_get_vblank_start(void)
-#endif
-{
- return((unsigned short)((READ_REG32(DC_V_TIMING_2) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsync_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vsync_start(void)
-#else
-unsigned short gfx_get_vsync_start(void)
-#endif
-{
- return((unsigned short)((READ_REG32(DC_V_TIMING_3) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vblank_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_vblank_end(void)
-#else
-unsigned short gfx_get_vblank_end(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(DC_V_TIMING_2) >> 16) & 0x07FF) + 1));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_palette_entry
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_display_palette_entry(unsigned long index, unsigned long *palette)
-#else
-int gfx_get_display_palette_entry(unsigned long index, unsigned long *palette)
-#endif
-{
- unsigned long data;
-
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_REG32(DC_PAL_ADDRESS, index);
- data = READ_REG32(DC_PAL_DATA);
- data = ((data << 2) & 0x000000FC) |
- ((data << 4) & 0x0000FC00) |
- ((data << 6) & 0x00FC0000);
-
- *palette = data;
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_palette
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu1_get_display_palette(unsigned long *palette)
-#else
-void gfx_get_display_palette(unsigned long *palette)
-#endif
-{
- unsigned long i, data;
- WRITE_REG32(DC_PAL_ADDRESS, 0);
- for (i = 0; i < 256; i++)
- {
- data = READ_REG32(DC_PAL_DATA);
- data = ((data << 2) & 0x000000FC) |
- ((data << 4) & 0x0000FC00) |
- ((data << 6) & 0x00FC0000);
- palette[i] = data;
- }
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_cursor_enable(void)
-#else
-unsigned long gfx_get_cursor_enable(void)
-#endif
-{
- return(READ_REG32(DC_GENERAL_CFG) & DC_GCFG_CURE);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_position
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_cursor_position(void)
-#else
-unsigned long gfx_get_cursor_position(void)
-#endif
-{
- return((READ_REG32(DC_CURSOR_X) & 0x07FF) |
- ((READ_REG32(DC_CURSOR_Y) << 16) & 0x03FF0000));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_clip
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_cursor_clip(void)
-#else
-unsigned long gfx_get_cursor_clip(void)
-#endif
-{
- return(((READ_REG32(DC_CURSOR_X) >> 11) & 0x01F) |
- ((READ_REG32(DC_CURSOR_Y) << 5) & 0x1F0000));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_color
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_cursor_color(int color)
-#else
-unsigned long gfx_get_cursor_color(int color)
-#endif
-{
- unsigned long data;
- if (color)
- {
- WRITE_REG32(DC_PAL_ADDRESS, 0x101);
- }
- else
- {
- WRITE_REG32(DC_PAL_ADDRESS, 0x100);
- }
- data = READ_REG32(DC_PAL_DATA);
- data = ((data << 6) & 0x00FC0000) |
- ((data << 4) & 0x0000FC00) |
- ((data << 2) & 0x000000FC);
- return(data);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_compression_enable(void)
-#else
-int gfx_get_compression_enable(void)
-#endif
-{
- unsigned long gcfg;
- gcfg = READ_REG32(DC_GENERAL_CFG);
- if (gcfg & DC_GCFG_CMPE) return(1);
- else return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_compression_offset(void)
-#else
-unsigned long gfx_get_compression_offset(void)
-#endif
-{
- unsigned long offset;
- offset = READ_REG32(DC_CB_ST_OFFSET) & 0x003FFFFF;
- return(offset);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_pitch
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_compression_pitch(void)
-#else
-unsigned short gfx_get_compression_pitch(void)
-#endif
-{
- unsigned short pitch;
- pitch = (unsigned short) (READ_REG32(DC_LINE_DELTA) >> 12) & 0x07FF;
- return(pitch << 2);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_size
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu1_get_compression_size(void)
-#else
-unsigned short gfx_get_compression_size(void)
-#endif
-{
- unsigned short size;
- size = (unsigned short) ((READ_REG32(DC_BUF_SIZE) >> 9) & 0x7F) - 1;
- return((size << 2) + 16);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_valid_bit
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_valid_bit(int line)
-#else
-int gfx_get_valid_bit(int line)
-#endif
-{
- int valid;
- WRITE_REG32(MC_DR_ADD, line);
- valid = (int)READ_REG32(MC_DR_ACC) & 1;
- return(valid);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_offset (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_offset". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_display_video_offset(void)
-#else
-unsigned long gfx_get_display_video_offset(void)
-#endif
-{
- return(READ_REG32(DC_VID_ST_OFFSET) & 0x003FFFFF);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_size (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_size". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu1_get_display_video_size(void)
-#else
-unsigned long gfx_get_display_video_size(void)
-#endif
-{
- /* RETURN TOTAL SIZE, IN BYTES */
-
- return((READ_REG32(DC_BUF_SIZE) >> 10) & 0x000FFFC0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_priority_high
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu1_get_display_priority_high(void)
-#else
-int gfx_get_display_priority_high(void)
-#endif
-{
- if (READ_REG32(MC_MEM_CNTRL1) & MC_XBUSARB) return(1);
- else return(0);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu2.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu2.c
deleted file mode 100644
index 2b423183c..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu2.c
+++ /dev/null
@@ -1,2694 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/disp_gu2.c,v 1.2 2002/10/18 20:02:39 tsi Exp $ */
-/*
- * $Workfile: disp_gu2.c $
- *
- * This file contains routines for the second generation display controller.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-void gu2_enable_compression(void); /* private routine definition */
-void gu2_disable_compression(void); /* private routine definition */
-int gfx_set_display_control(int sync_polarities); /* private routine definition */
-void gfx_reset_video (void);
-
- /*-----------------------------------------------------------------------------
- * WARNING!!!! INACCURATE DELAY MECHANISM
- *
- * In an effort to keep the code self contained and operating system
- * independent, the delay loop just performs reads of a display controller
- * register. This time will vary for faster processors. The delay can always
- * be longer than intended, only effecting the time of the mode switch
- * (obviously want it to still be under a second). Problems with the hardware
- * only arise if the delay is not long enough.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_delay_milliseconds(unsigned long milliseconds)
-#else
-void gfx_delay_milliseconds(unsigned long milliseconds)
-#endif
-{
- /* ASSUME 300 MHz, 2 CLOCKS PER INCREMENT */
-
-# define RC_READS_PER_MILLISECOND 150000L
-
- unsigned long loop;
- loop = milliseconds * RC_READS_PER_MILLISECOND;
- while (loop-- > 0)
- {
- ;
- }
-}
-
-#if GFX_DISPLAY_DYNAMIC
-void gu2_delay_microseconds(unsigned long microseconds)
-#else
-void gfx_delay_microseconds(unsigned long microseconds)
-#endif
-{
- /* ASSUME 400 MHz, 2 CLOCKS PER INCREMENT */
-
-
- unsigned long loop_count = microseconds * 200;
-
- while (loop_count-- > 0)
- {
- ;
- }
-}
-
-/*-----------------------------------------------------------------------------
- * GFX_SET_DISPLAY_BPP
- *
- * This routine programs the bpp in the display controller.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_display_bpp(unsigned short bpp)
-#else
-int gfx_set_display_bpp(unsigned short bpp)
-#endif
-{
- unsigned long dcfg, lock;
-
- dcfg = READ_REG32 (MDC_DISPLAY_CFG) & ~(MDC_DCFG_DISP_MODE_MASK | MDC_DCFG_16BPP_MODE_MASK);
- lock = READ_REG32 (MDC_UNLOCK);
-
- switch (bpp)
- {
- case 12: dcfg |= (MDC_DCFG_DISP_MODE_16BPP | MDC_DCFG_12BPP); break;
- case 15: dcfg |= (MDC_DCFG_DISP_MODE_16BPP | MDC_DCFG_15BPP); break;
- case 16: dcfg |= (MDC_DCFG_DISP_MODE_16BPP | MDC_DCFG_16BPP); break;
- case 32: dcfg |= (MDC_DCFG_DISP_MODE_24BPP); break;
- case 8: dcfg |= (MDC_DCFG_DISP_MODE_8BPP); break;
- default: return GFX_STATUS_BAD_PARAMETER;
- }
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_DISPLAY_CFG, dcfg);
- WRITE_REG32 (MDC_UNLOCK, lock);
-
- /* SET BPP IN GRAPHICS PIPELINE */
-
- gfx_set_bpp (bpp);
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------
- * gu2_set_specified_mode (private routine)
- * This routine uses the parameters in the specified display mode structure
- * to program the display controller hardware.
- *-----------------------------------------------------------------------------
- */
-int gu2_set_specified_mode(DISPLAYMODE *pMode, int bpp)
-{
- unsigned long unlock, value;
- unsigned long gcfg, dcfg;
- unsigned long size, pitch;
- unsigned long vid_buf_size;
- unsigned long bpp_mask, temp, dv_size;
-
- /* CHECK WHETHER TIMING CHANGE IS ALLOWED */
- /* Flag used for locking also overrides timing change restriction */
-
- if (gfx_timing_lock && !(pMode->flags & GFX_MODE_LOCK_TIMING))
- return GFX_STATUS_ERROR;
-
- /* CLEAR PANNING OFFSETS */
-
- DeltaX = 0;
- DeltaY = 0;
-
- /* SET GLOBAL FLAG */
-
- if (pMode->flags & GFX_MODE_LOCK_TIMING)
- gfx_timing_lock = 1;
-
- /* CHECK FOR VALID BPP */
- /* As this function can be called directly from */
- /* gfx_set_display_timings, we must correct any */
- /* invalid bpp settings. */
-
- switch (bpp)
- {
- case 12: bpp_mask = 0x00000900; break;
- case 15: bpp_mask = 0x00000500; break;
- case 16: bpp_mask = 0x00000100; break;
- case 32: bpp_mask = 0x00000200; break;
- default: bpp_mask = 0x00000000; bpp = 8; break;
- }
-
- gbpp = bpp;
-
- /* DISABLE COMPRESSION */
-
- gu2_disable_compression();
-
- /* ALSO DISABLE VIDEO */
- /* Use private "reset video" routine to do all that is needed. */
- /* SC1200, for example, also disables the alpha blending regions. */
-
- gfx_reset_video();
-
- /* UNLOCK THE DISPLAY CONTROLLER REGISTERS */
-
- unlock = READ_REG32 (MDC_UNLOCK);
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
-
- /* READ THE CURRENT REGISTER VALUES */
-
- gcfg = READ_REG32 (MDC_GENERAL_CFG);
- dcfg = READ_REG32 (MDC_DISPLAY_CFG);
-
- /* BLANK THE DISPLAY IN THE DISPLAY FILTER */
-
- gfx_set_crt_enable (0);
-
- /* DISABLE THE TIMING GENERATOR */
-
- dcfg &= ~(unsigned long)MDC_DCFG_TGEN;
- WRITE_REG32 (MDC_DISPLAY_CFG, dcfg);
-
- /* DELAY: WAIT FOR PENDING MEMORY REQUESTS */
- /* This delay is used to make sure that all pending requests to the */
- /* memory controller have completed before disabling the FIFO load. */
-
- gfx_delay_milliseconds(5);
-
- /* DISABLE DISPLAY FIFO LOAD */
-
- gcfg &= ~(unsigned long)MDC_GCFG_DFLE;
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
-
- /* PRESERVE VIDEO INFORMATION */
-
- gcfg &= (unsigned long)(MDC_GCFG_YUVM | MDC_GCFG_VDSE);
- dcfg = 0;
-
- /* SET THE DOT CLOCK FREQUENCY */
- /* Mask off the divide by two bit (bit 31) */
-
- gfx_set_clock_frequency(pMode->frequency & 0x7FFFFFFF);
-
- /* DELAY: WAIT FOR THE PLL TO SETTLE */
- /* This allows the dot clock frequency that was just set to settle. */
-
- gfx_delay_milliseconds(10);
-
- /* SET THE GX DISPLAY CONTROLLER PARAMETERS */
-
- WRITE_REG32 (MDC_FB_ST_OFFSET, 0);
- WRITE_REG32 (MDC_CB_ST_OFFSET, 0);
- WRITE_REG32 (MDC_CURS_ST_OFFSET, 0);
- WRITE_REG32 (MDC_ICON_ST_OFFSET, 0);
-
- /* SET LINE SIZE AND PITCH */
- /* 1. Flat Panels must use the mode width and not */
- /* the timing width to set the pitch. */
- /* 2. Mode sets will use a pitch that is aligned */
- /* on a 1K boundary to preserve legacy. The */
- /* pitch can be overridden by a subsequent call */
- /* to gfx_set_display_pitch. */
-
- if (PanelEnable)
- size = ModeWidth;
- else
- size = pMode->hactive;
-
- if (bpp > 8) size <<= 1;
- if (bpp > 16) size <<= 1;
-
- pitch = 1024;
- dv_size = MDC_DV_LINE_SIZE_1024;
-
- if (size > 1024)
- {
- pitch = 2048;
- dv_size = MDC_DV_LINE_SIZE_2048;
- }
- if (size > 2048)
- {
- pitch = 4096;
- dv_size = MDC_DV_LINE_SIZE_4096;
- }
- if (size > 4096)
- {
- pitch = 8192;
- dv_size = MDC_DV_LINE_SIZE_8192;
- }
- WRITE_REG32(MDC_GFX_PITCH, pitch >> 3);
-
- /* WRITE DIRTY/VALID CONTROL WITH LINE LENGTH */
-
- temp = READ_REG32 (MDC_DV_CTL);
- WRITE_REG32 (MDC_DV_CTL, (temp & ~MDC_DV_LINE_SIZE_MASK) | dv_size);
-
- if (PanelEnable)
- {
- size = pMode->hactive;
- if (bpp > 8) size <<= 1;
- if (bpp > 16) size <<= 1;
- }
-
- /* SAVE PREVIOUSLY STORED VIDEO LINE SIZE */
-
- vid_buf_size = READ_REG32(MDC_LINE_SIZE) & 0xFF000000;
-
- /* ADD 2 TO SIZE FOR POSSIBLE START ADDRESS ALIGNMENTS */
-
- WRITE_REG32 (MDC_LINE_SIZE, ((size >> 3) + 2) | vid_buf_size);
-
-
- /* ALWAYS ENABLE VIDEO AND GRAPHICS DATA */
- /* These bits are relics from a previous design and */
- /* should always be enabled. */
-
- dcfg |= (unsigned long)(MDC_DCFG_VDEN | MDC_DCFG_GDEN);
-
- /* SET PIXEL FORMAT */
-
- dcfg |= bpp_mask;
-
- /* ENABLE TIMING GENERATOR, TIM. REG. UPDATES, PALETTE BYPASS */
- /* AND VERT. INT. SELECT */
-
- dcfg |= (unsigned long)(MDC_DCFG_TGEN | MDC_DCFG_TRUP | MDC_DCFG_PALB | MDC_DCFG_VISL);
-
- /* DISABLE ADDRESS MASKS */
-
- dcfg |= MDC_DCFG_A20M;
- dcfg |= MDC_DCFG_A18M;
-
- /* SET FIFO PRIORITIES AND DISPLAY FIFO LOAD ENABLE */
- /* Set the priorities higher for high resolution modes. */
-
- if (pMode->hactive > 1024 || bpp == 32)
- gcfg |= 0x000A901;
- else
- gcfg |= 0x0006501;
-
-
- /* ENABLE FLAT PANEL CENTERING */
- /* For panel modes having a resolution smaller than the */
- /* panel resolution, turn on data centering. */
-
- if (PanelEnable && ModeWidth < PanelWidth)
- dcfg |= MDC_DCFG_DCEN;
-
- /* COMBINE AND SET TIMING VALUES */
-
- value = (unsigned long) (pMode->hactive - 1) |
- (((unsigned long) (pMode->htotal - 1)) << 16);
- WRITE_REG32(MDC_H_ACTIVE_TIMING, value);
- value = (unsigned long) (pMode->hblankstart - 1) |
- (((unsigned long) (pMode->hblankend - 1)) << 16);
- WRITE_REG32(MDC_H_BLANK_TIMING, value);
- value = (unsigned long) (pMode->hsyncstart - 1) |
- (((unsigned long) (pMode->hsyncend - 1)) << 16);
- WRITE_REG32(MDC_H_SYNC_TIMING, value);
- value = (unsigned long) (pMode->vactive - 1) |
- (((unsigned long) (pMode->vtotal - 1)) << 16);
- WRITE_REG32(MDC_V_ACTIVE_TIMING, value);
- value = (unsigned long) (pMode->vblankstart - 1) |
- (((unsigned long) (pMode->vblankend - 1)) << 16);
- WRITE_REG32(MDC_V_BLANK_TIMING, value);
- value = (unsigned long) (pMode->vsyncstart - 1) |
- (((unsigned long) (pMode->vsyncend - 1)) << 16);
- WRITE_REG32(MDC_V_SYNC_TIMING, value);
-
- WRITE_REG32 (MDC_DISPLAY_CFG, dcfg);
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
-
- /* CONFIGURE DISPLAY OUTPUT FROM VIDEO PROCESSOR */
-
- gfx_set_display_control (((pMode->flags & GFX_MODE_NEG_HSYNC) ? 1 : 0) |
- ((pMode->flags & GFX_MODE_NEG_VSYNC) ? 2 : 0));
-
- /* RESTORE VALUE OF MDC_UNLOCK */
-
- WRITE_REG32(MDC_UNLOCK, unlock);
-
- /* RESET THE PITCH VALUES IN THE GP */
-
- gfx_reset_pitch ((unsigned short)pitch);
-
- gfx_set_bpp ((unsigned short)bpp);
-
- return GFX_STATUS_OK;
-}
-
- /*----------------------------------------------------------------------------
- * GFX_IS_DISPLAY_MODE_SUPPORTED
- *
- * This routine sets the specified display mode.
- *
- * Returns 1 if successful, 0 if mode could not be set.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_is_display_mode_supported(int xres, int yres, int bpp, int hz)
-#else
-int gfx_is_display_mode_supported(int xres, int yres, int bpp, int hz)
-#endif
-{
- int mode;
- unsigned long hz_flag = 0, bpp_flag = 0;
-
- /* SET FLAGS TO MATCH REFRESH RATE */
-
- if (hz == 56) hz_flag = GFX_MODE_56HZ;
- if (hz == 60) hz_flag = GFX_MODE_60HZ;
- if (hz == 70) hz_flag = GFX_MODE_70HZ;
- if (hz == 72) hz_flag = GFX_MODE_72HZ;
- if (hz == 75) hz_flag = GFX_MODE_75HZ;
- if (hz == 85) hz_flag = GFX_MODE_85HZ;
-
- /* SET BPP FLAGS TO LIMIT MODE SELECTION */
-
- switch (bpp)
- {
- case 8: bpp_flag = GFX_MODE_8BPP; break;
- case 12: bpp_flag = GFX_MODE_12BPP; break;
- case 15: bpp_flag = GFX_MODE_15BPP; break;
- case 16: bpp_flag = GFX_MODE_16BPP; break;
- case 32: bpp_flag = GFX_MODE_24BPP; break;
- default: return (-1);
- }
-
- /* LOOP THROUGH THE AVAILABLE MODES TO FIND A MATCH */
-
- for (mode = 0; mode < NUM_RC_DISPLAY_MODES; mode++)
- {
- if ((DisplayParams[mode].hactive == (unsigned short)xres) &&
- (DisplayParams[mode].vactive == (unsigned short)yres) &&
- (DisplayParams[mode].flags & hz_flag) &&
- (DisplayParams[mode].flags & bpp_flag))
- {
-
- /* REDCLOUD DOES NOT SUPPORT EMULATED VGA MODES */
-
- if ((DisplayParams[mode].flags & GFX_MODE_PIXEL_DOUBLE) ||
- (DisplayParams[mode].flags & GFX_MODE_LINE_DOUBLE))
- continue;
-
- /* SET THE DISPLAY CONTROLLER FOR THE SELECTED MODE */
-
- return(mode);
- }
- }
- return(-1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_set_display_mode
- *
- * This routine sets the specified display mode.
- *
- * Returns 1 if successful, 0 if mode could not be set.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_display_mode(int xres, int yres, int bpp, int hz)
-#else
-int gfx_set_display_mode(int xres, int yres, int bpp, int hz)
-#endif
-{
- int mode;
-
- /* DISABLE FLAT PANEL */
- /* Flat Panel settings are enabled by the function gfx_set_fixed_timings */
- /* and disabled by gfx_set_display_mode. */
-
- PanelEnable = 0;
-
- mode = gfx_is_display_mode_supported(xres, yres, bpp, hz);
- if(mode >= 0)
- {
- if (gu2_set_specified_mode(&DisplayParams[mode], bpp) == GFX_STATUS_OK)
- return(1);
- }
- return(0);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_SET_DISPLAY_TIMINGS
- *
- * This routine sets the display controller mode using the specified timing
- * values (as opposed to using the tables internal to Durango).
- *
- * Returns GFX_STATUS_OK ON SUCCESS, GFX_STATUS_ERROR otherwise.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_display_timings(unsigned short bpp, unsigned short flags,
- unsigned short hactive, unsigned short hblankstart,
- unsigned short hsyncstart, unsigned short hsyncend,
- unsigned short hblankend, unsigned short htotal,
- unsigned short vactive, unsigned short vblankstart,
- unsigned short vsyncstart, unsigned short vsyncend,
- unsigned short vblankend, unsigned short vtotal,
- unsigned long frequency)
-#else
-int gfx_set_display_timings(unsigned short bpp, unsigned short flags,
- unsigned short hactive, unsigned short hblankstart,
- unsigned short hsyncstart, unsigned short hsyncend,
- unsigned short hblankend, unsigned short htotal,
- unsigned short vactive, unsigned short vblankstart,
- unsigned short vsyncstart, unsigned short vsyncend,
- unsigned short vblankend, unsigned short vtotal,
- unsigned long frequency)
-#endif
-{
- /* SET MODE STRUCTURE WITH SPECIFIED VALUES */
-
- gfx_display_mode.flags = 0;
- if (flags & 1) gfx_display_mode.flags |= GFX_MODE_NEG_HSYNC;
- if (flags & 2) gfx_display_mode.flags |= GFX_MODE_NEG_VSYNC;
- if (flags & 0x1000) gfx_display_mode.flags |= GFX_MODE_LOCK_TIMING;
- gfx_display_mode.hactive = hactive;
- gfx_display_mode.hblankstart = hblankstart;
- gfx_display_mode.hsyncstart = hsyncstart;
- gfx_display_mode.hsyncend = hsyncend;
- gfx_display_mode.hblankend = hblankend;
- gfx_display_mode.htotal = htotal;
- gfx_display_mode.vactive = vactive;
- gfx_display_mode.vblankstart = vblankstart;
- gfx_display_mode.vsyncstart = vsyncstart;
- gfx_display_mode.vsyncend = vsyncend;
- gfx_display_mode.vblankend = vblankend;
- gfx_display_mode.vtotal = vtotal;
- gfx_display_mode.frequency = frequency;
-
- /* CALL ROUTINE TO SET MODE */
-
- return (gu2_set_specified_mode(&gfx_display_mode, bpp));
-}
-
-/*----------------------------------------------------------------------------
- * GFX_SET_VTOTAL
- *
- * This routine sets the display controller vertical total to
- * "vtotal". As a side effect it also sets vertical blank end.
- * It should be used when only this value needs to be changed,
- * due to speed considerations.
- *
- * Note: it is the caller's responsibility to make sure that
- * a legal vtotal is used, i.e. that "vtotal" is greater than or
- * equal to vsync end.
- *
- * Always returns 0.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_vtotal(unsigned short vtotal)
-#else
-int gfx_set_vtotal(unsigned short vtotal)
-#endif
-{
- unsigned long unlock, dcfg, vactive, vblank;
-
- /* UNLOCK THE DISPLAY CONTROLLER REGISTERS */
-
- unlock = READ_REG32(MDC_UNLOCK);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
-
- /* READ THE CURRENT RC VALUES */
-
- dcfg = READ_REG32 (MDC_DISPLAY_CFG);
- vactive = READ_REG32 (MDC_V_ACTIVE_TIMING);
- vblank = READ_REG32 (MDC_V_BLANK_TIMING);
-
- /* DISABLE TIMING REGISTER UPDATES */
-
- WRITE_REG32 (MDC_DISPLAY_CFG, dcfg & ~(unsigned long)MDC_DCFG_TRUP);
-
- /* WRITE NEW TIMING VALUES */
-
- WRITE_REG32 (MDC_V_ACTIVE_TIMING, (vactive & MDC_VAT_VA_MASK) | (unsigned long)(vtotal - 1) << 16);
- WRITE_REG32 (MDC_V_BLANK_TIMING, (vblank & MDC_VBT_VBS_MASK) | (unsigned long)(vtotal - 1) << 16);
-
- /* RESTORE OLD RC VALUES */
-
- WRITE_REG32 (MDC_DISPLAY_CFG, dcfg);
- WRITE_REG32 (MDC_UNLOCK, unlock);
-
- return (0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_pitch
- *
- * This routine sets the pitch of the frame buffer to the specified value.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_pitch(unsigned short pitch)
-#else
-void gfx_set_display_pitch(unsigned short pitch)
-#endif
-{
- unsigned long value = 0;
- unsigned long lock = READ_REG32(MDC_UNLOCK);
-
- value = READ_REG32(MDC_GFX_PITCH) & 0xFFFF0000;
- value |= (pitch >> 3);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_GFX_PITCH, value);
-
- /* SET RENDERING PITCHES TO MATCH */
-
- gfx_reset_pitch(pitch);
-
- /* SET THE FRAME DIRTY MODE */
- /* Non-standard pitches, i.e. pitches that */
- /* are not 1K, 2K or 4K must mark the entire */
- /* frame as dirty when writing to the frame */
- /* buffer. */
-
- value = READ_REG32 (MDC_GENERAL_CFG);
-
- if (pitch == 1024 || pitch == 2048 || pitch == 4096 || pitch == 8192)
- value &= ~(unsigned long)(MDC_GCFG_FDTY);
- else
- value |= (unsigned long)(MDC_GCFG_FDTY);
-
- WRITE_REG32 (MDC_GENERAL_CFG, value);
- WRITE_REG32(MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_offset
- *
- * This routine sets the start address of the frame buffer. It is
- * typically used to pan across a virtual desktop (frame buffer larger than
- * the displayed screen) or to flip the display between multiple buffers.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_offset(unsigned long offset)
-#else
-void gfx_set_display_offset(unsigned long offset)
-#endif
-{
- /* UPDATE FRAME BUFFER OFFSET */
- unsigned long lock;
- lock = READ_REG32(MDC_UNLOCK);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
-
-
- /* START ADDRESS EFFECTS DISPLAY COMPRESSION */
- /* Disable compression for non-zero start addresss values. */
- /* Enable compression if offset is zero and comression is intended to */
- /* be enabled from a previous call to "gfx_set_compression_enable". */
- /* Compression should be disabled BEFORE the offset is changed */
- /* and enabled AFTER the offset is changed. */
-
- if (offset == 0)
- {
- WRITE_REG32(MDC_FB_ST_OFFSET, offset);
- if (gfx_compression_enabled)
- {
- /* WAIT FOR THE OFFSET TO BE LATCHED */
- gfx_wait_vertical_blank ();
- gu2_enable_compression();
- }
- }
- else
- {
- /* ONLY DISABLE COMPRESSION ONCE */
-
- if (gfx_compression_active)
- gu2_disable_compression();
-
- WRITE_REG32(MDC_FB_ST_OFFSET, offset);
- }
-
- WRITE_REG32(MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_palette_entry
- *
- * This routine sets an palette entry in the display controller.
- * A 32-bit X:R:G:B value.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_display_palette_entry(unsigned long index, unsigned long palette)
-#else
-int gfx_set_display_palette_entry(unsigned long index, unsigned long palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_REG32(MDC_PAL_ADDRESS, index);
- WRITE_REG32(MDC_PAL_DATA, palette);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_palette
- *
- * This routine sets the entire palette in the display controller.
- * A pointer is provided to a 256 entry table of 32-bit X:R:G:B values.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_display_palette(unsigned long *palette)
-#else
-int gfx_set_display_palette(unsigned long *palette)
-#endif
-{
- unsigned long i;
- WRITE_REG32(MDC_PAL_ADDRESS, 0);
-
- if (palette)
- {
- for (i = 0; i < 256; i++)
- {
- WRITE_REG32(MDC_PAL_DATA, palette[i]);
- }
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_enable
- *
- * This routine enables or disables the hardware cursor.
- *
- * WARNING: The cursor start offset must be set by setting the cursor
- * position before calling this routine to assure that memory reads do not
- * go past the end of graphics memory (this can hang GXm).
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_cursor_enable(int enable)
-#else
-void gfx_set_cursor_enable(int enable)
-#endif
-{
- unsigned long unlock, gcfg;
-
- /* SET OR CLEAR CURSOR ENABLE BIT */
-
- unlock = READ_REG32(MDC_UNLOCK);
- gcfg = READ_REG32(MDC_GENERAL_CFG);
- if (enable) gcfg |= MDC_GCFG_CURE;
- else gcfg &= ~(MDC_GCFG_CURE);
-
- /* WRITE NEW REGISTER VALUE */
-
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_GENERAL_CFG, gcfg);
- WRITE_REG32(MDC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_colors
- *
- * This routine sets the colors of the hardware cursor.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
-#else
-void gfx_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
-#endif
-{
- /* SET CURSOR COLORS */
-
- WRITE_REG32(MDC_PAL_ADDRESS, 0x100);
- WRITE_REG32(MDC_PAL_DATA, bkcolor);
- WRITE_REG32(MDC_PAL_DATA, fgcolor);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_position
- *
- * This routine sets the position of the hardware cusror. The starting
- * offset of the cursor buffer must be specified so that the routine can
- * properly clip scanlines if the cursor is off the top of the screen.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_cursor_position(unsigned long memoffset,
- unsigned short xpos, unsigned short ypos,
- unsigned short xhotspot, unsigned short yhotspot)
-#else
-void gfx_set_cursor_position(unsigned long memoffset,
- unsigned short xpos, unsigned short ypos,
- unsigned short xhotspot, unsigned short yhotspot)
-#endif
-{
- unsigned long unlock;
-
- short x = (short) xpos - (short) xhotspot;
- short y = (short) ypos - (short) yhotspot;
- short xoffset = 0;
- short yoffset = 0;
- if (x < -63) return;
- if (y < -63) return;
- if (x < 0) { xoffset = -x; x = 0; }
- if (y < 0) { yoffset = -y; y = 0; }
- memoffset += (unsigned long) yoffset << 4;
-
- if (PanelEnable)
- {
- if (( ModeWidth > PanelWidth) || (ModeHeight > PanelHeight))
- {
- gfx_enable_panning(xpos, ypos);
- x = x - (unsigned short)panelLeft;
- y = y - (unsigned short)panelTop;
- }
- }
-
- /* SET CURSOR POSITION */
-
- unlock = READ_REG32(MDC_UNLOCK);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_CURS_ST_OFFSET, memoffset);
- WRITE_REG32(MDC_CURSOR_X, (unsigned long) x |
- (((unsigned long) xoffset) << 11));
- WRITE_REG32(MDC_CURSOR_Y, (unsigned long) y |
- (((unsigned long) yoffset) << 11));
- WRITE_REG32(MDC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_shape32
- *
- * This routine loads 32x32 cursor data into the cursor buffer in graphics memory.
- * As the Redcloud cursor is actually 64x64, we must pad the outside of the
- * cursor data with transparent pixels.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_cursor_shape32(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-#else
-void gfx_set_cursor_shape32(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-#endif
-{
- int i;
-
- for (i = 0; i < 32; i++)
- {
- /* EVEN QWORDS CONTAIN THE AND MASK */
-
- WRITE_FB32 (memoffset, 0xFFFFFFFF);
- WRITE_FB32 (memoffset + 4, andmask[i]);
-
- /* ODD QWORDS CONTAIN THE XOR MASK */
-
- WRITE_FB32 (memoffset + 8, 0x00000000);
- WRITE_FB32 (memoffset + 12, xormask[i]);
-
- memoffset += 16;
- }
-
- /* FILL THE LOWER HALF OF THE BUFFER WITH TRANSPARENT PIXELS */
-
- for (i = 0; i < 32; i++)
- {
- WRITE_FB32 (memoffset, 0xFFFFFFFF);
- WRITE_FB32 (memoffset + 4, 0xFFFFFFFF);
- WRITE_FB32 (memoffset + 8, 0x00000000);
- WRITE_FB32 (memoffset + 12, 0x00000000);
-
- memoffset += 16;
- }
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_shape64
- *
- * This routine loads 64x64 cursor data into the cursor buffer in graphics memory.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_cursor_shape64(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-#else
-void gfx_set_cursor_shape64(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-#endif
-{
- int i;
-
- for (i = 0; i < 128; i += 2)
- {
- /* EVEN QWORDS CONTAIN THE AND MASK */
- /* We invert the dwords to prevent the calling */
- /* application from having to think in terms of Qwords. */
- /* The hardware data order is actually 63:0, or 31:0 of */
- /* the second dword followed by 31:0 of the first dword. */
-
- WRITE_FB32 (memoffset, andmask[i + 1]);
- WRITE_FB32 (memoffset + 4, andmask[i]);
-
- /* ODD QWORDS CONTAIN THE XOR MASK */
-
- WRITE_FB32 (memoffset + 8, xormask[i + 1]);
- WRITE_FB32 (memoffset + 12, xormask[i]);
-
- memoffset += 16;
- }
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_enable
- *
- * This routine enables or disables the hardware icon. The icon position
- * and colors should be programmed prior to calling this routine for the
- * first time.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_icon_enable(int enable)
-#else
-void gfx_set_icon_enable(int enable)
-#endif
-{
- unsigned long unlock, gcfg;
-
- /* SET OR CLEAR ICON ENABLE BIT */
-
- unlock = READ_REG32(MDC_UNLOCK);
- gcfg = READ_REG32(MDC_GENERAL_CFG);
- if (enable) gcfg |= MDC_GCFG_ICNE;
- else gcfg &= ~(MDC_GCFG_ICNE);
-
- /* WRITE NEW REGISTER VALUE */
-
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_GENERAL_CFG, gcfg);
- WRITE_REG32(MDC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_colors
- *
- * This routine sets the three icon colors.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_icon_colors(unsigned long color0, unsigned long color1, unsigned long color2)
-#else
-void gfx_set_icon_colors(unsigned long color0, unsigned long color1, unsigned long color2)
-#endif
-{
- /* ICON COLORS LOCATED AT PALETTE INDEXES 102-104h */
-
- WRITE_REG32 (MDC_PAL_ADDRESS, 0x102);
-
- WRITE_REG32 (MDC_PAL_DATA, color0);
- WRITE_REG32 (MDC_PAL_DATA, color1);
- WRITE_REG32 (MDC_PAL_DATA, color2);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_position
- *
- * This routine sets the starting X coordinate for the hardware icon and the
- * memory offset for the icon buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_icon_position(unsigned long memoffset, unsigned short xpos)
-#else
-void gfx_set_icon_position(unsigned long memoffset, unsigned short xpos)
-#endif
-{
- unsigned long lock = READ_REG32 (MDC_UNLOCK);
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
-
- /* PROGRAM THE MEMORY OFFSET */
-
- WRITE_REG32 (MDC_ICON_ST_OFFSET, memoffset & 0x0FFFFFFF);
-
- /* PROGRAM THE XCOORDINATE */
-
- WRITE_REG32 (MDC_ICON_X, (unsigned long)(xpos & 0x07FF));
-
- WRITE_REG32 (MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_shape64
- *
- * This routine initializes the icon buffer according to the current mode.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_icon_shape64(unsigned long memoffset, unsigned long *andmask, unsigned long *xormask, unsigned int lines)
-#else
-void gfx_set_icon_shape64(unsigned long memoffset, unsigned long *andmask, unsigned long *xormask, unsigned int lines)
-#endif
-{
- unsigned short i, height;
-
- height = lines << 1;
-
- for (i = 0; i < height; i += 2)
- {
- /* EVEN QWORDS CONTAIN THE AND MASK */
- /* Swap dwords to hide qword constraint */
-
- WRITE_FB32 (memoffset, andmask[i + 1]);
- WRITE_FB32 (memoffset + 4, andmask[i]);
-
- /* ODD QWORDS CONTAIN THE XOR MASK */
-
- WRITE_FB32 (memoffset + 8, xormask[i + 1]);
- WRITE_FB32 (memoffset + 12, xormask[i]);
-
- memoffset += 16;
- }
-}
-
-/*---------------------------------------------------------------------------
- * gu2_enable_compression
- *
- * This is a private routine to this module (not exposed in the Durango API).
- * It enables display compression.
- *---------------------------------------------------------------------------
- */
-void gu2_enable_compression(void)
-{
- unsigned long unlock, gcfg, temp;
-
- /* DO NOT ENABLE IF START ADDRESS IS NOT ZERO */
-
- if (READ_REG32(MDC_FB_ST_OFFSET) & 0x0FFFFFFF)
- return;
-
- /* SET GLOBAL INDICATOR */
-
- gfx_compression_active = 1;
-
- /* CLEAR DIRTY/VALID BITS IN MEMORY CONTROLLER */
- /* Software is required to do this before enabling compression. */
- /* Don't want controller to think that old lines are still valid. */
- /* Writing a 1 to bit 0 of the DV Control register will force the */
- /* hardware to clear all the valid bits. */
-
- temp = READ_REG32 (MDC_DV_CTL);
- WRITE_REG32 (MDC_DV_CTL, temp | 0x00000001);
-
- /* TURN ON COMPRESSION CONTROL BITS */
-
- unlock = READ_REG32 (MDC_UNLOCK);
- gcfg = READ_REG32 (MDC_GENERAL_CFG);
- gcfg |= MDC_GCFG_CMPE | MDC_GCFG_DECE;
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
- WRITE_REG32 (MDC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gu2_disable_compression
- *
- * This is a private routine to this module (not exposed in the Durango API).
- * It disables display compression.
- *---------------------------------------------------------------------------
- */
-void gu2_disable_compression(void)
-{
- unsigned long unlock, gcfg;
-
- /* SET GLOBAL INDICATOR */
-
- gfx_compression_active = 0;
-
- /* TURN OFF COMPRESSION CONTROL BITS */
-
- unlock = READ_REG32(MDC_UNLOCK);
- gcfg = READ_REG32(MDC_GENERAL_CFG);
- gcfg &= ~(MDC_GCFG_CMPE | MDC_GCFG_DECE);
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
- WRITE_REG32 (MDC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_enable
- *
- * This routine enables or disables display compression.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_compression_enable(int enable)
-#else
-int gfx_set_compression_enable(int enable)
-#endif
-{
- /* SET GLOBAL VARIABLE FOR INDENDED STATE */
- /* Compression can only be enabled for non-zero start address values. */
- /* Keep state to enable compression on start address changes. */
-
- gfx_compression_enabled = enable;
- if (enable) gu2_enable_compression();
- else gu2_disable_compression();
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_offset
- *
- * This routine sets the base offset for the compression buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_compression_offset(unsigned long offset)
-#else
-int gfx_set_compression_offset(unsigned long offset)
-#endif
-{
- unsigned long lock;
-
- /* MUST BE 16-BYTE ALIGNED FOR REDCLOUD */
-
- if (offset & 0x0F) return(1);
-
- /* SET REGISTER VALUE */
-
- lock = READ_REG32(MDC_UNLOCK);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_CB_ST_OFFSET, offset & 0x0FFFFFFF);
- WRITE_REG32(MDC_UNLOCK, lock);
-
- return (0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_pitch
- *
- * This routine sets the pitch, in bytes, of the compression buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_compression_pitch(unsigned short pitch)
-#else
-int gfx_set_compression_pitch(unsigned short pitch)
-#endif
-{
- unsigned long lock, line_delta;
-
- lock = READ_REG32(MDC_UNLOCK);
-
- /* SET REGISTER VALUE */
-
- line_delta = READ_REG32(MDC_GFX_PITCH) & 0x0000FFFF;
- line_delta |= (((unsigned long)pitch << 13) & 0xFFFF0000);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_GFX_PITCH, line_delta);
- WRITE_REG32(MDC_UNLOCK, lock);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_size
- *
- * This routine sets the line size of the compression buffer, which is the
- * maximum number of bytes allowed to store a compressed line.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_compression_size(unsigned short size)
-#else
-int gfx_set_compression_size(unsigned short size)
-#endif
-{
- unsigned long lock, buf_size;
-
- /* SUBTRACT 32 FROM SIZE */
- /* The display controller will actually write */
- /* 4 extra QWords. So, if we assume that "size" */
- /* refers to the allocated size, we must subtract */
- /* 32 bytes. */
-
- size -= 32;
-
- /* SET REGISTER VALUE */
-
- lock = READ_REG32(MDC_UNLOCK);
- buf_size = READ_REG32(MDC_LINE_SIZE) & 0xFF80FFFF;
- buf_size |= ((((unsigned long)size >> 3) + 1) & 0x7F) << 16;
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_LINE_SIZE, buf_size);
- WRITE_REG32(MDC_UNLOCK, lock);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_format (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_format". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_format(unsigned long format)
-#else
-void gfx_set_display_video_format(unsigned long format)
-#endif
-{
- unsigned long gcfg, lock;
-
- lock = READ_REG32 (MDC_UNLOCK);
- gcfg = READ_REG32 (MDC_GENERAL_CFG);
-
- switch (format)
- {
- case VIDEO_FORMAT_Y0Y1Y2Y3:
- case VIDEO_FORMAT_Y3Y2Y1Y0:
- case VIDEO_FORMAT_Y1Y0Y3Y2:
- case VIDEO_FORMAT_Y1Y2Y3Y0:
-
- gcfg |= MDC_GCFG_YUVM;
- break;
-
- default:
-
- gcfg &= ~MDC_GCFG_YUVM;
- break;
- }
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
- WRITE_REG32 (MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_enable". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_enable(int enable)
-#else
-void gfx_set_display_video_enable(int enable)
-#endif
-{
- unsigned long lock, gcfg, dcfg;
-
- /* READ CURRENT VALUES */
-
- lock = READ_REG32 (MDC_UNLOCK);
- gcfg = READ_REG32 (MDC_GENERAL_CFG);
- dcfg = READ_REG32 (MDC_DISPLAY_CFG);
-
- /* SET OR CLEAR VIDEO ENABLE IN GENERAL_CFG */
-
- if (enable) gcfg |= MDC_GCFG_VIDE;
- else gcfg &= ~MDC_GCFG_VIDE;
-
- /* WRITE REGISTER */
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
- WRITE_REG32 (MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_size (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_size". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_size(unsigned short width, unsigned short height)
-#else
-void gfx_set_display_video_size(unsigned short width, unsigned short height)
-#endif
-{
- unsigned long lock, value, yuv_420;
-
- /* READ CURRENT VALUES */
-
- lock = READ_REG32 (MDC_UNLOCK);
- value = READ_REG32 (MDC_LINE_SIZE) & 0x00FFFFFF;
- yuv_420 = READ_REG32 (MDC_GENERAL_CFG) & MDC_GCFG_YUVM;
-
- /* LINE WIDTH IS 1/4 FOR 4:2:0 VIDEO */
- /* All data must be 32-byte aligned. */
-
- if (yuv_420)
- {
- width >>= 1;
- width = (width + 7) & 0xFFF8;
- }
- else
- {
- width <<= 1;
- width = (width + 31) & 0xFFE0;
- }
-
- /* ONLY THE LINE SIZE IS PROGRAMMED IN THE DISPLAY CONTROLLER */
-
- value |= ((unsigned long)width << 21);
-
- /* WRITE THE REGISTER */
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_LINE_SIZE, value);
- WRITE_REG32 (MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_offset (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_offset". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_offset(unsigned long offset)
-#else
-void gfx_set_display_video_offset(unsigned long offset)
-#endif
-{
- unsigned long lock;
-
- lock = READ_REG32(MDC_UNLOCK);
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- offset &= 0x0FFFFFF0;
- WRITE_REG32(MDC_VID_Y_ST_OFFSET, offset);
- WRITE_REG32(MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_yuv_offsets (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by gfx_set_video_yuv_offsets. It abstracts the version
- * of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_yuv_offsets(unsigned long yoffset, unsigned long uoffset,
- unsigned long voffset)
-#else
-void gfx_set_display_video_yuv_offsets(unsigned long yoffset, unsigned long uoffset,
- unsigned long voffset)
-#endif
-{
- unsigned long lock;
-
- lock = READ_REG32(MDC_UNLOCK);
-
- yoffset &= 0x0FFFFFF0;
- uoffset &= 0x0FFFFFF8;
- voffset &= 0x0FFFFFF8;
-
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_VID_Y_ST_OFFSET, yoffset);
- WRITE_REG32(MDC_VID_U_ST_OFFSET, uoffset);
- WRITE_REG32(MDC_VID_V_ST_OFFSET, voffset);
- WRITE_REG32(MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_yuv_pitch (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by gfx_set_video_yuv_pitch. It abstracts the version
- * of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_yuv_pitch (unsigned long ypitch, unsigned long uvpitch)
-#else
-void gfx_set_display_video_yuv_pitch (unsigned long ypitch, unsigned long uvpitch)
-#endif
-{
- unsigned long lock, pitch;
-
- lock = READ_REG32(MDC_UNLOCK);
-
- pitch = ((uvpitch << 13) & 0xFFFF0000) | ((ypitch >> 3) & 0xFFFF);
-
- WRITE_REG32(MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32(MDC_VID_YUV_PITCH, pitch);
- WRITE_REG32(MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_downscale (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by gfx_set_video_vertical_downscale. It abstracts the version
- * of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_downscale (unsigned short srch, unsigned short dsth)
-#else
-void gfx_set_display_video_downscale (unsigned short srch, unsigned short dsth)
-#endif
-{
- unsigned long lock, delta;
-
- lock = READ_REG32 (MDC_UNLOCK);
-
- /* CLIP SCALING LIMITS */
- /* Upscaling is performed in a separate function. */
- /* Maximum scale ratio is 1/2. */
-
- if (dsth > srch || dsth <= (srch >> 1))
- delta = 0;
- else
- delta = (((unsigned long)srch << 14) / (unsigned long)dsth) << 18;
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_VID_DS_DELTA, delta);
- WRITE_REG32 (MDC_UNLOCK, lock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_downscale_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_vertical_downscale_enable". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_set_display_video_vertical_downscale_enable(int enable)
-#else
-void gfx_set_display_video_vertical_downscale_enable(int enable)
-#endif
-{
- unsigned long gcfg, unlock;
-
- unlock = READ_REG32 (MDC_UNLOCK);
- gcfg = READ_REG32 (MDC_GENERAL_CFG);
-
- if (enable) gcfg |= MDC_GCFG_VDSE;
- else gcfg &= ~MDC_GCFG_VDSE;
-
- WRITE_REG32 (MDC_UNLOCK, MDC_UNLOCK_VALUE);
- WRITE_REG32 (MDC_GENERAL_CFG, gcfg);
- WRITE_REG32 (MDC_UNLOCK, unlock);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_timing_active
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_test_timing_active(void)
-#else
-int gfx_test_timing_active(void)
-#endif
-{
- if (READ_REG32 (MDC_DISPLAY_CFG) & MDC_DCFG_TGEN)
- return(1);
- else return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_vertical_active
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_test_vertical_active(void)
-#else
-int gfx_test_vertical_active(void)
-#endif
-{
- if (READ_REG32 (MDC_LINE_CNT_STATUS) & MDC_LNCNT_VNA)
- return(0);
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_wait_vertical_blank
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_wait_vertical_blank(void)
-#else
-int gfx_wait_vertical_blank(void)
-#endif
-{
- if (gfx_test_timing_active())
- {
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_enable_panning
- *
- * This routine enables the panning when the Mode is bigger than the panel
- * size.
- *---------------------------------------------------------------------------
- */
-
-#if GFX_DISPLAY_DYNAMIC
-void gu2_enable_panning( int x, int y)
-#else
-void gfx_enable_panning(int x, int y)
-#endif
-{
- unsigned long modeBytesPerPixel;
- unsigned long modeBytesPerScanline = 0;
- unsigned long startAddress = 0;
-
- modeBytesPerPixel = (gbpp + 7)/8;
- modeBytesPerScanline = (((ModeWidth + 1023) / 1024) * 1024) * modeBytesPerPixel;
-
- /* TEST FOR NO-WORK */
-
- if (x >= DeltaX && x < ((int)PanelWidth + DeltaX) &&
- y >= DeltaY && y < ((int)PanelHeight + DeltaY))
- return;
-
-
- /* ADJUST PANNING VARIABLES WHEN CURSOR EXCEEDS BOUNDARY */
- /* Test the boundary conditions for each coordinate and update */
- /* all variables and the starting offset accordingly. */
-
- if (x < DeltaX)
- DeltaX = x;
-
- else if (x >= (DeltaX + (int)PanelWidth))
- DeltaX = x - (int)PanelWidth + 1;
-
- if (y < DeltaY)
- DeltaY = y;
-
- else if (y >= (DeltaY + (int)PanelHeight))
- DeltaY = y - (int)PanelHeight + 1;
-
-
- /* CALCULATE THE START OFFSET */
-
- startAddress = (DeltaX * modeBytesPerPixel) + (DeltaY * modeBytesPerScanline);
-
- gfx_set_display_offset(startAddress);
-
- /* SET PANEL COORDINATES */
- /* Panel's x position must be DWORD aligned */
-
- panelTop = DeltaY;
- panelLeft = DeltaX * modeBytesPerPixel;
-
- if (panelLeft & 3)
- panelLeft = (panelLeft & 0xFFFFFFFC) + 4;
-
- panelLeft /= modeBytesPerPixel;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_fixed_timings
- *---------------------------------------------------------------------------
- */
-
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_fixed_timings(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#else
-int gfx_set_fixed_timings(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#endif
-{
- int mode;
-
- ModeWidth = width;
- ModeHeight = height;
- PanelWidth = (unsigned short)panelResX;
- PanelHeight = (unsigned short)panelResY;
- PanelEnable = 1;
-
- /* LOOP THROUGH THE AVAILABLE MODES TO FIND A MATCH */
- for (mode = 0; mode < NUM_FIXED_TIMINGS_MODES; mode++) {
- if ((FixedParams[mode].xres == width) &&
- (FixedParams[mode].yres == height) &&
- (FixedParams[mode].panelresx == panelResX) &&
- (FixedParams[mode].panelresy == panelResY)) {
-
- /* SET THE 92xx FOR THE SELECTED MODE */
- FIXEDTIMINGS *fmode = &FixedParams[mode];
-
- gfx_set_display_timings(bpp, 3, fmode->hactive,fmode->hblankstart, fmode->hsyncstart, fmode->hsyncend,
- fmode->hblankend, fmode->htotal, fmode->vactive, fmode->vblankstart,
- fmode->vsyncstart, fmode->vsyncend, fmode->vblankend, fmode->vtotal, fmode->frequency);
-
- return(1);
- } /* end if() */
- } /* end for() */
-
- return(-1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_panel_present
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_set_panel_present(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#else
-int gfx_set_panel_present(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-#endif
-{
- /* SET VALID BPP */
- /* 16BPP is the default. */
-
- if (bpp != 8 && bpp != 12 && bpp != 15 && bpp != 16 && bpp != 32)
- bpp = 16;
-
- /* RECORD PANEL PARAMETERS */
- /* This routine does not touch any panel timings. It is used when custom panel */
- /* settings are set up in advance by the BIOS or an application, but the */
- /* application still requires access to other panel functionality provided by */
- /* Durango (i.e. panning). */
-
- ModeWidth = width;
- ModeHeight = height;
- PanelWidth = (unsigned short)panelResX;
- PanelHeight = (unsigned short)panelResY;
- PanelEnable = 1;
- gbpp = bpp;
-
- /* PROGRAM THE BPP IN THE DISPLAY CONTROLLER */
-
- gfx_set_display_bpp (bpp);
-
- return(GFX_STATUS_OK);
-}
-
-/* THE FOLLOWING READ ROUTINES ARE ALWAYS INCLUDED: */
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_pitch
- *
- * This routine returns the current pitch of the frame buffer, in bytes.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_display_pitch(void)
-#else
-unsigned short gfx_get_display_pitch(void)
-#endif
-{
- return ((unsigned short)(READ_REG32 (MDC_GFX_PITCH) & 0x0000FFFF) << 3);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_mode_frequency_supported
- *
- * This routine examines if the requested mode with pixel frequency is supported.
- *
- * Returns >0 if successful , <0 if freq. could not be found and matched.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_mode_frequency_supported(int xres, int yres, int bpp, unsigned long frequency)
-#else
-int gfx_mode_frequency_supported(int xres, int yres, int bpp, unsigned long frequency)
-#endif
-{
- int index;
- unsigned long value;
- unsigned long bpp_flag = 0;
-
- switch (bpp)
- {
- case 8: bpp_flag = GFX_MODE_8BPP; break;
- case 12: bpp_flag = GFX_MODE_12BPP; break;
- case 15: bpp_flag = GFX_MODE_15BPP; break;
- case 16: bpp_flag = GFX_MODE_16BPP; break;
- case 32: bpp_flag = GFX_MODE_24BPP; break;
- default: bpp_flag = GFX_MODE_8BPP; break;
- }
-
- for (index = 0; index < NUM_RC_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].hactive == (unsigned int)xres) &&
- (DisplayParams[index].vactive == (unsigned int)yres) &&
- (DisplayParams[index].flags & bpp_flag) &&
- (DisplayParams[index].frequency == frequency))
- {
- int hz=0;
- value = DisplayParams[index].flags;
-
- if (value & GFX_MODE_60HZ) hz = 60;
- else if (value & GFX_MODE_70HZ) hz = 70;
- else if (value & GFX_MODE_72HZ) hz = 72;
- else if (value & GFX_MODE_75HZ) hz = 75;
- else if (value & GFX_MODE_85HZ) hz = 85;
- return(hz);
- }
- }
-
- return(-1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_refreshrate_from_frequency
- *
- * This routine maps the frequency to close match refresh rate
- *
- * Returns .
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#else
-int gfx_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#endif
-{
- int index, closematch=0;
- unsigned long value;
- unsigned long bpp_flag = 0;
- long min, diff;
-
- *hz = 60;
-
- switch (bpp)
- {
- case 8: bpp_flag = GFX_MODE_8BPP; break;
- case 12: bpp_flag = GFX_MODE_12BPP; break;
- case 15: bpp_flag = GFX_MODE_15BPP; break;
- case 16: bpp_flag = GFX_MODE_16BPP; break;
- case 32: bpp_flag = GFX_MODE_24BPP; break;
- default: bpp_flag = GFX_MODE_8BPP; break;
- }
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- min = 0x7fffffff;
- for (index = 0; index < NUM_RC_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].htotal == (unsigned int)xres) &&
- (DisplayParams[index].vtotal == (unsigned int)yres) &&
- (DisplayParams[index].flags & bpp_flag))
- {
- diff = (long)frequency - (long)DisplayParams[index].frequency;
- if(diff < 0) diff = -diff;
-
- if (diff < min)
- {
- min = diff;
- closematch = index;
- }
- }
- }
-
- value = DisplayParams[closematch].flags;
-
- if (value & GFX_MODE_56HZ) *hz = 56;
- else if (value & GFX_MODE_60HZ) *hz = 60;
- else if (value & GFX_MODE_70HZ) *hz = 70;
- else if (value & GFX_MODE_72HZ) *hz = 72;
- else if (value & GFX_MODE_75HZ) *hz = 75;
- else if (value & GFX_MODE_85HZ) *hz = 85;
-
- return(1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_refreshrate_from_mode
- *
- * This routine is identical to the gfx_get_refreshrate_from_frequency,
- * except that the active timing values are compared instead of the total
- * values. Some modes (such as 70Hz and 72Hz) may be confused in this routine.
- *
- * Returns .
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#else
-int gfx_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-#endif
-{
- int index, closematch=0;
- unsigned long value;
- unsigned long bpp_flag = 0;
- long min, diff;
-
- *hz = 60;
-
- switch (bpp)
- {
- case 8: bpp_flag = GFX_MODE_8BPP; break;
- case 12: bpp_flag = GFX_MODE_12BPP; break;
- case 15: bpp_flag = GFX_MODE_15BPP; break;
- case 16: bpp_flag = GFX_MODE_16BPP; break;
- case 32: bpp_flag = GFX_MODE_24BPP; break;
- default: bpp_flag = GFX_MODE_8BPP; break;
- }
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- min = 0x7fffffff;
- for (index = 0; index < NUM_RC_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].hactive == (unsigned int)xres) &&
- (DisplayParams[index].vactive == (unsigned int)yres) &&
- (DisplayParams[index].flags & bpp_flag))
- {
- diff = (long)frequency - (long)DisplayParams[index].frequency;
- if(diff < 0) diff = -diff;
-
- if (diff < min)
- {
- min = diff;
- closematch = index;
- }
- }
- }
-
- value = DisplayParams[closematch].flags;
-
- if (value & GFX_MODE_56HZ) *hz = 56;
- else if (value & GFX_MODE_60HZ) *hz = 60;
- else if (value & GFX_MODE_70HZ) *hz = 70;
- else if (value & GFX_MODE_72HZ) *hz = 72;
- else if (value & GFX_MODE_75HZ) *hz = 75;
- else if (value & GFX_MODE_85HZ) *hz = 85;
-
- return(1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_frequency_from_refreshrate
- *
- * This routine maps the refresh rate to the closest matching PLL frequency.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz, int *frequency)
-#else
-int gfx_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz, int *frequency)
-#endif
-{
- int index, retval = -1;
- unsigned long hz_flag = 0;
- unsigned long bpp_flag = 0;
-
- *frequency = 0;
-
- if (hz == 60) hz_flag = GFX_MODE_60HZ;
- else if (hz == 70) hz_flag = GFX_MODE_70HZ;
- else if (hz == 72) hz_flag = GFX_MODE_72HZ;
- else if (hz == 75) hz_flag = GFX_MODE_75HZ;
- else if (hz == 85) hz_flag = GFX_MODE_85HZ;
-
- switch (bpp)
- {
- case 8: bpp_flag = GFX_MODE_8BPP; break;
- case 12: bpp_flag = GFX_MODE_12BPP; break;
- case 15: bpp_flag = GFX_MODE_15BPP; break;
- case 16: bpp_flag = GFX_MODE_16BPP; break;
- case 32: bpp_flag = GFX_MODE_24BPP; break;
- default: bpp_flag = GFX_MODE_8BPP; break;
- }
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- for (index = 0; index < NUM_RC_DISPLAY_MODES; index++)
- {
- if ((DisplayParams[index].hactive == (unsigned short)xres) &&
- (DisplayParams[index].vactive == (unsigned short)yres) &&
- (DisplayParams[index].flags & bpp_flag) &&
- (DisplayParams[index].flags & hz_flag))
- {
- *frequency = DisplayParams[index].frequency;
- retval = 1;
- }
- }
- return retval;
-}
-
-
-/*---------------------------------------------------------------------------
- * gfx_get_max_supported_pixel_clock
- *
- * This routine returns the maximum recommended speed for the pixel clock. The
- * return value is an integer of the format xxxyyy, where xxx.yyy is the maximum
- * floating point pixel clock speed.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_max_supported_pixel_clock (void)
-#else
-unsigned long gfx_get_max_supported_pixel_clock (void)
-#endif
-
-{
- return 229500;
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_display_mode
- *
- * This routine gets the specified display mode.
- *
- * Returns >0 if successful and mode returned, <0 if mode could not be found.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
-#else
-int gfx_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
-#endif
-{
- int mode=0;
- unsigned long pll_freq = 0, bpp_flag = 0;
-
- *xres = gfx_get_hactive();
- *yres = gfx_get_vactive();
- *bpp = gfx_get_display_bpp();
- pll_freq = gfx_get_clock_frequency();
-
- /* SET BPP FLAGS TO LIMIT MODE SELECTION */
-
- switch (*bpp)
- {
- case 8: bpp_flag = GFX_MODE_8BPP; break;
- case 12: bpp_flag = GFX_MODE_12BPP; break;
- case 15: bpp_flag = GFX_MODE_15BPP; break;
- case 16: bpp_flag = GFX_MODE_16BPP; break;
- case 32: bpp_flag = GFX_MODE_24BPP; break;
- default: bpp_flag = GFX_MODE_8BPP; break;
- }
-
- for (mode = 0; mode < NUM_RC_DISPLAY_MODES; mode++) {
- if ((DisplayParams[mode].hactive == (unsigned int)*xres) &&
- (DisplayParams[mode].vactive == (unsigned int)*yres) &&
- (DisplayParams[mode].frequency == pll_freq) &&
- (DisplayParams[mode].flags & bpp_flag)) {
-
- pll_freq = DisplayParams[mode].flags;
-
- if (pll_freq & GFX_MODE_56HZ) *hz = 56;
- else if (pll_freq & GFX_MODE_60HZ) *hz = 60;
- else if (pll_freq & GFX_MODE_70HZ) *hz = 70;
- else if (pll_freq & GFX_MODE_72HZ) *hz = 72;
- else if (pll_freq & GFX_MODE_75HZ) *hz = 75;
- else if (pll_freq & GFX_MODE_85HZ) *hz = 85;
-
- return(1);
- }
- }
- return(-1);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_GET_DISPLAY_DETAILS
- *
- * This routine gets the specified display mode.
- *
- * Returns 1 if successful, 0 if mode could not be get.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_display_details(unsigned int mode, int *xres, int *yres, int *hz)
-#else
-int gfx_get_display_details(unsigned int mode, int *xres, int *yres, int *hz)
-#endif
-{
- if(mode < NUM_RC_DISPLAY_MODES)
- {
- if(DisplayParams[mode].flags & GFX_MODE_56HZ)
- *hz = 56;
- else if(DisplayParams[mode].flags & GFX_MODE_60HZ)
- *hz = 60;
- else if(DisplayParams[mode].flags & GFX_MODE_70HZ)
- *hz = 70;
- else if(DisplayParams[mode].flags & GFX_MODE_72HZ)
- *hz = 72;
- else if(DisplayParams[mode].flags & GFX_MODE_75HZ)
- *hz = 75;
- else if(DisplayParams[mode].flags & GFX_MODE_85HZ)
- *hz = 85;
-
- *xres = DisplayParams[mode].hactive;
- *yres = DisplayParams[mode].vactive;
-
- if (DisplayParams[mode].flags & GFX_MODE_PIXEL_DOUBLE)
- *xres >>= 1;
- if (DisplayParams[mode].flags & GFX_MODE_LINE_DOUBLE)
- *yres >>= 1;
-
- return(1);
- }
- return(0);
-}
-
-/*----------------------------------------------------------------------------
- * GFX_GET_DISPLAY_MODE_COUNT
- *
- * This routine gets the number of available display modes.
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_display_mode_count(void)
-#else
-int gfx_get_display_mode_count(void)
-#endif
-{
- return(NUM_RC_DISPLAY_MODES);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_frame_buffer_line_size
- *
- * Returns the current frame buffer line size, in bytes
- *----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_frame_buffer_line_size(void)
-#else
-unsigned long gfx_get_frame_buffer_line_size(void)
-#endif
-{
- return ((READ_REG32 (MDC_LINE_SIZE) & 0x7FF) << 3);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hactive
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_hactive(void)
-#else
-unsigned short gfx_get_hactive(void)
-#endif
-{
- return((unsigned short)((READ_REG32(MDC_H_ACTIVE_TIMING) & 0x0FF8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hsync_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_hsync_start(void)
-#else
-unsigned short gfx_get_hsync_start(void)
-#endif
-{
- return ((unsigned short)((READ_REG32(MDC_H_SYNC_TIMING) & 0x0FF8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hsync_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_hsync_end(void)
-#else
-unsigned short gfx_get_hsync_end(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(MDC_H_SYNC_TIMING) >> 16) & 0x0FF8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_htotal
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_htotal(void)
-#else
-unsigned short gfx_get_htotal(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(MDC_H_ACTIVE_TIMING) >> 16) & 0x0FF8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vactive
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vactive(void)
-#else
-unsigned short gfx_get_vactive(void)
-#endif
-{
- return((unsigned short)((READ_REG32(MDC_V_ACTIVE_TIMING) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsync_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vsync_end(void)
-#else
-unsigned short gfx_get_vsync_end(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(MDC_V_SYNC_TIMING) >> 16) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vtotal
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vtotal(void)
-#else
-unsigned short gfx_get_vtotal(void)
-#endif
-{
- return((unsigned short)(((READ_REG32(MDC_V_ACTIVE_TIMING) >> 16) & 0x07FF) + 1));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_bpp
- *
- * This routine returns the current color depth of the active display.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_display_bpp(void)
-#else
-unsigned short gfx_get_display_bpp(void)
-#endif
-{
- unsigned long dcfg = READ_REG32 (MDC_DISPLAY_CFG);
-
- switch ((dcfg & MDC_DCFG_DISP_MODE_MASK) >> 8)
- {
- case 0: return (8);
- case 2: return (32);
-
- case 1:
-
- switch ((dcfg & MDC_DCFG_16BPP_MODE_MASK) >> 10)
- {
- case 0: return (16);
- case 1: return (15);
- case 2: return (12);
- default: return (0);
- }
- }
-
- /* INVALID SETTING */
-
- return (0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vline
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vline(void)
-#else
-unsigned short gfx_get_vline(void)
-#endif
-{
- unsigned short current_scan_line;
-
- /* Read similar value twice to ensure that the value is not transitioning */
-
- do current_scan_line = (unsigned short)(READ_REG32(MDC_LINE_CNT_STATUS) & MDC_LNCNT_V_LINE_CNT);
- while(current_scan_line != (unsigned short)(READ_REG32(MDC_LINE_CNT_STATUS) & MDC_LNCNT_V_LINE_CNT));
-
- return (current_scan_line >> 16);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_display_offset(void)
-#else
-unsigned long gfx_get_display_offset(void)
-#endif
-{
- return (READ_REG32(MDC_FB_ST_OFFSET) & 0x0FFFFFFF);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_cursor_offset(void)
-#else
-unsigned long gfx_get_cursor_offset(void)
-#endif
-{
- return (READ_REG32(MDC_CURS_ST_OFFSET) & 0x0FFFFFFF);
-}
-
-#if GFX_READ_ROUTINES
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-/*---------------------------------------------------------------------------
- * gfx_get_hblank_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_hblank_start(void)
-#else
-unsigned short gfx_get_hblank_start(void)
-#endif
-{
- return ((unsigned short)((READ_REG32(MDC_H_BLANK_TIMING) & 0x0FF8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hblank_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_hblank_end(void)
-#else
-unsigned short gfx_get_hblank_end(void)
-#endif
-{
- return ((unsigned short)(((READ_REG32(MDC_H_BLANK_TIMING) >> 16) & 0x0FF8) + 8));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vblank_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vblank_start(void)
-#else
-unsigned short gfx_get_vblank_start(void)
-#endif
-{
- return ((unsigned short)((READ_REG32(MDC_V_BLANK_TIMING) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsync_start
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vsync_start(void)
-#else
-unsigned short gfx_get_vsync_start(void)
-#endif
-{
- return ((unsigned short)((READ_REG32(MDC_V_SYNC_TIMING) & 0x07FF) + 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vblank_end
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_vblank_end(void)
-#else
-unsigned short gfx_get_vblank_end(void)
-#endif
-{
- return ((unsigned short)(((READ_REG32(MDC_V_BLANK_TIMING) >> 16) & 0x07FF) + 1));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_palette_entry
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_display_palette_entry(unsigned long index, unsigned long *palette)
-#else
-int gfx_get_display_palette_entry(unsigned long index, unsigned long *palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_REG32(MDC_PAL_ADDRESS, index);
- *palette = READ_REG32(MDC_PAL_DATA);
-
- return 0;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_display_palette
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_get_display_palette(unsigned long *palette)
-#else
-void gfx_get_display_palette(unsigned long *palette)
-#endif
-{
- unsigned long i;
-
- WRITE_REG32(MDC_PAL_ADDRESS, 0);
- for (i = 0; i < 256; i++)
- {
- palette[i] = READ_REG32(MDC_PAL_DATA);
- }
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_cursor_enable(void)
-#else
-unsigned long gfx_get_cursor_enable(void)
-#endif
-{
- return (READ_REG32(MDC_GENERAL_CFG) & MDC_GCFG_CURE);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_position
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_cursor_position(void)
-#else
-unsigned long gfx_get_cursor_position(void)
-#endif
-{
- return((READ_REG32(MDC_CURSOR_X) & 0x07FF) |
- ((READ_REG32(MDC_CURSOR_Y) << 16) & 0x03FF0000));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_cursor_clip(void)
-#else
-unsigned long gfx_get_cursor_clip(void)
-#endif
-{
- return (((READ_REG32(MDC_CURSOR_X) >> 11) & 0x03F) |
- ((READ_REG32(MDC_CURSOR_Y) << 5) & 0x3F0000));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cursor_color
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_cursor_color(int color)
-#else
-unsigned long gfx_get_cursor_color(int color)
-#endif
-{
- if (color)
- {
- WRITE_REG32(MDC_PAL_ADDRESS, 0x101);
- }
- else
- {
- WRITE_REG32(MDC_PAL_ADDRESS, 0x100);
- }
- return READ_REG32(MDC_PAL_DATA);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_icon_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_icon_enable(void)
-#else
-unsigned long gfx_get_icon_enable(void)
-#endif
-{
- return (READ_REG32(MDC_GENERAL_CFG) & MDC_GCFG_ICNE);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_icon_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_icon_offset(void)
-#else
-unsigned long gfx_get_icon_offset(void)
-#endif
-{
- return (READ_REG32(MDC_ICON_ST_OFFSET) & 0x0FFFFFFF);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_icon_position
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_icon_position(void)
-#else
-unsigned long gfx_get_icon_position(void)
-#endif
-{
- return (READ_REG32(MDC_ICON_X) & 0x07FF);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_icon_color
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_icon_color(int color)
-#else
-unsigned long gfx_get_icon_color(int color)
-#endif
-{
- if (color >= 3)
- return 0;
-
- WRITE_REG32(MDC_PAL_ADDRESS, 0x102 + color);
-
- return READ_REG32(MDC_PAL_DATA);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_compression_enable(void)
-#else
-int gfx_get_compression_enable(void)
-#endif
-{
- if (READ_REG32 (MDC_GENERAL_CFG) & MDC_GCFG_CMPE)
- return (1);
-
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_offset
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_compression_offset(void)
-#else
-unsigned long gfx_get_compression_offset(void)
-#endif
-{
- return (READ_REG32(MDC_CB_ST_OFFSET) & 0x007FFFFF);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_pitch
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_compression_pitch(void)
-#else
-unsigned short gfx_get_compression_pitch(void)
-#endif
-{
- unsigned short pitch;
- pitch = (unsigned short)(READ_REG32(MDC_GFX_PITCH) >> 16);
- return (pitch << 3);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_compression_size
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned short gu2_get_compression_size(void)
-#else
-unsigned short gfx_get_compression_size(void)
-#endif
-{
- unsigned short size;
- size = (unsigned short)((READ_REG32(MDC_LINE_SIZE) >> 16) & 0x7F) - 1;
- return ((size << 3) + 32);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_valid_bit
- *-----------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_valid_bit(int line)
-#else
-int gfx_get_valid_bit(int line)
-#endif
-{
- unsigned long offset;
- int valid;
-
- offset = READ_REG32 (MDC_PHY_MEM_OFFSET) & 0xFF000000;
- offset |= line;
-
- WRITE_REG32(MDC_PHY_MEM_OFFSET, offset);
- valid = (int)READ_REG32 (MDC_DV_ACC) & 2;
-
- if (valid) return 1;
- return 0;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_offset (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_offset". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_display_video_offset(void)
-#else
-unsigned long gfx_get_display_video_offset(void)
-#endif
-{
- return (READ_REG32(MDC_VID_Y_ST_OFFSET) & 0x0FFFFFFF);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_yuv_offsets (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_yuv_offsets". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_get_display_video_yuv_offsets(unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset)
-#else
-void gfx_get_display_video_yuv_offsets(unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset)
-#endif
-{
- *yoffset = (READ_REG32(MDC_VID_Y_ST_OFFSET) & 0x0FFFFFFF);
- *uoffset = (READ_REG32(MDC_VID_U_ST_OFFSET) & 0x0FFFFFFF);
- *voffset = (READ_REG32(MDC_VID_V_ST_OFFSET) & 0x0FFFFFFF);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_yuv_pitch (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_yuv_pitch". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-void gu2_get_display_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
-#else
-void gfx_get_display_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
-#endif
-{
- unsigned long pitch = READ_REG32 (MDC_VID_YUV_PITCH);
-
- *ypitch = ((pitch & 0xFFFF) << 3);
- *uvpitch = (pitch >> 13) & 0x7FFF8;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_downscale_delta (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_downscale_delta". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_display_video_downscale_delta(void)
-#else
-unsigned long gfx_get_display_video_downscale_delta(void)
-#endif
-{
- return (READ_REG32(MDC_VID_DS_DELTA) >> 18);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_downscale_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_vertical_downscale_enable". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-int gu2_get_display_video_downscale_enable(void)
-#else
-int gfx_get_display_video_downscale_enable(void)
-#endif
-{
- return ((int)((READ_REG32(MDC_GENERAL_CFG) >> 19) & 1));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_size (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_get_video_size". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_DISPLAY_DYNAMIC
-unsigned long gu2_get_display_video_size(void)
-#else
-unsigned long gfx_get_display_video_size(void)
-#endif
-{
- /* RETURN THE LINE SIZE, AS THIS IS ALL THAT IS AVAILABLE */
-
- return((READ_REG32(MDC_LINE_SIZE) >> 21) & 0x000007FF);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/durango.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/durango.c
deleted file mode 100644
index 630fd74cd..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/durango.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/durango.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: durango.c $
- *
- * This is the main file used to add Durango graphics support to a software
- * project. The main reason to have a single file include the other files
- * is that it centralizes the location of the compiler options. This file
- * should be tuned for a specific implementation, and then modified as needed
- * for new Durango releases. The releases.txt file indicates any updates to
- * this main file, such as a new definition for a new hardware platform.
- *
- * In other words, this file should be copied from the Durango source files
- * once when a software project starts, and then maintained as necessary.
- * It should not be recopied with new versions of Durango unless the
- * developer is willing to tune the file again for the specific project.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* COMPILER OPTIONS
- * These compiler options specify how the Durango routines are compiled
- * for the different hardware platforms. For best performance, a driver
- * would build for a specific platform. The "dynamic" switches are set
- * by diagnostic applications such as Darwin that will run on a variety
- * of platforms and use the appropriate code at runtime. Each component
- * may be separately dynamic, so that a driver has the option of being
- * tuned for a specific 2D accelerator, but will still run with a variety
- * of chipsets.
- */
-
-#define GFX_DISPLAY_DYNAMIC 1 /* runtime selection */
-#define GFX_DISPLAY_GU1 1 /* 1st generation display controller */
-#define GFX_DISPLAY_GU2 1 /* 2nd generation display controller */
-
-#define GFX_INIT_DYNAMIC 1 /* runtime selection */
-#define GFX_INIT_GU1 1 /* Geode family */
-#define GFX_INIT_GU2 1 /* Redcloud */
-
-#define GFX_MSR_DYNAMIC 1 /* runtime selection */
-#define GFX_MSR_REDCLOUD 1 /* Redcloud */
-
-#define GFX_2DACCEL_DYNAMIC 1 /* runtime selection */
-#define GFX_2DACCEL_GU1 1 /* 1st generation 2D accelerator */
-#define GFX_2DACCEL_GU2 1 /* 2nd generation 2D accelerator */
-
-#define GFX_VIDEO_DYNAMIC 1 /* runtime selection */
-#define GFX_VIDEO_CS5530 1 /* support for CS5530 */
-#define GFX_VIDEO_SC1200 1 /* support for SC1200 */
-#define GFX_VIDEO_REDCLOUD 1 /* support for Redcloud */
-
-#define GFX_VIP_DYNAMIC 1 /* runtime selection */
-#define GFX_VIP_SC1200 1 /* support for SC1200 */
-
-#define GFX_DECODER_DYNAMIC 1 /* runtime selection */
-#define GFX_DECODER_SAA7114 1 /* Philips SAA7114 decoder */
-
-#define GFX_TV_DYNAMIC 1 /* runtime selection */
-#define GFX_TV_FS451 1 /* Focus Enhancements FS450 */
-#define GFX_TV_SC1200 1 /* SC1200 integrated TV encoder */
-
-#define GFX_I2C_DYNAMIC 1 /* runtime selection */
-#define GFX_I2C_ACCESS 1 /* support for ACCESS.BUS */
-#define GFX_I2C_GPIO 1 /* support for CS5530 GPIOs */
-
-#define GFX_VGA_DYNAMIC 1 /* runtime selection */
-#define GFX_VGA_GU1 1 /* 1st generation graphics unit */
-
-#define FB4MB 1 /* Set to use 4Mb video ram for Pyramid */
-
-#define GFX_NO_IO_IN_WAIT_MACROS 0 /* Set to remove I/O accesses in GP bit testing */
-
-/* ROUTINES TO READ VALUES
- * These are routines used by Darwin or other diagnostics to read the
- * current state of the hardware. Display drivers or embedded applications can
- * reduce the size of the Durango code by not including these routines.
- */
-#define GFX_READ_ROUTINES 1 /* add routines to read values */
-
-/* VARIABLES USED FOR RUNTIME SELECTION
- * If part of the graphics subsystem is declared as dynamic, then the
- * following variables are used to specify which platform has been detected.
- * The variables are set in the "gfx_detect_cpu" routine. The values should
- * be bit flags to allow masks to be used to check for multiple platforms.
- */
-
-#if GFX_DISPLAY_DYNAMIC
-int gfx_display_type = 0;
-#endif
-
-#if GFX_INIT_DYNAMIC
-int gfx_init_type = 0;
-#endif
-
-#if GFX_MSR_DYNAMIC
-int gfx_msr_type = 0;
-#endif
-
-#if GFX_2DACCEL_DYNAMIC
-int gfx_2daccel_type = 0;
-#endif
-
-#if GFX_VIDEO_DYNAMIC
-int gfx_video_type = 0;
-#endif
-
-#if GFX_VIP_DYNAMIC
-int gfx_vip_type = 0;
-#endif
-
-#if GFX_DECODER_DYNAMIC
-int gfx_decoder_type = 0;
-#endif
-
-#if GFX_TV_DYNAMIC
-int gfx_tv_type = 0;
-#endif
-
-#if GFX_I2C_DYNAMIC
-int gfx_i2c_type = 0;
-#endif
-
-#if GFX_VGA_DYNAMIC
-int gfx_vga_type = 0;
-#endif
-
-/* HEADER FILE FOR DURANGO ROUTINE DEFINITIONS
- * Needed since some of the Durango routines call other Durango routines.
- * Also defines the size of chipset array (GFX_CSPTR_SIZE).
- */
-#include "gfx_rtns.h" /* routine definitions */
-
-/* DEFINE POINTERS TO MEMORY MAPPED REGIONS
- * These pointers are used by the Durango routines to access the hardware.
- * The variables must be set by the project's initialization code after
- * mapping the regions in the appropriate manner.
- */
-
-/* DEFINE VIRTUAL ADDRESSES */
-/* Note: These addresses define the starting base expected by all */
-/* Durango offsets. Under an OS that requires these pointers */
-/* to be mapped to linear addresses (i.e Windows), it may not */
-/* be possible to keep these base offsets. In these cases, */
-/* the addresses are modified to point to the beginning of the */
-/* relevant memory region and the access macros are adjusted */
-/* to subtract the offset from the default base. For example, */
-/* the register pointer could be moved to be 0x40008000, while */
-/* the WRITE_REG* macros are modified to subtract 0x8000 from */
-/* the offset. */
-
-unsigned char *gfx_virt_regptr = (unsigned char *) 0x40000000;
-unsigned char *gfx_virt_fbptr = (unsigned char *) 0x40800000;
-unsigned char *gfx_virt_vidptr = (unsigned char *) 0x40010000;
-unsigned char *gfx_virt_vipptr = (unsigned char *) 0x40015000;
-unsigned char *gfx_virt_spptr = (unsigned char *) 0x40000000;
-unsigned char *gfx_virt_gpptr = (unsigned char *) 0x40000000;
-
-/* DEFINE PHYSICAL ADDRESSES */
-
-unsigned char *gfx_phys_regptr = (unsigned char *) 0x40000000;
-unsigned char *gfx_phys_fbptr = (unsigned char *) 0x40800000;
-unsigned char *gfx_phys_vidptr = (unsigned char *) 0x40010000;
-unsigned char *gfx_phys_vipptr = (unsigned char *) 0x40015000;
-
-/* HEADER FILE FOR GRAPHICS REGISTER DEFINITIONS
- * This contains only constant definitions, so it should be able to be
- * included in any software project as is.
- */
-#include "gfx_regs.h" /* graphics register definitions */
-
-/* HEADER FILE FOR REGISTER ACCESS MACROS
- * This file contains the definitions of the WRITE_REG32 and similar macros
- * used by the Durango routines to access the hardware. The file assumes
- * that the environment can handle 32-bit pointer access. If this is not
- * the case, or if there are special requirements, then this header file
- * should not be included and the project must define the macros itself.
- * (A project may define WRITE_REG32 to call a routine, for example).
- */
-#include "gfx_defs.h" /* register access macros */
-
-/* IO MACROS AND ROUTINES
- * These macros must be defined before the initialization or I2C
- * routines will work properly.
- */
-
-#if defined(OS_WIN32) /* For Windows */
-
-/* VSA II CALL */
-
-void gfx_msr_asm_read (unsigned short msrReg, unsigned long msrAddr, unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- unsigned long temp1, temp2;
-
- _asm {
- mov dx, 0x0AC1C
- mov eax, 0x0FC530007
- out dx, eax
-
- add dl, 2
- mov ecx, msrAddr
- mov cx, msrReg
- in ax, dx
-
- ; EDX:EAX will contain MSR contents.
-
- mov temp1, edx
- mov temp2, eax
- }
-
- *ptrHigh = temp1;
- *ptrLow = temp2;
-}
-
-void gfx_msr_asm_write (unsigned short msrReg, unsigned long msrAddr, unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- unsigned long temp1 = *ptrHigh;
- unsigned long temp2 = *ptrLow;
-
- _asm {
-
- mov dx, 0x0AC1C
- mov eax, 0x0FC530007
- out dx, eax
-
- add dl, 2
- mov ecx, msrAddr ; ECX contains msrAddr | msrReg
- mov cx, msrReg ;
- mov ebx, temp1 ; <OR_mask_hi>
- mov eax, temp2 ; <OR_mask_hi>
-
- mov esi, 0 ; <AND_mask_hi>
- mov edi, 0 ; <AND_mask_lo>
- out dx, ax
-
- ; MSR is written at this point
- }
-}
-
-unsigned char gfx_inb(unsigned short port)
-{
- unsigned char data;
- _asm {
- pushf
- mov dx, port
- in al, dx
- mov data, al
- popf
- }
- return(data);
-}
-
-unsigned short gfx_inw(unsigned short port)
-{
- unsigned short data;
- _asm {
- pushf
- mov dx, port
- in ax, dx
- mov data, ax
- popf
- }
- return(data);
-}
-
-unsigned long gfx_ind(unsigned short port)
-{
- unsigned long data;
- _asm {
- pushf
- mov dx, port
- in eax, dx
- mov data, eax
- popf
- }
- return(data);
-}
-
-void gfx_outb(unsigned short port, unsigned char data)
-{
- _asm {
- pushf
- mov al, data
- mov dx, port
- out dx, al
- popf
- }
-}
-
-void gfx_outw(unsigned short port, unsigned short data)
-{
- _asm {
- pushf
- mov ax, data
- mov dx, port
- out dx, ax
- popf
- }
-}
-
-void gfx_outd(unsigned short port, unsigned long data)
-{
- _asm {
- pushf
- mov eax, data
- mov dx, port
- out dx, eax
- popf
- }
-}
-
-#elif defined(OS_VXWORKS) || defined (OS_LINUX) /* VxWorks and Linux */
-
-#if defined(OS_LINUX)
-#include "asm/msr.h"
-#endif
-
-void gfx_msr_asm_read (unsigned short msrReg, unsigned long msrAddr, unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- unsigned long addr, val1, val2;
-
- addr = msrAddr | (unsigned long)msrReg;
- rdmsr(addr, val1, val2);
-
- *ptrHigh = val2;
- *ptrLow = val1;
-}
-
-void gfx_msr_asm_write (unsigned short msrReg, unsigned long msrAddr, unsigned long *ptrHigh, unsigned long *ptrLow)
-{
- unsigned long addr, val1, val2;
-
- val2 = *ptrHigh;
- val1 = *ptrLow;
-
- addr = (msrAddr & 0xFFFF0000) | (unsigned long)msrReg;
- wrmsr(addr, val1, val2);
-}
-
-unsigned char gfx_inb(unsigned short port)
-{
- unsigned char value;
- __asm__ volatile ("inb %1,%0" : "=a" (value) : "d" (port));
- return value;
-}
-
-unsigned short gfx_inw(unsigned short port)
-{
- unsigned short value;
- __asm__ volatile ("in %1,%0" : "=a" (value) : "d" (port));
- return value;
-}
-
-unsigned long gfx_ind(unsigned short port)
-{
- unsigned long value;
- __asm__ volatile ("inl %1,%0" : "=a" (value) : "d" (port));
- return value;
-}
-
-void gfx_outb(unsigned short port, unsigned char data)
-{
- __asm__ volatile ("outb %0,%1" : : "a" (data),"d" (port));
-}
-
-void gfx_outw(unsigned short port, unsigned short data)
-{
- __asm__ volatile ("out %0,%1" : : "a" (data),"d" (port));
-}
-
-void gfx_outd(unsigned short port, unsigned long data)
-{
- __asm__ volatile ("outl %0,%1" : : "a" (data),"d" (port));
-}
-
-#else /* else nothing */
-
-unsigned char gfx_inb(unsigned short port)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
- return(0);
-}
-
-unsigned short gfx_inw(unsigned short port)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
- return(0);
-}
-
-unsigned long gfx_ind(unsigned short port)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
- return(0);
-}
-
-void gfx_outb(unsigned short port, unsigned char data)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
-}
-
-void gfx_outw(unsigned short port, unsigned short data)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
-}
-
-void gfx_outd(unsigned short port, unsigned long data)
-{
- /* ADD OS SPECIFIC IMPLEMENTATION */
-}
-#endif
-
-#define INB(port) gfx_inb(port)
-#define INW(port) gfx_inw(port)
-#define IND(port) gfx_ind(port)
-#define OUTB(port, data) gfx_outb(port, data)
-#define OUTW(port, data) gfx_outw(port, data)
-#define OUTD(port, data) gfx_outd(port, data)
-
-/* INITIALIZATION ROUTINES
- * These routines are used during the initialization of the driver to
- * perform such tasks as detecting the type of CPU and video hardware.
- * The routines require the use of IO, so the above IO routines need
- * to be implemented before the initialization routines will work
- * properly.
- */
-
-#include "gfx_init.c"
-
-/* INCLUDE MSR ACCESS ROUTINES */
-
-#include "gfx_msr.c"
-
-/* INCLUDE GRAPHICS ENGINE ROUTINES
- * These routines are used to program the 2D graphics accelerator. If
- * the project does not use graphics acceleration (direct frame buffer
- * access only), then this file does not need to be included.
- */
-#include "gfx_rndr.c" /* graphics engine routines */
-
-/* INCLUDE DISPLAY CONTROLLER ROUTINES
- * These routines are used if the display mode is set directly. If the
- * project uses VGA registers to set a display mode, then these files
- * do not need to be included.
- */
-#include "gfx_mode.h" /* display mode tables */
-#include "gfx_disp.c" /* display controller routines */
-
-/* INCLUDE VIDEO OVERLAY ROUTINES
- * These routines control the video overlay hardware.
- */
-#include "gfx_vid.c" /* video overlay routines */
-
-/* VIDEO PORT AND VIDEO DECODER ROUTINES
- * These routines rely on the I2C routines.
- */
-#include "gfx_vip.c" /* video port routines */
-#include "gfx_dcdr.c" /* video decoder routines */
-
-/* I2C BUS ACCESS ROUTINES
- * These routines are used by the video decoder and possibly an
- * external TV encoer.
- */
-#include "gfx_i2c.c" /* I2C bus access routines */
-
-/* TV ENCODER ROUTINES
- * This file does not need to be included if the system does not
- * support TV output.
- */
-#include "gfx_tv.c" /* TV encoder routines */
-
-/* VGA ROUTINES
- * This file is used if setting display modes using VGA registers.
- */
-#include "gfx_vga.c" /* VGA routines */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_dcdr.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_dcdr.c
deleted file mode 100644
index 12754619d..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_dcdr.c
+++ /dev/null
@@ -1,549 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_dcdr.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_dcdr.c $
- *
- * This file contains routines to control the video decoder.
- *
- * gfx_set_decoder_defaults
- * gfx_set_decoder_analog_input
- * gfx_set_decoder_brightness
- * gfx_set_decoder_contrast
- * gfx_set_decoder_luminance_filter
- * gfx_set_decoder_hue
- * gfx_set_decoder_saturation
- * gfx_set_decoder_input_offset
- * gfx_set_decoder_input_size
- * gfx_set_decoder_output_size
- * gfx_set_decoder_scale
- * gfx_set_decoder_TV_standard
- * gfx_set_decoder_vbi_enable
- * gfx_set_decoder_vbi_format
- * gfx_set_decoder_vbi_upscale
- * gfx_decoder_software_reset
- * gfx_decoder_detect_macrovision
- * gfx_decoder_detect_video
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- * gfx_get_decoder_brightness
- * gfx_get_decoder_contrast
- * gfx_get_decoder_hue
- * gfx_get_decoder_saturation
- * gfx_get_decoder_input_offset
- * gfx_get_decoder_input_size
- * gfx_get_decoder_output_size
- * gfx_get_decoder_vbi_format
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* INCLUDE SUPPORT FOR PHILIPS SAA7114 DECODER, IF SPECIFIED */
-
-#if GFX_DECODER_SAA7114
-#include "saa7114.c"
-#endif
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call various decoders. Currently only the Pillips */
-/* decoder is supported, but still organized to easily expand later. */
-
-#if GFX_DECODER_DYNAMIC
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_defaults
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_defaults(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_defaults();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_analog_input
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_analog_input(unsigned char input)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_analog_input(input);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_brightness
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_brightness(unsigned char brightness)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_brightness(brightness);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_contrast
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_contrast(unsigned char contrast)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_contrast(contrast);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_hue
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_hue(char hue)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_hue(hue);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_saturation
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_saturation(unsigned char saturation)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_saturation(saturation);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_input_offset
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_input_offset(unsigned short x, unsigned short y)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_input_offset(x, y);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_input_size
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_input_size(unsigned short width, unsigned short height)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_input_size(width, height);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_output_size
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_output_size(unsigned short width, unsigned short height)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_output_size(width, height);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_scale
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_scale(srcw, srch, dstw, dsth);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_vbi_format
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_vbi_format(int start, int end, int format)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_vbi_format(start, end, format);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_vbi_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_vbi_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_vbi_enable(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_vbi_upscale
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_vbi_upscale(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_vbi_upscale();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_TV_standard
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_TV_standard(TVStandardType TVStandard)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_TV_standard(TVStandard);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_luminance_filter
- *-----------------------------------------------------------------------------
- */
-int gfx_set_decoder_luminance_filter(unsigned char lufi)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_set_decoder_luminance_filter(lufi);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_decoder_software_reset
- *-----------------------------------------------------------------------------
- */
-int gfx_decoder_software_reset(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_decoder_software_reset();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_decoder_detect_macrovision
- *-----------------------------------------------------------------------------
- */
-int gfx_decoder_detect_macrovision(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_decoder_detect_macrovision();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_decoder_detect_video
- *-----------------------------------------------------------------------------
- */
-int gfx_decoder_detect_video(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- status = saa7114_decoder_detect_video();
-# endif
- return(status);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_brightness
- *-----------------------------------------------------------------------------
- */
-unsigned char gfx_get_decoder_brightness(void)
-{
- unsigned char brightness = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- brightness = saa7114_get_decoder_brightness();
-# endif
- return(brightness);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_contrast
- *-----------------------------------------------------------------------------
- */
-unsigned char gfx_get_decoder_contrast(void)
-{
- unsigned char contrast = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- contrast = saa7114_get_decoder_contrast();
-# endif
- return(contrast);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_hue
- *-----------------------------------------------------------------------------
- */
-char gfx_get_decoder_hue(void)
-{
- unsigned char hue = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- hue = saa7114_get_decoder_hue();
-# endif
- return((char)hue);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_saturation
- *-----------------------------------------------------------------------------
- */
-unsigned char gfx_get_decoder_saturation(void)
-{
- unsigned char saturation = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- saturation = saa7114_get_decoder_saturation();
-# endif
- return(saturation);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_input_offset
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_decoder_input_offset()
-{
- unsigned long offset = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- offset = saa7114_get_decoder_input_offset();
-# endif
- return(offset);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_input_size
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_decoder_input_size()
-{
- unsigned long size = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- size = saa7114_get_decoder_input_size();
-# endif
- return(size);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_output_size
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_decoder_output_size()
-{
- unsigned long size = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- size = saa7114_get_decoder_output_size();
-# endif
- return(size);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_vbi_format
- *-----------------------------------------------------------------------------
- */
-int gfx_get_decoder_vbi_format(int line)
-{
- int format = 0;
-# if GFX_DECODER_SAA7114
- if (gfx_decoder_type == GFX_DECODER_SAA7114)
- format = saa7114_get_decoder_vbi_format(line);
-# endif
- return(format);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-#endif /* GFX_DECODER_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_defs.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_defs.h
deleted file mode 100644
index eef6e1e1a..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_defs.h
+++ /dev/null
@@ -1,432 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_defs.h,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_defs.h $
- *
- * This header file contains the macros used to access the hardware. These
- * macros assume that 32-bit access is possible, which is true for most
- * applications. Projects using 16-bit compilers (the Windows98 display
- * driver) and special purpose applications (such as Darwin) need to define
- * their own versions of these macros, which typically call a subroutine.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* ACCESS TO THE CPU REGISTERS */
-
-#define WRITE_REG8(offset, value) \
- (*(volatile unsigned char *)(gfx_virt_regptr + (offset))) = (value)
-
-#define WRITE_REG16(offset, value) \
- (*(volatile unsigned short *)(gfx_virt_regptr + (offset))) = (value)
-
-#define WRITE_REG32(offset, value) \
- (*(volatile unsigned long *)(gfx_virt_regptr + (offset))) = (value)
-
-#define READ_REG16(offset) \
- (*(volatile unsigned short *)(gfx_virt_regptr + (offset)))
-
-#define READ_REG32(offset) \
- (*(volatile unsigned long *)(gfx_virt_regptr + (offset)))
-
-/* ACCESS TO THE ACCELERATOR REGISTERS (REDCLOUD ONLY) */
-
-#define WRITE_GP8(offset, value) \
- (*(volatile unsigned char *)(gfx_virt_gpptr + (offset))) = (value)
-
-#define WRITE_GP16(offset, value) \
- (*(volatile unsigned short *)(gfx_virt_gpptr + (offset))) = (value)
-
-#define WRITE_GP32(offset, value) \
- (*(volatile unsigned long *)(gfx_virt_gpptr + (offset))) = (value)
-
-#define READ_GP16(offset) \
- (*(volatile unsigned short *)(gfx_virt_gpptr + (offset)))
-
-#define READ_GP32(offset) \
- (*(volatile unsigned long *)(gfx_virt_gpptr + (offset)))
-
-/* ACCESS TO THE FRAME BUFFER */
-
-#define WRITE_FB32(offset, value) \
- (*(volatile unsigned long *)(gfx_virt_fbptr + (offset))) = (value)
-
-#define WRITE_FB16(offset, value) \
- (*(volatile unsigned short *)(gfx_virt_fbptr + (offset))) = (value)
-
-#define WRITE_FB8(offset, value) \
- (*(volatile unsigned char *)(gfx_virt_fbptr + (offset))) = (value)
-
-/* ACCESS TO THE VIDEO HARDWARE */
-
-#define READ_VID32(offset) \
- (*(volatile unsigned long *)(gfx_virt_vidptr + (offset)))
-
-#define WRITE_VID32(offset, value) \
- (*(volatile unsigned long *)(gfx_virt_vidptr + (offset))) = (value)
-
-/* ACCESS TO THE VIP HARDWARE */
-
-#define READ_VIP32(offset) \
- (*(volatile unsigned long *)(gfx_virt_vipptr + (offset)))
-
-#define WRITE_VIP32(offset, value) \
- (*(volatile unsigned long *)(gfx_virt_vipptr + (offset))) = (value)
-
-/* ACCESS TO THE SCRATCHPAD RAM */
-
-#define WRITE_SCRATCH32(offset, value) \
- (*(volatile unsigned long *)(gfx_virt_spptr + (offset))) = (value)
-
-#define WRITE_SCRATCH16(offset, value) \
- (*(volatile unsigned short *)(gfx_virt_spptr + (offset))) = (value)
-
-#define WRITE_SCRATCH8(offset, value) \
- (*(volatile unsigned char *)(gfx_virt_spptr + (offset))) = (value)
-
-#define READ_SCRATCH16(offset) \
- (*(volatile unsigned short *)(gfx_virt_spptr + (offset)))
-
-#define READ_SCRATCH32(offset) \
- (*(volatile unsigned long *)(gfx_virt_spptr + (offset)))
-
-/* ACCESS TO MSRS */
-
-void gfx_msr_asm_write (unsigned short msrReg, unsigned long msrAddr, unsigned long *ptrHigh, unsigned long *ptrLow);
-void gfx_msr_asm_read (unsigned short msrReg, unsigned long msrAddr, unsigned long *ptrHigh, unsigned long *ptrLow);
-
-#define MSR_READ( MBD_MSR_CAP, address, valueHigh_ptr, valueLow_ptr ) \
- gfx_msr_asm_read( ((unsigned short)(MBD_MSR_CAP)), address, valueHigh_ptr, valueLow_ptr )
-
-#define MSR_WRITE( MBD_MSR_CAP, address, valueHigh_ptr, valueLow_ptr ) \
- gfx_msr_asm_write( ((unsigned short)(MBD_MSR_CAP)), address, valueHigh_ptr, valueLow_ptr )
-
-/* OPTIMIZATION MACROS */
-/* The following macros have been added to allow more complete optimization of the */
-/* bitmap-to-screen routines in Durango. These routines also allow Durango to run */
-/* properly within a 16-bit environment. */
-
-/************************************************************************************
- * Macro: SET_SCRATCH_BASE
- * Purpose: Record the base address of the BLT buffers. The WRITE_SCRATCH_STRINGxx
- * macros assume that this address is used as the base for all writes.
- *
- * Arguments:
- * scratch_base - offset into the GX base for the first BLT buffer byte.
- ************************************************************************************/
-
-#define SET_SCRATCH_BASE(scratch_base) \
- { gfx_gx1_scratch_base = (unsigned long)gfx_virt_spptr + scratch_base; }
-
-#ifdef GFX_OPTIMIZE_ASSEMBLY
-
-/************************************************************************************
- * Macro: WRITE_SCRATCH_STRING
- * Purpose: Write multiple bytes to the scratchpad buffer
- *
- * Arguments:
- * dword_bytes - number of bytes to transfer. This number will always.
- * be a multiple of 4. It cannot be modified within the
- * macro (ex. bytes -= 4)
- * bytes_extra - number of non-DWORD aligned bytes
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- ************************************************************************************/
-
-#define WRITE_SCRATCH_STRING(dwords, bytes, array, array_offset) \
-{ \
- _asm { mov edi, gfx_gx1_scratch_base } \
- _asm { mov esi, array } \
- _asm { add esi, array_offset } \
- _asm { mov ecx, dwords } \
- _asm { shr ecx, 2 } \
- _asm { rep movsd } \
- _asm { mov ecx, bytes } \
- _asm { rep movsb } \
-}
-
-/************************************************************************************
- * Macro: WRITE_FRAME_BUFFER_STRING32
- * Purpose: Write multiple dwords to the Frame buffer
- *
- * Arguments:
- * fboffset - offset to the beginning frame buffer location.
- * bytes - number of bytes to transfer. This number will always.
- * be a multiple of 4. It cannot be modified within the
- * macro (ex. bytes -= 4)
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- ************************************************************************************/
-
-#define WRITE_FRAME_BUFFER_STRING32(fboffset, bytes, array, array_offset) \
-{ \
- _asm { mov ecx, bytes } \
- _asm { shr ecx, 2 } \
- _asm { cld } \
- _asm { mov edi, gfx_virt_fbptr } \
- _asm { add edi, fboffset } \
- _asm { mov esi, array } \
- _asm { add esi, array_offset } \
- _asm { rep movsd } \
-}
-
-#else
-
-/************************************************************************************
- * Macro: WRITE_SCRATCH_STRING
- * Purpose: Write multiple bytes to the scratchpad buffer
- *
- * Arguments:
- * dword_bytes - number of bytes to transfer. This number will always.
- * be a multiple of 4. It cannot be modified within the
- * macro (ex. bytes -= 4)
- * bytes_extra - number of non-DWORD aligned bytes
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- ************************************************************************************/
-
-#define WRITE_SCRATCH_STRING(dword_bytes, bytes_extra, array, array_offset) \
-{ \
- unsigned long i, j; \
- unsigned long aroffset = (unsigned long)array + (array_offset); \
- \
- /* WRITE DWORDS */ \
- \
- for (i = 0; i < dword_bytes; i += 4) \
- *((volatile unsigned long *)(gfx_gx1_scratch_base + i)) = *((unsigned long *)(aroffset + i)); \
- \
- /* WRITE BYTES */ \
- \
- j = i + bytes_extra; \
- while (i < j) \
- { \
- *((volatile unsigned char *)(gfx_gx1_scratch_base + i)) = *((unsigned char *)(aroffset + i)); \
- i++; \
- } \
-}
-
-/************************************************************************************
- * Macro: WRITE_FRAME_BUFFER_STRING32
- * Purpose: Write multiple dwords to the Frame buffer
- *
- * Arguments:
- * fboffset - offset to the beginning frame buffer location.
- * bytes - number of bytes to transfer. This number will always.
- * be a multiple of 4. It cannot be modified within the
- * macro (ex. bytes -= 4)
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- ************************************************************************************/
-
-#define WRITE_FRAME_BUFFER_STRING32(fboffset, bytes, array, array_offset) \
-{ \
- unsigned long i; \
- unsigned long aroffset = (unsigned long)array + (array_offset); \
- for (i = 0; i < bytes; i += 4) \
- WRITE_FB32 ((fboffset) + i, *((unsigned long *)(aroffset + i))); \
-}
-
-#endif
-
-/************************************************************************************
- * Macro: WRITE_FRAME_BUFFER_STRING8
- * Purpose: Write multiple bytes to the frame buffer
- *
- * Arguments:
- * spoffset - offset to the beginning frame buffer location.
- * bytes - number of bytes to transfer. This number cannot be modified within the
- * macro (ex. bytes -= 4)
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- ************************************************************************************/
-
-#define WRITE_FRAME_BUFFER_STRING8(fboffset, bytes, array, array_offset) \
-{ \
- unsigned long i; \
- unsigned long aroffset = (unsigned long)array + (array_offset); \
- for (i = 0; i < bytes; i++) \
- WRITE_FB8 ((fboffset) + i, *((unsigned char *)(aroffset + i))); \
-}
-
-/************************************************************************************
- * Macro: WRITE_GPREG_STRING32
- * Purpose: Write multiple dwords to one GP register.
- *
- * Arguments:
- * regoffset - Offset of the GP register to be written.
- * dwords - number of dwords to transfer. It cannot be modified within the
- * macro (ex. dwords--)
- * counter - name of a counter variable that can be used in a loop. This
- * is used to optimize macros written in C.
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- * temp - name of a temporary variable that can be used for calculations.
- * This argument is also used for C-only macros.
- ************************************************************************************/
-
-#define WRITE_GPREG_STRING32(regoffset, dwords, counter, array, array_offset, temp) \
-{ \
- temp = (unsigned long)array + (array_offset); \
- for (counter = 0; counter < dwords; counter++) \
- WRITE_GP32 (regoffset, *((unsigned long *)temp + counter)); \
-}
-
-/************************************************************************************
- * Macro: WRITE_GPREG_STRING8
- * Purpose: Write 4 or less bytes to one GP register.
- *
- * Arguments:
- * regoffset - Offset of the GP register to be written.
- * bytes - number of bytes to transfer. This number will always.
- * be less than 4. It cannot be modified within the
- * macro (ex. bytes--)
- * shift - name of a shift variable that can be used as a shift count.
- * This variable holds the initial shift value into the GP register.
- * counter - name of a counter variable that can be used in a loop. This
- * is used to optimize macros written in C.
- * array - pointer to an array of unsigned characters.
- * array_offset - offset into the array from which to pull the first character.
- * temp1 - name of a temporary variable that can be used for calculations.
- * This argument is also used for C-only macros.
- * temp2 - name of a temporary variable that can be used for calculations.
- * This argument is also used for C-only macros.
- ************************************************************************************/
-#define WRITE_GPREG_STRING8(regoffset, bytes, shift, counter, array, array_offset, temp1, temp2) \
-{ \
- if (bytes) \
- { \
- temp1 = (unsigned long)array + (array_offset); \
- temp2 = 0; \
- for (counter = 0; counter < bytes; counter++) \
- { \
- temp2 |= ((unsigned long)(*((unsigned char *)(temp1 + counter)))) << shift; \
- shift += 8; \
- } \
- WRITE_GP32 (regoffset, temp2); \
- } \
-}
-
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_disp.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_disp.c
deleted file mode 100644
index c11900b6b..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_disp.c
+++ /dev/null
@@ -1,2153 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_disp.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_disp.c $
- *
- * This file contains routines to program the display controller.
- *
- * The "disp_gu1.c" and "disp_gu2.c" files implement the following routines:
- *
- * gfx_get_display_mode_count
- * gfx_get_display_mode
- * gfx_is_display_mode_supported
- * gfx_get_display_details
- * gfx_set_display_mode
- * gfx_set_display_bpp
- * gfx_set_display_timings
- * gfx_set_vtotal
- * gfx_get_display_pitch
- * gfx_set_display_pitch
- * gfx_set_display_offset
- * gfx_set_display_palette
- * gfx_set_display_palette_entry
- * gfx_set_cursor_enable
- * gfx_set_cursor_colors
- * gfx_set_cursor_position
- * gfx_set_cursor_shape32
- * gfx_set_cursor_shape64
- * gfx_set_icon_enable
- * gfx_set_icon_colors
- * gfx_set_icon_position
- * gfx_set_icon_shape64
- * gfx_set_compression_enable
- * gfx_set_compression_offset
- * gfx_set_compression_pitch
- * gfx_set_compression_size
- * gfx_set_display_priority_high
- * gfx_test_timing_active
- * gfx_test_vertical_active
- * gfx_wait_vertical_blank
- * gfx_reset_timing_lock
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- * gfx_get_hactive
- * gfx_get_hblank_start
- * gfx_get_hsync_start
- * gfx_get_hsync_end
- * gfx_get_hblank_end
- * gfx_get_htotal
- * gfx_get_vactive
- * gfx_get_vblank_start
- * gfx_get_vsync_start
- * gfx_get_vsync_end
- * gfx_get_vblank_end
- * gfx_get_vtotal
- * gfx_get_vline
- * gfx_get_display_bpp
- * gfx_get_display_offset
- * gfx_get_display_palette
- * gfx_get_cursor_enable
- * gfx_get_cursor_base
- * gfx_get_cursor_position
- * gfx_get_cursor_offset
- * gfx_get_cursor_color
- * gfx_get_icon_enable
- * gfx_get_icon_color
- * gfx_get_icon_offset
- * gfx_get_icon_position
- * gfx_get_compression_enable
- * gfx_get_compression_offset
- * gfx_get_compression_pitch
- * gfx_get_compression_size
- * gfx_get_display_priority_high
- * gfx_get_valid_bit
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-unsigned short PanelWidth=0;
-unsigned short PanelHeight=0;
-unsigned short PanelEnable=0;
-unsigned short ModeWidth;
-unsigned short ModeHeight;
-
-int DeltaX=0;
-int DeltaY=0;
-unsigned long prevstartAddr =0;
-unsigned long panelTop =0;
-unsigned long panelLeft =0;
-
-int gbpp=8;
-
-int gfx_compression_enabled = 0;
-int gfx_compression_active = 0;
-int gfx_line_double = 0;
-int gfx_pixel_double = 0;
-int gfx_timing_lock = 0;
-int gfx_dont_program = 0;
-DISPLAYMODE gfx_display_mode;
-
-/* DISPLAY MODE TIMINGS */
-
-DISPLAYMODE DisplayParams[] = {
-
-/* 320 x 200 */
-
-{ GFX_MODE_70HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_16BPP | /* 8 and 16 BPP valid */
- GFX_MODE_NEG_HSYNC | /* negative HSYNC */
- GFX_MODE_PIXEL_DOUBLE | /* Double width */
- GFX_MODE_LINE_DOUBLE, /* Double height */
- 0x140, 0x288, 0x290, 0x2F0, 0x318, 0x320, /* horizontal timings */
- 0x0C8, 0x197, 0x19C, 0x19E, 0x1BA, 0x1C1, /* vertical timings */
- 0x00192CCC, /* freq = 25.175 MHz */
-},
-
-/* 320 x 240 */
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_16BPP | /* 8 and 16 BPP valid */
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC | /* negative syncs */
- GFX_MODE_PIXEL_DOUBLE | /* Double width */
- GFX_MODE_LINE_DOUBLE, /* Double height */
- 0x0140, 0x0280, 0x0290, 0x02D0, 0x0348, 0x0348, /* horizontal timings */
- 0x00F0, 0x01E0, 0x01E1, 0x01E4, 0x01F4, 0x01F4, /* vertical timings */
- 0x001F8000, /* freq = 31.5 MHz */
-},
-
-/* 400 x 300 */
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_16BPP | /* 8 and 16 BPP valid */
- GFX_MODE_PIXEL_DOUBLE | /* Double width */
- GFX_MODE_LINE_DOUBLE, /* Double height */
- 0x0190, 0x0320, 0x0330, 0x0380, 0x0420, 0x0420, /* horizontal timings */
- 0x012C, 0x0258, 0x0259, 0x025C, 0x0271, 0x0271, /* vertical timings */
- 0x00318000, /* freq = 49.5 MHz */
-},
-
-/* 512 x 384 */
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_16BPP | /* 8 and 16 BPP valid */
- GFX_MODE_PIXEL_DOUBLE | /* Double width */
- GFX_MODE_LINE_DOUBLE, /* Double height */
- 0x0200, 0x0400, 0x0410, 0x0470, 0x0520, 0x0520, /* horizontal timings */
- 0x0180, 0x0300, 0x0301, 0x0304, 0x0320, 0x0320, /* vertical timings */
- 0x004EC000, /* freq = 78.75 MHz */
-},
-
-/* 640 x 400 */
-
-{ GFX_MODE_70HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC, /* negative HSYNC */
- 0x280, 0x288, 0x290, 0x2F0, 0x318, 0x320, /* horizontal timings */
- 0x190, 0x197, 0x19C, 0x19E, 0x1BA, 0x1C1, /* vertical timings */
- 0x00192CCC, /* freq = 25.175 MHz */
-},
-
-/* 640x480 */
-
-{ GFX_MODE_60HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC, /* negative syncs */
- 0x0280, 0x0288, 0x0290, 0x02E8, 0x0318, 0x0320, /* horizontal timings */
- 0x01E0, 0x01E8, 0x01EA, 0x01EC, 0x0205, 0x020D, /* vertical timings */
- 0x00192CCC, /* freq = 25.175 MHz */
-},
-
-{ GFX_MODE_72HZ | /* refresh rate = 72 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC, /* negative syncs */
- 0x0280, 0x0288, 0x0298, 0x02c0, 0x0338, 0x0340, /* horizontal timings */
- 0x01e0, 0x01e8, 0x01e9, 0x01ec, 0x0200, 0x0208, /* vertical timings */
- 0x001F8000, /* freq = 31.5 MHz */
-},
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC, /* negative syncs */
- 0x0280, 0x0280, 0x0290, 0x02D0, 0x0348, 0x0348, /* horizontal timings */
- 0x01E0, 0x01E0, 0x01E1, 0x01E4, 0x01F4, 0x01F4, /* vertical timings */
- 0x001F8000, /* freq = 31.5 MHz */
-},
-
-{ GFX_MODE_85HZ | /* refresh rate = 85 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC, /* negative syncs */
- 0x0280, 0x0280, 0x02B8, 0x02F0, 0x0340, 0x0340, /* horizontal timings */
- 0x01E0, 0x01E0, 0x01E1, 0x01E4, 0x01FD, 0x01FD, /* vertical timings */
- 0x00240000, /* freq = 36.0 MHz */
-},
-
-/* 800x600 */
-
-{ GFX_MODE_56HZ | /* refresh rate = 56 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0320, 0x0328, 0x0348, 0x03D0, 0x0418, 0x0420, /* horizontal timings */
- 0x0258, 0x0258, 0x0259, 0x025D, 0x0274, 0x0274, /* vertical timings */
- 0x00240000, /* freq = 36.00 MHz */
-},
-
-{ GFX_MODE_60HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0320, 0x0328, 0x0348, 0x03D0, 0x0418, 0x0420, /* horizontal timings */
- 0x0258, 0x0258, 0x0259, 0x025D, 0x0274, 0x0274, /* vertical timings */
- 0x00280000, /* freq = 40.00 MHz */
-},
-
-{ GFX_MODE_72HZ | /* refresh rate = 72 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0320, 0x0320, 0x0358, 0x03D0, 0x0410, 0x0410, /* horizontal timings */
- 0x0258, 0x0258, 0x027D, 0x0283, 0x029A, 0x029A, /* vertical timings */
- 0x00320000, /* freq = 49.5 MHz */
-},
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0320, 0x0320, 0x0330, 0x0380, 0x0420, 0x0420, /* horizontal timings */
- 0x0258, 0x0258, 0x0259, 0x025C, 0x0271, 0x0271, /* vertical timings */
- 0x00318000, /* freq = 49.5 MHz */
-},
-
-{ GFX_MODE_85HZ | /* refresh rate = 85 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0320, 0x0320, 0x0340, 0x0380, 0x0418, 0x0418, /* horizontal timings */
- 0x0258, 0x0258, 0x0259, 0x025C, 0x0277, 0x0277, /* vertical timings */
- 0x00384000, /* freq = 56.25 MHz */
-},
-
-/* 1024x768 */
-
-{ GFX_MODE_60HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC, /* negative syncs */
- 0x0400, 0x0400, 0x0418, 0x04A0, 0x0540, 0x0540, /* horizontal timings */
- 0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326, /* vertical timings */
- 0x00410000, /* freq = 65.00 MHz */
-},
-
-{ GFX_MODE_70HZ | /* refresh rate = 70 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP |
- GFX_MODE_NEG_HSYNC | GFX_MODE_NEG_VSYNC, /* negative syncs */
- 0x0400, 0x0400, 0x0418, 0x04A0, 0x0530, 0x0530, /* horizontal timings */
- 0x0300, 0x0300, 0x0303, 0x0309, 0x0326, 0x0326, /* vertical timings */
- 0x004B0000, /* freq = 78.75 MHz */
-},
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0400, 0x0400, 0x0410, 0x0470, 0x0520, 0x0520, /* horizontal timings */
- 0x0300, 0x0300, 0x0301, 0x0304, 0x0320, 0x0320, /* vertical timings */
- 0x004EC000, /* freq = 78.75 MHz */
-},
-
-{ GFX_MODE_85HZ | /* refresh rate = 85 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0400, 0x0400, 0x0430, 0x0490, 0x0560, 0x0560, /* horizontal timings */
- 0x0300, 0x0300, 0x0301, 0x0304, 0x0328, 0x0328, /* vertical timings */
- 0x005E8000, /* freq = 94.50 MHz */
-},
-
-/* 1152x864 */
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* all BPP valid */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0480, 0x0480, 0x04C0, 0x0540, 0x0640, 0x0640, /* horizontal timings */
- 0x0360, 0x0360, 0x0361, 0x0364, 0x0384, 0x0384, /* vertical timings */
- 0x006C0000, /* freq = 108.00 MHz */
-},
-
-/* 1280x1024 */
-
-{ GFX_MODE_60HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 16 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0500, 0x0500, 0x0530, 0x05A0, 0x0698, 0x0698, /* horizontal timings */
- 0x0400, 0x0400, 0x0401, 0x0404, 0x042A, 0x042A, /* vertical timings */
- 0x006C0000, /* freq = 108.0 MHz */
-},
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 16 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0500, 0x0500, 0x0510, 0x05A0, 0x0698, 0x0698, /* horizontal timings */
- 0x0400, 0x0400, 0x0401, 0x0404, 0x042A, 0x042A, /* vertical timings */
- 0x00870000, /* freq = 135.0 MHz */
-},
-
-{ GFX_MODE_85HZ | /* refresh rate = 85 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 16 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0500, 0x0500, 0x0540, 0x05E0, 0x06C0, 0x06C0, /* horizontal timings */
- 0x0400, 0x0400, 0x0401, 0x0404, 0x0430, 0x0430, /* vertical timings */
- 0x009D8000, /* freq = 157.5 MHz */
-},
-
-/*********************************/
-/* BEGIN REDCLOUD-SPECIFIC MODES */
-/*-------------------------------*/
-
-/* 1600 x 1200 */
-
-{ GFX_MODE_60HZ | /* refresh rate = 60 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 32 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870, /* horizontal timings */
- 0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2, /* vertical timings */
- 0x00A20000, /* freq = 162.0 MHz */
-},
-
-{ GFX_MODE_70HZ | /* refresh rate = 70 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 32 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870, /* horizontal timings */
- 0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2, /* vertical timings */
- 0x00BD0000, /* freq = 189.0 MHz */
-},
-
-{ GFX_MODE_75HZ | /* refresh rate = 75 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 32 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870, /* horizontal timings */
- 0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2, /* vertical timings */
- 0x00CA8000, /* freq = 202.5 MHz */
-},
-
-{ GFX_MODE_85HZ | /* refresh rate = 85 */
- GFX_MODE_8BPP | GFX_MODE_12BPP | GFX_MODE_15BPP | /* Up to 32 bpp */
- GFX_MODE_16BPP | GFX_MODE_24BPP,
- 0x0640, 0x0640, 0x0680, 0x0740, 0x0870, 0x0870, /* horizontal timings */
- 0x04B0, 0x04B0, 0x04B1, 0x04B4, 0x04E2, 0x04E2, /* vertical timings */
- 0x00E58000, /* freq = 229.5 MHz */
-},
-};
-
-/* UPDATE THIS VARIABLE WHENEVER NEW REDCLOUD-SPECIFIC MODES ARE ADDED */
-
-#define REDCLOUD_SPECIFIC_MODES 4
-
-#define NUM_RC_DISPLAY_MODES sizeof(DisplayParams) / sizeof(DISPLAYMODE)
-#define NUM_GX_DISPLAY_MODES (NUM_RC_DISPLAY_MODES - REDCLOUD_SPECIFIC_MODES)
-
-
-FIXEDTIMINGS FixedParams[] = {
-/* 640x480 Panel */
-{ 640 , 480, 640, 480,
- 0x0280, 0x280, 0x2a8, 0x328, 0x380, 0x380,
- 0x1e0, 0x1e0, 0x1e1, 0x1e5, 0x1fc, 0x1fc,
- 0x00192CCC,
-},
-
-{ 640 , 480, 800, 600,
- 0x0280, 0x280, 0x2a8, 0x328, 0x380, 0x380,
- 0x1e0, 0x1e0, 0x1e1, 0x1e5, 0x1fc, 0x1fc,
- 0x00192CCC,
-},
-
-{ 640 , 480, 1024 , 768,
- 0x0280, 0x280, 0x2a8, 0x328, 0x380, 0x380,
- 0x1e0, 0x1e0, 0x1e1, 0x1e5, 0x1fc, 0x1fc,
- 0x00192CCC,
-},
-
-{ 640 , 480, 1152 , 864,
- 0x0280, 0x280, 0x2a8, 0x328, 0x380, 0x380,
- 0x1e0, 0x1e0, 0x1e1, 0x1e5, 0x1fc, 0x1fc,
- 0x00192CCC,
-},
-
-{ 640 , 480, 1280, 1024,
- 0x0280, 0x280, 0x2a8, 0x328, 0x380, 0x380,
- 0x1e0, 0x1e0, 0x1e1, 0x1e5, 0x1fc, 0x1fc,
- 0x00192CCC,
-},
-
-{ 640 , 480, 1600, 1200,
- 0x0280, 0x280, 0x2a8, 0x328, 0x380, 0x380,
- 0x1e0, 0x1e0, 0x1e1, 0x1e5, 0x1fc, 0x1fc,
- 0x00192CCC,
-},
-
-
-/* 800x600 Panel */
-{ 800 , 600, 640, 480,
- 0x0280, 0x2d0, 0x2f8, 0x378, 0x3d0, 0x420,
- 0x1e0, 0x21c, 0x21d, 0x221, 0x238, 0x274,
- 0x00280000,
-},
-
-{ 800 , 600, 800, 600,
- 0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
- 0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
- 0x00280000,
-},
-
-{ 800 , 600, 1024, 768,
- 0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
- 0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
- 0x00280000,
-},
-
-{ 800 , 600, 1152, 864,
- 0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
- 0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
- 0x00280000,
-},
-
-{ 800 , 600, 1280, 1024,
- 0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
- 0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
- 0x00280000,
-},
-
-{ 800 , 600, 1600, 1200,
- 0x320, 0x320, 0x348, 0x3c8, 0x420, 0x420,
- 0x258, 0x258, 0x259, 0x25d, 0x274, 0x274,
- 0x00280000,
-},
-
-/* 1024x768 panel */
-{ 1024 , 768, 640, 480,
- 0x0280, 0x340, 0x368, 0x3e8, 0x440, 0x500,
- 0x1e0, 0x270, 0x271, 0x275, 0x28c, 0x31c,
- 0x00410000,
-},
-
-{ 1024 , 768, 800, 600,
- 0x0320, 0x390, 0x3b8, 0x438, 0x490, 0x500,
- 0x258, 0x2ac, 0x2ad, 0x2b1, 0x2c8, 0x31c,
- 0x00410000,
-},
-
-{ 1024 , 768, 1024, 768,
- 0x0400, 0x400, 0x428, 0x4a8, 0x500, 0x500,
- 0x300, 0x300, 0x301, 0x305, 0x31c, 0x31c,
- 0x00410000,
-},
-
-{ 1024 , 768, 1152, 864,
- 0x0400, 0x400, 0x428, 0x4a8, 0x500, 0x500,
- 0x300, 0x300, 0x301, 0x305, 0x31c, 0x31c,
- 0x00410000,
-},
-
-{ 1024 , 768, 1280, 1024,
- 0x0400, 0x400, 0x428, 0x4a8, 0x500, 0x500,
- 0x300, 0x300, 0x301, 0x305, 0x31c, 0x31c,
- 0x00410000,
-},
-
-{ 1024 , 768, 1600, 1200,
- 0x0400, 0x400, 0x428, 0x4a8, 0x500, 0x500,
- 0x300, 0x300, 0x301, 0x305, 0x31c, 0x31c,
- 0x00410000,
-},
-
-};
-
-
-#define NUM_FIXED_TIMINGS_MODES sizeof(FixedParams)/sizeof(FIXEDTIMINGS)
-
-
-/* INCLUDE SUPPORT FOR FIRST GENERATION, IF SPECIFIED. */
-
-#if GFX_DISPLAY_GU1
-#include "disp_gu1.c"
-#endif
-
-/* INCLUDE SUPPORT FOR SECOND GENERATION, IF SPECIFIED. */
-
-#if GFX_DISPLAY_GU2
-#include "disp_gu2.c"
-#endif
-
-/*---------------------------------------------------------------------------
- * gfx_reset_timing_lock
- *
- * This routine resets the timing change lock. The lock can only be set by
- * setting a flag when calling mode set.
- *---------------------------------------------------------------------------
- */
-void gfx_reset_timing_lock(void)
-{
- gfx_timing_lock = 0;
-}
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either first or second generation routines. */
-
-#if GFX_DISPLAY_DYNAMIC
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_bpp
- *---------------------------------------------------------------------------
- */
-int gfx_set_display_bpp(unsigned short bpp)
-{
- int retval = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_set_display_bpp(bpp);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_set_display_bpp(bpp);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_is_display_mode_supported
- * check if given mode supported,
- * return the supported mode on success, -1 on fail
- *---------------------------------------------------------------------------
- */
-int gfx_is_display_mode_supported(int xres, int yres, int bpp, int hz)
-{
- int retval = -1;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_is_display_mode_supported(xres, yres, bpp, hz);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_is_display_mode_supported(xres, yres, bpp, hz);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_mode
- *---------------------------------------------------------------------------
- */
-int gfx_set_display_mode(int xres, int yres, int bpp, int hz)
-{
- int retval = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_set_display_mode(xres, yres, bpp, hz);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_set_display_mode(xres, yres, bpp, hz);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_timings
- *---------------------------------------------------------------------------
- */
-int gfx_set_display_timings(unsigned short bpp, unsigned short flags,
- unsigned short hactive, unsigned short hblankstart,
- unsigned short hsyncstart, unsigned short hsyncend,
- unsigned short hblankend, unsigned short htotal,
- unsigned short vactive, unsigned short vblankstart,
- unsigned short vsyncstart, unsigned short vsyncend,
- unsigned short vblankend, unsigned short vtotal,
- unsigned long frequency)
-{
- int retval = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_set_display_timings(bpp, flags,
- hactive, hblankstart, hsyncstart, hsyncend, hblankend, htotal,
- vactive, vblankstart, vsyncstart, vsyncend, vblankend, vtotal,
- frequency);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_set_display_timings(bpp, flags,
- hactive, hblankstart, hsyncstart, hsyncend, hblankend, htotal,
- vactive, vblankstart, vsyncstart, vsyncend, vblankend, vtotal,
- frequency);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_pitch
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_pitch(unsigned short pitch)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_display_pitch(pitch);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_pitch(pitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_offset
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_offset(unsigned long offset)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_display_offset(offset);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_offset(offset);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_palette_entry
- *---------------------------------------------------------------------------
- */
-int gfx_set_display_palette_entry(unsigned long index, unsigned long palette)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_display_palette_entry(index, palette);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_display_palette_entry(index, palette);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_palette
- *---------------------------------------------------------------------------
- */
-int gfx_set_display_palette(unsigned long *palette)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_display_palette(palette);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_display_palette(palette);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_enable
- *---------------------------------------------------------------------------
- */
-void gfx_set_cursor_enable(int enable)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_cursor_enable(enable);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_cursor_enable(enable);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_colors
- *---------------------------------------------------------------------------
- */
-void gfx_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_cursor_colors(bkcolor, fgcolor);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_cursor_colors(bkcolor, fgcolor);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_position
- *---------------------------------------------------------------------------
- */
-void gfx_set_cursor_position(unsigned long memoffset,
- unsigned short xpos, unsigned short ypos,
- unsigned short xhotspot, unsigned short yhotspot)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_cursor_position(memoffset, xpos, ypos, xhotspot, yhotspot);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_cursor_position(memoffset, xpos, ypos, xhotspot, yhotspot);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_shape32
- *---------------------------------------------------------------------------
- */
-void gfx_set_cursor_shape32(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_cursor_shape32(memoffset, andmask, xormask);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_cursor_shape32(memoffset, andmask, xormask);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_cursor_shape64
- *---------------------------------------------------------------------------
- */
-void gfx_set_cursor_shape64(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_cursor_shape64(memoffset, andmask, xormask);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_enable
- *---------------------------------------------------------------------------
- */
-void gfx_set_icon_enable(int enable)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_icon_enable(enable);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_colors
- *---------------------------------------------------------------------------
- */
-void gfx_set_icon_colors (unsigned long color0, unsigned long color1, unsigned long color2)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_icon_colors (color0, color1, color2);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_position
- *---------------------------------------------------------------------------
- */
-void gfx_set_icon_position(unsigned long memoffset, unsigned short xpos)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_icon_position(memoffset, xpos);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_icon_shape64
- *---------------------------------------------------------------------------
- */
-void gfx_set_icon_shape64(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask, unsigned int lines)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_icon_shape64(memoffset, andmask, xormask, lines);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_compression_enable(int enable)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_compression_enable(enable);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_compression_enable(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_offset
- *---------------------------------------------------------------------------
- */
-int gfx_set_compression_offset(unsigned long offset)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_compression_offset(offset);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_compression_offset(offset);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_pitch
- *---------------------------------------------------------------------------
- */
-int gfx_set_compression_pitch(unsigned short pitch)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_compression_pitch(pitch);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_compression_pitch(pitch);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_compression_size
- *---------------------------------------------------------------------------
- */
-int gfx_set_compression_size(unsigned short size)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_compression_size(size);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_compression_size(size);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_priority_high
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_priority_high(int enable)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_display_priority_high(enable);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_format (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_format". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_format(unsigned long format)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_format(format);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_enable". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_enable(int enable)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_display_video_enable(enable);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_enable(enable);
-# endif
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_size (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_size". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_size(unsigned short width, unsigned short height)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_display_video_size(width, height);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_size(width, height);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_offset (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_offset". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_offset(unsigned long offset)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_set_display_video_offset(offset);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_offset(offset);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_yuv_offsets (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_yuv_offsets". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_yuv_offsets(unsigned long yoffset, unsigned long uoffset,
- unsigned long voffset)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_yuv_offsets(yoffset, uoffset, voffset);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_yuv_pitch (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_yuv_pitch". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_yuv_pitch (unsigned long ypitch, unsigned long uvpitch)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_yuv_pitch (ypitch, uvpitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_downscale (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_vertical_downscale". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_downscale (unsigned short srch, unsigned short dsth)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_downscale (srch, dsth);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_video_vertical_downscale_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine is called by "gfx_set_video_vertical_downscale_enable". It abstracts the
- * version of the display controller from the video overlay routines.
- *---------------------------------------------------------------------------
- */
-void gfx_set_display_video_vertical_downscale_enable (int enable)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_set_display_video_vertical_downscale_enable (enable);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_timing_active
- *---------------------------------------------------------------------------
- */
-int gfx_test_timing_active(void)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_test_timing_active();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_test_timing_active();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_vertical_active
- *---------------------------------------------------------------------------
- */
-int gfx_test_vertical_active(void)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_test_vertical_active();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_test_vertical_active();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_wait_vertical_blank
- *---------------------------------------------------------------------------
- */
-int gfx_wait_vertical_blank(void)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_wait_vertical_blank();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_wait_vertical_blank();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_delay_milliseconds
- *---------------------------------------------------------------------------
- */
-void gfx_delay_milliseconds(unsigned long milliseconds)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_delay_milliseconds(milliseconds);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_delay_milliseconds(milliseconds);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_delay_microseconds
- *---------------------------------------------------------------------------
- */
-void gfx_delay_microseconds(unsigned long microseconds)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_delay_microseconds(microseconds);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_delay_microseconds(microseconds);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_enable_panning
- *
- * This routine enables the panning when the Mode is bigger than the panel
- * size.
- *---------------------------------------------------------------------------
- */
-void gfx_enable_panning(int x, int y)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_enable_panning( x, y);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_enable_panning( x, y);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_fixed_timings
- *---------------------------------------------------------------------------
- */
-int gfx_set_fixed_timings(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_fixed_timings( panelResX, panelResY, width, height, bpp);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_fixed_timings( panelResX, panelResY, width, height, bpp);
-# endif
- return (status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_panel_present
- *---------------------------------------------------------------------------
- */
-int gfx_set_panel_present(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp)
-{
- int status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_set_panel_present( panelResX, panelResY, width, height, bpp);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_set_panel_present( panelResX, panelResY, width, height, bpp);
-# endif
- return (status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vtotal
- *---------------------------------------------------------------------------
- */
-int gfx_set_vtotal(unsigned short vtotal)
-{
- int retval = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_set_vtotal(vtotal);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_set_vtotal(vtotal);
-# endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------*
- * THE FOLLOWING READ ROUTINES ARE ALWAYS INCLUDED: *
- * gfx_get_hsync_end, gfx_get_htotal, gfx_get_vsync_end, gfx_get_vtotal *
- * are used by the video overlay routines. *
- * *
- * gfx_get_vline and gfx_vactive are used to prevent an issue for the *
- * SC1200. *
- * *
- * The others are part of the Durango API. *
- *-----------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * gfx_mode_frequency_supported
- *----------------------------------------------------------------------------
- */
-int gfx_mode_frequency_supported(int xres, int yres, int bpp, unsigned long frequency)
-{
- int freq = 0;
-
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- freq = gu1_mode_frequency_supported(xres, yres, bpp, frequency);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- freq = gu2_mode_frequency_supported(xres, yres, bpp, frequency);
-# endif
- return(freq);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_refreshrate_from_frequency
- *----------------------------------------------------------------------------
- */
-int gfx_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_get_refreshrate_from_frequency(xres, yres, bpp, hz, frequency);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_get_refreshrate_from_frequency(xres, yres, bpp, hz, frequency);
-# endif
-
- return(1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_refreshrate_from_mode
- *----------------------------------------------------------------------------
- */
-int gfx_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz, unsigned long frequency)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_get_refreshrate_from_mode(xres, yres, bpp, hz, frequency);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_get_refreshrate_from_mode(xres, yres, bpp, hz, frequency);
-# endif
-
- return(1);
-}
-
-/*----------------------------------------------------------------------------
- * gfx_get_frequency_from_refreshrate
- *----------------------------------------------------------------------------
- */
-int gfx_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz, int *frequency)
-{
- int retval = -1;
-
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_get_frequency_from_refreshrate(xres, yres, bpp, hz, frequency);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_get_frequency_from_refreshrate(xres, yres, bpp, hz, frequency);
-# endif
-
- return retval;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_max_supported_pixel_clock
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_max_supported_pixel_clock (void)
-{
- unsigned long status = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_get_max_supported_pixel_clock();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_get_max_supported_pixel_clock();
-# endif
- return (status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_pitch
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_display_pitch(void)
-{
- unsigned short pitch = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- pitch = gu1_get_display_pitch();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- pitch = gu2_get_display_pitch();
-# endif
- return(pitch);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_mode_count
- * return # of modes supported.
- *---------------------------------------------------------------------------
- */
-int gfx_get_display_mode_count(void)
-{
- int retval = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_get_display_mode_count();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_get_display_mode_count();
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_frame_buffer_line_size
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_frame_buffer_line_size(void)
-{
- unsigned long retval = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_get_frame_buffer_line_size();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_get_frame_buffer_line_size();
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_mode
- * get the curent mode set,
- * return the supported mode on success, -1 on fail
- *---------------------------------------------------------------------------
- */
-int gfx_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
-{
- int retval = -1;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_get_display_mode(xres, yres, bpp, hz);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_get_display_mode(xres, yres, bpp, hz);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_details
- * given the mode get's the resoultion details, width, height, freq
- *---------------------------------------------------------------------------
- */
-int gfx_get_display_details(unsigned int mode, int *xres, int *yres, int *hz)
-{
- int retval = -1;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- retval = gu1_get_display_details(mode, xres, yres, hz);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- retval = gu2_get_display_details(mode, xres, yres, hz);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hactive
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_hactive(void)
-{
- unsigned short hactive = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- hactive = gu1_get_hactive();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- hactive = gu2_get_hactive();
-# endif
- return(hactive);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hsync_start
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_hsync_start(void)
-{
- unsigned short hsync_start = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- hsync_start = gu1_get_hsync_start();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- hsync_start = gu2_get_hsync_start();
-# endif
- return(hsync_start);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hsync_end
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_hsync_end(void)
-{
- unsigned short hsync_end = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- hsync_end = gu1_get_hsync_end();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- hsync_end = gu2_get_hsync_end();
-# endif
- return(hsync_end);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_htotal
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_htotal(void)
-{
- unsigned short htotal = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- htotal = gu1_get_htotal();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- htotal = gu2_get_htotal();
-# endif
- return(htotal);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vactive
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vactive(void)
-{
- unsigned short vactive = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vactive = gu1_get_vactive();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vactive = gu2_get_vactive();
-# endif
- return(vactive);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsync_end
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vsync_end(void)
-{
- unsigned short vsync_end = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vsync_end = gu1_get_vsync_end();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vsync_end = gu2_get_vsync_end();
-# endif
- return(vsync_end);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vtotal
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vtotal(void)
-{
- unsigned short vtotal = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vtotal = gu1_get_vtotal();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vtotal = gu2_get_vtotal();
-# endif
- return(vtotal);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_bpp
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_display_bpp(void)
-{
- unsigned short bpp = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- bpp = gu1_get_display_bpp();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- bpp = gu2_get_display_bpp();
-# endif
- return(bpp);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vline
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vline(void)
-{
- unsigned short vline = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vline = gu1_get_vline();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vline = gu2_get_vline();
-# endif
- return(vline);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_offset
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_display_offset(void)
-{
- unsigned long offset = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- offset = gu1_get_display_offset();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- offset = gu2_get_display_offset();
-# endif
- return(offset);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_cursor_offset
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_cursor_offset(void)
-{
- unsigned long base = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- base = gu1_get_cursor_offset();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- base = gu2_get_cursor_offset();
-# endif
- return(base);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*---------------------------------------------------------------------------
- * gfx_get_hblank_start
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_hblank_start(void)
-{
- unsigned short hblank_start = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- hblank_start = gu1_get_hblank_start();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- hblank_start = gu2_get_hblank_start();
-# endif
- return(hblank_start);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_hblank_end
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_hblank_end(void)
-{
- unsigned short hblank_end = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- hblank_end = gu1_get_hblank_end();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- hblank_end = gu2_get_hblank_end();
-# endif
- return(hblank_end);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vblank_start
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vblank_start(void)
-{
- unsigned short vblank_start = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vblank_start = gu1_get_vblank_start();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vblank_start = gu2_get_vblank_start();
-# endif
- return(vblank_start);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsync_start
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vsync_start(void)
-{
- unsigned short vsync_start = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vsync_start = gu1_get_vsync_start();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vsync_start = gu2_get_vsync_start();
-# endif
- return(vsync_start);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vblank_end
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_vblank_end(void)
-{
- unsigned short vblank_end = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- vblank_end = gu1_get_vblank_end();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- vblank_end = gu2_get_vblank_end();
-# endif
- return(vblank_end);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_palette_entry
- *---------------------------------------------------------------------------
- */
-int gfx_get_display_palette_entry(unsigned long index, unsigned long *palette)
-{
- int status = 0;
-
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- status = gu1_get_display_palette_entry(index, palette);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- status = gu2_get_display_palette_entry(index, palette);
-# endif
-
- return status;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_palette
- *---------------------------------------------------------------------------
- */
-void gfx_get_display_palette(unsigned long *palette)
-{
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- gu1_get_display_palette(palette);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_get_display_palette(palette);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_cursor_enable
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_cursor_enable(void)
-{
- unsigned long enable = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- enable = gu1_get_cursor_enable();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- enable = gu2_get_cursor_enable();
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_cursor_position
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_cursor_position(void)
-{
- unsigned long position = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- position = gu1_get_cursor_position();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- position = gu2_get_cursor_position();
-# endif
- return(position);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_cursor_clip
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_cursor_clip(void)
-{
- unsigned long offset = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- offset = gu1_get_cursor_clip();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- offset = gu2_get_cursor_clip();
-# endif
- return(offset);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_cursor_color
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_cursor_color(int index)
-{
- unsigned long color = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- color = gu1_get_cursor_color(index);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- color = gu2_get_cursor_color(index);
-# endif
- return(color);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_icon_enable
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_icon_enable(void)
-{
- unsigned long enable = 0;
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- enable = gu2_get_icon_enable();
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_icon_offset
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_icon_offset(void)
-{
- unsigned long base = 0;
-
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- base = gu2_get_icon_offset();
-# endif
-
- return(base);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_icon_position
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_icon_position(void)
-{
- unsigned long position = 0;
-
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- position = gu2_get_icon_position();
-# endif
-
- return(position);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_icon_color
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_icon_color(int index)
-{
- unsigned long color = 0;
-
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- color = gu2_get_icon_color(index);
-# endif
-
- return(color);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_compression_enable
- *---------------------------------------------------------------------------
- */
-int gfx_get_compression_enable(void)
-{
- int enable = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- enable = gu1_get_compression_enable();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- enable = gu2_get_compression_enable();
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_compression_offset
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_compression_offset(void)
-{
- unsigned long offset = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- offset = gu1_get_compression_offset();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- offset = gu2_get_compression_offset();
-# endif
- return(offset);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_compression_pitch
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_compression_pitch(void)
-{
- unsigned short pitch = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- pitch = gu1_get_compression_pitch();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- pitch = gu2_get_compression_pitch();
-# endif
- return(pitch);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_compression_size
- *---------------------------------------------------------------------------
- */
-unsigned short gfx_get_compression_size(void)
-{
- unsigned short size = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- size = gu1_get_compression_size();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- size = gu2_get_compression_size();
-# endif
- return(size);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_priority_high
- *---------------------------------------------------------------------------
- */
-int gfx_get_display_priority_high(void)
-{
- int high = GFX_STATUS_UNSUPPORTED;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- high = gu1_get_display_priority_high();
-# endif
- return(high);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_valid_bit
- *---------------------------------------------------------------------------
- */
-int gfx_get_valid_bit(int line)
-{
- int valid = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- valid = gu1_get_valid_bit(line);
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- valid = gu2_get_valid_bit(line);
-# endif
- return(valid);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_offset
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_display_video_offset(void)
-{
- unsigned long offset = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- offset = gu1_get_display_video_offset();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- offset = gu2_get_display_video_offset();
-# endif
- return(offset);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_yuv_offsets
- *---------------------------------------------------------------------------
- */
-void gfx_get_display_video_yuv_offsets(unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_get_display_video_yuv_offsets(yoffset, uoffset, voffset);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_yuv_offsets
- *---------------------------------------------------------------------------
- */
-void gfx_get_display_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
-{
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- gu2_get_display_video_yuv_pitch(ypitch, uvpitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_downscale_delta
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_display_video_downscale_delta(void)
-{
- unsigned long ret_value = 0;
-
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- ret_value = gu2_get_display_video_downscale_delta();
-# endif
-
- return ret_value;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_downscale_delta
- *---------------------------------------------------------------------------
- */
-int gfx_get_display_video_downscale_enable(void)
-{
- int ret_value = 0;
-
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- ret_value = gu2_get_display_video_downscale_enable();
-# endif
-
- return ret_value;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_display_video_size
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_display_video_size(void)
-{
- unsigned long size = 0;
-# if GFX_DISPLAY_GU1
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU1)
- size = gu1_get_display_video_size();
-# endif
-# if GFX_DISPLAY_GU2
- if (gfx_display_type & GFX_DISPLAY_TYPE_GU2)
- size = gu2_get_display_video_size();
-# endif
- return(size);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-#endif /* GFX_DISPLAY_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_i2c.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_i2c.c
deleted file mode 100644
index cbcb737d6..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_i2c.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_i2c.c,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_i2c.c $
- *
- * This file contains routines to write to and read from the I2C bus.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* INCLUDE ROUTINES FOR ACCESS.BUS, IF SPECIFIED */
-/* This is for SC1200 systems. */
-
-#if GFX_I2C_ACCESS
-#include "i2c_acc.c"
-#endif
-
-/* INCLUDE ROUTINES FOR CS5530 GPIOs, IF SPECIFIED */
-/* This is for GXLV systems that use GPIOs on the CS5530 for I2C. */
-
-#if GFX_I2C_GPIO
-#include "i2c_gpio.c"
-#endif
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either ACCESS.bus or GPIO routines. */
-
-#if GFX_I2C_DYNAMIC
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_reset
- *---------------------------------------------------------------------------
- */
-int gfx_i2c_reset(unsigned char busnum, short adr, char freq)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-#if GFX_I2C_ACCESS
- if (gfx_i2c_type & GFX_I2C_TYPE_ACCESS)
- status = acc_i2c_reset(busnum, adr, freq);
-#endif
-#if GFX_I2C_GPIO
- if (gfx_i2c_type & GFX_I2C_TYPE_GPIO)
- status = gpio_i2c_reset(busnum, adr, freq);
-#endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_select_gpio
- *---------------------------------------------------------------------------
- */
-int gfx_i2c_select_gpio(int clock, int data)
-{
-#if GFX_I2C_ACCESS
- if (gfx_i2c_type & GFX_I2C_TYPE_ACCESS)
- acc_i2c_select_gpio(clock, data);
-#endif
-#if GFX_I2C_GPIO
- if (gfx_i2c_type & GFX_I2C_TYPE_GPIO)
- gpio_i2c_select_gpio(clock, data);
-#endif
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_write
- *---------------------------------------------------------------------------
- */
-int gfx_i2c_write(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data)
-{
- int status = -1;
-#if GFX_I2C_ACCESS
- if (gfx_i2c_type & GFX_I2C_TYPE_ACCESS)
- status = acc_i2c_write(busnum, chipadr, subadr, bytes, data);
-#endif
-#if GFX_I2C_GPIO
- if (gfx_i2c_type & GFX_I2C_TYPE_GPIO)
- status = gpio_i2c_write(busnum, chipadr, subadr, bytes, data);
-#endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_read
- *---------------------------------------------------------------------------
- */
-int gfx_i2c_read(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data)
-{
- int status = -1;
-#if GFX_I2C_ACCESS
- if (gfx_i2c_type & GFX_I2C_TYPE_ACCESS)
- status = acc_i2c_read(busnum, chipadr, subadr, bytes, data);
-#endif
-#if GFX_I2C_GPIO
- if (gfx_i2c_type & GFX_I2C_TYPE_GPIO)
- status = gpio_i2c_read(busnum, chipadr, subadr, bytes, data);
-#endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_init
- *---------------------------------------------------------------------------
- */
-int gfx_i2c_init(void)
-{
- int status = -1;
-#if GFX_I2C_ACCESS
- if (gfx_i2c_type & GFX_I2C_TYPE_ACCESS)
- status = acc_i2c_init();
-#endif
-#if GFX_I2C_GPIO
- if (gfx_i2c_type & GFX_I2C_TYPE_GPIO)
- status = gpio_i2c_init();
-#endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_cleanup
- *---------------------------------------------------------------------------
- */
-void gfx_i2c_cleanup(void)
-{
-#if GFX_I2C_ACCESS
- if (gfx_i2c_type & GFX_I2C_TYPE_ACCESS)
- acc_i2c_cleanup();
-#endif
-#if GFX_I2C_GPIO
- if (gfx_i2c_type & GFX_I2C_TYPE_GPIO)
- gpio_i2c_cleanup();
-#endif
-}
-
-#endif /* GFX_I2C_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_init.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_init.c
deleted file mode 100644
index 93b0102b5..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_init.c
+++ /dev/null
@@ -1,699 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_init.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_init.c $
- *
- * This file contains routines typically used in driver initialization.
- *
- * Routines:
- *
- * gfx_pci_config_read
- * gfx_cpu_config_read
- * gfx_detect_cpu
- * gfx_detect_video
- * gfx_get_cpu_register_base
- * gfx_get_frame_buffer_base
- * gfx_get_frame_buffer_size
- * gfx_get_vid_register_base
- * gfx_get_vip_register_base
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* CONSTANTS USED BY THE INITIALIZATION CODE */
-
-#define PCI_CONFIG_ADDR 0x0CF8
-#define PCI_CONFIG_DATA 0x0CFC
-#define PCI_VENDOR_DEVICE_GXM 0x00011078
-#define PCI_VENDOR_DEVICE_REDCLOUD 0x0028100B
-#define REDCLOUD_VIDEO_PCI_VENDOR_DEVICE 0x0030100B
-
-#define GXM_CONFIG_GCR 0xB8
-#define GXM_CONFIG_CCR3 0xC3
-#define GXM_CONFIG_DIR0 0xFE
-#define GXM_CONFIG_DIR1 0xFF
-
-/* STATIC VARIABLES FOR THIS FILE */
-
-unsigned long gfx_cpu_version = 0;
-unsigned long gfx_cpu_frequency = 0;
-unsigned long gfx_vid_version = 0;
-unsigned long gfx_gx1_scratch_base = 0;
-unsigned long gfx_gx2_scratch_base = 0x7FC000;
-ChipType gfx_chip_revision = CHIP_NOT_DETECTED;
-
-/* INCLUDE SUPPORT FOR FIRST GENERATION, IF SPECIFIED. */
-
-#if GFX_INIT_GU1
-#include "init_gu1.c"
-#endif
-
-/* INCLUDE SUPPORT FOR SECOND GENERATION, IF SPECIFIED. */
-
-#if GFX_INIT_GU2
-#include "init_gu2.c"
-#endif
-
-/* THE FOLLOWING ROUTINES ARE NEVER DYNAMIC */
-/* They are used to set the variables for future dynamic */
-/* function calls. */
-
-/*-----------------------------------------------------------------------------
- * gfx_detect_chip
- *
- * This routine returns the name and revision of the chip. This function is only
- * relevant to the SC1200.
- *-----------------------------------------------------------------------------
- */
-ChipType gfx_detect_chip(void)
-{
- unsigned char pid = INB(SC1200_CB_BASE_ADDR + SC1200_CB_PID);
- unsigned char rev = INB(SC1200_CB_BASE_ADDR + SC1200_CB_REV);
-
- gfx_chip_revision = CHIP_NOT_DETECTED;
-
- if (pid == 0x4)
- {
- switch (rev)
- {
- case 0:
- gfx_chip_revision = SC1200_REV_A;
- break;
- case 1:
- gfx_chip_revision = SC1200_REV_B1_B2;
- break;
- case 2:
- gfx_chip_revision = SC1200_REV_B3;
- break;
- case 3:
- gfx_chip_revision = SC1200_REV_C1;
- break;
- case 4:
- gfx_chip_revision = SC1200_REV_D1;
- break;
- case 5:
- gfx_chip_revision = SC1200_REV_D1_1;
- break;
- case 6:
- gfx_chip_revision = SC1200_REV_D2_MVD;
- break;
- }
- if (rev > 0x6)
- gfx_chip_revision = SC1200_FUTURE_REV;
- }
- else if (pid == 0x5)
- {
- if (rev == 0x6)
- gfx_chip_revision = SC1200_REV_D2_MVE;
- else if (rev > 0x6)
- gfx_chip_revision = SC1200_FUTURE_REV;
- }
- return(gfx_chip_revision);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_detect_cpu
- *
- * This routine returns the type and revison of the CPU. If a Geode
- * processor is not present, the routine returns zero.
- *
- * The return value is as follows:
- * bits[24:16] = minor version
- * bits[15:8] = major version
- * bits[7:0] = type (1 = GXm, 2 = SC1200, 3 = Redcloud)
- *
- * A return value of 0x00020501, for example, indicates GXm version 5.2.
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_detect_cpu(void)
-{
-
- unsigned long value = 0;
- unsigned long version = 0;
-
- /* initialize core freq. to 0 */
- gfx_cpu_frequency = 0;
-
-#if GFX_INIT_GU1
-
- value = gfx_pci_config_read(0x80000000);
-
- if (value == PCI_VENDOR_DEVICE_GXM)
- {
- unsigned char dir0 = gfx_gxm_config_read(GXM_CONFIG_DIR0) & 0xF0;
- unsigned char dir1 = gfx_gxm_config_read(GXM_CONFIG_DIR1);
-
- if (dir0 == 0x40)
- {
- /* CHECK FOR GXLV (and GXm) (DIR1 = 0x30 THROUGH 0x82) */
-
- if ((dir1 >= 0x30) && (dir1 <= 0x82))
- {
- /* Major version is one less than what appears in DIR1 */
- if( (dir1&0xF0)<0x70){
-
- version = GFX_CPU_GXLV |
-
- ((( ( (unsigned long) dir1 >> 4)-1 ) << 8) ) | /* major - 1 */
-
- ((((unsigned long) dir1 & 0x0F)) << 16); /* minor */
- }
- else{
- version = GFX_CPU_GXLV |
- ((((unsigned long) dir1 >> 4) ) << 8) | /* major */
- ((((unsigned long) dir1 & 0x0F)) << 16); /* minor */
-
- }
- /* Currently always CS5530 for video overlay. */
-
-# if GFX_VIDEO_DYNAMIC
- gfx_video_type = GFX_VIDEO_TYPE_CS5530;
-# endif
-
- /* Currently always CS5530 GPIOs for I2C access. */
-
-# if GFX_I2C_DYNAMIC
- gfx_i2c_type = GFX_I2C_TYPE_GPIO;
-# endif
-
-# if GFX_TV_DYNAMIC
- gfx_tv_type = GFX_TV_TYPE_FS451;
-# endif
- }
- }
- else if (dir0 == 0xB0)
- {
- /* CHECK FOR SC1200 */
-
- if ((dir1 == 0x70) || (dir1 == 0x81))
- {
- version = GFX_CPU_SC1200 |
- ((((unsigned long) dir1 >> 4) ) << 8) | /* major */
- ((((unsigned long) dir1 & 0x0F)) << 16); /* minor */
-
- /* Detect SC1200 revision */
-
- gfx_detect_chip();
-
- /* SC1200 for video overlay and VIP. */
-
-# if GFX_VIDEO_DYNAMIC
- gfx_video_type = GFX_VIDEO_TYPE_SC1200;
-# endif
-
-# if GFX_VIP_DYNAMIC
- gfx_vip_type = GFX_VIP_TYPE_SC1200;
-# endif
-
- /* Currently always SAA7114 decoder. */
-
-# if GFX_DECODER_DYNAMIC
- gfx_decoder_type = GFX_DECODER_TYPE_SAA7114;
-# endif
-
- /* SC1200 for TV encoder */
-
-# if GFX_TV_DYNAMIC
- gfx_tv_type = GFX_TV_TYPE_SC1200;
-# endif
-
- /* Currently always ACCESS.bus for I2C access. */
-
-# if GFX_I2C_DYNAMIC
- gfx_i2c_type = GFX_I2C_TYPE_ACCESS;
-# endif
- }
- }
-
- if (version )
- {
- /* ALWAYS FIRST GENERATION GRAPHICS UNIT */
-
-# if GFX_DISPLAY_DYNAMIC
- gfx_display_type = GFX_DISPLAY_TYPE_GU1;
-# endif
-# if GFX_2DACCEL_DYNAMIC
- gfx_2daccel_type = GFX_2DACCEL_TYPE_GU1;
-# endif
-# if GFX_INIT_DYNAMIC
- gfx_init_type = GFX_INIT_TYPE_GU1;
-# endif
-
- /* READ THE CORE FREQUENCY */
-
- gfx_cpu_frequency = gfx_get_core_freq();
- }
- }
-
-#endif
-
-#if GFX_INIT_GU2
-
- value = gfx_pci_config_read(0x80000800);
-
- if (value == PCI_VENDOR_DEVICE_REDCLOUD)
- {
- Q_WORD msr_value;
- int valid, i;
-
- /* CHECK FOR SOFT VG */
- /* If SoftVG is not present, the base addresses for all devices */
- /* will not be allocated. Essentially, it is as if no Redcloud */
- /* video hardware is present. */
-
- value = gfx_pci_config_read (0x80000900);
-
- if (value == REDCLOUD_VIDEO_PCI_VENDOR_DEVICE)
- {
- valid = 1;
-
- /* BAR0 - BAR3 HOLD THE PERIPHERAL BASE ADDRESSES */
-
- for (i = 0; i < 4; i++)
- {
- value = gfx_pci_config_read (0x80000910 + (i << 2));
- if (value == 0x00000000 || value == 0xFFFFFFFF)
- {
- valid = 0;
- break;
- }
- }
-
- if (valid)
- {
- /* REDCLOUD INTEGRATED VIDEO */
-
-# if GFX_VIDEO_DYNAMIC
- gfx_video_type = GFX_VIDEO_TYPE_REDCLOUD;
-# endif
-
- /* CURRENTLY, ALWAYS GPIO FOR I2C ACCESS */
-
-# if GFX_I2C_DYNAMIC
- gfx_i2c_type = GFX_I2C_TYPE_GPIO;
-# endif
-
- /* SECOND-GENERATION DISPLAY CONTROLLER */
-
-# if GFX_DISPLAY_DYNAMIC
- gfx_display_type = GFX_DISPLAY_TYPE_GU2;
-# endif
-
- /* SECOND-GENERATION GRAPHICS UNIT */
-
-# if GFX_2DACCEL_DYNAMIC
- gfx_2daccel_type = GFX_2DACCEL_TYPE_GU2;
-# endif
-
- /* SECOND-GENERATION INITIALIZATION */
-
-# if GFX_INIT_DYNAMIC
- gfx_init_type = GFX_INIT_TYPE_GU2;
-# endif
-
- /* MBUS MSR ACCESSES */
-
-# if GFX_MSR_DYNAMIC
- gfx_msr_type = GFX_MSR_TYPE_REDCLOUD;
-# endif
-
- /* CS5530 GPIO I2C */
-
-# if GFX_I2C_DYNAMIC
- gfx_i2c_type = GFX_I2C_TYPE_GPIO;
-# endif
-
- /* READ VERSION */
-
- gfx_msr_init();
-
- gfx_msr_read (RC_ID_MCP, MCP_RC_REVID, &msr_value);
-
- /* SUBTRACT 1 FROM REV ID */
- /* REDCLOUD 1.X rev id is 1 less than the reported value */
-
- if ((msr_value.low & 0xF0) == 0x10)
- msr_value.low--;
-
- version = GFX_CPU_REDCLOUD |
- ((msr_value.low & 0xF0) << 4) | /* MAJOR */
- ((msr_value.low & 0x0F) << 16); /* MINOR */
-
- /* READ THE CORE FREQUENCY */
-
- gfx_cpu_frequency = gfx_get_core_freq();
-
- /* SET THE GP SCRATCH AREA */
- /* Color bitmap BLTs use the last 16K of frame buffer space */
-
- gfx_gx2_scratch_base = gfx_get_frame_buffer_size() - 0x4000;
- }
- }
- }
-
-#endif
-
- if (!version)
- {
- /* ALWAYS SECOND GENERATION IF SIMULATING */
- /* For now, that is. This could change. */
-
-# if GFX_DISPLAY_DYNAMIC
- gfx_display_type = GFX_DISPLAY_TYPE_GU2;
-# endif
-# if GFX_2DACCEL_DYNAMIC
- gfx_2daccel_type = GFX_2DACCEL_TYPE_GU2;
-# endif
-# if GFX_INIT_DYNAMIC
- gfx_init_type = GFX_INIT_TYPE_GU2;
-# endif
-# if GFX_MSR_DYNAMIC
- gfx_msr_type = GFX_MSR_TYPE_REDCLOUD;
-# endif
-# if GFX_VIDEO_DYNAMIC
- gfx_video_type = GFX_VIDEO_TYPE_REDCLOUD;
-# endif
-# if GFX_I2C_DYNAMIC
- gfx_i2c_type = GFX_I2C_TYPE_GPIO;
-# endif
- }
- gfx_cpu_version = version;
-
- return(version);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_detect_video
- *
- * This routine returns the type of the video hardware.
- *
- * The return value is as follows:
- * bits[7:0] = type (1 = CS5530, 2 = SC1200, 3 = Redcloud)
- *
- * Currently this routine does not actually detect any hardware, and bases
- * the video hardware entirely on the detected CPU.
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_detect_video(void)
-{
- unsigned long version = 0;
- if ((gfx_cpu_version & 0xFF) == GFX_CPU_GXLV)
- version = GFX_VID_CS5530;
- else if ((gfx_cpu_version & 0xFF) == GFX_CPU_SC1200)
- version = GFX_VID_SC1200;
- else if ((gfx_cpu_version & 0xFF) == GFX_CPU_REDCLOUD)
- version = GFX_VID_REDCLOUD;
- gfx_vid_version = version;
- return(version);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_pci_config_read
- *
- * This routine reads a 32-bit value from the specified location in PCI
- * configuration space.
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_pci_config_read(unsigned long address)
-{
- unsigned long value = 0xFFFFFFFF;
- OUTD(PCI_CONFIG_ADDR, address);
- value = IND(PCI_CONFIG_DATA);
- return(value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_pci_config_write
- *
- * This routine writes a 32-bit value to the specified location in PCI
- * configuration space.
- *-----------------------------------------------------------------------------
- */
-void gfx_pci_config_write(unsigned long address, unsigned long data)
-{
- OUTD(PCI_CONFIG_ADDR, address);
- OUTD(PCI_CONFIG_DATA, data);
- return;
-}
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either first or second generation routines. */
-
-#if GFX_INIT_DYNAMIC
-
-/*-----------------------------------------------------------------------------
- * gfx_get_core_freq
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_core_freq(void)
-{
- unsigned long freq = 0;
-# if GFX_INIT_GU1
- if (gfx_init_type & GFX_INIT_TYPE_GU1)
- freq = gu1_get_core_freq();
-# endif
-# if GFX_INIT_GU2
- if (gfx_init_type & GFX_INIT_TYPE_GU2)
- freq = gu2_get_core_freq();
-# endif
- return freq;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cpu_register_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_cpu_register_base(void)
-{
- unsigned long base = 0;
-
-# if GFX_INIT_GU1
- if (gfx_init_type & GFX_INIT_TYPE_GU1)
- base = gu1_get_cpu_register_base ();
-# endif
-# if GFX_INIT_GU2
- if (gfx_init_type & GFX_INIT_TYPE_GU2)
- base = gu2_get_cpu_register_base ();
-# endif
-
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_graphics_register_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_graphics_register_base(void)
-{
- unsigned long base = 0;
-
-# if GFX_INIT_GU2
- if (gfx_init_type & GFX_INIT_TYPE_GU2)
- base = gu2_get_graphics_register_base ();
-# endif
-
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_frame_buffer_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_frame_buffer_base(void)
-{
- unsigned long base = 0;
-
-# if GFX_INIT_GU1
- if (gfx_init_type & GFX_INIT_TYPE_GU1)
- base = gu1_get_frame_buffer_base ();
-# endif
-# if GFX_INIT_GU2
- if (gfx_init_type & GFX_INIT_TYPE_GU2)
- base = gu2_get_frame_buffer_base ();
-# endif
-
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_frame_buffer_size
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_frame_buffer_size(void)
-{
- unsigned long size = 0;
-
-# if GFX_INIT_GU1
- if (gfx_init_type & GFX_INIT_TYPE_GU1)
- size = gu1_get_frame_buffer_size();
-# endif
-# if GFX_INIT_GU2
- if (gfx_init_type & GFX_INIT_TYPE_GU2)
- size = gu2_get_frame_buffer_size();
-# endif
-
- return size;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vid_register_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vid_register_base(void)
-{
- unsigned long base = 0;
-
-# if GFX_INIT_GU1
- if (gfx_init_type & GFX_INIT_TYPE_GU1)
- base = gu1_get_vid_register_base ();
-# endif
-# if GFX_INIT_GU2
- if (gfx_init_type & GFX_INIT_TYPE_GU2)
- base = gu2_get_vid_register_base ();
-# endif
-
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_register_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vip_register_base(void)
-{
- unsigned long base = 0;
-
-# if GFX_INIT_GU1
- if (gfx_init_type & GFX_INIT_TYPE_GU1)
- base = gu1_get_vip_register_base ();
-# endif
-
- return(base);
-}
-
-#endif
-
-/* END OF FILE */
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_mode.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_mode.h
deleted file mode 100644
index f7293e6b4..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_mode.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_mode.h,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_mode.h $
- *
- * This header file contains the mode tables. It is used by the "gfx_disp.c"
- * file to set a display mode.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#ifndef _gfx_mode_h
-#define _gfx_mode_h
-
-/* MODE FLAGS (BITWISE-OR) */
-
-#define GFX_MODE_8BPP 0x00000001
-#define GFX_MODE_12BPP 0x00000002
-#define GFX_MODE_15BPP 0x00000004
-#define GFX_MODE_16BPP 0x00000008
-#define GFX_MODE_24BPP 0x00000010
-#define GFX_MODE_56HZ 0x00000020
-#define GFX_MODE_60HZ 0x00000040
-#define GFX_MODE_70HZ 0x00000080
-#define GFX_MODE_72HZ 0x00000100
-#define GFX_MODE_75HZ 0x00000200
-#define GFX_MODE_85HZ 0x00000400
-#define GFX_MODE_NEG_HSYNC 0x00000800
-#define GFX_MODE_NEG_VSYNC 0x00001000
-#define GFX_MODE_PIXEL_DOUBLE 0x00002000
-#define GFX_MODE_LINE_DOUBLE 0x00004000
-#define GFX_MODE_TV_NTSC 0x00008000
-#define GFX_MODE_TV_PAL 0x00010000
-
-#define GFX_MODE_LOCK_TIMING 0x10000000
-
-
-/* STRUCTURE DEFINITION */
-
-typedef struct tagDISPLAYMODE
-{
- /* DISPLAY MODE FLAGS */
- /* Specify valid color depths and the refresh rate. */
-
- unsigned long flags;
-
- /* TIMINGS */
-
- unsigned short hactive;
- unsigned short hblankstart;
- unsigned short hsyncstart;
- unsigned short hsyncend;
- unsigned short hblankend;
- unsigned short htotal;
-
- unsigned short vactive;
- unsigned short vblankstart;
- unsigned short vsyncstart;
- unsigned short vsyncend;
- unsigned short vblankend;
- unsigned short vtotal;
-
- /* CLOCK FREQUENCY */
-
- unsigned long frequency;
-
-} DISPLAYMODE;
-
-
-/* For Fixed timings */
-typedef struct tagFIXEDTIMINGS
-{
- /* DISPLAY MODE FLAGS */
- /* Specify valid color depths and the refresh rate. */
-
- int panelresx;
- int panelresy;
- unsigned short xres;
- unsigned short yres;
-
- /* TIMINGS */
-
- unsigned short hactive;
- unsigned short hblankstart;
- unsigned short hsyncstart;
- unsigned short hsyncend;
- unsigned short hblankend;
- unsigned short htotal;
-
- unsigned short vactive;
- unsigned short vblankstart;
- unsigned short vsyncstart;
- unsigned short vsyncend;
- unsigned short vblankend;
- unsigned short vtotal;
-
- /* CLOCK FREQUENCY */
-
- unsigned long frequency;
-
-} FIXEDTIMINGS;
-
-#endif /* !_gfx_mode_h */
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_msr.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_msr.c
deleted file mode 100644
index 92c632ba5..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_msr.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_msr.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_msr.c $
- *
- * This file contains routines to read machine-specific registers (MSRs)
- *
- * Routines:
- *
- * gfx_msr_init
- * gfx_id_msr_device
- * gfx_get_msr_dev_address
- * gfx_get_glink_id_at_address
- * gfx_msr_read
- * gfx_msr_write
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* INCLUDE SUPPORT FOR REDCLOUD, IF SPECIFIED */
-
-#if GFX_MSR_REDCLOUD
-#include "msr_rdcl.c"
-#endif
-
-/* EXTRA WRAPPERS FOR DYNAMIC SELECTION */
-
-#if GFX_MSR_DYNAMIC
-
-/*-----------------------------------------------------------------------------
- * gfx_msr_init
- *-----------------------------------------------------------------------------
- */
-int gfx_msr_init ()
-{
- int ret_value = 0;
-
-# if GFX_MSR_REDCLOUD
- if (gfx_msr_type & GFX_MSR_TYPE_REDCLOUD)
- ret_value = redcloud_msr_init();
-# endif
-
- return ret_value;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_id_msr_device
- *-----------------------------------------------------------------------------
- */
-DEV_STATUS gfx_id_msr_device (MSR *pDev, unsigned long address)
-{
- DEV_STATUS ret_value = NOT_KNOWN;
-
-# if GFX_MSR_REDCLOUD
- if (gfx_msr_type & GFX_MSR_TYPE_REDCLOUD)
- ret_value = redcloud_id_msr_device(pDev, address);
-# endif
-
- return ret_value;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_msr_dev_address
- *-----------------------------------------------------------------------------
- */
-DEV_STATUS gfx_get_msr_dev_address (unsigned int device, unsigned long *address)
-{
- DEV_STATUS ret_value = NOT_KNOWN;
-
-# if GFX_MSR_REDCLOUD
- if (gfx_msr_type & GFX_MSR_TYPE_REDCLOUD)
- ret_value = redcloud_get_msr_dev_address (device, address);
-# endif
-
- return ret_value;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_glink_id_at_address
- *-----------------------------------------------------------------------------
- */
-DEV_STATUS gfx_get_glink_id_at_address(unsigned int *device, unsigned long address)
-{
- DEV_STATUS ret_value = NOT_KNOWN;
-
-# if GFX_MSR_REDCLOUD
- if (gfx_msr_type & GFX_MSR_TYPE_REDCLOUD)
- ret_value = redcloud_get_glink_id_at_address (device, address);
-# endif
-
- return ret_value;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_msr_read
- *-----------------------------------------------------------------------------
- */
-DEV_STATUS gfx_msr_read (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue)
-{
- DEV_STATUS ret_value = NOT_KNOWN;
-
-# if GFX_MSR_REDCLOUD
- if (gfx_msr_type & GFX_MSR_TYPE_REDCLOUD)
- ret_value = redcloud_msr_read (device, msrRegister, msrValue);
-# endif
-
- return ret_value;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_msr_write
- *-----------------------------------------------------------------------------
- */
-DEV_STATUS gfx_msr_write (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue)
-{
- DEV_STATUS ret_value = NOT_KNOWN;
-
-# if GFX_MSR_REDCLOUD
- if (gfx_msr_type & GFX_MSR_TYPE_REDCLOUD)
- ret_value = redcloud_msr_write(device, msrRegister, msrValue);
-# endif
-
- return ret_value;
-}
-
-#endif
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_regs.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_regs.h
deleted file mode 100644
index 9aac33475..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_regs.h
+++ /dev/null
@@ -1,1363 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_regs.h,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_regs.h $
- *
- * This header file contains the graphics register definitions.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*----------------------------------*/
-/* FIRST GENERATION GRAPHICS UNIT */
-/*----------------------------------*/
-
-#define GP_DST_XCOOR 0x8100 /* x destination origin */
-#define GP_DST_YCOOR 0x8102 /* y destination origin */
-#define GP_WIDTH 0x8104 /* pixel width */
-#define GP_HEIGHT 0x8106 /* pixel height */
-#define GP_SRC_XCOOR 0x8108 /* x source origin */
-#define GP_SRC_YCOOR 0x810A /* y source origin */
-
-#define GP_VECTOR_LENGTH 0x8104 /* vector length */
-#define GP_INIT_ERROR 0x8106 /* vector initial error */
-#define GP_AXIAL_ERROR 0x8108 /* axial error increment */
-#define GP_DIAG_ERROR 0x810A /* diagonal error increment */
-
-#define GP_SRC_COLOR_0 0x810C /* source color 0 */
-#define GP_SRC_COLOR_1 0x810E /* source color 1 */
-#define GP_PAT_COLOR_0 0x8110 /* pattern color 0 */
-#define GP_PAT_COLOR_1 0x8112 /* pattern color 1 */
-#define GP_PAT_COLOR_2 0x8114 /* pattern color 2 */
-#define GP_PAT_COLOR_3 0x8116 /* pattern color 3 */
-#define GP_PAT_DATA_0 0x8120 /* bits 31:0 of pattern */
-#define GP_PAT_DATA_1 0x8124 /* bits 63:32 of pattern */
-#define GP_PAT_DATA_2 0x8128 /* bits 95:64 of pattern */
-#define GP_PAT_DATA_3 0x812C /* bits 127:96 of pattern */
-
-#define GP_VGA_WRITE 0x8140 /* VGA write path control */
-#define GP_VGA_READ 0x8144 /* VGA read path control */
-
-#define GP_RASTER_MODE 0x8200 /* raster operation */
-#define GP_VECTOR_MODE 0x8204 /* vector mode register */
-#define GP_BLIT_MODE 0x8208 /* blit mode register */
-#define GP_BLIT_STATUS 0x820C /* blit status register */
-
-#define GP_VGA_BASE 0x8210 /* VGA memory offset (x64K) */
-#define GP_VGA_LATCH 0x8214 /* VGA display latch */
-
-/* "GP_VECTOR_MODE" BIT DEFINITIONS */
-
-#define VM_X_MAJOR 0x0000 /* X major vector */
-#define VM_Y_MAJOR 0x0001 /* Y major vector */
-#define VM_MAJOR_INC 0x0002 /* positive major axis step */
-#define VM_MINOR_INC 0x0004 /* positive minor axis step */
-#define VM_READ_DST_FB 0x0008 /* read destination data */
-
-/* "GP_RASTER_MODE" BIT DEFINITIONS */
-
-#define RM_PAT_DISABLE 0x0000 /* pattern is disabled */
-#define RM_PAT_MONO 0x0100 /* 1BPP pattern expansion */
-#define RM_PAT_DITHER 0x0200 /* 2BPP pattern expansion */
-#define RM_PAT_COLOR 0x0300 /* 8BPP or 16BPP pattern */
-#define RM_PAT_MASK 0x0300 /* mask for pattern mode */
-#define RM_PAT_TRANSPARENT 0x0400 /* transparent 1BPP pattern */
-#define RM_SRC_TRANSPARENT 0x0800 /* transparent 1BPP source */
-
-/* "GP_BLIT_STATUS" BIT DEFINITIONS */
-
-#define BS_BLIT_BUSY 0x0001 /* blit engine is busy */
-#define BS_PIPELINE_BUSY 0x0002 /* graphics pipeline is busy*/
-#define BS_BLIT_PENDING 0x0004 /* blit pending */
-#define BC_FLUSH 0x0080 /* flush pipeline requests */
-#define BC_8BPP 0x0000 /* 8BPP mode */
-#define BC_16BPP 0x0100 /* 16BPP mode */
-#define BC_FB_WIDTH_1024 0x0000 /* framebuffer width = 1024 */
-#define BC_FB_WIDTH_2048 0x0200 /* framebuffer width = 2048 */
-#define BC_FB_WIDTH_4096 0x0400 /* framebuffer width = 4096 */
-
-/* "GP_BLIT_MODE" BIT DEFINITIONS */
-
-#define BM_READ_SRC_NONE 0x0000 /* source foreground color */
-#define BM_READ_SRC_FB 0x0001 /* read source from FB */
-#define BM_READ_SRC_BB0 0x0002 /* read source from BB0 */
-#define BM_READ_SRC_BB1 0x0003 /* read source from BB1 */
-#define BM_READ_SRC_MASK 0x0003 /* read source mask */
-
-#define BM_READ_DST_NONE 0x0000 /* no destination data */
-#define BM_READ_DST_BB0 0x0008 /* destination from BB0 */
-#define BM_READ_DST_BB1 0x000C /* destination from BB1 */
-#define BM_READ_DST_FB0 0x0010 /* dest from FB (store BB0) */
-#define BM_READ_DST_FB1 0x0014 /* dest from FB (store BB1) */
-#define BM_READ_DST_MASK 0x001C /* read destination mask */
-
-#define BM_WRITE_FB 0x0000 /* write to framebuffer */
-#define BM_WRITE_MEM 0x0020 /* write to memory */
-#define BM_WRITE_MASK 0x0020 /* write mask */
-
-#define BM_SOURCE_COLOR 0x0000 /* source is 8BPP or 16BPP */
-#define BM_SOURCE_EXPAND 0x0040 /* source is 1BPP */
-#define BM_SOURCE_TEXT 0x00C0 /* source is 1BPP text */
-#define BM_SOURCE_MASK 0x00C0 /* source mask */
-
-#define BM_REVERSE_Y 0x0100 /* reverse Y direction */
-
-/*---------------------------------------*/
-/* FIRST GENERATION DISPLAY CONTROLLER */
-/*---------------------------------------*/
-
-#define DC_UNLOCK 0x8300 /* lock register */
-#define DC_GENERAL_CFG 0x8304 /* config registers... */
-#define DC_TIMING_CFG 0x8308
-#define DC_OUTPUT_CFG 0x830C
-
-#define DC_FB_ST_OFFSET 0x8310 /* framebuffer start offset */
-#define DC_CB_ST_OFFSET 0x8314 /* compression start offset */
-#define DC_CURS_ST_OFFSET 0x8318 /* cursor start offset */
-#define DC_ICON_ST_OFFSET 0x831C /* icon start offset */
-#define DC_VID_ST_OFFSET 0x8320 /* video start offset */
-#define DC_LINE_DELTA 0x8324 /* fb and cb skip counts */
-#define DC_BUF_SIZE 0x8328 /* fb and cb line size */
-
-#define DC_H_TIMING_1 0x8330 /* horizontal timing... */
-#define DC_H_TIMING_2 0x8334
-#define DC_H_TIMING_3 0x8338
-#define DC_FP_H_TIMING 0x833C
-
-#define DC_V_TIMING_1 0x8340 /* vertical timing... */
-#define DC_V_TIMING_2 0x8344
-#define DC_V_TIMING_3 0x8348
-#define DC_FP_V_TIMING 0x834C
-
-#define DC_CURSOR_X 0x8350 /* cursor x position */
-#define DC_ICON_X 0x8354 /* HACK - 1.3 definition */
-#define DC_V_LINE_CNT 0x8354 /* vertical line counter */
-#define DC_CURSOR_Y 0x8358 /* cursor y position */
-#define DC_ICON_Y 0x835C /* HACK - 1.3 definition */
-#define DC_SS_LINE_CMP 0x835C /* line compare value */
-#define DC_CURSOR_COLOR 0x8360 /* cursor colors */
-#define DC_ICON_COLOR 0x8364 /* icon colors */
-#define DC_BORDER_COLOR 0x8368 /* border color */
-#define DC_PAL_ADDRESS 0x8370 /* palette address */
-#define DC_PAL_DATA 0x8374 /* palette data */
-#define DC_DFIFO_DIAG 0x8378 /* display FIFO diagnostic */
-#define DC_CFIFO_DIAG 0x837C /* compression FIF0 diagnostic */
-
-/* PALETTE LOCATIONS */
-
-#define PAL_CURSOR_COLOR_0 0x100
-#define PAL_CURSOR_COLOR_1 0x101
-#define PAL_ICON_COLOR_0 0x102
-#define PAL_ICON_COLOR_1 0x103
-#define PAL_OVERSCAN_COLOR 0x104
-
-/* UNLOCK VALUE */
-
-#define DC_UNLOCK_VALUE 0x00004758 /* used to unlock DC regs */
-
-/* "DC_GENERAL_CFG" BIT DEFINITIONS */
-
-#define DC_GCFG_DFLE 0x00000001 /* display FIFO load enable */
-#define DC_GCFG_CURE 0x00000002 /* cursor enable */
-#define DC_GCFG_VCLK_DIV 0x00000004 /* vid clock divisor */
-#define DC_GCFG_PLNO 0x00000004 /* planar offset LSB */
-#define DC_GCFG_PPC 0x00000008 /* pixel pan compatibility */
-#define DC_GCFG_CMPE 0x00000010 /* compression enable */
-#define DC_GCFG_DECE 0x00000020 /* decompression enable */
-#define DC_GCFG_DCLK_MASK 0x000000C0 /* dotclock multiplier */
-#define DC_GCFG_DCLK_POS 6 /* dotclock multiplier */
-#define DC_GCFG_DFHPSL_MASK 0x00000F00 /* FIFO high-priority start */
-#define DC_GCFG_DFHPSL_POS 8 /* FIFO high-priority start */
-#define DC_GCFG_DFHPEL_MASK 0x0000F000 /* FIFO high-priority end */
-#define DC_GCFG_DFHPEL_POS 12 /* FIFO high-priority end */
-#define DC_GCFG_CIM_MASK 0x00030000 /* compressor insert mode */
-#define DC_GCFG_CIM_POS 16 /* compressor insert mode */
-#define DC_GCFG_FDTY 0x00040000 /* frame dirty mode */
-#define DC_GCFG_RTPM 0x00080000 /* real-time perf. monitor */
-#define DC_GCFG_DAC_RS_MASK 0x00700000 /* DAC register selects */
-#define DC_GCFG_DAC_RS_POS 20 /* DAC register selects */
-#define DC_GCFG_CKWR 0x00800000 /* clock write */
-#define DC_GCFG_LDBL 0x01000000 /* line double */
-#define DC_GCFG_DIAG 0x02000000 /* FIFO diagnostic mode */
-#define DC_GCFG_CH4S 0x04000000 /* sparse refresh mode */
-#define DC_GCFG_SSLC 0x08000000 /* enable line compare */
-#define DC_GCFG_VIDE 0x10000000 /* video enable */
-#define DC_GCFG_DFCK 0x20000000 /* divide flat-panel clock - rev 2.3 down */
-#define DC_GCFG_VRDY 0x20000000 /* video port speed - rev 2.4 up */
-#define DC_GCFG_DPCK 0x40000000 /* divide pixel clock */
-#define DC_GCFG_DDCK 0x80000000 /* divide dot clock */
-
-/* "DC_TIMING_CFG" BIT DEFINITIONS */
-
-#define DC_TCFG_FPPE 0x00000001 /* flat-panel power enable */
-#define DC_TCFG_HSYE 0x00000002 /* horizontal sync enable */
-#define DC_TCFG_VSYE 0x00000004 /* vertical sync enable */
-#define DC_TCFG_BLKE 0x00000008 /* blank enable */
-#define DC_TCFG_DDCK 0x00000010 /* DDC clock */
-#define DC_TCFG_TGEN 0x00000020 /* timing generator enable */
-#define DC_TCFG_VIEN 0x00000040 /* vertical interrupt enable*/
-#define DC_TCFG_BLNK 0x00000080 /* blink enable */
-#define DC_TCFG_CHSP 0x00000100 /* horizontal sync polarity */
-#define DC_TCFG_CVSP 0x00000200 /* vertical sync polarity */
-#define DC_TCFG_FHSP 0x00000400 /* panel horz sync polarity */
-#define DC_TCFG_FVSP 0x00000800 /* panel vert sync polarity */
-#define DC_TCFG_FCEN 0x00001000 /* flat-panel centering */
-#define DC_TCFG_CDCE 0x00002000 /* HACK - 1.3 definition */
-#define DC_TCFG_PLNR 0x00002000 /* planar mode enable */
-#define DC_TCFG_INTL 0x00004000 /* interlace scan */
-#define DC_TCFG_PXDB 0x00008000 /* pixel double */
-#define DC_TCFG_BKRT 0x00010000 /* blink rate */
-#define DC_TCFG_PSD_MASK 0x000E0000 /* power sequence delay */
-#define DC_TCFG_PSD_POS 17 /* power sequence delay */
-#define DC_TCFG_DDCI 0x08000000 /* DDC input (RO) */
-#define DC_TCFG_SENS 0x10000000 /* monitor sense (RO) */
-#define DC_TCFG_DNA 0x20000000 /* display not active (RO) */
-#define DC_TCFG_VNA 0x40000000 /* vertical not active (RO) */
-#define DC_TCFG_VINT 0x80000000 /* vertical interrupt (RO) */
-
-/* "DC_OUTPUT_CFG" BIT DEFINITIONS */
-
-#define DC_OCFG_8BPP 0x00000001 /* 8/16 bpp select */
-#define DC_OCFG_555 0x00000002 /* 16 bpp format */
-#define DC_OCFG_PCKE 0x00000004 /* PCLK enable */
-#define DC_OCFG_FRME 0x00000008 /* frame rate mod enable */
-#define DC_OCFG_DITE 0x00000010 /* dither enable */
-#define DC_OCFG_2PXE 0x00000020 /* 2 pixel enable */
-#define DC_OCFG_2XCK 0x00000040 /* 2 x pixel clock */
-#define DC_OCFG_2IND 0x00000080 /* 2 index enable */
-#define DC_OCFG_34ADD 0x00000100 /* 3- or 4-bit add */
-#define DC_OCFG_FRMS 0x00000200 /* frame rate mod select */
-#define DC_OCFG_CKSL 0x00000400 /* clock select */
-#define DC_OCFG_PRMP 0x00000800 /* palette re-map */
-#define DC_OCFG_PDEL 0x00001000 /* panel data enable low */
-#define DC_OCFG_PDEH 0x00002000 /* panel data enable high */
-#define DC_OCFG_CFRW 0x00004000 /* comp line buffer r/w sel */
-#define DC_OCFG_DIAG 0x00008000 /* comp line buffer diag */
-
-#define MC_MEM_CNTRL1 0x00008400
-#define MC_DR_ADD 0x00008418
-#define MC_DR_ACC 0x0000841C
-
-/* MC_MEM_CNTRL1 BIT DEFINITIONS */
-
-#define MC_XBUSARB 0x00000008 /* 0 = GP priority < CPU priority */
- /* 1 = GP priority = CPU priority */
- /* GXm databook V2.0 is wrong ! */
-/*----------*/
-/* CS5530 */
-/*----------*/
-
-/* CS5530 REGISTER DEFINITIONS */
-
-#define CS5530_VIDEO_CONFIG 0x0000
-#define CS5530_DISPLAY_CONFIG 0x0004
-#define CS5530_VIDEO_X_POS 0x0008
-#define CS5530_VIDEO_Y_POS 0x000C
-#define CS5530_VIDEO_SCALE 0x0010
-#define CS5530_VIDEO_COLOR_KEY 0x0014
-#define CS5530_VIDEO_COLOR_MASK 0x0018
-#define CS5530_PALETTE_ADDRESS 0x001C
-#define CS5530_PALETTE_DATA 0x0020
-#define CS5530_DOT_CLK_CONFIG 0x0024
-#define CS5530_CRCSIG_TFT_TV 0x0028
-
-/* "CS5530_VIDEO_CONFIG" BIT DEFINITIONS */
-
-#define CS5530_VCFG_VID_EN 0x00000001
-#define CS5530_VCFG_VID_REG_UPDATE 0x00000002
-#define CS5530_VCFG_VID_INP_FORMAT 0x0000000C
-#define CS5530_VCFG_8_BIT_4_2_0 0x00000004
-#define CS5530_VCFG_16_BIT_4_2_0 0x00000008
-#define CS5530_VCFG_GV_SEL 0x00000010
-#define CS5530_VCFG_CSC_BYPASS 0x00000020
-#define CS5530_VCFG_X_FILTER_EN 0x00000040
-#define CS5530_VCFG_Y_FILTER_EN 0x00000080
-#define CS5530_VCFG_LINE_SIZE_LOWER_MASK 0x0000FF00
-#define CS5530_VCFG_INIT_READ_MASK 0x01FF0000
-#define CS5530_VCFG_EARLY_VID_RDY 0x02000000
-#define CS5530_VCFG_LINE_SIZE_UPPER 0x08000000
-#define CS5530_VCFG_4_2_0_MODE 0x10000000
-#define CS5530_VCFG_16_BIT_EN 0x20000000
-#define CS5530_VCFG_HIGH_SPD_INT 0x40000000
-
-/* "CS5530_DISPLAY_CONFIG" BIT DEFINITIONS */
-
-#define CS5530_DCFG_DIS_EN 0x00000001
-#define CS5530_DCFG_HSYNC_EN 0x00000002
-#define CS5530_DCFG_VSYNC_EN 0x00000004
-#define CS5530_DCFG_DAC_BL_EN 0x00000008
-#define CS5530_DCFG_DAC_PWDNX 0x00000020
-#define CS5530_DCFG_FP_PWR_EN 0x00000040
-#define CS5530_DCFG_FP_DATA_EN 0x00000080
-#define CS5530_DCFG_CRT_HSYNC_POL 0x00000100
-#define CS5530_DCFG_CRT_VSYNC_POL 0x00000200
-#define CS5530_DCFG_FP_HSYNC_POL 0x00000400
-#define CS5530_DCFG_FP_VSYNC_POL 0x00000800
-#define CS5530_DCFG_XGA_FP 0x00001000
-#define CS5530_DCFG_FP_DITH_EN 0x00002000
-#define CS5530_DCFG_CRT_SYNC_SKW_MASK 0x0001C000
-#define CS5530_DCFG_CRT_SYNC_SKW_INIT 0x00010000
-#define CS5530_DCFG_PWR_SEQ_DLY_MASK 0x000E0000
-#define CS5530_DCFG_PWR_SEQ_DLY_INIT 0x00080000
-#define CS5530_DCFG_VG_CK 0x00100000
-#define CS5530_DCFG_GV_PAL_BYP 0x00200000
-#define CS5530_DCFG_DDC_SCL 0x00400000
-#define CS5530_DCFG_DDC_SDA 0x00800000
-#define CS5530_DCFG_DDC_OE 0x01000000
-#define CS5530_DCFG_16_BIT_EN 0x02000000
-
-
-/*----------*/
-/* SC1200 */
-/*----------*/
-
-/* SC1200 VIDEO REGISTER DEFINITIONS */
-
-#define SC1200_VIDEO_CONFIG 0x000
-#define SC1200_DISPLAY_CONFIG 0x004
-#define SC1200_VIDEO_X_POS 0x008
-#define SC1200_VIDEO_Y_POS 0x00C
-#define SC1200_VIDEO_UPSCALE 0x010
-#define SC1200_VIDEO_COLOR_KEY 0x014
-#define SC1200_VIDEO_COLOR_MASK 0x018
-#define SC1200_PALETTE_ADDRESS 0x01C
-#define SC1200_PALETTE_DATA 0x020
-#define SC1200_VID_MISC 0x028
-#define SC1200_VID_CLOCK_SELECT 0x02C
-#define SC1200_VIDEO_DOWNSCALER_CONTROL 0x03C
-#define SC1200_VIDEO_DOWNSCALER_COEFFICIENTS 0x40
-#define SC1200_VID_CRC 0x044
-#define SC1200_DEVICE_ID 0x048
-#define SC1200_VID_ALPHA_CONTROL 0x04C
-#define SC1200_CURSOR_COLOR_KEY 0x050
-#define SC1200_CURSOR_COLOR_MASK 0x054
-#define SC1200_CURSOR_COLOR_1 0x058
-#define SC1200_CURSOR_COLOR_2 0x05C
-#define SC1200_ALPHA_XPOS_1 0x060
-#define SC1200_ALPHA_YPOS_1 0x064
-#define SC1200_ALPHA_COLOR_1 0x068
-#define SC1200_ALPHA_CONTROL_1 0x06C
-#define SC1200_ALPHA_XPOS_2 0x070
-#define SC1200_ALPHA_YPOS_2 0x074
-#define SC1200_ALPHA_COLOR_2 0x078
-#define SC1200_ALPHA_CONTROL_2 0x07C
-#define SC1200_ALPHA_XPOS_3 0x080
-#define SC1200_ALPHA_YPOS_3 0x084
-#define SC1200_ALPHA_COLOR_3 0x088
-#define SC1200_ALPHA_CONTROL_3 0x08C
-#define SC1200_VIDEO_REQUEST 0x090
-#define SC1200_ALPHA_WATCH 0x094
-#define SC1200_VIDEO_DISPLAY_MODE 0x400
-#define SC1200_VIDEO_ODD_VBI_LINE_ENABLE 0x40C
-#define SC1200_VIDEO_EVEN_VBI_LINE_ENABLE 0x410
-#define SC1200_VIDEO_VBI_HORIZ_CONTROL 0x414
-#define SC1200_VIDEO_ODD_VBI_TOTAL_COUNT 0x418
-#define SC1200_VIDEO_EVEN_VBI_TOTAL_COUNT 0x41C
-#define SC1200_GENLOCK 0x420
-#define SC1200_GENLOCK_DELAY 0x424
-#define SC1200_TVOUT_HORZ_TIM 0x800
-#define SC1200_TVOUT_HORZ_SYNC 0x804
-#define SC1200_TVOUT_VERT_SYNC 0x808
-#define SC1200_TVOUT_LINE_END 0x80C
-#define SC1200_TVOUT_VERT_DOWNSCALE 0x810 /* REV. A & B */
-#define SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE 0x810 /* REV. C */
-#define SC1200_TVOUT_HORZ_SCALING 0x814
-#define SC1200_TVOUT_DEBUG 0x818
-#define SC1200_TVENC_TIM_CTRL_1 0xC00
-#define SC1200_TVENC_TIM_CTRL_2 0xC04
-#define SC1200_TVENC_TIM_CTRL_3 0xC08
-#define SC1200_TVENC_SUB_FREQ 0xC0C
-#define SC1200_TVENC_DISP_POS 0xC10
-#define SC1200_TVENC_DISP_SIZE 0xC14
-#define SC1200_TVENC_CC_DATA 0xC18
-#define SC1200_TVENC_EDS_DATA 0xC1C
-#define SC1200_TVENC_CGMS_DATA 0xC20
-#define SC1200_TVENC_WSS_DATA 0xC24
-#define SC1200_TVENC_CC_CONTROL 0xC28
-#define SC1200_TVENC_DAC_CONTROL 0xC2C
-#define SC1200_TVENC_MV_CONTROL 0xC30
-
-/* "SC1200_VIDEO_CONFIG" BIT DEFINITIONS */
-
-#define SC1200_VCFG_VID_EN 0x00000001
-#define SC1200_VCFG_VID_INP_FORMAT 0x0000000C
-#define SC1200_VCFG_UYVY_FORMAT 0x00000000
-#define SC1200_VCFG_Y2YU_FORMAT 0x00000004
-#define SC1200_VCFG_YUYV_FORMAT 0x00000008
-#define SC1200_VCFG_YVYU_FORMAT 0x0000000C
-#define SC1200_VCFG_X_FILTER_EN 0x00000040
-#define SC1200_VCFG_Y_FILTER_EN 0x00000080
-#define SC1200_VCFG_LINE_SIZE_LOWER_MASK 0x0000FF00
-#define SC1200_VCFG_INIT_READ_MASK 0x01FF0000
-#define SC1200_VCFG_LINE_SIZE_UPPER 0x08000000
-#define SC1200_VCFG_4_2_0_MODE 0x10000000
-
-/* "SC1200_DISPLAY_CONFIG" BIT DEFINITIONS */
-
-#define SC1200_DCFG_DIS_EN 0x00000001
-#define SC1200_DCFG_HSYNC_EN 0x00000002
-#define SC1200_DCFG_VSYNC_EN 0x00000004
-#define SC1200_DCFG_DAC_BL_EN 0x00000008
-#define SC1200_DCFG_FP_PWR_EN 0x00000040
-#define SC1200_DCFG_FP_DATA_EN 0x00000080
-#define SC1200_DCFG_CRT_HSYNC_POL 0x00000100
-#define SC1200_DCFG_CRT_VSYNC_POL 0x00000200
-#define SC1200_DCFG_CRT_SYNC_SKW_MASK 0x0001C000
-#define SC1200_DCFG_CRT_SYNC_SKW_INIT 0x00010000
-#define SC1200_DCFG_PWR_SEQ_DLY_MASK 0x000E0000
-#define SC1200_DCFG_PWR_SEQ_DLY_INIT 0x00080000
-#define SC1200_DCFG_VG_CK 0x00100000
-#define SC1200_DCFG_GV_PAL_BYP 0x00200000
-#define SC1200_DCFG_DDC_SCL 0x00400000
-#define SC1200_DCFG_DDC_SDA 0x00800000
-#define SC1200_DCFG_DDC_OE 0x01000000
-
-/* "SC1200_VID_MISC" BIT DEFINITIONS */
-
-#define SC1200_GAMMA_BYPASS_BOTH 0x00000001
-#define SC1200_DAC_POWER_DOWN 0x00000400
-#define SC1200_ANALOG_POWER_DOWN 0x00000800
-#define SC1200_PLL_POWER_NORMAL 0x00001000
-
-/* "SC1200_VIDEO_DOWNSCALER_CONTROL" BIT DEFINITIONS */
-
-#define SC1200_VIDEO_DOWNSCALE_ENABLE 0x00000001
-#define SC1200_VIDEO_DOWNSCALE_FACTOR_POS 1
-#define SC1200_VIDEO_DOWNSCALE_FACTOR_MASK 0x0000001E
-#define SC1200_VIDEO_DOWNSCALE_TYPE_A 0x00000000
-#define SC1200_VIDEO_DOWNSCALE_TYPE_B 0x00000040
-#define SC1200_VIDEO_DOWNSCALE_TYPE_MASK 0x00000040
-
-/* "SC1200_VIDEO_DOWNSCALER_COEFFICIENTS" BIT DEFINITIONS */
-
-#define SC1200_VIDEO_DOWNSCALER_COEF1_POS 0
-#define SC1200_VIDEO_DOWNSCALER_COEF2_POS 8
-#define SC1200_VIDEO_DOWNSCALER_COEF3_POS 16
-#define SC1200_VIDEO_DOWNSCALER_COEF4_POS 24
-#define SC1200_VIDEO_DOWNSCALER_COEF_MASK 0xF
-
-/* VIDEO DE-INTERLACING AND ALPHA CONTROL (REGISTER 0x4C) */
-
-#define SC1200_VERTICAL_SCALER_SHIFT_MASK 0x00000007
-#define SC1200_VERTICAL_SCALER_SHIFT_INIT 0x00000004
-#define SC1200_VERTICAL_SCALER_SHIFT_EN 0x00000010
-#define SC1200_TOP_LINE_IN_ODD 0x00000040
-#define SC1200_NO_CK_OUTSIDE_ALPHA 0x00000100
-#define SC1200_VIDEO_IS_INTERLACED 0x00000200
-#define SC1200_CSC_VIDEO_YUV_TO_RGB 0x00000400
-#define SC1200_CSC_GFX_RGB_TO_YUV 0x00000800
-#define SC1200_VIDEO_INPUT_IS_RGB 0x00002000
-#define SC1200_VIDEO_LINE_OFFSET_ODD 0x00001000
-#define SC1200_ALPHA1_PRIORITY_POS 16
-#define SC1200_ALPHA1_PRIORITY_MASK 0x00030000
-#define SC1200_ALPHA2_PRIORITY_POS 18
-#define SC1200_ALPHA2_PRIORITY_MASK 0x000C0000
-#define SC1200_ALPHA3_PRIORITY_POS 20
-#define SC1200_ALPHA3_PRIORITY_MASK 0x00300000
-
-/* VIDEO CURSOR COLOR KEY DEFINITIONS (REGISTER 0x50) */
-
-#define SC1200_CURSOR_COLOR_KEY_OFFSET_POS 24
-#define SC1200_CURSOR_COLOR_BITS 23
-#define SC1200_COLOR_MASK 0x00FFFFFF /* 24 significant bits */
-
-/* ALPHA COLOR BIT DEFINITION (REGISTERS 0x68, 0x78, AND 0x88) */
-
-#define SC1200_ALPHA_COLOR_ENABLE 0x01000000
-
-/* ALPHA CONTROL BIT DEFINITIONS (REGISTERS 0x6C, 0x7C, AND 0x8C) */
-
-#define SC1200_ACTRL_WIN_ENABLE 0x00010000
-#define SC1200_ACTRL_LOAD_ALPHA 0x00020000
-
-/* VIDEO REQUEST DEFINITIONS (REGISTER 0x90) */
-
-#define SC1200_VIDEO_Y_REQUEST_POS 0
-#define SC1200_VIDEO_X_REQUEST_POS 16
-#define SC1200_VIDEO_REQUEST_MASK 0x00000FFF
-
-/* VIDEO DISPLAY MODE (REGISTER 0x400) */
-
-#define SC1200_VIDEO_SOURCE_MASK 0x00000003
-#define SC1200_VIDEO_SOURCE_GX1 0x00000000
-#define SC1200_VIDEO_SOURCE_DVIP 0x00000002
-#define SC1200_VBI_SOURCE_MASK 0x00000004
-#define SC1200_VBI_SOURCE_DVIP 0x00000000
-#define SC1200_VBI_SOURCE_GX1 0x00000004
-
-/* ODD/EVEN VBI LINE ENABLE (REGISTERS 0x40C, 0x410) */
-
-#define SC1200_VIDEO_VBI_LINE_ENABLE_MASK 0x00FFFFFC
-#define SC1200_VIDEO_ALL_ACTIVE_IS_VBI 0x01000000
-#define SC1200_VIDEO_VBI_LINE_OFFSET_POS 25
-#define SC1200_VIDEO_VBI_LINE_OFFSET_MASK 0x3E000000
-
-/* ODD/EVEN VBI TOTAL COUNT (REGISTERS 0x418, 0x41C) */
-
-#define SC1200_VIDEO_VBI_TOTAL_COUNT_MASK 0x000FFFFF
-
-/* GENLOCK BIT DEFINITIONS */
-
-#define SC1200_GENLOCK_SINGLE_ENABLE 0x00000001
-#define SC1200_GENLOCK_FIELD_SYNC_ENABLE 0x00000001
-#define SC1200_GENLOCK_CONTINUOUS_ENABLE 0x00000002
-#define SC1200_GENLOCK_GX_VSYNC_FALLING_EDGE 0x00000004
-#define SC1200_GENLOCK_VIP_VSYNC_FALLING_EDGE 0x00000008
-#define SC1200_GENLOCK_TIMEOUT_ENABLE 0x00000010
-#define SC1200_GENLOCK_TVENC_RESET_EVEN_FIELD 0x00000020
-#define SC1200_GENLOCK_TVENC_RESET_BEFORE_DELAY 0x00000040
-#define SC1200_GENLOCK_TVENC_RESET_ENABLE 0x00000080
-#define SC1200_GENLOCK_SYNC_TO_TVENC 0x00000100
-#define SC1200_GENLOCK_DELAY_MASK 0x001FFFFF
-
-/* TVOUT HORIZONTAL PRE ENCODER SCALE BIT DEFINITIONS */
-
-#define SC1200_TVOUT_YC_DELAY_MASK 0x00C00000
-#define SC1200_TVOUT_YC_DELAY_NONE 0x00000000
-#define SC1200_TVOUT_Y_DELAY_ONE_PIXEL 0x00400000
-#define SC1200_TVOUT_C_DELAY_ONE_PIXEL 0x00800000
-#define SC1200_TVOUT_C_DELAY_TWO_PIXELS 0x00C00000
-
-/* TVOUT HORIZONTAL SCALING/CONTROL BIT DEFINITIONS */
-
-#define SC1200_TVOUT_FLICKER_FILTER_MASK 0x60000000
-#define SC1200_TVOUT_FLICKER_FILTER_FOURTH_HALF_FOURTH 0x00000000
-#define SC1200_TVOUT_FLICKER_FILTER_HALF_ONE_HALF 0x20000000
-#define SC1200_TVOUT_FLICKER_FILTER_DISABLED 0x40000000
-#define SC1200_TVENC_EXTERNAL_RESET_INTERVAL_MASK 0x0F000000
-#define SC1200_TVENC_EXTERNAL_RESET_EVERY_ODD_FIELD 0x00000000
-#define SC1200_TVENC_EXTERNAL_RESET_EVERY_EVEN_FIELD 0x02000000
-#define SC1200_TVENC_EXTERNAL_RESET_NEXT_ODD_FIELD 0x05000000
-#define SC1200_TVENC_EXTERNAL_RESET_NEXT_EVEN_FIELD 0x07000000
-#define SC1200_TVENC_EXTERNAL_RESET_EVERY_FIELD 0x0E000000
-#define SC1200_TVENC_EXTERNAL_RESET_EVERY_X_ODD_FIELDS 0x08000000
-#define SC1200_TVENC_EXTERNAL_RESET_EVERY_X_EVEN_FIELDS 0x0A000000
-
-/* TVOUT DEBUG BIT DEFINITIONS */
-
-#define SC1200_TVOUT_FIELD_STATUS_EVEN 0x00000040
-#define SC1200_TVOUT_FIELD_STATUS_TV 0x00000080
-#define SC1200_TVOUT_CRT_VSYNC_STATUS_TRAILING 0x00000100
-#define SC1200_TVOUT_FIELD_STATUS_INVERT 0x00000200
-#define SC1200_TVOUT_CONVERTER_INTERPOLATION 0x00000400
-
-/* TVENC TIMING/CONTROL 1 BIT DEFINITIONS (REGISTER 0xC00) */
-
-#define SC1200_TVENC_VPHASE_MASK 0x001FF800
-#define SC1200_TVENC_VPHASE_POS 11
-#define SC1200_TVENC_SUB_CARRIER_RESET_MASK 0x30000000
-#define SC1200_TVENC_SUB_CARRIER_RESET_NEVER 0x00000000
-#define SC1200_TVENC_SUB_CARRIER_RESET_EVERY_TWO_LINES 0x10000000
-#define SC1200_TVENC_SUB_CARRIER_RESET_EVERY_TWO_FRAMES 0x20000000
-#define SC1200_TVENC_SUB_CARRIER_RESET_EVERY_FOUR_FRAMES 0x30000000
-#define SC1200_TVENC_VIDEO_TIMING_ENABLE 0x80000000
-
-/* TVENC TIMING/CONTROL 2 BIT DEFINITIONS (REGISTER 0xC04) */
-
-#define SC1200_TVENC_OUTPUT_YCBCR 0x40000000
-#define SC1200_TVENC_CFS_MASK 0x00030000
-#define SC1200_TVENC_CFS_BYPASS 0x00000000
-#define SC1200_TVENC_CFS_CVBS 0x00020000
-#define SC1200_TVENC_CFS_SVIDEO 0x00030000
-
-/* TVENC TIMING/CONTROL 3 BIT DEFINITIONS (REGISTER 0xC08) */
-
-#define SC1200_TVENC_CS 0x00000001
-#define SC1200_TVENC_SYNCMODE_MASK 0x00000006
-#define SC1200_TVENC_SYNC_ON_GREEN 0x00000002
-#define SC1200_TVENC_SYNC_ON_CVBS 0x00000004
-#define SC1200_TVENC_CM 0x00000008
-
-/* TVENC DAC CONTROL BIT DEFINITIONS (REGISTER 0xC2C) */
-#define SC1200_TVENC_TRIM_MASK 0x00000007
-#define SC1200_TVENC_POWER_DOWN 0x00000020
-
-/* TVENC MV CONTROL BIT DEFINITIONS (REGISTER 0xC30) */
-#define SC1200_TVENC_MV_ENABLE 0xBE
-
-/* SC1200 VIP REGISTER DEFINITIONS */
-
-#define SC1200_VIP_CONFIG 0x00000000
-#define SC1200_VIP_CONTROL 0x00000004
-#define SC1200_VIP_STATUS 0x00000008
-#define SC1200_VIP_CURRENT_LINE 0x00000010
-#define SC1200_VIP_LINE_TARGET 0x00000014
-#define SC1200_ODD_DIRECT_VBI_LINE_ENABLE 0x00000018
-#define SC1200_EVEN_DIRECT_VBI_LINE_ENABLE 0x0000001C
-#define SC1200_VIP_ODD_BASE 0x00000020
-#define SC1200_VIP_EVEN_BASE 0x00000024
-#define SC1200_VIP_PITCH 0x00000028
-#define SC1200_VBI_ODD_BASE 0x00000040
-#define SC1200_VBI_EVEN_BASE 0x00000044
-#define SC1200_VBI_PITCH 0x00000048
-
-/* "SC1200_VIP_CONFIG" BIT DEFINITIONS */
-
-#define SC1200_VIP_MODE_MASK 0x00000003
-#define SC1200_VIP_MODE_C 0x00000002
-#define SC1200_VBI_ANCILLARY_TO_MEMORY 0x000C0000
-#define SC1200_VBI_TASK_A_TO_MEMORY 0x00140000
-#define SC1200_VBI_TASK_B_TO_MEMORY 0x00240000
-#define SC1200_VIP_BUS_REQUEST_THRESHOLD 0x00400000
-
-/* "SC1200_VIP_CONTROL" BIT DEFINITIONS */
-
-#define SC1200_CAPTURE_RUN_MODE_MASK 0x00000003
-#define SC1200_CAPTURE_RUN_MODE_STOP_LINE 0x00000000
-#define SC1200_CAPTURE_RUN_MODE_STOP_FIELD 0x00000001
-#define SC1200_CAPTURE_RUN_MODE_START 0x00000003
-#define SC1200_VIP_DATA_CAPTURE_EN 0x00000100
-#define SC1200_VIP_VBI_CAPTURE_EN 0x00000200
-#define SC1200_VIP_VBI_FIELD_INTERRUPT_EN 0x00010000
-
-/* "SC1200_VIP_STATUS" BIT DEFINITIONS */
-
-#define SC1200_VIP_CURRENT_FIELD_ODD 0x01000000
-#define SC1200_VIP_BASE_NOT_UPDATED 0x00200000
-#define SC1200_VIP_FIFO_OVERFLOW 0x00100000
-#define SC1200_VIP_CLEAR_LINE_INT 0x00020000
-#define SC1200_VIP_CLEAR_FIELD_INT 0x00010000
-#define SC1200_VBI_DATA_CAPTURE_ACTIVE 0x00000200
-#define SC1200_VIDEO_DATA_CAPTURE_ACTIVE 0x00000100
-
-/* "SC1200_VIP_CURRENT_LINE" BIT DEFINITIONS */
-
-#define SC1200_VIP_CURRENT_LINE_MASK 0x000003FF
-
-/* "SC1200_VIP_LINE_TARGET" BIT DEFINITIONS */
-
-#define SC1200_VIP_LAST_LINE_MASK 0x03FF0000
-
-/* "SC1200_VIP_PITCH" BIT DEFINITION */
-
-#define SC1200_VIP_PITCH_MASK 0x0000FFFC
-
-/* "SC1200_VBI_PITCH" BIT DEFINITION */
-
-#define SC1200_VBI_PITCH_MASK 0x0000FFFC
-
-/* SC1200 DIRECT VBI LINE ENABLE BIT DEFINITION */
-
-#define SC1200_DIRECT_VBI_LINE_ENABLE_MASK 0x00FFFFFF
-
-/* SC1200 CONFIGURATION BLOCK */
-
-#define SC1200_CB_BASE_ADDR 0x9000
-#define SC1200_CB_WDTO 0x0000
-#define SC1200_CB_WDCNFG 0x0002
-#define SC1200_CB_WDSTS 0x0004
-#define SC1200_CB_TMVALUE 0x0008
-#define SC1200_CB_TMCNFG 0x000D
-#define SC1200_CB_PMR 0x0030
-#define SC1200_CB_MCR 0x0034
-#define SC1200_CB_INTSEL 0x0038
-#define SC1200_CB_PID 0x003C
-#define SC1200_CB_REV 0x003D
-
-/* SC1200 HIGH RESOLUTION TIMER CONFIGURATION REGISTER BITS */
-
-#define SC1200_TMCLKSEL_27MHZ 0x2
-
-/*---------------------------------*/
-/* PHILIPS SAA7114 VIDEO DECODER */
-/*---------------------------------*/
-
-#define SAA7114_CHIPADDR 0x42
-
-/* VIDEO DECODER REGISTER DEFINITIONS */
-
-#define SAA7114_ANALOG_INPUT_CTRL1 0x02
-#define SAA7114_LUMINANCE_CONTROL 0x09
-#define SAA7114_BRIGHTNESS 0x0A
-#define SAA7114_CONTRAST 0x0B
-#define SAA7114_SATURATION 0x0C
-#define SAA7114_HUE 0x0D
-#define SAA7114_STATUS 0x1F
-#define SAA7114_IPORT_CONTROL 0x86
-
-/* TASK A REGISTER DEFINITIONS */
-
-#define SAA7114_TASK_A_HORZ_OUTPUT_LO 0x9C
-#define SAA7114_TASK_A_HORZ_OUTPUT_HI 0x9D
-#define SAA7114_TASK_A_HSCALE_LUMA_LO 0xA8
-#define SAA7114_TASK_A_HSCALE_LUMA_HI 0xA9
-#define SAA7114_TASK_A_HSCALE_CHROMA_LO 0xAC
-#define SAA7114_TASK_A_HSCALE_CHROMA_HI 0xAD
-
-/* TASK B REGISTER DEFINITIONS */
-
-#define SAA7114_HORZ_OFFSET_LO 0xC4
-#define SAA7114_HORZ_OFFSET_HI 0xC5
-#define SAA7114_HORZ_INPUT_LO 0xC6
-#define SAA7114_HORZ_INPUT_HI 0xC7
-#define SAA7114_VERT_OFFSET_LO 0xC8
-#define SAA7114_VERT_OFFSET_HI 0xC9
-#define SAA7114_VERT_INPUT_LO 0xCA
-#define SAA7114_VERT_INPUT_HI 0xCB
-#define SAA7114_HORZ_OUTPUT_LO 0xCC
-#define SAA7114_HORZ_OUTPUT_HI 0xCD
-#define SAA7114_VERT_OUTPUT_LO 0xCE
-#define SAA7114_VERT_OUTPUT_HI 0xCF
-#define SAA7114_HORZ_PRESCALER 0xD0
-#define SAA7114_HORZ_ACL 0xD1
-#define SAA7114_HORZ_FIR_PREFILTER 0xD2
-#define SAA7114_FILTER_CONTRAST 0xD5
-#define SAA7114_FILTER_SATURATION 0xD6
-#define SAA7114_HSCALE_LUMA_LO 0xD8
-#define SAA7114_HSCALE_LUMA_HI 0xD9
-#define SAA7114_HSCALE_CHROMA_LO 0xDC
-#define SAA7114_HSCALE_CHROMA_HI 0xDD
-#define SAA7114_VSCALE_LUMA_LO 0xE0
-#define SAA7114_VSCALE_LUMA_HI 0xE1
-#define SAA7114_VSCALE_CHROMA_LO 0xE2
-#define SAA7114_VSCALE_CHROMA_HI 0xE3
-#define SAA7114_VSCALE_CONTROL 0xE4
-#define SAA7114_VSCALE_CHROMA_OFFS0 0xE8
-#define SAA7114_VSCALE_CHROMA_OFFS1 0xE9
-#define SAA7114_VSCALE_CHROMA_OFFS2 0xEA
-#define SAA7114_VSCALE_CHROMA_OFFS3 0xEB
-#define SAA7114_VSCALE_LUMINA_OFFS0 0xEC
-#define SAA7114_VSCALE_LUMINA_OFFS1 0xED
-#define SAA7114_VSCALE_LUMINA_OFFS2 0xEE
-#define SAA7114_VSCALE_LUMINA_OFFS3 0xEF
-
-
-/* Still need to determine PHO value (common phase offset) */
-#define SAA7114_VSCALE_PHO 0x00
-
-
-/*----------------------------------------------*/
-/* SECOND GENERATION GRAPHICS UNIT (REDCLOUD) */
-/*----------------------------------------------*/
-
-#define MGP_DST_OFFSET 0x0000 /* dst address */
-#define MGP_SRC_OFFSET 0x0004 /* src address */
-#define MGP_VEC_ERR 0x0004 /* vector diag/axial errors */
-#define MGP_STRIDE 0x0008 /* src and dst strides */
-#define MGP_WID_HEIGHT 0x000C /* width and height of BLT */
-#define MGP_VEC_LEN 0x000C /* vector length/init error */
-#define MGP_SRC_COLOR_FG 0x0010 /* src mono data fgcolor */
-#define MGP_SRC_COLOR_BG 0x0014 /* src mono data bkcolor */
-#define MGP_PAT_COLOR_0 0x0018 /* pattern color 0 */
-#define MGP_PAT_COLOR_1 0x001C /* pattern color 1 */
-#define MGP_PAT_COLOR_2 0x0020 /* pattern color 2 */
-#define MGP_PAT_COLOR_3 0x0024 /* pattern color 3 */
-#define MGP_PAT_COLOR_4 0x0028 /* pattern color 4 */
-#define MGP_PAT_COLOR_5 0x002C /* pattern color 5 */
-#define MGP_PAT_DATA_0 0x0030 /* pattern data 0 */
-#define MGP_PAT_DATA_1 0x0034 /* pattern data 1 */
-#define MGP_RASTER_MODE 0x0038 /* raster operation */
-#define MGP_VECTOR_MODE 0x003C /* render vector */
-#define MGP_BLT_MODE 0x0040 /* render BLT */
-#define MGP_BLT_STATUS 0x0044 /* BLT status register */
-#define MGP_RESET 0x0044 /* reset register (write) */
-#define MGP_HST_SOURCE 0x0048 /* host src data (bitmap) */
-#define MGP_BASE_OFFSET 0x004C /* base render offset */
-
-/* MGP_RASTER_MODE DEFINITIONS */
-
-#define MGP_RM_BPPFMT_332 0x00000000 /* 8 BPP, 3:3:2 */
-#define MGP_RM_BPPFMT_4444 0x40000000 /* 16 BPP, 4:4:4:4 */
-#define MGP_RM_BPPFMT_1555 0x50000000 /* 16 BPP, 1:5:5:5 */
-#define MGP_RM_BPPFMT_565 0x60000000 /* 16 BPP, 5:6:5 */
-#define MGP_RM_BPPFMT_8888 0x80000000 /* 32 BPP, 8:8:8:8 */
-#define MGP_RM_ALPHA_EN_MASK 0x00C00000 /* Alpha enable */
-#define MGP_RM_ALPHA_TO_RGB 0x00400000 /* Alpha applies to RGB */
-#define MGP_RM_ALPHA_TO_ALPHA 0x00800000 /* Alpha applies to alpha */
-#define MGP_RM_ALPHA_OP_MASK 0x00300000 /* Alpha operation */
-#define MGP_RM_ALPHA_TIMES_A 0x00000000 /* Alpha * A */
-#define MGP_RM_BETA_TIMES_B 0x00100000 /* (1-alpha) * B */
-#define MGP_RM_A_PLUS_BETA_B 0x00200000 /* A + (1-alpha) * B */
-#define MGP_RM_ALPHA_A_PLUS_BETA_B 0x00300000 /* alpha * A + (1 - alpha)B */
-#define MGP_RM_ALPHA_SELECT 0x000E0000 /* Alpha Select */
-#define MGP_RM_SELECT_ALPHA_A 0x00000000 /* Alpha from channel A */
-#define MGP_RM_SELECT_ALPHA_B 0x00020000 /* Alpha from channel B */
-#define MGP_RM_SELECT_ALPHA_R 0x00040000 /* Registered alpha */
-#define MGP_RM_SELECT_ALPHA_1 0x00060000 /* Constant 1 */
-#define MGP_RM_SELECT_ALPHA_CHAN_A 0x00080000 /* RGB Values from A */
-#define MGP_RM_SELECT_ALPHA_CHAN_B 0x000A0000 /* RGB Values from B */
-#define MGP_RM_DEST_FROM_CHAN_A 0x00010000 /* Alpha channel select */
-#define MGP_RM_PAT_FLAGS 0x00000700 /* pattern related bits */
-#define MGP_RM_PAT_MONO 0x00000100 /* monochrome pattern */
-#define MGP_RM_PAT_COLOR 0x00000200 /* color pattern */
-#define MGP_RM_PAT_TRANS 0x00000400 /* pattern transparency */
-#define MGP_RM_SRC_TRANS 0x00000800 /* source transparency */
-
-/* MGP_VECTOR_MODE DEFINITIONS */
-
-#define MGP_VM_DST_REQ 0x00000008 /* dst data required */
-#define MGP_VM_THROTTLE 0x00000010 /* sync to VBLANK */
-
-/* MGP_BLT_MODE DEFINITIONS */
-
-#define MGP_BM_SRC_FB 0x00000001 /* src = frame buffer */
-#define MGP_BM_SRC_HOST 0x00000002 /* src = host register */
-#define MGP_BM_DST_REQ 0x00000004 /* dst data required */
-#define MGP_BM_SRC_MONO 0x00000040 /* monochrome source data */
-#define MGP_BM_SRC_BP_MONO 0x00000080 /* Byte-packed monochrome */
-#define MGP_BM_NEG_YDIR 0x00000100 /* negative Y direction */
-#define MGP_BM_NEG_XDIR 0x00000200 /* negative X direction */
-#define MGP_BM_THROTTLE 0x00000400 /* sync to VBLANK */
-
-/* MGP_BLT_STATUS DEFINITIONS */
-
-#define MGP_BS_BLT_BUSY 0x00000001 /* GP is not idle */
-#define MGP_BS_BLT_PENDING 0x00000004 /* second BLT is pending */
-#define MGP_BS_HALF_EMPTY 0x00000008 /* src FIFO half empty */
-
-/* ALPHA BLENDING MODES */
-
-#define ALPHA_MODE_BLEND 0x00000000
-
-/*---------------------------------------------------*/
-/* SECOND GENERATION DISPLAY CONTROLLER (REDCLOUD) */
-/*---------------------------------------------------*/
-
-#define MDC_UNLOCK 0x00000000 /* Unlock register */
-#define MDC_GENERAL_CFG 0x00000004 /* Config registers */
-#define MDC_DISPLAY_CFG 0x00000008
-#define MDC_GFX_SCL 0x0000000C /* Graphics scaling */
-
-#define MDC_FB_ST_OFFSET 0x00000010 /* Frame buffer start offset */
-#define MDC_CB_ST_OFFSET 0x00000014 /* Compression start offset */
-#define MDC_CURS_ST_OFFSET 0x00000018 /* Cursor buffer start offset */
-#define MDC_ICON_ST_OFFSET 0x0000001C /* Icon buffer start offset */
-#define MDC_VID_Y_ST_OFFSET 0x00000020 /* Video Y Buffer start offset */
-#define MDC_VID_U_ST_OFFSET 0x00000024 /* Video U Buffer start offset */
-#define MDC_VID_V_ST_OFFSET 0x00000028 /* Video V Buffer start offset */
-#define MDC_LINE_SIZE 0x00000030 /* Video, CB, and FB line sizes */
-#define MDC_GFX_PITCH 0x00000034 /* FB and DB skip counts */
-#define MDC_VID_YUV_PITCH 0x00000038 /* Y, U and V buffer skip counts */
-
-#define MDC_H_ACTIVE_TIMING 0x00000040 /* Horizontal timings */
-#define MDC_H_BLANK_TIMING 0x00000044
-#define MDC_H_SYNC_TIMING 0x00000048
-#define MDC_V_ACTIVE_TIMING 0x00000050 /* Vertical Timings */
-#define MDC_V_BLANK_TIMING 0x00000054
-#define MDC_V_SYNC_TIMING 0x00000058
-
-#define MDC_CURSOR_X 0x00000060 /* Cursor X position */
-#define MDC_CURSOR_Y 0x00000064 /* Cursor Y Position */
-#define MDC_ICON_X 0x00000068 /* Icon X Position */
-#define MDC_LINE_CNT_STATUS 0x0000006C /* Icon Y Position */
-
-#define MDC_PAL_ADDRESS 0x00000070 /* Palette Address */
-#define MDC_PAL_DATA 0x00000074 /* Palette Data */
-#define MDC_DFIFO_DIAG 0x00000078 /* Display FIFO diagnostic */
-#define MDC_CFIFO_DIAG 0x0000007C /* Compression FIFO diagnostic */
-
-#define MDC_VID_DS_DELTA 0x00000080 /* Vertical Downscaling fraction */
-
-#define MDC_PHY_MEM_OFFSET 0x00000084 /* VG Base Address Register */
-#define MDC_DV_CTL 0x00000088 /* Dirty-Valid Control Register */
-#define MDC_DV_ACC 0x0000008C /* Dirty-Valid RAM Access */
-
-/* UNLOCK VALUE */
-
-#define MDC_UNLOCK_VALUE 0x00004758 /* used to unlock DC regs */
-
-/* VG MBUS DEVICE SMI MSR FIELDS */
-
-#define MDC_VG_BL_MASK 0x00000001
-#define MDC_MISC_MASK 0x00000002
-#define MDC_ISR0_MASK 0x00000004
-#define MDC_VGA_BL_MASK 0x00000008
-#define MDC_CRTCIO_MSK 0x00000010
-#define MDC_VG_BLANK_SMI 0x00000001
-#define MDC_MISC_SMI 0x00000002
-#define MDC_ISR0_SMI 0x00000004
-#define MDC_VGA_BLANK_SMI 0x00000008
-#define MDC_CRTCIO_SMI 0x00000010
-
-/* MDC_GENERAL_CFG BIT FIELDS */
-
-#define MDC_GCFG_DBUG 0x80000000
-#define MDC_GCFG_DBSL 0x40000000
-#define MDC_GCFG_CFRW 0x20000000
-#define MDC_GCFG_DIAG 0x10000000
-#define MDC_GCFG_GXRFS4 0x08000000
-#define MDC_GCFG_SGFR 0x04000000
-#define MDC_GCFG_SGRE 0x02000000
-#define MDC_GCFG_SIGE 0x01000000
-#define MDC_GCFG_YUVM 0x00100000
-#define MDC_GCFG_VDSE 0x00080000
-#define MDC_GCFG_VGAFT 0x00040000
-#define MDC_GCFG_FDTY 0x00020000
-#define MDC_GCFG_STFM 0x00010000
-#define MDC_GCFG_DFHPEL_MASK 0x0000F000
-#define MDC_GCFG_DFHPSL_MASK 0x00000F00
-#define MDC_GCFG_VGAE 0x00000080
-#define MDC_GCFG_DECE 0x00000040
-#define MDC_GCFG_CMPE 0x00000020
-#define MDC_GCFG_VIDE 0x00000008
-#define MDC_GCFG_ICNE 0x00000004
-#define MDC_GCFG_CURE 0x00000002
-#define MDC_GCFG_DFLE 0x00000001
-
-/* MDC_DISPLAY_CFG BIT FIELDS */
-
-#define MDC_DCFG_A20M 0x80000000
-#define MDC_DCFG_A18M 0x40000000
-#define MDC_DCFG_VISL 0x08000000
-#define MDC_DCFG_FRLK 0x04000000
-#define MDC_DCFG_PALB 0x02000000
-#define MDC_DCFG_PIX_PAN_MASK 0x00F00000
-#define MDC_DCFG_DCEN 0x00080000
-#define MDC_DCFG_16BPP_MODE_MASK 0x00000C00
-#define MDC_DCFG_16BPP 0x00000000
-#define MDC_DCFG_15BPP 0x00000400
-#define MDC_DCFG_12BPP 0x00000800
-#define MDC_DCFG_DISP_MODE_MASK 0x00000300
-#define MDC_DCFG_DISP_MODE_8BPP 0x00000000
-#define MDC_DCFG_DISP_MODE_16BPP 0x00000100
-#define MDC_DCFG_DISP_MODE_24BPP 0x00000200
-#define MDC_DCFG_SCLE 0x00000080
-#define MDC_DCFG_TRUP 0x00000040
-#define MDC_DCFG_VIEN 0x00000020
-#define MDC_DCFG_VDEN 0x00000010
-#define MDC_DCFG_GDEN 0x00000008
-#define MDC_DCFG_VCKE 0x00000004
-#define MDC_DCFG_PCKE 0x00000002
-#define MDC_DCFG_TGEN 0x00000001
-
-/* MDC_LINE_CNT BIT FIELDS */
-
-#define MDC_LNCNT_DNA 0x80000000
-#define MDC_LNCNT_VNA 0x40000000
-#define MDC_LNCNT_VSA 0x20000000
-#define MDC_LNCNT_VINT 0x10000000
-#define MDC_LNCNT_FLIP 0x08000000
-#define MDC_LNCNT_V_LINE_CNT 0x07FF0000
-#define MDC_LNCNT_VFLIP 0x00008000
-#define MDC_LNCNT_SIGC 0x00004000
-#define MDC_LNCNT_SS_LINE_CMP 0x000007FF
-
-/* MDC_FB_ST_OFFSET BIT FIELDS */
-
-#define MDC_FB_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_CB_ST_OFFSET BIT FIELDS */
-
-#define MDC_CB_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_CURS_ST_OFFSET BIT FIELDS */
-
-#define MDC_CURS_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_ICON_ST_OFFSET BIT FIELDS */
-
-#define MDC_ICON_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_VID_Y_ST_OFFSET BIT FIELDS */
-
-#define MDC_VID_Y_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_VID_U_ST_OFFSET BIT FIELDS */
-
-#define MDC_VID_U_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_VID_V_ST_OFFSET BIT FIELDS */
-
-#define MDC_VID_V_ST_OFFSET_MASK 0x0FFFFFFF
-
-/* MDC_LINE_SIZE BIT FIELDS */
-
-#define MDC_LINE_SIZE_VLS_MASK 0xFF000000
-#define MDC_LINE_SIZE_CBLS_MASK 0x007F0000
-#define MDC_LINE_SIZE_FBLS_MASK 0x000007FF
-
-/* MDC_GFX_PITCH BIT FIELDS */
-
-#define MDC_GFX_PITCH_CBP_MASK 0xFFFF0000
-#define MDC_GFX_PITCH_FBP_MASK 0x0000FFFF
-
-/* MDC_VID_YUV_PITCH BIT FIELDS */
-
-#define MDC_YUV_PITCH_UVP_MASK 0xFFFF0000
-#define MDC_YUV_PITCH_YBP_MASK 0x0000FFFF
-
-/* MDC_H_ACTIVE_TIMING BIT FIELDS */
-
-#define MDC_HAT_HT_MASK 0x0FF80000
-#define MDC_HAT_HA_MASK 0x00000FF8
-
-/* MDC_H_BLANK_TIMING BIT FIELDS */
-
-#define MDC_HBT_HBE_MASK 0x0FF80000
-#define MDC_HBT_HBS_MASK 0x00000FF8
-
-/* MDC_H_SYNC_TIMING BIT FIELDS */
-
-#define MDC_HST_HSE_MASK 0x0FF80000
-#define MDC_HST_HSS_MASK 0x00000FF8
-
-/* MDC_V_ACTIVE_TIMING BIT FIELDS */
-
-#define MDC_VAT_VT_MASK 0x07FF0000
-#define MDC_VAT_VA_MASK 0x000007FF
-
-/* MDC_V_BLANK_TIMING BIT FIELDS */
-
-#define MDC_VBT_VBE_MASK 0x07FF0000
-#define MDC_VBT_VBS_MASK 0x000007FF
-
-/* MDC_V_SYNC_TIMING BIT FIELDS */
-
-#define MDC_VST_VSE_MASK 0x07FF0000
-#define MDC_VST_VSS_MASK 0x000007FF
-
-/* MDC_DV_CTL BIT DEFINITIONS */
-
-#define MDC_DV_LINE_SIZE_MASK 0x00000C00
-#define MDC_DV_LINE_SIZE_1024 0x00000000
-#define MDC_DV_LINE_SIZE_2048 0x00000400
-#define MDC_DV_LINE_SIZE_4096 0x00000800
-#define MDC_DV_LINE_SIZE_8192 0x00000C00
-
-/* VGA DEFINITIONS */
-
-#define MDC_SEQUENCER_INDEX 0x03C4
-#define MDC_SEQUENCER_DATA 0x03C5
-#define MDC_SEQUENCER_RESET 0x00
-#define MDC_SEQUENCER_CLK_MODE 0x01
-
-#define MDC_RESET_VGA_DISP_ENABLE 0x03
-#define MDC_CLK_MODE_SCREEN_OFF 0x20
-
-
-/*---------------------------------------------------*/
-/* REDCLOUD DISPLAY FILTER */
-/*---------------------------------------------------*/
-
-/* RCDF VIDEO REGISTER DEFINITIONS */
-
-#define RCDF_VIDEO_CONFIG 0x000
-#define RCDF_DISPLAY_CONFIG 0x008
-#define RCDF_VIDEO_X_POS 0x010
-#define RCDF_VIDEO_Y_POS 0x018
-#define RCDF_VIDEO_SCALE 0x020
-#define RCDF_VIDEO_COLOR_KEY 0x028
-#define RCDF_VIDEO_COLOR_MASK 0x030
-#define RCDF_PALETTE_ADDRESS 0x038
-#define RCDF_PALETTE_DATA 0x040
-#define RCDF_VID_MISC 0x050
-#define RCDF_VID_CLOCK_SELECT 0x058
-#define RCDF_VIDEO_DOWNSCALER_CONTROL 0x078
-#define RCDF_VIDEO_DOWNSCALER_COEFFICIENTS 0x080
-#define RCDF_VID_CRC 0x088
-#define RCDF_VID_CRC32 0x090
-#define RCDF_VID_ALPHA_CONTROL 0x098
-#define RCDF_CURSOR_COLOR_KEY 0x0A0
-#define RCDF_CURSOR_COLOR_MASK 0x0A8
-#define RCDF_CURSOR_COLOR_1 0x0B0
-#define RCDF_CURSOR_COLOR_2 0x0B8
-#define RCDF_ALPHA_XPOS_1 0x0C0
-#define RCDF_ALPHA_YPOS_1 0x0C8
-#define RCDF_ALPHA_COLOR_1 0x0D0
-#define RCDF_ALPHA_CONTROL_1 0x0D8
-#define RCDF_ALPHA_XPOS_2 0x0E0
-#define RCDF_ALPHA_YPOS_2 0x0E8
-#define RCDF_ALPHA_COLOR_2 0x0F0
-#define RCDF_ALPHA_CONTROL_2 0x0F8
-#define RCDF_ALPHA_XPOS_3 0x100
-#define RCDF_ALPHA_YPOS_3 0x108
-#define RCDF_ALPHA_COLOR_3 0x110
-#define RCDF_ALPHA_CONTROL_3 0x118
-#define RCDF_VIDEO_REQUEST 0x120
-#define RCDF_ALPHA_WATCH 0x128
-#define RCDF_VIDEO_TEST_MODE 0x210
-#define RCDF_POWER_MANAGEMENT 0x410
-
-/* DISPLAY FILTER POWER MANAGEMENT DEFINITIONS */
-
-#define RCDF_PM_PANEL_POWER_ON 0x01000000
-
-/* DISPLAY FILTER MSRS */
-
-#define RCDF_MBD_MSR_DIAG_DF 0x2010
-#define RCDF_DIAG_32BIT_CRC 0x80000000
-
-/* "RCDF_VIDEO_CONFIG" BIT DEFINITIONS */
-
-#define RCDF_VCFG_VID_EN 0x00000001
-#define RCDF_VCFG_VID_INP_FORMAT 0x0000000C
-#define RCDF_VCFG_X_FILTER_EN 0x00000040
-#define RCDF_VCFG_Y_FILTER_EN 0x00000080
-#define RCDF_VCFG_LINE_SIZE_LOWER_MASK 0x0000FF00
-#define RCDF_VCFG_INIT_READ_MASK 0x01FF0000
-#define RCDF_VCFG_LINE_SIZE_UPPER 0x08000000
-#define RCDF_VCFG_4_2_0_MODE 0x10000000
-#define RCDF_VCFG_UYVY_FORMAT 0x00000000
-#define RCDF_VCFG_Y2YU_FORMAT 0x00000004
-#define RCDF_VCFG_YUYV_FORMAT 0x00000008
-#define RCDF_VCFG_YVYU_FORMAT 0x0000000C
-
-/* "RCDF_DISPLAY_CONFIG" BIT DEFINITIONS */
-
-#define RCDF_DCFG_DIS_EN 0x00000001
-#define RCDF_DCFG_HSYNC_EN 0x00000002
-#define RCDF_DCFG_VSYNC_EN 0x00000004
-#define RCDF_DCFG_DAC_BL_EN 0x00000008
-#define RCDF_DCFG_FP_PWR_EN 0x00000040
-#define RCDF_DCFG_FP_DATA_EN 0x00000080
-#define RCDF_DCFG_CRT_HSYNC_POL 0x00000100
-#define RCDF_DCFG_CRT_VSYNC_POL 0x00000200
-#define RCDF_DCFG_CRT_SYNC_SKW_MASK 0x0001C000
-#define RCDF_DCFG_CRT_SYNC_SKW_INIT 0x00010000
-#define RCDF_DCFG_PWR_SEQ_DLY_MASK 0x000E0000
-#define RCDF_DCFG_PWR_SEQ_DLY_INIT 0x00080000
-#define RCDF_DCFG_VG_CK 0x00100000
-#define RCDF_DCFG_GV_PAL_BYP 0x00200000
-#define RCDF_DAC_VREF 0x04000000
-#define RCDF_FP_ON_STATUS 0x08000000
-
-/* "RCDF_VID_MISC" BIT DEFINITIONS */
-
-#define RCDF_GAMMA_BYPASS_BOTH 0x00000001
-#define RCDF_DAC_POWER_DOWN 0x00000400
-#define RCDF_ANALOG_POWER_DOWN 0x00000800
-
-/* "RCDF_VIDEO_DOWNSCALER_CONTROL" BIT DEFINITIONS */
-
-#define RCDF_VIDEO_DOWNSCALE_ENABLE 0x00000001
-#define RCDF_VIDEO_DOWNSCALE_FACTOR_POS 1
-#define RCDF_VIDEO_DOWNSCALE_FACTOR_MASK 0x0000001E
-#define RCDF_VIDEO_DOWNSCALE_TYPE_A 0x00000000
-#define RCDF_VIDEO_DOWNSCALE_TYPE_B 0x00000040
-#define RCDF_VIDEO_DOWNSCALE_TYPE_MASK 0x00000040
-
-/* "RCDF_VIDEO_DOWNSCALER_COEFFICIENTS" BIT DEFINITIONS */
-
-#define RCDF_VIDEO_DOWNSCALER_COEF1_POS 0
-#define RCDF_VIDEO_DOWNSCALER_COEF2_POS 8
-#define RCDF_VIDEO_DOWNSCALER_COEF3_POS 16
-#define RCDF_VIDEO_DOWNSCALER_COEF4_POS 24
-#define RCDF_VIDEO_DOWNSCALER_COEF_MASK 0xF
-
-/* VIDEO DE-INTERLACING AND ALPHA CONTROL */
-
-#define RCDF_NO_CK_OUTSIDE_ALPHA 0x00000100
-#define RCDF_CSC_VIDEO_YUV_TO_RGB 0x00000400
-#define RCDF_VIDEO_INPUT_IS_RGB 0x00002000
-#define RCDF_ALPHA1_PRIORITY_POS 16
-#define RCDF_ALPHA1_PRIORITY_MASK 0x00030000
-#define RCDF_ALPHA2_PRIORITY_POS 18
-#define RCDF_ALPHA2_PRIORITY_MASK 0x000C0000
-#define RCDF_ALPHA3_PRIORITY_POS 20
-#define RCDF_ALPHA3_PRIORITY_MASK 0x00300000
-
-/* VIDEO CURSOR COLOR KEY DEFINITIONS */
-
-#define RCDF_CURSOR_COLOR_KEY_ENABLE 0x20000000
-#define RCDF_CURSOR_COLOR_KEY_OFFSET_POS 24
-#define RCDF_CURSOR_COLOR_BITS 23
-#define RCDF_COLOR_MASK 0x00FFFFFF /* 24 significant bits */
-
-/* ALPHA COLOR BIT DEFINITION (REGISTERS 0x68, 0x78, AND 0x88) */
-
-#define RCDF_ALPHA_COLOR_ENABLE 0x01000000
-
-/* ALPHA CONTROL BIT DEFINITIONS (REGISTERS 0x6C, 0x7C, AND 0x8C) */
-
-#define RCDF_ACTRL_WIN_ENABLE 0x00010000
-#define RCDF_ACTRL_LOAD_ALPHA 0x00020000
-
-/* VIDEO REQUEST DEFINITIONS (REGISTER 0x90) */
-
-#define RCDF_VIDEO_Y_REQUEST_POS 0
-#define RCDF_VIDEO_X_REQUEST_POS 16
-#define RCDF_VIDEO_REQUEST_MASK 0x000007FF
-
-/* GEODELINK DEVICE MSR REGISTER SUMMARY */
-
-#define MBD_MSR_CAP 0x2000 /* Device Capabilities */
-#define MBD_MSR_CONFIG 0x2001 /* Device Master Configuration Register */
-#define MBD_MSR_SMI 0x2002 /* MBus Device SMI Register */
-#define MBD_MSR_ERROR 0x2003 /* MBus Device Error */
-#define MBD_MSR_PM 0x2004 /* MBus Device Power Management Register */
-#define MBD_MSR_DIAG 0x2005 /* Mbus Device Diagnostic Register */
-
-/* DISPLAY FILTER MBD_MSR_DIAG DEFINITIONS */
-
-#define RCDF_MBD_DIAG_SEL0 0x00007FFF /* Lower 32-bits of Diag Bus Select */
-#define RCDF_MBD_DIAG_EN0 0x00008000 /* Enable for lower 32-bits of diag bus */
-#define RCDF_MBD_DIAG_SEL1 0x7FFF0000 /* Upper 32-bits of Diag Bus Select */
-#define RCDF_MBD_DIAG_EN1 0x80000000 /* Enable for upper 32-bits of diag bus */
-
-/* DISPLAY FILTER MBD_MSR_CONFIG DEFINITIONS */
-
-#define RCDF_CONFIG_FMT_MASK 0x00000038 /* Output Format */
-#define RCDF_CONFIG_FMT_CRT 0x00000000
-#define RCDF_CONFIG_FMT_FP 0x00000008
-
-/* MCP MSR DEFINITIONS */
-
-#define MCP_CLKOFF 0x0010
-#define MCP_CLKACTIVE 0x0011
-#define MCP_CLKDISABLE 0x0012
-#define MCP_CLK4ACK 0x0013
-#define MCP_SYS_RSTPLL 0x0014
-#define MCP_DOTPLL 0x0015
-#define MCP_DBGCLKCTL 0x0016
-#define MCP_RC_REVID 0x0017
-#define MCP_SETM0CTL 0x0040
-#define MCP_SETN0CTL 0x0048
-#define MCP_CMPVAL0 0x0050
-#define MCP_CMPMASK0 0x0051
-#define MCP_REGA 0x0058
-#define MCP_REGB 0x0059
-#define MCP_REGAMASK 0x005A
-#define MCP_REGAVAL 0x005B
-#define MCP_REGBMASK 0x005C
-#define MCP_REGBVAL 0x005D
-#define MCP_FIFOCTL 0x005E
-#define MCP_DIAGCTL 0x005F
-#define MCP_H0CTL 0x0060
-#define MCP_XSTATE 0x0066
-#define MCP_YSTATE 0x0067
-#define MCP_ACTION0 0x0068
-
-/* MCP_SYS_RSTPLL DEFINITIONS */
-
-#define MCP_DOTPOSTDIV3 0x00000008
-#define MCP_DOTPREMULT2 0x00000004
-#define MCP_DOTPREDIV2 0x00000002
-
-/* MCP MBD_MSR_DIAG DEFINITIONS */
-
-#define MCP_MBD_DIAG_SEL0 0x00000007
-#define MCP_MBD_DIAG_EN0 0x00008000
-#define MCP_MBD_DIAG_SEL1 0x00070000
-#define MCP_MBD_DIAG_EN1 0x80000000
-
-/* MCP_DOTPLL DEFINITIONS */
-
-#define MCP_DOTPLL_P 0x00000003
-#define MCP_DOTPLL_N 0x000001FC
-#define MCP_DOTPLL_M 0x00001E00
-#define MCP_DOTPLL_LOCK 0x02000000
-
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rndr.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rndr.c
deleted file mode 100644
index 5003537c0..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rndr.c
+++ /dev/null
@@ -1,732 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rndr.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_rndr.c $
- *
- * This file contains routines to program the 2D acceleration hardware:
- *
- * gfx_set_bpp
- * gfx_set_solid_pattern
- * gfx_set_mono_pattern
- * gfx_set_color_pattern
- * gfx_load_color_pattern_line
- * gfx_set_solid_source
- * gfx_set_mono_source
- * gfx_set_raster_operation
- * gfx_pattern_fill
- * gfx_color_pattern_fill
- * gfx_screen_to_screen_blt
- * gfx_screen_to_screen_xblt
- * gfx_color_bitmap_to_screen_blt
- * gfx_color_bitmap_to_screen_xblt
- * gfx_mono_bitmap_to_screen_blt
- * gfx_bresenham_line
- * gfx_wait_until_idle
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* STATIC VARIABLES */
-
-unsigned short GFXbpp = 16;
-unsigned short GFXbb0Base = 0x400;
-unsigned short GFXbb1Base = 0x930;
-unsigned short GFXbufferWidthPixels = 400;
-
-unsigned short GFXpatternFlags = 0;
-unsigned short GFXsourceFlags = 0;
-unsigned long GFXsavedColor = 0;
-unsigned short GFXsavedRop = 0;
-unsigned short GFXusesDstData = 0;
-
-/* INCLUDE SUPPORT FOR FIRST GENERATION, IF SPECIFIED. */
-
-#if GFX_2DACCEL_GU1
-#include "rndr_gu1.c"
-#endif
-
-/* INCLUDE SUPPORT FOR SECOND GENERATION, IF SPECIFIED. */
-
-#if GFX_2DACCEL_GU2
-#include "rndr_gu2.c"
-#endif
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either first or second generation routines. */
-
-#if GFX_2DACCEL_DYNAMIC
-
-/*---------------------------------------------------------------------------
- * gfx_reset_pitch (PRIVATE ROUTINE - NOT PART OF API)
- *---------------------------------------------------------------------------
- */
-void gfx_reset_pitch(unsigned short pitch)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_reset_pitch(pitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_bpp
- *---------------------------------------------------------------------------
- */
-void gfx_set_bpp(unsigned short bpp)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_bpp(bpp);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_bpp(bpp);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_solid_source
- *---------------------------------------------------------------------------
- */
-void gfx_set_solid_source(unsigned long color)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_solid_source(color);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_solid_source(color);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_mono_source
- *---------------------------------------------------------------------------
- */
-void gfx_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
- unsigned short transparent)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_mono_source(bgcolor, fgcolor, transparent);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_mono_source(bgcolor, fgcolor, transparent);
-# endif
-}
-
-void gfx_set_pattern_flags(unsigned short flags)
-{
- GFXpatternFlags |= flags;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_solid_pattern
- *---------------------------------------------------------------------------
- */
-void gfx_set_solid_pattern(unsigned long color)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_solid_pattern(color);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_solid_pattern(color);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_mono_pattern
- *---------------------------------------------------------------------------
- */
-void gfx_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned char transparent)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_mono_pattern(bgcolor, fgcolor, data0, data1, transparent);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_mono_pattern(bgcolor, fgcolor, data0, data1, transparent);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_color_pattern
- *---------------------------------------------------------------------------
- */
-void gfx_set_color_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1,
- unsigned long data2, unsigned long data3, unsigned char transparent)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_color_pattern(bgcolor, fgcolor, data0, data1, data2, data3, transparent);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_color_pattern(bgcolor, fgcolor, data0, data1, data2, data3, transparent);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_load_color_pattern_line
- *---------------------------------------------------------------------------
- */
-void gfx_load_color_pattern_line(short y, unsigned long *pattern_8x8)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_load_color_pattern_line(y, pattern_8x8);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_load_color_pattern_line(y, pattern_8x8);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_raster_operation
- *---------------------------------------------------------------------------
- */
-void gfx_set_raster_operation(unsigned char rop)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_set_raster_operation(rop);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_set_raster_operation(rop);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_pattern_fill
- *---------------------------------------------------------------------------
- */
-void gfx_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_pattern_fill(x, y, width, height);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_pattern_fill(x, y, width, height);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_color_pattern_fill
- *---------------------------------------------------------------------------
- */
-void gfx_color_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long *pattern)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_color_pattern_fill(x, y, width, height, pattern);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_color_pattern_fill(x, y, width, height, pattern);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_screen_to_screen_blt
- *---------------------------------------------------------------------------
- */
-void gfx_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_screen_to_screen_blt(srcx, srcy, dstx, dsty, width, height);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_screen_to_screen_blt(srcx, srcy, dstx, dsty, width, height);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_screen_to_screen_xblt
- *---------------------------------------------------------------------------
- */
-void gfx_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned long color)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_screen_to_screen_xblt(srcx, srcy, dstx, dsty, width, height, color);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_screen_to_screen_xblt(srcx, srcy, dstx, dsty, width, height, color);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_color_bitmap_to_screen_blt
- *---------------------------------------------------------------------------
- */
-void gfx_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_color_bitmap_to_screen_blt(srcx, srcy, dstx, dsty, width, height,
- data, pitch);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_color_bitmap_to_screen_blt(srcx, srcy, dstx, dsty, width, height,
- data, pitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_color_bitmap_to_screen_xblt
- *---------------------------------------------------------------------------
- */
-void gfx_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch,
- unsigned long color)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_color_bitmap_to_screen_xblt(srcx, srcy, dstx, dsty, width, height,
- data, pitch, color);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_color_bitmap_to_screen_xblt(srcx, srcy, dstx, dsty, width, height,
- data, pitch, color);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_mono_bitmap_to_screen_blt
- *---------------------------------------------------------------------------
- */
-void gfx_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, short pitch)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_mono_bitmap_to_screen_blt(srcx, srcy, dstx, dsty, width, height,
- data, pitch);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_mono_bitmap_to_screen_blt(srcx, srcy, dstx, dsty, width, height,
- data, pitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_text_blt
- *---------------------------------------------------------------------------
- */
-void gfx_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data)
-
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_text_blt (dstx, dsty, width, height, data);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_text_blt (dstx, dsty, width, height, data);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_bresenham_line
- *---------------------------------------------------------------------------
- */
-void gfx_bresenham_line(unsigned short x, unsigned short y,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_bresenham_line(x, y, length, initerr, axialerr, diagerr, flags);
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_bresenham_line(x, y, length, initerr, axialerr, diagerr, flags);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_wait_until_idle
- *---------------------------------------------------------------------------
- */
-void gfx_wait_until_idle(void)
-{
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- gu1_wait_until_idle();
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu2_wait_until_idle();
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_blt_pending
- *---------------------------------------------------------------------------
- */
-int gfx_test_blt_pending(void)
-{
- int retval = 0;
-# if GFX_2DACCEL_GU1
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU1)
- retval = gu1_test_blt_pending();
-# endif
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- retval = gu2_test_blt_pending();
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * NEW ROUTINES FOR REDCLOUD
- *---------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------
- * gfx2_set_source_stride
- *---------------------------------------------------------------------------
- */
-void gfx2_set_source_stride(unsigned short stride)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_set_source_stride (stride);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_set_destination_stride
- *---------------------------------------------------------------------------
- */
-void gfx2_set_destination_stride(unsigned short stride)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_set_destination_stride (stride);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_set_pattern_origin
- *---------------------------------------------------------------------------
- */
-void gfx2_set_pattern_origin(int x, int y)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_set_pattern_origin (x, y);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_set_source_transparency
- *---------------------------------------------------------------------------
- */
-void gfx2_set_source_transparency(unsigned long color, unsigned long mask)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_set_source_transparency (color, mask);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_set_alpha_mode
- *---------------------------------------------------------------------------
- */
-void gfx2_set_alpha_mode(int mode)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_set_alpha_mode (mode);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_set_alpha_value
- *---------------------------------------------------------------------------
- */
-void gfx2_set_alpha_value(unsigned char value)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_set_alpha_value (value);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_pattern_fill
- *---------------------------------------------------------------------------
- */
-void gfx2_pattern_fill(unsigned long dstoffset, unsigned short width,
- unsigned short height)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_pattern_fill (dstoffset, width, height);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_color_pattern_fill
- *---------------------------------------------------------------------------
- */
-void gfx2_color_pattern_fill(unsigned long dstoffset, unsigned short width,
- unsigned short height, unsigned long *pattern)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_color_pattern_fill (dstoffset, width, height, pattern);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_screen_to_screen_blt
- *---------------------------------------------------------------------------
- */
-void gfx2_screen_to_screen_blt(unsigned long srcoffset, unsigned long dstoffset,
- unsigned short width, unsigned short height, int flags)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_screen_to_screen_blt (srcoffset, dstoffset, width, height, flags);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_mono_expand_blt
- *---------------------------------------------------------------------------
- */
-void gfx2_mono_expand_blt(unsigned long srcbase, unsigned short srcx,
- unsigned short srcy, unsigned long dstoffset, unsigned short width,
- unsigned short height, int byte_packed)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_mono_expand_blt (srcbase, srcx, srcy, dstoffset, width, height, byte_packed);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_color_bitmap_to_screen_blt
- *---------------------------------------------------------------------------
- */
-void gfx2_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data, unsigned short pitch)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_color_bitmap_to_screen_blt (srcx, srcy, dstoffset, width, height, data, pitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_text_blt
- *---------------------------------------------------------------------------
- */
-void gfx2_text_blt (unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_text_blt (dstoffset, width, height, data);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_mono_bitmap_to_screen_blt
- *---------------------------------------------------------------------------
- */
-void gfx2_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data, unsigned short pitch)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_mono_bitmap_to_screen_blt (srcx, srcy, dstoffset, width, height, data, pitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_bresenham_line
- *---------------------------------------------------------------------------
- */
-void gfx2_bresenham_line(unsigned long dstoffset,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_bresenham_line (dstoffset, length, initerr, axialerr, diagerr, flags);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx2_sync_to_vblank
- *---------------------------------------------------------------------------
- */
-void gfx2_sync_to_vblank(void)
-{
-# if GFX_2DACCEL_GU2
- if (gfx_2daccel_type & GFX_2DACCEL_TYPE_GU2)
- gu22_sync_to_vblank();
-# endif
-}
-
-#endif /* GFX_2DACCEL_DYNAMIC */
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rtns.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rtns.h
deleted file mode 100644
index 388c9dbed..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rtns.h
+++ /dev/null
@@ -1,666 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_rtns.h,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_rtns.h $
- *
- * This header file defines the Durango routines and variables used
- * to access the memory mapped regions.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#ifndef _gfx_rtns_h
-#define _gfx_rtns_h
-
-/* INCLUDE DURANGO DEFINITIONS */
-/* These definitions are placed in another file to allow their inclusion */
-/* in a user application. Such applications generally work through driver */
-/* shell routines that simply pass their parameters to Durango routines. */
-/* An external file provides an easy way to provide the definitions for these */
-/* parameters without the applications gaining any Durango visisbility. */
-
-#include "gfx_type.h"
-
-/* COMPILER OPTION FOR C++ PROGRAMS */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* DURANGO MEMORY POINTERS */
-
-extern unsigned char *gfx_virt_regptr;
-extern unsigned char *gfx_virt_fbptr;
-extern unsigned char *gfx_virt_vidptr;
-extern unsigned char *gfx_virt_vipptr;
-extern unsigned char *gfx_virt_spptr;
-extern unsigned char *gfx_virt_gpptr;
-
-extern unsigned char *gfx_phys_regptr;
-extern unsigned char *gfx_phys_fbptr;
-extern unsigned char *gfx_phys_vidptr;
-extern unsigned char *gfx_phys_vipptr;
-extern unsigned char *gfx_phys_spptr;
-extern unsigned char *gfx_phys_gpptr;
-
-/* DURANGO VARIBLES FOR RUNTIME SELECTION AND POSSIBLE VALUES */
-
-extern int gfx_display_type;
-#define GFX_DISPLAY_TYPE_GU1 0x0001
-#define GFX_DISPLAY_TYPE_GU2 0x0002
-
-extern int gfx_init_type;
-#define GFX_INIT_TYPE_GU1 0x0001
-#define GFX_INIT_TYPE_GU2 0x0002
-
-extern int gfx_msr_type;
-#define GFX_MSR_TYPE_REDCLOUD 0x0001
-
-extern int gfx_2daccel_type;
-#define GFX_2DACCEL_TYPE_GU1 0x0001
-#define GFX_2DACCEL_TYPE_GU2 0x0002
-
-extern int gfx_video_type;
-#define GFX_VIDEO_TYPE_CS5530 0x0001
-#define GFX_VIDEO_TYPE_SC1200 0x0002
-#define GFX_VIDEO_TYPE_REDCLOUD 0x0004
-
-extern int gfx_vip_type;
-#define GFX_VIP_TYPE_SC1200 0x0001
-
-extern int gfx_decoder_type;
-#define GFX_DECODER_TYPE_SAA7114 0x0001
-
-extern int gfx_tv_type;
-#define GFX_TV_TYPE_SC1200 0x0001
-#define GFX_TV_TYPE_FS451 0x0002
-
-extern int gfx_i2c_type;
-#define GFX_I2C_TYPE_ACCESS 0x0001
-#define GFX_I2C_TYPE_GPIO 0x0002
-
-/* GLOBAL CPU INFORMATION */
-
-extern unsigned long gfx_cpu_version;
-extern unsigned long gfx_cpu_frequency;
-extern unsigned long gfx_vid_version;
-extern ChipType gfx_chip_revision;
-
-/* ROUTINES IN GFX_INIT.C */
-
-unsigned long gfx_pci_config_read(unsigned long address);
-void gfx_pci_config_write(unsigned long address, unsigned long data);
-unsigned long gfx_get_core_freq(void);
-unsigned long gfx_detect_cpu(void);
-unsigned long gfx_detect_video(void);
-unsigned long gfx_get_cpu_register_base(void);
-unsigned long gfx_get_graphics_register_base(void);
-unsigned long gfx_get_frame_buffer_base(void);
-unsigned long gfx_get_frame_buffer_size(void);
-unsigned long gfx_get_vid_register_base(void);
-unsigned long gfx_get_vip_register_base(void);
-
-/* ROUTINES IN GFX_MSR.C */
-
-int gfx_msr_init (void);
-DEV_STATUS gfx_id_msr_device (MSR *pDev, unsigned long address);
-DEV_STATUS gfx_get_msr_dev_address (unsigned int device, unsigned long *address);
-DEV_STATUS gfx_get_glink_id_at_address(unsigned int *device, unsigned long address);
-DEV_STATUS gfx_msr_read (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue);
-DEV_STATUS gfx_msr_write (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue);
-
-/* ROUTINES IN GFX_DISP.C */
-
-int gfx_set_display_bpp (unsigned short bpp);
-int gfx_is_display_mode_supported(int xres, int yres, int bpp, int hz);
-int gfx_set_display_mode(int xres, int yres, int bpp, int hz);
-int gfx_set_display_timings(unsigned short bpp, unsigned short flags,
- unsigned short hactive, unsigned short hblank_start,
- unsigned short hsync_start, unsigned short hsync_end,
- unsigned short hblank_end, unsigned short htotal,
- unsigned short vactive, unsigned short vblank_start,
- unsigned short vsync_start, unsigned short vsync_end,
- unsigned short vblank_end, unsigned short vtotal,
- unsigned long frequency);
-int gfx_set_vtotal(unsigned short vtotal);
-void gfx_set_display_pitch(unsigned short pitch);
-void gfx_set_display_offset(unsigned long offset);
-int gfx_set_display_palette_entry(unsigned long index, unsigned long palette);
-int gfx_set_display_palette(unsigned long *palette);
-void gfx_video_shutdown(void);
-void gfx_set_clock_frequency(unsigned long frequency);
-int gfx_set_crt_enable(int enable);
-void gfx_set_cursor_enable(int enable);
-void gfx_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor);
-void gfx_set_cursor_position(unsigned long memoffset,
- unsigned short xpos, unsigned short ypos,
- unsigned short xhotspot, unsigned short yhotspot);
-void gfx_set_cursor_shape32(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask);
-void gfx_set_cursor_shape64(unsigned long memoffset,
- unsigned long *andmask, unsigned long *xormask);
-void gfx_set_icon_enable (int enable);
-void gfx_set_icon_colors (unsigned long color0, unsigned long color1, unsigned long color2);
-void gfx_set_icon_position (unsigned long memoffset, unsigned short xpos);
-void gfx_set_icon_shape64 (unsigned long memoffset, unsigned long *andmask,
- unsigned long *xormask, unsigned int lines);
-
-int gfx_set_compression_enable(int enable);
-int gfx_set_compression_offset(unsigned long offset);
-int gfx_set_compression_pitch(unsigned short pitch);
-int gfx_set_compression_size(unsigned short size);
-void gfx_set_display_priority_high(int enable);
-int gfx_test_timing_active(void);
-int gfx_test_vertical_active(void);
-int gfx_wait_vertical_blank(void);
-void gfx_delay_milliseconds(unsigned long milliseconds);
-void gfx_delay_microseconds(unsigned long microseconds);
-void gfx_enable_panning(int x, int y);
-int gfx_set_fixed_timings(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp);
-int gfx_set_panel_present(int panelResX, int panelResY, unsigned short width, unsigned short height, unsigned short bpp);
-void gfx_reset_timing_lock(void);
-
-/* "READ" ROUTINES IN GFX_DISP.C */
-
-int gfx_get_display_details(unsigned int mode, int *xres, int *yres, int *hz);
-unsigned short gfx_get_display_pitch(void);
-int gfx_get_vsa2_softvga_enable(void);
-int gfx_get_sync_polarities(void);
-unsigned long gfx_get_clock_frequency(void);
-unsigned long gfx_get_max_supported_pixel_clock (void);
-int gfx_mode_frequency_supported(int xres, int yres, int bpp, unsigned long frequency);
-int gfx_get_refreshrate_from_frequency(int xres, int yres, int bpp, int *hz, unsigned long frequency);
-int gfx_get_refreshrate_from_mode(int xres, int yres, int bpp, int *hz, unsigned long frequency);
-int gfx_get_frequency_from_refreshrate(int xres, int yres, int bpp, int hz, int *frequency);
-int gfx_get_display_mode_count(void);
-int gfx_get_display_mode(int *xres, int *yres, int *bpp, int *hz);
-unsigned long gfx_get_frame_buffer_line_size (void);
-unsigned short gfx_get_hactive(void);
-unsigned short gfx_get_hblank_start(void);
-unsigned short gfx_get_hsync_start(void);
-unsigned short gfx_get_hsync_end(void);
-unsigned short gfx_get_hblank_end(void);
-unsigned short gfx_get_htotal(void);
-unsigned short gfx_get_vactive(void);
-unsigned short gfx_get_vline(void);
-unsigned short gfx_get_vblank_start(void);
-unsigned short gfx_get_vsync_start(void);
-unsigned short gfx_get_vsync_end(void);
-unsigned short gfx_get_vblank_end(void);
-unsigned short gfx_get_vtotal(void);
-unsigned short gfx_get_display_bpp(void);
-unsigned long gfx_get_display_offset(void);
-int gfx_get_display_palette_entry(unsigned long index, unsigned long *palette);
-void gfx_get_display_palette(unsigned long *palette);
-unsigned long gfx_get_cursor_enable(void);
-unsigned long gfx_get_cursor_offset(void);
-unsigned long gfx_get_cursor_position(void);
-unsigned long gfx_get_cursor_clip(void);
-unsigned long gfx_get_cursor_color(int color);
-unsigned long gfx_get_icon_enable(void);
-unsigned long gfx_get_icon_offset (void);
-unsigned long gfx_get_icon_position (void);
-unsigned long gfx_get_icon_color (int color);
-int gfx_get_compression_enable(void);
-unsigned long gfx_get_compression_offset(void);
-unsigned short gfx_get_compression_pitch(void);
-unsigned short gfx_get_compression_size(void);
-int gfx_get_display_priority_high(void);
-int gfx_get_valid_bit(int line);
-
-/* ROUTINES IN GFX_RNDR.C */
-
-void gfx_set_bpp(unsigned short bpp);
-void gfx_set_solid_pattern(unsigned long color);
-void gfx_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned char transparency);
-void gfx_set_color_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1,unsigned long data2,unsigned long data3, unsigned char transparency);
-void gfx_load_color_pattern_line (short y, unsigned long *pattern_8x8);
-void gfx_set_solid_source(unsigned long color);
-void gfx_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
- unsigned short transparent);
-void gfx_set_pattern_flags(unsigned short flags);
-void gfx_set_raster_operation(unsigned char rop);
-void gfx_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height);
-void gfx_color_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long *pattern);
-void gfx_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height);
-void gfx_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned long color);
-void gfx_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch);
-void gfx_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch,
- unsigned long color);
-void gfx_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, short pitch);
-void gfx_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data);
-void gfx_bresenham_line(unsigned short x, unsigned short y,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags);
-void gfx_wait_until_idle(void);
-int gfx_test_blt_pending(void);
-
-/* SECOND GENERATION RENDERING ROUTINES */
-
-void gfx2_set_source_stride(unsigned short stride);
-void gfx2_set_destination_stride(unsigned short stride);
-void gfx2_set_pattern_origin(int x, int y);
-void gfx2_set_source_transparency(unsigned long color, unsigned long mask);
-void gfx2_set_alpha_mode(int mode);
-void gfx2_set_alpha_value(unsigned char value);
-void gfx2_pattern_fill(unsigned long dstoffset, unsigned short width,
- unsigned short height);
-void gfx2_color_pattern_fill(unsigned long dstoffset, unsigned short width,
- unsigned short height, unsigned long *pattern);
-void gfx2_screen_to_screen_blt(unsigned long srcoffset, unsigned long dstoffset,
- unsigned short width, unsigned short height, int flags);
-void gfx2_mono_expand_blt(unsigned long srcbase, unsigned short srcx,
- unsigned short srcy, unsigned long dstoffset, unsigned short width,
- unsigned short height, int byte_packed);
-void gfx2_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data, unsigned short pitch);
-void gfx2_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data, unsigned short pitch);
-void gfx2_text_blt (unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data);
-void gfx2_bresenham_line(unsigned long dstoffset,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags);
-void gfx2_sync_to_vblank(void);
-
-/* ROUTINES IN GFX_VID.C */
-
-int gfx_set_video_enable(int enable);
-int gfx_set_video_format(unsigned long format);
-int gfx_set_video_size(unsigned short width, unsigned short height);
-int gfx_set_video_yuv_pitch (unsigned long ypitch, unsigned long uvpitch);
-int gfx_set_video_offset(unsigned long offset);
-int gfx_set_video_yuv_offsets (unsigned long yoffset, unsigned long uoffset,
- unsigned long voffset);
-int gfx_set_video_window(short x, short y, unsigned short w, unsigned short h);
-int gfx_set_video_left_crop(unsigned short x);
-int gfx_set_video_upscale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth);
-int gfx_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth);
-int gfx_set_video_vertical_downscale(unsigned short srch, unsigned short dsth);
-void gfx_set_video_vertical_downscale_enable (int enable);
-int gfx_set_video_downscale_config(unsigned short type, unsigned short m);
-int gfx_set_video_color_key(unsigned long key, unsigned long mask,
- int bluescreen);
-int gfx_set_video_filter(int xfilter, int yfilter);
-int gfx_set_video_palette(unsigned long *palette);
-int gfx_set_video_palette_entry (unsigned long index, unsigned long color);
-int gfx_set_video_downscale_coefficients(unsigned short coef1, unsigned short coef2,
- unsigned short coef3, unsigned short coef4) ;
-int gfx_set_video_downscale_enable(int enable);
-int gfx_set_video_source(VideoSourceType source);
-int gfx_set_vbi_source(VbiSourceType source);
-int gfx_set_vbi_lines(unsigned long even, unsigned long odd);
-int gfx_set_vbi_total(unsigned long even, unsigned long odd);
-int gfx_set_video_interlaced(int enable);
-int gfx_set_color_space_YUV(int enable);
-int gfx_set_vertical_scaler_offset(char offset);
-int gfx_set_top_line_in_odd(int enable);
-int gfx_set_genlock_delay(unsigned long delay);
-int gfx_set_genlock_enable(int flags);
-int gfx_set_video_cursor(unsigned long key, unsigned long mask, unsigned short select_color2,
- unsigned long color1, unsigned long color2);
-int gfx_set_video_cursor_enable (int enable);
-int gfx_set_video_request(short x, short y);
-
-int gfx_select_alpha_region(int region);
-int gfx_set_alpha_enable(int enable);
-int gfx_set_alpha_window(short x, short y,
- unsigned short width, unsigned short height);
-int gfx_set_alpha_value(unsigned char alpha, char delta);
-int gfx_set_alpha_priority(int priority);
-int gfx_set_alpha_color(unsigned long color);
-int gfx_set_alpha_color_enable(int enable);
-int gfx_set_no_ck_outside_alpha(int enable);
-int gfx_disable_softvga(void);
-int gfx_enable_softvga(void);
-int gfx_set_macrovision_enable(int enable);
-
-/* READ ROUTINES IN GFX_VID.C */
-
-int gfx_get_video_enable(void);
-int gfx_get_video_format(void);
-unsigned long gfx_get_video_src_size(void);
-unsigned long gfx_get_video_line_size(void);
-unsigned long gfx_get_video_xclip(void);
-unsigned long gfx_get_video_offset(void);
-void gfx_get_video_yuv_offsets (unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset);
-void gfx_get_video_yuv_pitch (unsigned long *ypitch, unsigned long *uvpitch);
-unsigned long gfx_get_video_upscale(void);
-unsigned long gfx_get_video_scale(void);
-unsigned long gfx_get_video_downscale_delta(void);
-int gfx_get_video_vertical_downscale_enable (void);
-int gfx_get_video_downscale_config(unsigned short *type, unsigned short *m);
-void gfx_get_video_downscale_coefficients(unsigned short *coef1, unsigned short *coef2,
- unsigned short *coef3, unsigned short *coef4);
-void gfx_get_video_downscale_enable(int *enable);
-unsigned long gfx_get_video_dst_size(void);
-unsigned long gfx_get_video_position(void);
-unsigned long gfx_get_video_color_key(void);
-unsigned long gfx_get_video_color_key_mask(void);
-int gfx_get_video_palette_entry(unsigned long index, unsigned long *palette);
-int gfx_get_video_color_key_src(void);
-int gfx_get_video_filter(void);
-int gfx_get_video_request(short *x, short *y);
-int gfx_get_video_source(VideoSourceType *source);
-int gfx_get_vbi_source(VbiSourceType *source);
-unsigned long gfx_get_vbi_lines(int odd);
-unsigned long gfx_get_vbi_total(int odd);
-int gfx_get_video_interlaced(void);
-int gfx_get_color_space_YUV(void);
-int gfx_get_vertical_scaler_offset(char *offset);
-unsigned long gfx_get_genlock_delay(void);
-int gfx_get_genlock_enable(void);
-int gfx_get_video_cursor(unsigned long *key, unsigned long *mask, unsigned short *select_color2,
- unsigned long *color1, unsigned short *color2);
-unsigned long gfx_read_crc(void);
-unsigned long gfx_read_crc32(void);
-unsigned long gfx_read_window_crc(int source, unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, int crc32);
-int gfx_get_macrovision_enable(void);
-
-void gfx_get_alpha_enable(int *enable);
-void gfx_get_alpha_size(unsigned short *x, unsigned short *y,
- unsigned short *width, unsigned short *height);
-void gfx_get_alpha_value(unsigned char *alpha, char *delta);
-void gfx_get_alpha_priority(int *priority);
-void gfx_get_alpha_color(unsigned long *color);
-
-/* ROUTINES IN GFX_VIP.C */
-
-int gfx_set_vip_enable(int enable);
-int gfx_set_vip_capture_run_mode(int mode);
-int gfx_set_vip_base(unsigned long even, unsigned long odd);
-int gfx_set_vip_pitch(unsigned long pitch);
-int gfx_set_vip_mode(int mode);
-int gfx_set_vbi_enable(int enable);
-int gfx_set_vbi_mode(int mode);
-int gfx_set_vbi_base(unsigned long even, unsigned long odd);
-int gfx_set_vbi_pitch(unsigned long pitch);
-int gfx_set_vbi_direct(unsigned long even_lines, unsigned long odd_lines);
-int gfx_set_vbi_interrupt(int enable);
-int gfx_set_vip_bus_request_threshold_high(int enable);
-int gfx_set_vip_last_line(int last_line);
-int gfx_test_vip_odd_field(void);
-int gfx_test_vip_bases_updated(void);
-int gfx_test_vip_fifo_overflow(void);
-int gfx_get_vip_line(void);
-
-/* READ ROUTINES IN GFX_VIP.C */
-
-int gfx_get_vip_enable(void);
-unsigned long gfx_get_vip_base(int odd);
-unsigned long gfx_get_vip_pitch(void);
-int gfx_get_vip_mode(void);
-int gfx_get_vbi_enable(void);
-int gfx_get_vbi_mode(void);
-unsigned long gfx_get_vbi_base(int odd);
-unsigned long gfx_get_vbi_pitch(void);
-unsigned long gfx_get_vbi_direct(int odd);
-int gfx_get_vbi_interrupt(void);
-int gfx_get_vip_bus_request_threshold_high(void);
-
-/* ROUTINES IN GFX_DCDR.C */
-
-int gfx_set_decoder_defaults(void);
-int gfx_set_decoder_analog_input(unsigned char input);
-int gfx_set_decoder_brightness(unsigned char brightness);
-int gfx_set_decoder_contrast(unsigned char contrast);
-int gfx_set_decoder_hue(char hue);
-int gfx_set_decoder_saturation(unsigned char saturation);
-int gfx_set_decoder_input_offset(unsigned short x, unsigned short y);
-int gfx_set_decoder_input_size(unsigned short width, unsigned short height);
-int gfx_set_decoder_output_size(unsigned short width, unsigned short height);
-int gfx_set_decoder_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth);
-int gfx_set_decoder_vbi_format(int start, int end, int format);
-int gfx_set_decoder_vbi_enable(int enable);
-int gfx_set_decoder_vbi_upscale(void);
-int gfx_set_decoder_TV_standard(TVStandardType TVStandard);
-int gfx_set_decoder_luminance_filter(unsigned char lufi);
-int gfx_decoder_software_reset(void);
-int gfx_decoder_detect_macrovision(void);
-int gfx_decoder_detect_video(void);
-
-/* READ ROUTINES IN GFX_DCDR.C */
-
-unsigned char gfx_get_decoder_brightness(void);
-unsigned char gfx_get_decoder_contrast(void);
-char gfx_get_decoder_hue(void);
-unsigned char gfx_get_decoder_saturation(void);
-unsigned long gfx_get_decoder_input_offset(void);
-unsigned long gfx_get_decoder_input_size(void);
-unsigned long gfx_get_decoder_output_size(void);
-int gfx_get_decoder_vbi_format(int line);
-
-/* ROUTINES IN GFX_I2C.C */
-
-int gfx_i2c_reset(unsigned char busnum, short adr, char freq);
-int gfx_i2c_write(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data);
-int gfx_i2c_read(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data);
-int gfx_i2c_select_gpio(int clock, int data);
-int gfx_i2c_init(void);
-void gfx_i2c_cleanup(void);
-
-/* ROUTINES IN GFX_TV.C */
-
-int gfx_set_tv_format(TVStandardType format, GfxOnTVType resolution);
-int gfx_set_tv_output(int output);
-int gfx_set_tv_enable(int enable);
-int gfx_set_tv_flicker_filter(int ff);
-int gfx_set_tv_sub_carrier_reset(int screset);
-int gfx_set_tv_vphase(int vphase);
-int gfx_set_tv_YC_delay(int delay);
-int gfx_set_tvenc_reset_interval(int interval);
-int gfx_set_tv_cc_enable(int enable);
-int gfx_set_tv_cc_data(unsigned char data1, unsigned char data2);
-int gfx_set_tv_display(int width, int height);
-int gfx_test_tvout_odd_field(void);
-int gfx_test_tvenc_odd_field(void);
-int gfx_set_tv_field_status_invert(int enable);
-int gfx_get_tv_vphase(void);
-int gfx_get_tv_enable(unsigned int *p_on);
-int gfx_get_tv_output(void);
-int gfx_get_tv_mode_count(TVStandardType format);
-int gfx_get_tv_display_mode (int *width, int *height, int *bpp, int *hz);
-int gfx_get_tv_display_mode_frequency (unsigned short width, unsigned short height, TVStandardType format, int *frequency);
-int gfx_is_tv_display_mode_supported (unsigned short width, unsigned short height, TVStandardType format);
-
-int gfx_get_tv_standard(unsigned long *p_standard);
-int gfx_get_available_tv_standards(unsigned long *p_standards);
-int gfx_set_tv_standard(unsigned long standard);
-int gfx_get_tv_vga_mode(unsigned long *p_vga_mode);
-int gfx_get_available_tv_vga_modes(unsigned long *p_vga_modes);
-int gfx_set_tv_vga_mode(unsigned long vga_mode);
-int gfx_get_tvout_mode(unsigned long *p_tvout_mode);
-int gfx_set_tvout_mode(unsigned long tvout_mode);
-int gfx_get_sharpness(int *p_sharpness);
-int gfx_set_sharpness(int sharpness);
-int gfx_get_flicker_filter(int *p_flicker);
-int gfx_set_flicker_filter(int flicker);
-int gfx_get_overscan(int *p_x, int *p_y);
-int gfx_set_overscan(int x, int y);
-int gfx_get_position(int *p_x, int *p_y);
-int gfx_set_position(int x, int y);
-int gfx_get_color(int *p_color);
-int gfx_set_color(int color);
-int gfx_get_brightness(int *p_brightness);
-int gfx_set_brightness(int brightness);
-int gfx_get_contrast(int *p_contrast);
-int gfx_set_contrast(int constrast);
-int gfx_get_yc_filter(unsigned int *p_yc_filter);
-int gfx_set_yc_filter(unsigned int yc_filter);
-int gfx_get_aps_trigger_bits(unsigned int *p_trigger_bits);
-int gfx_set_aps_trigger_bits(unsigned int trigger_bits);
-
-/* ROUTINES IN GFX_VGA.C */
-
-int gfx_get_softvga_active(void);
-int gfx_vga_test_pci(void);
-unsigned char gfx_vga_get_pci_command(void);
-int gfx_vga_set_pci_command(unsigned char command);
-int gfx_vga_seq_reset(int reset);
-int gfx_vga_set_graphics_bits(void);
-int gfx_vga_mode(gfx_vga_struct *vga, int xres, int yres, int bpp, int hz);
-int gfx_vga_pitch(gfx_vga_struct *vga, unsigned short pitch);
-int gfx_vga_save(gfx_vga_struct *vga, int flags);
-int gfx_vga_restore(gfx_vga_struct *vga, int flags);
-int gfx_vga_mode_switch(int active);
-void gfx_vga_clear_extended(void);
-
-/* CLOSE BRACKET FOR C++ COMPLILATION */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_gfx_rtns_h */
-
-/* END OF FILE */
-
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_tv.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_tv.c
deleted file mode 100644
index 905f442db..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_tv.c
+++ /dev/null
@@ -1,850 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_tv.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_tv.c $
- *
- * This file contains routines to program TVOUT and TV encoder.
- *
- * Routines:
- *
- * gfx_set_tv_format
- * gfx_set_tv_output
- * gfx_set_tv_enable
- * gfx_set_tv_flicker_filter
- * gfx_set_tv_sub_carrier_reset
- * gfx_set_tv_vphase
- * gfx_set_tv_YC_delay
- * gfx_set_tvenc_reset_interval
- * gfx_set_tv_cc_enable
- * gfx_set_tv_cc_data
- * gfx_test_tvout_odd_field
- * gfx_test_tvenc_odd_field
- * gfx_set_tv_field_status_invert
- * gfx_get_tv_vphase
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* TV TIMINGS */
-
-DISPLAYMODE TVTimings[] = {
-
-/* NTSC resolution */
-
-{ 0x3 | /* negative syncs */
- GFX_MODE_TV_NTSC, /* NTSC format */
- 640, 640, 656, 744, 792, 792, /* horizontal timings */
- 480, 480, 490, 492, 517, 525, /* vertical timings */
- 0x0018EC4D, /* freq = 24.923052 MHz */
-},
-
-/* PAL resolution */
-
-{ 0x3 | /* negative syncs */
- GFX_MODE_TV_PAL, /* PAL format */
- 768, 768, 800, 848, 864, 864, /* horizontal timings */
- 576, 576, 586, 588, 625, 625, /* vertical timings */
- 0x001B0000, /* freq = 27.00 MHz */
-},
-
-/* NTSC resolution non-square pixels */
-
-{ 0x3 | /* negative syncs */
- GFX_MODE_TV_NTSC, /* NTSC format */
- 720, 720, 736, 752, 792, 792, /* horizontal timings */
- 480, 480, 490, 492, 517, 525, /* vertical timings */
- 0x0018EC4D, /* freq = 24.923052 MHz */
-},
-
-/* PAL resolution non-square pixels */
-
-{ 0x3 | /* negative syncs */
- GFX_MODE_TV_PAL, /* PAL format */
- 720, 720, 752, 816, 864, 864, /* horizontal timings */
- 576, 576, 586, 588, 625, 625, /* vertical timings */
- 0x001B0000, /* freq = 27.00 MHz */
-}};
-
-#define NUM_TV_MODES sizeof(TVTimings)/sizeof(DISPLAYMODE)
-
-/* INCLUDE SUPPORT FOR SC1200 TV ENCODER, IF SPECIFIED */
-
-#if GFX_TV_SC1200
-#include "tv_1200.c"
-#endif
-
-/* INCLUDE SUPPORT FOR FS450 TV ENCODER, IF SPECIFIED */
-
-#if GFX_TV_FS451
-#include "tv_fs450.c"
-#endif
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either SC1200 or FS450 TV encoder routines. */
-
-#if GFX_TV_DYNAMIC
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_format
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_format(TVStandardType format, GfxOnTVType resolution)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_format(format, resolution);
-#endif
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_tv_format(format, resolution);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_output
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_output(int output)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_output(output);
-#endif
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_tv_output(output);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_enable(int enable)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_enable(enable);
-#endif
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_tv_enable(enable);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_flicker_filter
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_flicker_filter(int ff)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_flicker_filter(ff);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_sub_carrier_reset
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_sub_carrier_reset(int screset)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_sub_carrier_reset(screset);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_vphase
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_vphase(int vphase)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_vphase(vphase);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_YC_delay
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_YC_delay(int delay)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_YC_delay(delay);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tvenc_reset_interval
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tvenc_reset_interval(int interval)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tvenc_reset_interval(interval);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_cc_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_cc_enable(int enable)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_cc_enable(enable);
-#endif
- return(retval);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_cc_data
- *
- * This routine writes the two specified characters to the CC data register
- * of the TV encoder.
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_cc_data(unsigned char data1, unsigned char data2)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_cc_data(data1, data2);
-#endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_tv_display
- *
- * Set the timings in the display controller to support a TV resolution.
- *---------------------------------------------------------------------------
- */
-int gfx_set_tv_display(int width, int height)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- status = sc1200_set_tv_display(width, height);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_tvout_odd_field
- *---------------------------------------------------------------------------
- */
-int gfx_test_tvout_odd_field(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- status = sc1200_test_tvout_odd_field();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_tvenc_odd_field
- *---------------------------------------------------------------------------
- */
-int gfx_test_tvenc_odd_field(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- status = sc1200_test_tvenc_odd_field();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_field_status_invert
- *-----------------------------------------------------------------------------
- */
-int gfx_set_tv_field_status_invert(int enable)
-{
- int retval = GFX_STATUS_UNSUPPORTED;
-#if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_set_tv_field_status_invert(enable);
-#endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_vphase
- *---------------------------------------------------------------------------
- */
-int gfx_get_tv_vphase(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- status = sc1200_get_tv_vphase();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_enable
- *---------------------------------------------------------------------------
- */
-int gfx_get_tv_enable(unsigned int *p_on)
-{
- int retval = -1;
-# if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_tv_enable( p_on);
-# endif
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_get_tv_enable(p_on);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_output
- *---------------------------------------------------------------------------
- */
-int gfx_get_tv_output()
-{
- int retval = -1;
-
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_get_tv_output();
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_mode_count
- *---------------------------------------------------------------------------
- */
-int gfx_get_tv_mode_count(TVStandardType format)
-{
- int retval = -1;
-
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_get_tv_mode_count (format);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_display_mode
- *---------------------------------------------------------------------------
- */
-int gfx_get_tv_display_mode (int *width, int *height, int *bpp, int *hz)
-{
- int retval = -1;
-
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_get_tv_display_mode (width, height, bpp, hz);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_display_mode_frequency
- *---------------------------------------------------------------------------
- */
-int gfx_get_tv_display_mode_frequency (unsigned short width, unsigned short height,
- TVStandardType format, int *frequency)
-{
- int retval = -1;
-
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_get_tv_display_mode_frequency (width, height, format, frequency);
-# endif
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_is_tv_display_mode_supported
- *---------------------------------------------------------------------------
- */
-int gfx_is_tv_display_mode_supported (unsigned short width, unsigned short height, TVStandardType format)
-{
- int retval = -1;
-
-# if GFX_TV_SC1200
- if (gfx_tv_type & GFX_TV_TYPE_SC1200)
- retval = sc1200_is_tv_display_mode_supported (width, height, format);
-# endif
- return(retval);
-}
-
-/*------------------------------------------
- * The following functions were added to support
- * the FS450 and will eventually be removed. There
- * is no equivalent support in the SC1200.
- *----------------------------------------------*/
-
-
-/*
-// ==========================================================================
-//
-// TV standard
-*/
-
-int gfx_get_tv_standard(unsigned long *p_standard)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_tv_standard( p_standard);
-#endif
- return(retval);
-}
-
-int gfx_get_available_tv_standards(unsigned long *p_standards)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_available_tv_standards( p_standards);
-#endif
- return(retval);
-}
-
-int gfx_set_tv_standard(unsigned long standard)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_tv_standard(standard);
-#endif
- return(retval);
-}
-
-/*
-// ==========================================================================
-//
-// vga mode as known by the driver
-*/
-
-int gfx_get_tv_vga_mode(unsigned long *p_vga_mode)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_tv_vga_mode(p_vga_mode);
-#endif
- return(retval);
-}
-
-int gfx_get_available_tv_vga_modes(unsigned long *p_vga_modes)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_available_tv_vga_modes(p_vga_modes);
-#endif
- return(retval);
-}
-
-int gfx_set_tv_vga_mode(unsigned long vga_mode)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_tv_vga_mode(vga_mode);
-#endif
- return(retval);
-}
-
-
-/*
-// ==========================================================================
-//
-// tvout mode
-*/
-
-int gfx_get_tvout_mode(unsigned long *p_tvout_mode)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_tvout_mode(p_tvout_mode);
-#endif
- return(retval);
-}
-
-int gfx_set_tvout_mode(unsigned long tvout_mode)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_tvout_mode(tvout_mode);
-#endif
- return(retval);
-}
-
-/*
-// ==========================================================================
-//
-// Sharpness
-*/
-int gfx_get_sharpness(int *p_sharpness)
-
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_sharpness(p_sharpness);
-#endif
- return(retval);
-}
-
-int gfx_set_sharpness(int sharpness)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_sharpness(sharpness);
-#endif
- return(retval);
-}
-
-/*
-// ==========================================================================
-//
-// flicker filter control.
-*/
-
-int gfx_get_flicker_filter(int *p_flicker)
-
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_flicker_filter(p_flicker);
-#endif
- return(retval);
-}
-
-int gfx_set_flicker_filter(int flicker)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_flicker_filter(flicker);
-#endif
- return(retval);
-}
-
-/*
-// ==========================================================================
-//
-// Overscan and Position
-*/
-
-int gfx_get_overscan(int *p_x, int *p_y)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_overscan(p_x, p_y);
-#endif
- return(retval);
-
-}
-
-int gfx_set_overscan(int x, int y)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_overscan(x, y);
-#endif
- return(retval);
-}
-
-int gfx_get_position(int *p_x, int *p_y)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_position(p_x, p_y);
-#endif
- return(retval);
-}
-
-int gfx_set_position(int x, int y)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_position(x, y);
-#endif
- return(retval);
-}
-
-/*
-// ==========================================================================
-//
-// Color, Brightness, and Contrast
-*/
-
-int gfx_get_color(int *p_color)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_color(p_color);
-#endif
- return(retval);
-}
-
-int gfx_set_color(int color)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_color(color);
-#endif
- return(retval);
-}
-
-int gfx_get_brightness(int *p_brightness)
-
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_brightness(p_brightness);
-#endif
- return(retval);
-}
-
-int gfx_set_brightness(int brightness)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_brightness(brightness);
-#endif
- return(retval);
-}
-
-int gfx_get_contrast(int *p_contrast)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_contrast(p_contrast);
-#endif
- return(retval);
-}
-
-int gfx_set_contrast(int contrast)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_contrast(contrast);
-#endif
- return(retval);
-}
-
-/*
-// ==========================================================================
-//
-// YC filters
-*/
-
-int gfx_get_yc_filter(unsigned int *p_yc_filter)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_yc_filter(p_yc_filter);
-#endif
- return(retval);
-}
-
-int gfx_set_yc_filter(unsigned int yc_filter)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_yc_filter(yc_filter);
-#endif
- return(retval);
-}
-
-int gfx_get_aps_trigger_bits(unsigned int *p_trigger_bits)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_get_aps_trigger_bits(p_trigger_bits);
-#endif
- return(retval);
-}
-
-int gfx_set_aps_trigger_bits(unsigned int trigger_bits)
-{
- int retval = -1;
-#if GFX_TV_FS451
- if (gfx_tv_type & GFX_TV_TYPE_FS451)
- retval = fs450_set_aps_trigger_bits(trigger_bits);
-#endif
- return(retval);
-}
-
-#endif /* GFX_TV_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_type.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_type.h
deleted file mode 100644
index 73094ee3f..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_type.h
+++ /dev/null
@@ -1,422 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_type.h,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_type.h $
- *
- * This header file defines the pneumonics used when calling Durango routines.
- * This file is automatically included by gfx_rtns.h
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#ifndef _gfx_type_h
-#define _gfx_type_h
-
-/* MSR DEFINITIONS */
-
-typedef enum DevStatus { FOUND, NOT_KNOWN, REQ_NOT_FOUND, REQ_NOT_INSTALLED } DEV_STATUS;
-
-typedef struct msr {
- DEV_STATUS Present; /* Node enumeration status */
- unsigned char Id; /* Device ID (from MSR specs) */
- unsigned long Address; /* Address - 32-bit MBus address at which 'Id' is found */
-} MSR;
-
-typedef struct mValue {
- unsigned long high;
- unsigned long low;
-} Q_WORD;
-
-typedef struct mbusNode {
- unsigned long address;
- unsigned int deviceId;
- unsigned int claimed;
-} MBUS_NODE;
-
-/* MSR ARRAY INDEXES */
-/* These are indexes into the array of MBus devices. These */
-/* should not be confused with the class codes at MSR register */
-/* 0x2000. */
-
-#define RC_ID_MBIU0 0x00
-#define RC_ID_MBIU1 0x01
-#define RC_ID_MCP 0x02
-#define RC_ID_MPCI 0x03
-#define RC_ID_MC 0x04
-#define RC_ID_GP 0x05
-#define RC_ID_VG 0x06
-#define RC_ID_DF 0x07
-#define RC_ID_FG 0x08
-#define RC_ID_VA 0x09
-#define CP_ID_MBIU 0x0A
-#define CP_ID_MPCI 0x0B
-#define CP_ID_USB2 0x0C
-#define CP_ID_ATAC 0x0D
-#define CP_ID_MDD 0x0E
-#define CP_ID_ACC 0x0F
-#define CP_ID_USB1 0x10
-#define CP_ID_MCP 0x11
-
-/* MBUS DEVICE CLASS CODES */
-/* These are the device ids for the known Redcloud MBus devices. */
-
-#define RC_CC_MBIU 0x01
-#define RC_CC_MCP 0x02
-#define RC_CC_MPCI 0x05
-#define RC_CC_MC 0x20
-#define RC_CC_GP 0x3D
-#define RC_CC_VG 0x3E
-#define RC_CC_DF 0x3F
-#define RC_CC_FG 0xF0
-#define RC_CC_VA 0x86
-#define CP_CC_MBIU 0x01
-#define CP_CC_MPCI 0x05
-#define CP_CC_USB2 0x42
-#define CP_CC_ATAC 0x47
-#define CP_CC_MDD 0xDF
-#define CP_CC_ACC 0x33
-#define CP_CC_USB1 0x42
-#define CP_CC_MCP 0x02
-
-/* VAIL AND MBIUS ARE AT KNOWN ADDRESSES */
-/* We can initialize the addresses of these devices in advance, */
-/* as their location should never change. */
-
-#define RC_MB0_MBIU0 0x10000000
-#define RC_MB0_MBIU1 0x40000000
-#define CP_MB0_MBIU0 0x51010000
-#define RC_MB0_CPU 0x00000000
-#define FAKE_ADDRESS 0xFFFFFFFF
-
-/* MSR PORT DESCRIPTORS */
-
-#define NOT_POPULATED 0
-#define NOT_INSTALLED 0xFFFE
-#define REFLECTIVE 0xFFFF
-
-/* CRC DATA SOURCES */
-
-#define CRC_SOURCE_GFX_DATA 0x00
-#define CRC_SOURCE_CRT_RGB 0x01
-#define CRC_SOURCE_FP_DATA 0x02
-
-
-/* TV DEFINITIONS */
-
-typedef enum TVStandardType {
- TV_STANDARD_NTSC = 1,
- TV_STANDARD_PAL
-} TVStandardType;
-
-typedef enum GfxOnTVType {
- GFX_ON_TV_SQUARE_PIXELS = 1,
- GFX_ON_TV_NO_SCALING
-} GfxOnTVType;
-
-#define CRT_DISABLE 0x00
-#define CRT_ENABLE 0x01
-#define CRT_STANDBY 0x02
-#define CRT_SUSPEND 0x03
-
-#define TV_OUTPUT_COMPOSITE 0x01
-#define TV_OUTPUT_S_VIDEO 0x02
-#define TV_OUTPUT_YUV 0x03
-#define TV_OUTPUT_SCART 0x04
-
-#define TV_FLICKER_FILTER_NONE 0x01
-#define TV_FLICKER_FILTER_NORMAL 0x02
-#define TV_FLICKER_FILTER_INTERLACED 0x03
-
-#define TV_YC_DELAY_NONE 0x01
-#define TV_Y_DELAY_ONE_PIXEL 0x02
-#define TV_C_DELAY_ONE_PIXEL 0x03
-#define TV_C_DELAY_TWO_PIXELS 0x04
-
-#define TV_SUB_CARRIER_RESET_NEVER 0x01
-#define TV_SUB_CARRIER_RESET_EVERY_TWO_LINES 0x02
-#define TV_SUB_CARRIER_RESET_EVERY_TWO_FRAMES 0x03
-#define TV_SUB_CARRIER_RESET_EVERY_FOUR_FRAMES 0x04
-
-#define TVENC_RESET_EVERY_ODD_FIELD 0x01
-#define TVENC_RESET_EVERY_EVEN_FIELD 0x02
-#define TVENC_RESET_NEXT_ODD_FIELD 0x03
-#define TVENC_RESET_NEXT_EVEN_FIELD 0x04
-#define TVENC_RESET_EVERY_FIELD 0x05
-#define TVENC_RESET_EVERY_X_ODD_FIELDS 0x06
-#define TVENC_RESET_EVERY_X_EVEN_FIELDS 0x07
-
-/* VBI FORMATS */
-
-#define VBI_FORMAT_VIDEO 0x1
-#define VBI_FORMAT_RAW 0x2
-#define VBI_FORMAT_CC 0x4
-#define VBI_FORMAT_NABTS 0x8
-
-/* VIDEO DEFINITIONS */
-
-#define VIDEO_FORMAT_UYVY 0x0
-#define VIDEO_FORMAT_Y2YU 0x1
-#define VIDEO_FORMAT_YUYV 0x2
-#define VIDEO_FORMAT_YVYU 0x3
-#define VIDEO_FORMAT_Y0Y1Y2Y3 0x4
-#define VIDEO_FORMAT_Y3Y2Y1Y0 0x5
-#define VIDEO_FORMAT_Y1Y0Y3Y2 0x6
-#define VIDEO_FORMAT_Y1Y2Y3Y0 0x7
-#define VIDEO_FORMAT_RGB 0x8
-#define VIDEO_FORMAT_P2M_P2L_P1M_P1L 0x9
-#define VIDEO_FORMAT_P1M_P1L_P2M_P2L 0xA
-#define VIDEO_FORMAT_P1M_P2L_P2M_P1L 0xB
-
-#define VIDEO_DOWNSCALE_KEEP_1_OF 0x1
-#define VIDEO_DOWNSCALE_DROP_1_OF 0x2
-
-typedef enum VideoSourceType { /* The source from which the video processor shows full screen video */
- VIDEO_SOURCE_MEMORY = 1,
- VIDEO_SOURCE_DVIP
-} VideoSourceType;
-
-typedef enum VbiSourceType { /* The source from which the video processor takes VBI */
- VBI_SOURCE_MEMORY = 1,
- VBI_SOURCE_DVIP
-} VbiSourceType;
-
-/* GENLOCK DEFINITIONS */
-
-#define GENLOCK_SINGLE 0x001
-#define GENLOCK_FIELD_SYNC 0x001
-#define GENLOCK_CONTINUOUS 0x002
-#define GENLOCK_SYNCED_EDGE_FALLING 0x004
-#define GENLOCK_SYNCING_EDGE_FALLING 0x008
-#define GENLOCK_TIMEOUT 0x010
-#define GENLOCK_TVENC_RESET_EVEN_FIELD 0x020
-#define GENLOCK_TVENC_RESET_BEFORE_DELAY 0x040
-#define GENLOCK_TVENC_RESET 0x080
-#define GENLOCK_SYNC_TO_TVENC 0x100
-
-/* VIP DEFINITIONS */
-
-#define VIP_MODE_C 0x1
-
-#define VIP_CAPTURE_STOP_LINE 0x1
-#define VIP_CAPTURE_STOP_FIELD 0x2
-#define VIP_CAPTURE_START_FIELD 0x4
-
-#define VBI_ANCILLARY 0x1
-#define VBI_TASK_A 0x2
-#define VBI_TASK_B 0x4
-
-/* VGA STRUCTURE */
-
-#define GFX_STD_CRTC_REGS 25
-#define GFX_EXT_CRTC_REGS 16
-
-#define GFX_VGA_FLAG_MISC_OUTPUT 0x00000001
-#define GFX_VGA_FLAG_STD_CRTC 0x00000002
-#define GFX_VGA_FLAG_EXT_CRTC 0x00000004
-
-/* FS450 TV Standard flags */
-
-#define GFX_TV_STANDARD_NTSC_M 0x0001
-#define GFX_TV_STANDARD_NTSC_M_J 0x0002
-#define GFX_TV_STANDARD_PAL_B 0x0004
-#define GFX_TV_STANDARD_PAL_D 0x0008
-#define GFX_TV_STANDARD_PAL_H 0x0010
-#define GFX_TV_STANDARD_PAL_I 0x0020
-#define GFX_TV_STANDARD_PAL_M 0x0040
-#define GFX_TV_STANDARD_PAL_N 0x0080
-#define GFX_TV_STANDARD_PAL_G 0x0100
-
-/* FS450 VGA Mode flags */
-
-#define GFX_VGA_MODE_UNKNOWN 0
-#define GFX_VGA_MODE_640X480 0x0001
-#define GFX_VGA_MODE_720X487 0x0002
-#define GFX_VGA_MODE_720X576 0x0004
-#define GFX_VGA_MODE_800X600 0x0008
-#define GFX_VGA_MODE_1024X768 0x0010
-
-/* FS450 TVout mode flags */
-
-#define GFX_TVOUT_MODE_CVBS 0x0001
-#define GFX_TVOUT_MODE_YC 0x0002
-#define GFX_TVOUT_MODE_RGB 0x0004
-#define GFX_TVOUT_MODE_CVBS_YC (GFX_TVOUT_MODE_CVBS | GFX_TVOUT_MODE_YC)
-
-/* FS450 Luma and Chroma Filters */
-
-#define GFX_LUMA_FILTER 0x0001
-#define GFX_CHROMA_FILTER 0x0002
-
-/* APS Trigger Bits */
-
-#define GFX_APS_TRIGGER_OFF 0
-#define GFX_APS_TRIGGER_AGC_ONLY 1
-#define GFX_APS_TRIGGER_AGC_2_LINE 2
-#define GFX_APS_TRIGGER_AGC_4_LINE 3
-
-typedef struct {
- int xsize;
- int ysize;
- int hz;
- int clock;
- unsigned char miscOutput;
- unsigned char stdCRTCregs[GFX_STD_CRTC_REGS];
- unsigned char extCRTCregs[GFX_EXT_CRTC_REGS];
-} gfx_vga_struct;
-
-/* POSSIBLE STATUS VALUES */
-
-#define GFX_STATUS_UNSUPPORTED (-3)
-#define GFX_STATUS_BAD_PARAMETER (-2)
-#define GFX_STATUS_ERROR (-1)
-#define GFX_STATUS_OK 0
-
-/* CPU AND VIDEO TYPES */
-
-#define GFX_CPU_GXLV 1
-#define GFX_CPU_SC1200 2
-#define GFX_CPU_REDCLOUD 3
-#define GFX_CPU_PYRAMID 0x20801
-
-
-#define GFX_VID_CS5530 1
-#define GFX_VID_SC1200 2
-#define GFX_VID_REDCLOUD 3
-
-/* CHIP NAME AND REVISION */
-
-typedef enum ChipType {
- CHIP_NOT_DETECTED,
- SC1200_REV_A,
- SC1200_REV_B1_B2,
- SC1200_REV_B3,
- SC1200_REV_C1,
- SC1200_REV_D1,
- SC1200_REV_D1_1,
- SC1200_REV_D2_MVD, /* Macrovision disabled */
- SC1200_REV_D2_MVE, /* Macrovision enabled */
- SC1200_FUTURE_REV
-} ChipType;
-
-#endif /* !_gfx_type_h */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vga.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vga.c
deleted file mode 100644
index b5b5e3fef..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vga.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vga.c,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: gfx_vga.c $
- *
- * This file contains routines to interface to the VGA registers. Some
- * operating systems require mode sets be done through VGA, rather than
- * directly using the "gfx_set_display_mode" routine.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* INCLUDE SUPPORT FOR FIRST GENERATION, IF SPECIFIED. */
-
-#if GFX_VGA_GU1
-#include "vga_gu1.c"
-#endif
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either first or second generation routines. */
-
-#if GFX_VGA_DYNAMIC
-
-#endif /* GFX_DISPLAY_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vid.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vid.c
deleted file mode 100644
index ea7aa829c..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vid.c
+++ /dev/null
@@ -1,1934 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vid.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_vid.c $
- *
- * This file contains routines to control the video overlay window.
- *
- * Video overlay routines:
- *
- * gfx_set_clock_frequency
- * gfx_set_crt_enable
- * gfx_set_video_enable
- * gfx_set_video_format
- * gfx_set_video_size
- * gfx_set_video_offset
- * gfx_set_video_yuv_offsets
- * gfx_set_video_yuv_pitch
- * gfx_set_video_scale
- * gfx_set_video_upscale
- * gfx_set_video_downscale_config
- * gfx_set_video_downscale_coefficients
- * gfx_set_video_downscale_enable
- * gfx_set_video_vertical_downscale
- * gfx_set_video_vertical_downscale_enable
- * gfx_set_video_window
- * gfx_set_video_left_crop
- * gfx_set_video_color_key
- * gfx_set_video_filter
- * gfx_set_video_palette
- * gfx_set_video_request
- * gfx_set_video_source
- * gfx_set_vbi_source
- * gfx_set_vbi_lines
- * gfx_set_vbi_total
- * gfx_set_video_interlaced
- * gfx_set_color_space_YUV
- * gfx_set_vertical_scaler_offset
- * gfx_set_top_line_in_odd
- * gfx_set_genlock_delay
- * gfx_set_genlock_enable
- * gfx_set_video_cursor
- * gfx_set_video_cursor_enable
- *
- * Alpha blending routines (SC1200 ONLY):
- *
- * gfx_select_alpha_region
- * gfx_set_alpha_enable
- * gfx_set_alpha_window
- * gfx_set_alpha_value
- * gfx_set_alpha_priority
- * gfx_set_alpha_color
- * gfx_set_alpha_color_enable
- * gfx_set_no_ck_outside_alpha
- * gfx_test_tvout_odd_field
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- * gfx_get_sync_polarities
- * gfx_get_video_enable
- * gfx_get_video_format
- * gfx_get_video_src_size
- * gfx_get_video_line_size
- * gfx_get_video_xclip
- * gfx_get_video_offset
- * gfx_get_video_yuv_offsets
- * gfx_get_video_yuv_pitch
- * gfx_get_video_scale
- * gfx_get_video_upscale
- * gfx_get_video_downscale_config
- * gfx_get_video_downscale_coefficients
- * gfx_get_video_downscale_enable
- * gfx_get_video_downscale_delta
- * gfx_get_video_vertical_downscale_enable
- * gfx_get_video_dst_size
- * gfx_get_video_position
- * gfx_get_video_color_key
- * gfx_get_video_color_key_mask
- * gfx_get_video_color_key_src
- * gfx_get_video_filter
- * gfx_get_video_request
- * gfx_get_video_source
- * gfx_get_vbi_source
- * gfx_get_vbi_lines
- * gfx_get_vbi_total
- * gfx_get_video_interlaced
- * gfx_get_color_space_YUV
- * gfx_get_vertical_scaler_offset
- * gfx_get_genlock_delay
- * gfx_get_genlock_enable
- * gfx_get_video_cursor
- * gfx_get_clock_frequency
- * gfx_read_crc
- *
- * Alpha blending read routines (SC1200 ONLY):
- *
- * gfx_get_alpha_enable
- * gfx_get_alpha_size
- * gfx_get_alpha_value
- * gfx_get_alpha_priority
- * gfx_get_alpha_color
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/* STATIC VARIABLES FOR VIDEO OVERLAY CONTROL */
-/* These are saved to allow these routines to do clipping. */
-
-unsigned long gfx_vid_offset = 0; /* copy from last gfx_set_video_offset */
-unsigned long gfx_vid_uoffset = 0; /* copy from last gfx_set_video_yuv_offsets */
-unsigned long gfx_vid_voffset = 0; /* copy from last gfx_set_video_yuv_offsets */
-unsigned long gfx_vid_srcw = 300; /* copy from last gfx_set_video_scale */
-unsigned long gfx_vid_srch = 300; /* copy from last gfx_set_video_scale */
-unsigned long gfx_vid_dstw = 300; /* copy from last gfx_set_video_scale */
-unsigned long gfx_vid_dsth = 300; /* copy from last gfx_set_video_scale */
-short gfx_vid_xpos = 0; /* copy from last gfx_set_video_window */
-short gfx_vid_ypos = 0; /* copy from last gfx_set_video_window */
-unsigned short gfx_vid_width = 0; /* copy from last gfx_set_video_window */
-unsigned short gfx_vid_height = 0; /* copy from last gfx_set_video_window */
-
-int gfx_alpha_select = 0; /* currently selected alpha region */
-
-int gfx_set_screen_enable(int enable); /* forward declaration */
-
-/* INCLUDE SUPPORT FOR CS5530, IF SPECIFIED. */
-
-#if GFX_VIDEO_CS5530
-#include "vid_5530.c"
-#endif
-
-/* INCLUDE SUPPORT FOR SC1200, IF SPECIFIED. */
-
-#if GFX_VIDEO_SC1200
-#include "vid_1200.c"
-#endif
-
-/* INLUDE SUPPORT FOR REDCLOUD, IF SPECIFIED. */
-
-#if GFX_VIDEO_REDCLOUD
-#include "vid_rdcl.c"
-#endif
-
-/*---------------------------------------------------------------------------
- * gfx_select_alpha_region
- *
- * This routine selects which alpha region should be used for future
- * updates. The SC1200, for example, has 3 alpha windows available,
- * so valid parameter values are 0..2.
- *---------------------------------------------------------------------------
- */
-int gfx_select_alpha_region(int region)
-{
- if (region > 2) return(GFX_STATUS_BAD_PARAMETER);
-
- gfx_alpha_select = region;
- return(GFX_STATUS_OK);
-}
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either CS5530 or SC1200 routines. */
-
-#if GFX_VIDEO_DYNAMIC
-
-/*---------------------------------------------------------------------------
- * gfx_reset_video (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine is used to disable all components of video overlay before
- * performing a mode switch.
- *---------------------------------------------------------------------------
- */
-void gfx_reset_video(void)
-{
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- cs5530_reset_video();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_reset_video();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_reset_video();
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_display_control (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine is used to configure the display output during a modeset
- *---------------------------------------------------------------------------
- */
-int gfx_set_display_control(int sync_polarities)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_display_control(sync_polarities);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_display_control(sync_polarities);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_display_control(sync_polarities);
-# endif
- return (status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_clock_frequency
- *-----------------------------------------------------------------------------
- */
-void gfx_set_clock_frequency(unsigned long frequency)
-{
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- cs5530_set_clock_frequency(frequency);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_set_clock_frequency(frequency);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_set_clock_frequency(frequency);
-# endif
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_crt_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_crt_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_crt_enable(enable);
-# endif
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_crt_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_crt_enable(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_video_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_enable(enable);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_enable(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_screen_enable (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine enables or disables the graphics display logic of the video processor.
- *---------------------------------------------------------------------------
- */
-int gfx_set_screen_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_screen_enable(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_format
- *-----------------------------------------------------------------------------
- */
-int gfx_set_video_format(unsigned long format)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_format(format);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_format(format);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_format(format);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_size
- *-----------------------------------------------------------------------------
- */
-int gfx_set_video_size(unsigned short width, unsigned short height)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_size(width, height);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_size(width, height);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_size(width, height);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_yuv_pitch
- *-----------------------------------------------------------------------------
- */
-int gfx_set_video_yuv_pitch(unsigned long ypitch, unsigned long uvpitch)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_yuv_pitch (ypitch, uvpitch);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_offset
- *-----------------------------------------------------------------------------
- */
-int gfx_set_video_offset(unsigned long offset)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_offset(offset);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_offset(offset);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_offset(offset);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_yuv_offsets
- *-----------------------------------------------------------------------------
- */
-int gfx_set_video_yuv_offsets(unsigned long yoffset, unsigned long uoffset,
- unsigned long voffset)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_yuv_offsets (yoffset, uoffset, voffset);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_scale
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_scale(srcw, srch, dstw, dsth);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_scale(srcw, srch, dstw, dsth);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_scale(srcw, srch, dstw, dsth);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_upscale
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_upscale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_upscale(srcw, srch, dstw, dsth);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_vertical_downscale
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_vertical_downscale(unsigned short srch, unsigned short dsth)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_vertical_downscale(srch, dsth);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_vertical_downscale_enable
- *---------------------------------------------------------------------------
- */
-void gfx_set_video_vertical_downscale_enable(int enable)
-{
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_set_video_vertical_downscale_enable(enable);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_config
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_downscale_config(unsigned short type, unsigned short m)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_downscale_config(type, m);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_downscale_config(type, m);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_coefficients
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_downscale_coefficients(unsigned short coef1, unsigned short coef2,
- unsigned short coef3, unsigned short coef4)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_downscale_coefficients(coef1, coef2, coef3, coef4);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_downscale_coefficients(coef1, coef2, coef3, coef4);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_downscale_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_downscale_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_downscale_enable(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_window
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_window(short x, short y, unsigned short w, unsigned short h)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_window(x, y, w, h);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_window(x, y, w, h);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_window(x, y, w, h);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_left_crop
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_left_crop(unsigned short x)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_left_crop(x);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_left_crop(x);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_color_key
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_color_key(key, mask, graphics);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_color_key(key, mask, graphics);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_color_key(key, mask, graphics);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_filter
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_filter(int xfilter, int yfilter)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_filter(xfilter, yfilter);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_filter(xfilter, yfilter);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_filter(xfilter, yfilter);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_palette(unsigned long *palette)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_palette(palette);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_palette(palette);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_palette(palette);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette_entry
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_palette_entry(unsigned long index, unsigned long palette)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_set_video_palette_entry(index, palette);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_palette_entry(index, palette);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_palette_entry(index, palette);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_request
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_request(short x, short y)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_request(x, y);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_request(x, y);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_source
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_source(VideoSourceType source)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_source(source);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vbi_source
- *---------------------------------------------------------------------------
- */
-int gfx_set_vbi_source(VbiSourceType source)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_vbi_source(source);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vbi_lines
- *---------------------------------------------------------------------------
- */
-int gfx_set_vbi_lines(unsigned long even, unsigned long odd)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_vbi_lines(even, odd);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vbi_total
- *---------------------------------------------------------------------------
- */
-int gfx_set_vbi_total(unsigned long even, unsigned long odd)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_vbi_total(even, odd);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_interlaced
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_interlaced(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_interlaced(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_color_space_YUV
- *---------------------------------------------------------------------------
- */
-int gfx_set_color_space_YUV(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_color_space_YUV(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vertical_scaler_offset
- *---------------------------------------------------------------------------
- */
-int gfx_set_vertical_scaler_offset(char offset)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_vertical_scaler_offset(offset);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_top_line_in_odd
- *---------------------------------------------------------------------------
- */
-int gfx_set_top_line_in_odd(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_top_line_in_odd(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_genlock_delay
- *---------------------------------------------------------------------------
- */
-int gfx_set_genlock_delay(unsigned long delay)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_genlock_delay(delay);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_genlock_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_genlock_enable(int flags)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_genlock_enable(flags);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_cursor
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_cursor(unsigned long key, unsigned long mask, unsigned short select_color2,
- unsigned long color1, unsigned long color2)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_video_cursor(key, mask, select_color2, color1, color2);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_cursor(key, mask, select_color2, color1, color2);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_cursor_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_video_cursor_enable (int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_video_cursor_enable (enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_alpha_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_alpha_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_alpha_enable(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_window
- *---------------------------------------------------------------------------
- */
-int gfx_set_alpha_window(short x, short y,
- unsigned short width, unsigned short height)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_alpha_window(x, y, width, height);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_alpha_window(x, y, width, height);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_value
- *---------------------------------------------------------------------------
- */
-int gfx_set_alpha_value(unsigned char alpha, char delta)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_alpha_value(alpha, delta);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_alpha_value(alpha, delta);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_priority
- *---------------------------------------------------------------------------
- */
-int gfx_set_alpha_priority(int priority)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_alpha_priority(priority);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_alpha_priority(priority);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_color
- *---------------------------------------------------------------------------
- */
-int gfx_set_alpha_color(unsigned long color)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_alpha_color(color);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_alpha_color(color);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_color_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_alpha_color_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_alpha_color_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_alpha_color_enable(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_no_ck_outside_alpha
- *---------------------------------------------------------------------------
- */
-int gfx_set_no_ck_outside_alpha(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_no_ck_outside_alpha(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_set_no_ck_outside_alpha(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_macrovision_enable
- *---------------------------------------------------------------------------
- */
-int gfx_set_macrovision_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_set_macrovision_enable(enable);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_disable_softvga
- *---------------------------------------------------------------------------
- */
-int gfx_disable_softvga(void)
-{
- int status = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_disable_softvga();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_disable_softvga();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_enable_softvga
- *---------------------------------------------------------------------------
- */
-int gfx_enable_softvga(void)
-{
- int status = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_enable_softvga();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_enable_softvga();
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_clock_frequency
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_clock_frequency(void)
-{
- unsigned long frequency = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- frequency = cs5530_get_clock_frequency();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- frequency = sc1200_get_clock_frequency();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- frequency = redcloud_get_clock_frequency();
-# endif
- return(frequency);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsa2_softvga_enable
- *---------------------------------------------------------------------------
- */
-int gfx_get_vsa2_softvga_enable(void)
-{
- int enable = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- enable = cs5530_get_vsa2_softvga_enable();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- enable = sc1200_get_vsa2_softvga_enable();
-# endif
- return enable;
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_sync_polarities
- *---------------------------------------------------------------------------
- */
-int gfx_get_sync_polarities(void)
-{
- int polarities = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- polarities = cs5530_get_sync_polarities();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- polarities = sc1200_get_sync_polarities();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- polarities = redcloud_get_sync_polarities();
-# endif
- return(polarities);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_palette_entry
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_palette_entry(unsigned long index, unsigned long *palette)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- status = cs5530_get_video_palette_entry (index, palette);
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_get_video_palette_entry (index, palette);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_get_video_palette_entry (index, palette);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_get_video_enable(void)
-{
- int enable = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- enable = cs5530_get_video_enable();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- enable = sc1200_get_video_enable();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- enable = redcloud_get_video_enable();
-# endif
- return(enable);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_format
- *-----------------------------------------------------------------------------
- */
-int gfx_get_video_format(void)
-{
- int format = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- format = cs5530_get_video_format();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- format = sc1200_get_video_format();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- format = redcloud_get_video_format();
-# endif
- return(format);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_src_size
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_src_size(void)
-{
- unsigned long size = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- size = cs5530_get_video_src_size();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- size = sc1200_get_video_src_size();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- size = redcloud_get_video_src_size();
-# endif
- return(size);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_line_size
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_line_size(void)
-{
- unsigned long size = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- size = cs5530_get_video_line_size();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- size = sc1200_get_video_line_size();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- size = redcloud_get_video_line_size();
-# endif
- return(size);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_xclip
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_xclip(void)
-{
- unsigned long size = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- size = cs5530_get_video_xclip();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- size = sc1200_get_video_xclip();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- size = redcloud_get_video_xclip();
-# endif
- return(size);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_offset
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_offset(void)
-{
- unsigned long offset = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- offset = cs5530_get_video_offset();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- offset = sc1200_get_video_offset();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- offset = redcloud_get_video_offset();
-# endif
- return(offset);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_yuv_offsets
- *-----------------------------------------------------------------------------
- */
-void gfx_get_video_yuv_offsets(unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset)
-{
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_video_yuv_offsets(yoffset, uoffset, voffset);
-# endif
-}
-/*-----------------------------------------------------------------------------
- * gfx_get_video_yuv_pitch
- *-----------------------------------------------------------------------------
- */
-void gfx_get_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
-{
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_video_yuv_pitch (ypitch, uvpitch);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_upscale
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_upscale(void)
-{
- unsigned long scale = 0;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- scale = sc1200_get_video_upscale();
-# endif
- return(scale);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_scale
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_scale(void)
-{
- unsigned long scale = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- scale = cs5530_get_video_scale();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- scale = sc1200_get_video_scale();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- scale = redcloud_get_video_scale();
-# endif
- return(scale);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_delta
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_downscale_delta(void)
-{
- unsigned long delta = 0;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- delta = redcloud_get_video_downscale_delta();
-# endif
- return(delta);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_vertical_downscale_enable
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_vertical_downscale_enable(void)
-{
- int enable = 0;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- enable = redcloud_get_video_vertical_downscale_enable();
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_config
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_downscale_config(unsigned short *type, unsigned short *m)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_get_video_downscale_config(type, m);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_get_video_downscale_config(type, m);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_coefficients
- *---------------------------------------------------------------------------
- */
-void gfx_get_video_downscale_coefficients(unsigned short *coef1, unsigned short *coef2,
- unsigned short *coef3, unsigned short *coef4)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_video_downscale_coefficients(coef1, coef2, coef3, coef4);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_video_downscale_coefficients(coef1, coef2, coef3, coef4);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_enable
- *---------------------------------------------------------------------------
- */
-void gfx_get_video_downscale_enable(int *enable)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_video_downscale_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_video_downscale_enable(enable);
-# endif
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_dst_size
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_dst_size(void)
-{
- unsigned long size = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- size = cs5530_get_video_dst_size();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- size = sc1200_get_video_dst_size();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- size = redcloud_get_video_dst_size();
-# endif
- return(size);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_position
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_position(void)
-{
- unsigned long position = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- position = cs5530_get_video_position();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- position = sc1200_get_video_position();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- position = redcloud_get_video_position();
-# endif
- return(position);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_color_key(void)
-{
- unsigned long key = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- key = cs5530_get_video_color_key();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- key = sc1200_get_video_color_key();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- key = redcloud_get_video_color_key();
-# endif
- return(key);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_mask
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_video_color_key_mask(void)
-{
- unsigned long mask = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- mask = cs5530_get_video_color_key_mask();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- mask = sc1200_get_video_color_key_mask();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- mask = redcloud_get_video_color_key_mask();
-# endif
- return(mask);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_src
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_color_key_src(void)
-{
- int src = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- src = cs5530_get_video_color_key_src();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- src = sc1200_get_video_color_key_src();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- src = redcloud_get_video_color_key_src();
-# endif
- return(src);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_filter
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_filter(void)
-{
- int filter = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- filter = cs5530_get_video_filter();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- filter = sc1200_get_video_filter();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- filter = redcloud_get_video_filter();
-# endif
- return(filter);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_request
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_request(short *x, short *y)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_get_video_request(x, y);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- status = redcloud_get_video_request(x, y);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_source
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_source(VideoSourceType *source)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_get_video_source(source);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vbi_source
- *---------------------------------------------------------------------------
- */
-int gfx_get_vbi_source(VbiSourceType *source)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_get_vbi_source(source);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vbi_lines
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_vbi_lines(int odd)
-{
- unsigned long lines = (unsigned long)GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- lines = sc1200_get_vbi_lines(odd);
-# endif
- return(lines);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vbi_total
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_vbi_total(int odd)
-{
- unsigned long total = (unsigned long)GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- total = sc1200_get_vbi_total(odd);
-# endif
- return(total);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_interlaced
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_interlaced(void)
-{
- int interlaced = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- interlaced = sc1200_get_video_interlaced();
-# endif
- return(interlaced);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_color_space_YUV
- *---------------------------------------------------------------------------
- */
-int gfx_get_color_space_YUV(void)
-{
- int color_space = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- color_space = sc1200_get_color_space_YUV();
-# endif
- return(color_space);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vertical_scaler_offset
- *---------------------------------------------------------------------------
- */
-int gfx_get_vertical_scaler_offset(char *offset)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- status = sc1200_get_vertical_scaler_offset(offset);
-# endif
- return(status);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_genlock_delay
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_get_genlock_delay(void)
-{
- unsigned long delay = (unsigned long)GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- delay = sc1200_get_genlock_delay();
-# endif
- return(delay);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_genlock_enable
- *---------------------------------------------------------------------------
- */
-int gfx_get_genlock_enable(void)
-{
- int enable = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- enable = sc1200_get_genlock_enable();
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_cursor
- *---------------------------------------------------------------------------
- */
-int gfx_get_video_cursor(unsigned long *key, unsigned long *mask, unsigned short *select_color2,
- unsigned long *color1, unsigned short *color2)
-{
- int enable = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- enable = sc1200_get_video_cursor(key, mask, select_color2, color1, color2);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- enable = redcloud_get_video_cursor(key, mask, select_color2, color1, color2);
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_crc
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_read_crc(void)
-{
- unsigned long crc = 0;
-# if GFX_VIDEO_CS5530
- if (gfx_video_type == GFX_VIDEO_TYPE_CS5530)
- crc = cs5530_read_crc();
-# endif
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- crc = sc1200_read_crc();
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- crc = redcloud_read_crc();
-# endif
- return(crc);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_crc32
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_read_crc32(void)
-{
- unsigned long crc = 0;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- crc = redcloud_read_crc32();
-# endif
- return(crc);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_window_crc
- *---------------------------------------------------------------------------
- */
-unsigned long gfx_read_window_crc(int source, unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, int crc32)
-{
- unsigned long crc = 0;
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- crc = redcloud_read_window_crc(source, x, y, width, height, crc32);
-# endif
- return(crc);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_macrovision_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_get_macrovision_enable(void)
-{
- int enable = 0;
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- enable = sc1200_get_video_enable();
-# endif
- return(enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_enable
- *---------------------------------------------------------------------------
- */
-void gfx_get_alpha_enable(int *enable)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_alpha_enable(enable);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_alpha_enable(enable);
-# endif
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_size
- *---------------------------------------------------------------------------
- */
-void gfx_get_alpha_size(unsigned short *x, unsigned short *y,
- unsigned short *width, unsigned short *height)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_alpha_size(x, y, width, height);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_alpha_size(x, y, width, height);
-# endif
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_value
- *---------------------------------------------------------------------------
- */
-void gfx_get_alpha_value(unsigned char *alpha, char *delta)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_alpha_value(alpha, delta);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_alpha_value(alpha, delta);
-# endif
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_priority
- *---------------------------------------------------------------------------
- */
-void gfx_get_alpha_priority(int *priority)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_alpha_priority(priority);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_alpha_priority(priority);
-# endif
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_color
- *---------------------------------------------------------------------------
- */
-void gfx_get_alpha_color(unsigned long *color)
-{
-# if GFX_VIDEO_SC1200
- if (gfx_video_type == GFX_VIDEO_TYPE_SC1200)
- sc1200_get_alpha_color(color);
-# endif
-# if GFX_VIDEO_REDCLOUD
- if (gfx_video_type == GFX_VIDEO_TYPE_REDCLOUD)
- redcloud_get_alpha_color(color);
-# endif
- return;
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-#endif /* GFX_VIDEO_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vip.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vip.c
deleted file mode 100644
index 0c320512b..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vip.c
+++ /dev/null
@@ -1,577 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/gfx_vip.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: gfx_vip.c $
- *
- * This file contains routines to control the video input port (VIP).
- *
- * gfx_set_vip_enable
- * gfx_set_vip_capture_run_mode
- * gfx_set_vip_base
- * gfx_set_vip_pitch
- * gfx_set_vip_mode
- * gfx_set_vbi_enable
- * gfx_set_vbi_mode
- * gfx_set_vbi_base
- * gfx_set_vbi_pitch
- * gfx_set_vbi_direct
- * gfx_set_vbi_interrupt
- * gfx_set_vip_bus_request_threshold_high
- * gfx_set_vip_last_line
- * gfx_test_vip_odd_field
- * gfx_test_vip_bases_updated
- * gfx_test_vip_fifo_overflow
- * gfx_get_vip_line
- * gfx_get_vip_base
- * gfx_get_vbi_pitch
- *
- * And the following routines if GFX_READ_ROUTINES is set:
- *
- * gfx_get_vip_enable
- * gfx_get_vip_pitch
- * gfx_get_vip_mode
- * gfx_get_vbi_enable
- * gfx_get_vbi_mode
- * gfx_get_vbi_base
- * gfx_get_vbi_direct
- * gfx_get_vbi_interrupt
- * gfx_get_vip_bus_request_threshold_high
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* INCLUDE SUPPORT FOR SC1200, IF SPECIFIED. */
-
-#if GFX_VIP_SC1200
-#include "vip_1200.c"
-#endif
-
-/* WRAPPERS IF DYNAMIC SELECTION */
-/* Extra layer to call either CS5530 or SC1200 routines. */
-
-#if GFX_VIP_DYNAMIC
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_enable(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_capture_run_mode
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_capture_run_mode(int mode)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_capture_run_mode(mode);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_base
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_base(unsigned long even, unsigned long odd)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_base(even, odd);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_pitch
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_pitch(unsigned long pitch)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_pitch(pitch);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_mode
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_mode(int mode)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_mode(mode);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vbi_enable(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vbi_enable(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_mode
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vbi_mode(int mode)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vbi_mode(mode);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_base
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vbi_base(unsigned long even, unsigned long odd)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vbi_base(even, odd);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_pitch
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vbi_pitch(unsigned long pitch)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vbi_pitch(pitch);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_direct
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vbi_direct(unsigned long even_lines, unsigned long odd_lines)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vbi_direct(even_lines, odd_lines);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_interrupt
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vbi_interrupt(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vbi_interrupt(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_bus_request_threshold_high
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_bus_request_threshold_high(int enable)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_bus_request_threshold_high(enable);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_last_line
- *-----------------------------------------------------------------------------
- */
-int gfx_set_vip_last_line(int last_line)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_set_vip_last_line(last_line);
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_test_vip_odd_field
- *-----------------------------------------------------------------------------
- */
-int gfx_test_vip_odd_field(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_test_vip_odd_field();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_test_vip_bases_updated
- *-----------------------------------------------------------------------------
- */
-int gfx_test_vip_bases_updated(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_test_vip_bases_updated();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_test_vip_fifo_overflow
- *-----------------------------------------------------------------------------
- */
-int gfx_test_vip_fifo_overflow(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_test_vip_fifo_overflow();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_line
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vip_line(void)
-{
- int status = GFX_STATUS_UNSUPPORTED;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- status = sc1200_get_vip_line();
-# endif
- return(status);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vip_base(int odd)
-{
- unsigned long base = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- base = sc1200_get_vip_base(odd);
-# endif
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_pitch
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vbi_pitch(void)
-{
- unsigned long pitch = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- pitch = sc1200_get_vbi_pitch();
-# endif
- return(pitch);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vip_enable(void)
-{
- int enable = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- enable = sc1200_get_vip_enable();
-# endif
- return(enable);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_pitch
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vip_pitch(void)
-{
- unsigned long pitch = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- pitch = sc1200_get_vip_pitch();
-# endif
- return(pitch);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_mode
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vip_mode(void)
-{
- int mode = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- mode = sc1200_get_vip_mode();
-# endif
- return(mode);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_enable
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vbi_enable(void)
-{
- int enable = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- enable = sc1200_get_vbi_enable();
-# endif
- return(enable);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_mode
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vbi_mode(void)
-{
- int mode = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- mode = sc1200_get_vbi_mode();
-# endif
- return(mode);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_base
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vbi_base(int odd)
-{
- unsigned long base = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- base = sc1200_get_vbi_base(odd);
-# endif
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_direct
- *-----------------------------------------------------------------------------
- */
-unsigned long gfx_get_vbi_direct(int odd)
-{
- unsigned long vbi_direct_lines = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- vbi_direct_lines = sc1200_get_vbi_direct(odd);
-# endif
- return(vbi_direct_lines);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_interrupt
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vbi_interrupt(void)
-{
- int enable = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- enable = sc1200_get_vbi_interrupt();
-# endif
- return(enable);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_bus_request_threshold_high
- *-----------------------------------------------------------------------------
- */
-int gfx_get_vip_bus_request_threshold_high(void)
-{
- int enable = 0;
-# if GFX_VIP_SC1200
- if (gfx_vip_type == GFX_VIP_TYPE_SC1200)
- enable = sc1200_get_vip_bus_request_threshold_high();
-# endif
- return(enable);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-#endif /* GFX_VIP_DYNAMIC */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/history.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/history.h
deleted file mode 100644
index 63d0ddc27..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/history.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/history.h,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: history.h $
- *
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* Version is in the format of MMmmpp
- * where in MM is the Major version, mm is the minor version
- * and pp is the patch number (0 - 99)
-*/
-
-#define DURANGO_VERSION 24500
-
-#if 0
-
-This file contains specific revision info SINCE THE LAST RELEASE. It is not meant to
-be a comprehensive record of all additions.
-
-#endif
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_acc.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_acc.c
deleted file mode 100644
index 440f2ed85..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_acc.c
+++ /dev/null
@@ -1,954 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_acc.c,v 1.1 2002/10/11 14:33:00 alanh Exp $ */
-/*
- * $Workfile: i2c_acc.c $
- *
- * This file contains routines to write to and read from the I2C bus using
- * the ACCESS.bus hardware in the SC1200.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* SUPER IO DEFINITIONS */
-
-#define INDEX_1 0x15C /* base address 1 selected */
-#define DATA_1 0x15D
-#define INDEX_2 0x2E /* base address 2 selected */
-#define DATA_2 0x2F
-#define PCI_INDEX 0xCF8 /* PCI configuration space INDEX */
-#define PCI_DATA 0xCFC /* PCI configuration space DATA */
-#define BASE_ADR_MSB_REG 0x60 /* base address MSB register */
-#define BASE_ADR_LSB_REG 0x61 /* base address LSB register */
-
-#define SIO_BASE_ADR_15C_15D 0x6000000
-#define SIO_BASE_ADR_2E_2F 0x4000000
-
-/* SUPER IO GLOBALS */
-
-unsigned short index_reg, data_reg;
-
-/* ACCESS BUS DEFINITIONS */
-
-#define ACC_I2C_TIMEOUT 1000000 /* Number of reads before timing out */
-#define ACB1_BASE 0x810 /* ACCESS.bus base addresses */
-#define ACB2_BASE 0x820
-#define ACBSDA 0 /* ACB serial data */
-#define ACBST 1 /* ACB status */
-#define ACBCST 2 /* ACB control status */
-#define ACBCTL1 3 /* ACB control 1 */
-#define ACBADDR 4 /* ACB own address */
-#define ACBCTL2 5 /* ACB control 2 */
-#define LDN 0x7 /* Logical Device Numbers */
-#define ACB1_LDN 0x5
-#define ACB2_LDN 0x6
-
-/* INITIAL ACCESS.bus BASE ADDRESS VALUES */
-
-unsigned short base_address_array[3] = {0, ACB1_BASE, ACB2_BASE};
-char Freq = 0x71;
-
-/* LOCAL ACCESS.bus FUNCTION DECLARATIONS */
-
-void acc_i2c_start(unsigned char busnum);
-void acc_i2c_stop(unsigned char busnum);
-void acc_i2c_abort_data(unsigned char busnum);
-void acc_i2c_bus_recovery(unsigned char busnum);
-void acc_i2c_stall_after_start(unsigned char busnum, int state);
-void acc_i2c_send_address(unsigned char busnum, unsigned char cData);
-int acc_i2c_ack(unsigned char busnum, int fPut, int negAck);
-void acc_i2c_stop_clock(unsigned char busnum);
-void acc_i2c_activate_clock(unsigned char busnum);
-void acc_i2c_write_byte(unsigned char busnum, unsigned char cData);
-unsigned char acc_i2c_read_byte(unsigned char busnum, int last_byte);
-void acc_i2c_reset_bus(unsigned char busnum);
-int acc_i2c_request_master(unsigned char busnum);
-void acc_i2c_config(unsigned char busnum, short adr, char freq);
-char acc_i2c_set_freq(unsigned char busnum, char freq);
-unsigned short acc_i2c_set_base_address(unsigned char busnum, short adr);
-
-/* LOCAL HELPER ROUTINES */
-
-void OsPciReadDWord(int bus, int dev, int func, int address, unsigned long * data);
-int sio_set_index_data_reg(void);
-void sio_write_reg(unsigned char reg, unsigned char data);
-unsigned char sio_read_reg(unsigned char reg);
-
-/*---------------------------------------------------------------------------
- * OsPciReadDWord
- *
- * This routine reads one double word from the PCI configuration header
- * defined by 'bus', 'dev', 'func' and 'address' to the double word
- * pointed to by 'data'.
- *
- * Returns : None.
- *---------------------------------------------------------------------------
- */
-void OsPciReadDWord (int bus, int dev, int func, int address, unsigned long * data)
-{
- /*
- * The address of a double word in the Configuration Header is built in
- * the following way :
- * {10000000,bus[23:16],device[15:11],function[10:8],address[7:2],00}
- */
- long addr = (0x80000000 |
- ((bus & 0xff) << 16) |
- ((dev & 0x1f) << 11) |
- ((func & 0x7) << 8) |
- (address & 0xff));
- OUTD(PCI_INDEX, addr);
- *data = IND(PCI_DATA);
-}
-
-/*---------------------------------------------------------------------------
- * sio_set_index_data_reg
- *
- * This routine checks which index and data registers to use
- * in order to access the Super I/O registers
- *
- * Returns : 1 - OK
- * 0 - Super I/O disabled or configuration access disabled
- *
- *---------------------------------------------------------------------------
- */
-int sio_set_index_data_reg(void)
-{
- unsigned long xbus_expention_bar, io_control_reg1;
-
- OsPciReadDWord (0, 0x12, 5, 0x10, &xbus_expention_bar);
- xbus_expention_bar = xbus_expention_bar & 0xfffffffe;
- io_control_reg1 = IND((unsigned short)xbus_expention_bar);
-
- if ((io_control_reg1) & (SIO_BASE_ADR_15C_15D))
- {
- index_reg = INDEX_1;
- data_reg = DATA_1;
- return(1);
- }
-
- if ((io_control_reg1) & (SIO_BASE_ADR_2E_2F))
- {
- index_reg = INDEX_2;
- data_reg = DATA_2;
- return(1);
- }
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * sio_write_reg
- *
- * This routine writes 'data' to 'reg' Super I/O register
- *
- * Returns : None
- *---------------------------------------------------------------------------
- */
-void sio_write_reg(unsigned char reg, unsigned char data)
-{
- OUTB(index_reg, reg);
- OUTB(data_reg, data);
-}
-
-/*---------------------------------------------------------------------------
- * sio_read_reg
- *
- * This routine reads data from 'reg' Super I/O register
- *
- * Returns : The data read from the requested register
- *---------------------------------------------------------------------------
- */
-unsigned char sio_read_reg(unsigned char reg)
-{
- OUTB(index_reg, reg);
- return INB(data_reg);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_reset
- *
- * This routine resets the I2C bus as follows :
- * · Sets the base address of the ACCESS.bus
- * · Sets the frequency of the ACCESS.bus
- * · Resets the ACCESS.bus
- *
- * If 'adr' is -1 the address is read from the hardware.
- * If 'freq' is -1 the frequency is set to 56 clock cycles.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int acc_i2c_reset(unsigned char busnum, short adr, char freq)
-#else
-int gfx_i2c_reset(unsigned char busnum, short adr, char freq)
-#endif
-{
- if ((busnum != 1) && (busnum != 2))
- return GFX_STATUS_BAD_PARAMETER;
- acc_i2c_config(busnum, adr, freq);
- if (base_address_array[busnum] == 0)
- return GFX_STATUS_ERROR;
- acc_i2c_reset_bus(busnum);
- return GFX_STATUS_OK;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_select_gpio
- *
- * This routine selects which GPIO pins to use.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int acc_i2c_select_gpio(int clock, int data)
-#else
-int gfx_i2c_select_gpio(int clock, int data)
-#endif
-{
- /* THIS ROUTINE DOES NOT APPLY TO THE ACCESS.bus IMPLEMENTATION. */
-
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_write
- *
- * This routine writes data to the specified I2C address.
- * busnum - ACCESS.bus number (1 or 2).
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int acc_i2c_write(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data)
-#else
-int gfx_i2c_write(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data)
-#endif
-{
- int loop = 0;
-
- if ((busnum != 1) && (busnum != 2))
- return GFX_STATUS_BAD_PARAMETER;
-
- /* REQUEST MASTER */
-
- if (!acc_i2c_request_master(busnum)) return(GFX_STATUS_ERROR);
-
- /* WRITE ADDRESS COMMAND */
-
- acc_i2c_ack(busnum, 1, 0);
- acc_i2c_stall_after_start(busnum, 1);
- acc_i2c_send_address(busnum, (unsigned char)(chipadr & 0xFE));
- acc_i2c_stall_after_start(busnum, 0);
- if (!acc_i2c_ack(busnum, 0, 0)) return(GFX_STATUS_ERROR);
-
- /* WRITE COMMAND */
-
- acc_i2c_write_byte(busnum, subadr);
- if (!acc_i2c_ack(busnum, 0, 0)) return(GFX_STATUS_ERROR);
-
- /* WRITE DATA */
-
- for(loop = 0; loop < bytes; loop++)
- {
- acc_i2c_write_byte(busnum, *data);
- if (loop < (bytes - 1))
- data += sizeof(unsigned char);
- if (!acc_i2c_ack(busnum, 0, 0)) return(GFX_STATUS_ERROR);
- }
- data -= (bytes - 1);
- acc_i2c_stop(busnum);
-
- return GFX_STATUS_OK;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_read
- *
- * This routine reads data from the specified I2C address.
- * busnum - ACCESS.bus number (1 or 2).
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int acc_i2c_read(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data)
-#else
-int gfx_i2c_read(unsigned char busnum, unsigned char chipadr, unsigned char subadr,
- unsigned char bytes, unsigned char * data)
-#endif
-{
- unsigned char bytesRead;
-
- if ((busnum != 1) && (busnum != 2))
- return GFX_STATUS_BAD_PARAMETER;
-
- if (bytes == 0)
- return GFX_STATUS_OK;
-
- /* REQUEST MASTER */
-
- if (!acc_i2c_request_master(busnum)) return(GFX_STATUS_ERROR);
-
- /* WRITE ADDRESS COMMAND */
-
- acc_i2c_ack(busnum, 1, 0);
- acc_i2c_stall_after_start(busnum, 1);
- acc_i2c_send_address(busnum, (unsigned char)(chipadr & 0xFE));
- acc_i2c_stall_after_start(busnum, 0);
- if (!acc_i2c_ack(busnum, 0, 0)) return(GFX_STATUS_ERROR);
-
- /* WRITE COMMAND */
-
- acc_i2c_write_byte(busnum, subadr);
- if (!acc_i2c_ack(busnum, 0, 0)) return(GFX_STATUS_ERROR);
-
- /* START THE READ */
-
- acc_i2c_start(busnum);
-
- /* WRITE ADDRESS COMMAND */
-
- acc_i2c_ack(busnum, 1, 1);
- acc_i2c_stall_after_start(busnum, 1);
- acc_i2c_send_address(busnum, (unsigned char)(chipadr | 0x01));
-
- /* IF LAST BYTE */
-
- if (bytes == 1)
- acc_i2c_ack(busnum, 1, 1);
- else
- acc_i2c_ack(busnum, 1, 0);
-
- acc_i2c_stall_after_start(busnum, 0);
-
- if (!acc_i2c_ack(busnum, 0, 0)) return(GFX_STATUS_ERROR);
-
- /* READ COMMAND */
-
- for(bytesRead = 0; bytesRead < bytes; bytesRead += 1)
- {
- if (bytesRead < (bytes - 2))
- {
- data[bytesRead] = acc_i2c_read_byte(busnum, 0);
- acc_i2c_ack(busnum, 1, 0);
- }
- else if (bytesRead == (bytes - 2)) /* TWO BYTES LEFT */
- {
- acc_i2c_ack(busnum, 1, 1);
- data[bytesRead] = acc_i2c_read_byte(busnum, 0);
- acc_i2c_ack(busnum, 1, 1);
- }
- else /* LAST BYTE */
- {
- data[bytesRead] = acc_i2c_read_byte(busnum, 1);
- acc_i2c_stop(busnum);
- }
-
- /* WHILE NOT LAST BYTE */
-
- if ((!(bytesRead == (bytes - 1))) && (!acc_i2c_ack(busnum, 0, 0)))
- return(bytesRead);
- }
-
- return GFX_STATUS_OK;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_init
- *
- * This routine initializes the use of the ACCESS.BUS.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int acc_i2c_init(void)
-#else
-int gfx_i2c_init(void)
-#endif
-{
- /* ### ADD ### THIS ROUTINE IS NOT YET IMPLEMENTED FOR ACCESS.bus */
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_cleanup
- *
- * This routine ends the use of the ACCESS.BUS.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-void acc_i2c_cleanup(void)
-#else
-void gfx_i2c_cleanup(void)
-#endif
-{
- /* ### ADD ### THIS ROUTINE IS NOT YET IMPLEMENTED FOR ACCESS.bus */
-}
-
-/*--------------------------------------------------------*/
-/* LOCAL ROUTINES SPECIFIC TO ACCESS.bus IMPLEMENTATION */
-/*--------------------------------------------------------*/
-
-/*---------------------------------------------------------------------------
- * acc_i2c_reset_bus
- *
- * This routine resets the I2C bus.
- *---------------------------------------------------------------------------
- */
-void acc_i2c_reset_bus(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
-
- /* Disable the ACCESS.bus device and */
- /* Configure the SCL frequency */
- OUTB((unsigned short)(bus_base_address + ACBCTL2), (unsigned char)(Freq & 0xFE));
-
- /* Configure no interrupt mode (polling) and */
- /* Disable global call address */
- OUTB((unsigned short)(bus_base_address + ACBCTL1), 0x0);
-
- /* Disable slave address */
- OUTB((unsigned short)(bus_base_address + ACBADDR), 0x0);
-
- /* Enable the ACCESS.bus device */
- reg = INB((unsigned short)(bus_base_address + ACBCTL2));
- reg |= 0x01;
- OUTB((unsigned short)(bus_base_address + ACBCTL2), reg);
-
- /* Issue STOP event */
-
- acc_i2c_stop(busnum);
-
- /* Clear NEGACK, STASTR and BER bits */
- OUTB((unsigned short)(bus_base_address + ACBST), 0x38);
-
- /* Clear BB (BUS BUSY) bit */
- reg = INB((unsigned short)(bus_base_address + ACBCST));
- reg |= 0x02;
- OUTB((unsigned short)(bus_base_address + ACBCST), reg);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_start
- *
- * This routine starts a transfer on the I2C bus.
- *---------------------------------------------------------------------------
- */
-void acc_i2c_start(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- reg = INB((unsigned short)(bus_base_address + ACBCTL1));
- reg |= 0x01;
- OUTB((unsigned short)(bus_base_address + ACBCTL1), reg);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_stop
- *
- * This routine stops a transfer on the I2C bus.
- *---------------------------------------------------------------------------
- */
-void acc_i2c_stop(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- reg = INB((unsigned short)(bus_base_address + ACBCTL1));
- reg |= 0x02;
- OUTB((unsigned short)(bus_base_address + ACBCTL1), reg);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_abort_data
- *---------------------------------------------------------------------------
- */
-void acc_i2c_abort_data(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- acc_i2c_stop(busnum);
- reg = INB((unsigned short)(bus_base_address + ACBCTL1));
- reg |= 0x10;
- OUTB((unsigned short)(bus_base_address + ACBCTL1), reg);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_bus_recovery
- *---------------------------------------------------------------------------
- */
-void acc_i2c_bus_recovery(unsigned char busnum)
-{
- acc_i2c_abort_data(busnum);
- acc_i2c_reset_bus(busnum);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_stall_after_start
- *---------------------------------------------------------------------------
- */
-void acc_i2c_stall_after_start(unsigned char busnum, int state)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- reg = INB((unsigned short)(bus_base_address + ACBCTL1));
- if (state) reg |= 0x80;
- else reg &= 0x7F;
- OUTB((unsigned short)(bus_base_address + ACBCTL1), reg);
-
- if (!state)
- {
- reg = INB((unsigned short)(bus_base_address + ACBST));
- reg |= 0x08;
- OUTB((unsigned short)(bus_base_address + ACBST), reg);
- }
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_send_address
- *---------------------------------------------------------------------------
- */
-void acc_i2c_send_address(unsigned char busnum, unsigned char cData)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- unsigned long timeout = 0;
-
- /* WRITE THE DATA */
-
- OUTB((unsigned short)(bus_base_address + ACBSDA), cData);
- while (1) {
- reg = INB((unsigned short)(bus_base_address + ACBST));
- if ((reg & 0x38) != 0) /* check STASTR, BER and NEGACK */
- break;
- if (timeout++ == ACC_I2C_TIMEOUT)
- {
- acc_i2c_bus_recovery(busnum);
- return;
- }
- }
-
- /* CHECK FOR BUS ERROR */
-
- if (reg & 0x20)
- {
- acc_i2c_bus_recovery(busnum);
- return;
- }
-
- /* CHECK NEGATIVE ACKNOWLEDGE */
-
- if (reg & 0x10)
- {
- acc_i2c_abort_data(busnum);
- return;
- }
-
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_ack
- *
- * This routine looks for acknowledge on the I2C bus.
- *---------------------------------------------------------------------------
- */
-int acc_i2c_ack(unsigned char busnum, int fPut, int negAck)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- unsigned long timeout = 0;
-
- if (fPut) { /* read operation */
- if (!negAck) {
- /* Push Ack onto I2C bus */
- reg = INB((unsigned short)(bus_base_address + ACBCTL1));
- reg &= 0xE7;
- OUTB((unsigned short)(bus_base_address + ACBCTL1), reg);
- }
- else {
- /* Push negAck onto I2C bus */
- reg = INB((unsigned short)(bus_base_address + ACBCTL1));
- reg |= 0x10;
- OUTB((unsigned short)(bus_base_address + ACBCTL1), reg);
- }
- } else { /* write operation */
- /* Receive Ack from I2C bus */
- while (1) {
- reg = INB((unsigned short)(bus_base_address + ACBST));
- if ((reg & 0x70) != 0) /* check SDAST, BER and NEGACK */
- break;
- if (timeout++ == ACC_I2C_TIMEOUT)
- {
- acc_i2c_bus_recovery(busnum);
- return(0);
- }
- }
-
- /* CHECK FOR BUS ERROR */
-
- if (reg & 0x20)
- {
- acc_i2c_bus_recovery(busnum);
- return(0);
- }
-
- /* CHECK NEGATIVE ACKNOWLEDGE */
-
- if (reg & 0x10)
- {
- acc_i2c_abort_data(busnum);
- return(0);
- }
- }
- return (1);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_stop_clock
- *
- * This routine stops the ACCESS.bus clock.
- *---------------------------------------------------------------------------
- */
-void acc_i2c_stop_clock(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- reg = INB((unsigned short)(bus_base_address + ACBCTL2));
- reg &= ~0x01;
- OUTB((unsigned short)(bus_base_address + ACBCTL2), reg);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_activate_clock
- *
- * This routine activates the ACCESS.bus clock.
- *---------------------------------------------------------------------------
- */
-void acc_i2c_activate_clock(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- reg = INB((unsigned short)(bus_base_address + ACBCTL2));
- reg |= 0x01;
- OUTB((unsigned short)(bus_base_address + ACBCTL2), reg);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_write_byte
- *
- * This routine writes a byte to the I2C bus
- *---------------------------------------------------------------------------
- */
-void acc_i2c_write_byte(unsigned char busnum, unsigned char cData)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- unsigned long timeout = 0;
-
- while (1) {
- reg = INB((unsigned short)(bus_base_address + ACBST));
- if (reg & 0x70) break;
- if (timeout++ == ACC_I2C_TIMEOUT)
- {
- acc_i2c_bus_recovery(busnum);
- return;
- }
- }
-
- /* CHECK FOR BUS ERROR */
-
- if (reg & 0x20)
- {
- acc_i2c_bus_recovery(busnum);
- return;
- }
-
- /* CHECK NEGATIVE ACKNOWLEDGE */
-
- if (reg & 0x10)
- {
- acc_i2c_abort_data(busnum);
- return;
- }
-
- /* WRITE THE DATA */
-
- OUTB((unsigned short)(bus_base_address + ACBSDA), cData);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_read_byte
- *
- * This routine reads a byte from the I2C bus
- *---------------------------------------------------------------------------
- */
-unsigned char acc_i2c_read_byte(unsigned char busnum, int last_byte)
-{
- unsigned char cData, reg;
- unsigned short bus_base_address = base_address_array[busnum];
- unsigned long timeout = 0;
-
- while (1) {
- reg = INB((unsigned short)(bus_base_address + ACBST));
- if (reg & 0x60) break;
- if (timeout++ == ACC_I2C_TIMEOUT)
- {
- acc_i2c_bus_recovery(busnum);
- return(0xEF);
- }
- }
-
- /* CHECK FOR BUS ERROR */
-
- if (reg & 0x20)
- {
- acc_i2c_bus_recovery(busnum);
- return(0xEE);
- }
-
- /* READ DATA */
- if (last_byte)
- acc_i2c_stop_clock(busnum);
- cData = INB((unsigned short)(bus_base_address + ACBSDA));
- if (last_byte)
- acc_i2c_activate_clock(busnum);
-
- return (cData);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_request_master
- *---------------------------------------------------------------------------
- */
-int acc_i2c_request_master(unsigned char busnum)
-{
- unsigned char reg;
- unsigned short bus_base_address = base_address_array[busnum];
- unsigned long timeout = 0;
-
- acc_i2c_start(busnum);
- while (1) {
- reg = INB((unsigned short)(bus_base_address + ACBST));
- if (reg & 0x60) break;
- if (timeout++ == ACC_I2C_TIMEOUT)
- {
- acc_i2c_bus_recovery(busnum);
- return(0);
- }
- }
-
- /* CHECK FOR BUS ERROR */
-
- if (reg & 0x20)
- {
- acc_i2c_abort_data(busnum);
- return(0);
- }
-
- /* CHECK NEGATIVE ACKNOWLEDGE */
-
- if (reg & 0x10)
- {
- acc_i2c_abort_data(busnum);
- return(0);
- }
- return(1);
-}
-
-/*--------------------------------------------------------*/
-/* LOCAL ROUTINES SPECIFIC TO ACCESS.bus INITIALIZATION */
-/*--------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
- * acc_i2c_config
- *
- * This routine configures the I2C bus
- *----------------------------------------------------------------------------
- */
-void acc_i2c_config(unsigned char busnum, short adr, char freq)
-{
- base_address_array[busnum] = acc_i2c_set_base_address(busnum, adr);
- Freq = acc_i2c_set_freq(busnum, freq);
-}
-
-/*----------------------------------------------------------------------------
- * acc_i2c_set_freq
- *
- * This routine sets the frequency of the I2C bus
- *----------------------------------------------------------------------------
- */
-char acc_i2c_set_freq(unsigned char busnum, char freq)
-{
- unsigned short bus_base_address = base_address_array[busnum];
-
- OUTB((unsigned short)(bus_base_address + ACBCTL2), 0x0);
-
- if (freq == -1)
- freq = 0x71;
- else
- {
- freq = freq << 1;
- freq |= 0x01;
- }
-
- OUTB((unsigned short)(bus_base_address + ACBCTL2), freq);
- return (freq);
-}
-
-/*---------------------------------------------------------------------------
- * acc_i2c_set_base_address
- *
- * This routine sets the base address of the I2C bus
- *---------------------------------------------------------------------------
- */
-unsigned short acc_i2c_set_base_address(unsigned char busnum, short adr)
-{
- unsigned short ab_base_addr;
-
- /* Get Super I/O Index and Data registers */
- if (!sio_set_index_data_reg())
- return (0);
-
- /* Configure LDN to current ACB */
- if (busnum == 1)
- sio_write_reg(LDN, ACB1_LDN);
- if (busnum == 2)
- sio_write_reg(LDN, ACB2_LDN);
-
- if (adr == -1) {
- /* Get ACCESS.bus base address */
- ab_base_addr = sio_read_reg(BASE_ADR_MSB_REG);
- ab_base_addr = ab_base_addr << 8;
- ab_base_addr |= sio_read_reg(BASE_ADR_LSB_REG);
- if (ab_base_addr != 0)
- return ab_base_addr;
- else
- adr = (busnum == 1 ? ACB1_BASE : ACB2_BASE);
- }
-
- /* Set ACCESS.bus base address */
- sio_write_reg(BASE_ADR_LSB_REG, (unsigned char)(adr & 0xFF));
- sio_write_reg(BASE_ADR_MSB_REG, (unsigned char)(adr >> 8));
-
- return adr;
-}
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_gpio.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_gpio.c
deleted file mode 100644
index b2f49c80e..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_gpio.c
+++ /dev/null
@@ -1,745 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/i2c_gpio.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: i2c_gpio.c $
- *
- * This file contains routines to write to and read from the I2C bus using
- * the GPIO pins of the CS5530.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* STATIC VARIABLES TO STORE WHAT GPIO PINS TO USE */
-
-int gpio_clock = 0;
-int gpio_data = 0;
-
-static int g_initialized = 0;
-
-#define I2CWRITE 0x00 /* Write address */
-#define I2CREAD 0x01 /* Read address */
-
-#define I2CACK 0x00 /* Ack value */
-#define I2CNACK 0x01 /* Not - ack value */
-
-#define CS5530_ID (0x80000000 | (0x00<<16) | (0x12<<11) | (0<<8) | 0x00)
-#define CS5530_GPIO (0x80000000 | (0x00<<16) | (0x12<<11) | (0<<8) | 0x90)
-#define SDA 0x0800
-#define SCL 0x0400
-#define SDADIR 0x0008
-#define SCLDIR 0x0004
-
-int I2C_init(void);
-void I2C_cleanup(void);
-
-int I2C_Read(unsigned char address, unsigned int reg, unsigned long *p_value, unsigned int bytes);
-int I2C_Write(unsigned char address, unsigned int reg, unsigned long value, unsigned int bytes);
-int I2CAL_init(void);
-void I2CAL_cleanup(void);
-
-void I2CAL_output_clock(int state);
-void I2CAL_output_data(int state);
-unsigned char I2CAL_input_data(void);
-
-void I2CAL_set_data_for_input(void);
-void I2CAL_set_data_for_output(void);
-
-void SendI2CStart(void);
-void SendI2CData(unsigned char inData);
-
-unsigned char ReceiveI2CAck(void);
-void SendI2CStop(void);
-void SendI2CNack(void);
-void SendI2CAck (void);
-unsigned char ReceiveI2CData(void);
-
-
-/* ### ADD ### ANY LOCAL ROUTINE DEFINITIONS SPECIFIC TO GPIO */
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_reset
- *
- * This routine resets the I2C bus.
- *---------------------------------------------------------------------------
- */
-
-#if GFX_I2C_DYNAMIC
-int gpio_i2c_reset(unsigned char busnum, short adr, char freq)
-#else
-int gfx_i2c_reset(unsigned char busnum, short adr, char freq)
-#endif
-{
- /* ### ADD ### Any code needed to reset the state of the GPIOs. */
- return GFX_STATUS_OK;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_select_gpio
- *
- * This routine selects which GPIO pins to use.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int gpio_i2c_select_gpio(int clock, int data)
-#else
-int gfx_i2c_select_gpio(int clock, int data)
-#endif
-{
- gpio_clock = clock;
- gpio_data = data;
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_write
- *
- * This routine writes data to the specified I2C address.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int gpio_i2c_write(unsigned char busnum, unsigned char address, unsigned char reg,
- unsigned char bytes, unsigned char * value)
-#else
-int gfx_i2c_write(unsigned char busnum, unsigned char address, unsigned char reg,
- unsigned char bytes, unsigned char * value)
-#endif
-{
- /* ### ADD ### CODE TO WRITE BYTE TO I2B BUS */
-
- int restart_count = 0;
-
-
- while (restart_count++ < 5)
- {
- /* set the access pointer register. */
- /* The address is shifted left by one to make room for Read/Write bit */
- SendI2CStart();
- SendI2CData((char)((address << 1) | I2CWRITE));
- if (!ReceiveI2CAck())
- {
- SendI2CStop();
- gfx_delay_milliseconds(10);
- continue;
- }
- SendI2CData((unsigned char)reg);
- if (!ReceiveI2CAck())
- {
- SendI2CStop();
- gfx_delay_milliseconds(10);
- continue;
- }
-
- /* write the first byte */
- SendI2CData(*value);
- if (!ReceiveI2CAck())
- {
- SendI2CStop();
- gfx_delay_milliseconds(10);
- continue;
- }
-
-
- /* write the second byte. */
- if (bytes == 2)
- {
- SendI2CData(*(value+1));
- if (!ReceiveI2CAck())
- {
- SendI2CStop();
- gfx_delay_milliseconds(10);
- continue;
- }
- }
-
-
- /* done. */
- SendI2CStop();
-
- return 0;
- }
-
- return(0);
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_i2c_read
- *
- * This routine reads data from the specified I2C address.
- *---------------------------------------------------------------------------
- */
-#if GFX_I2C_DYNAMIC
-int gpio_i2c_read(unsigned char busnum, unsigned char address, unsigned char reg,
- unsigned char bytes, unsigned char *p_value)
-#else
-int gfx_i2c_read(unsigned char busnum, unsigned char address, unsigned char reg,
- unsigned char bytes, unsigned char *p_value)
-#endif
-{
- /* ### ADD ### CODE TO WRITE BYTE TO I2B BUS */
- /* For now return clock and data pins */
-
- int restart_count = 0;
-
-
- if (!p_value)
- return(1);
-
- while (restart_count++ < 5)
- {
- /* set the access pointer register. */
- /* The address is shifted left by one to make room for Read/Write bit */
- SendI2CStart();
- SendI2CData((char)((address << 1) | I2CWRITE));
- if (!ReceiveI2CAck())
- {
- SendI2CStop();
- gfx_delay_milliseconds(10);
- continue;
- }
- SendI2CData((unsigned char)(reg & 0xFF));
- SendI2CNack();
-
- /* read the first data byte. */
- SendI2CStart();
- SendI2CData((char)((address << 1) | I2CREAD));
- if (!ReceiveI2CAck())
- {
- SendI2CStop();
- gfx_delay_milliseconds(10);
- continue;
- }
- *p_value = ReceiveI2CData();
-
-
- /* read the second byte. */
- if (bytes == 2)
- {
- SendI2CAck();
- *(p_value+1) = ReceiveI2CData();
- }
-
-
- /* done. */
- SendI2CNack();
- SendI2CStop();
-
-
- return 0;
- }
-
- return(1);
-}
-
-/* Added i2c/gpio code to test fs451 chip. */
-
-/*
-//----------------------------------------------------------------------
-//
-// void SendI2CStart(void)
-//
-// Sends an I2C start signal on the bus.
-//
-//----------------------------------------------------------------------
-*/
-void SendI2CStart(void)
-{
- I2CAL_output_data(1);
- I2CAL_output_clock(1);
- I2CAL_output_data(0);
- I2CAL_output_clock(0);
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// void SendI2CStop(void)
-//
-// Sends an I2C stop signal on the bus.
-//
-//----------------------------------------------------------------------
-*/
-void SendI2CStop(void)
-{
- I2CAL_output_data(0);
- I2CAL_output_clock(1);
- I2CAL_output_data(1);
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// void SendI2CAck(void)
-//
-// Sends the Ack signal on the I2C bus.
-//
-//----------------------------------------------------------------------
-*/
-void SendI2CAck(void)
-{
- I2CAL_output_data(0);
- I2CAL_output_clock(1);
- I2CAL_output_clock(0);
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// void SendI2CNack(void)
-//
-// Sends the Nt-Ack signal on the I2C bus.
-//
-//----------------------------------------------------------------------
-*/
-void SendI2CNack(void)
-{
- I2CAL_output_data(1);
- I2CAL_output_clock(1);
- I2CAL_output_clock(0);
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// UInt8 SendI2CData( UInt8 inData )
-//
-// Sends a byte of data on the I2C bus and returns the TRUE if the slave ACK'd
-// the data.
-//
-// Input: inData - the byte of data to send
-// Output: (return) - TRUE (1) if ACK was received, FALSE (0) if not
-//
-//----------------------------------------------------------------------
-*/
-void SendI2CData(unsigned char inData)
-{
- unsigned char bit;
-
- /* Send all 8 bits of data byte, MSB to LSB */
- for (bit = 0x80; bit != 0; bit >>= 1)
- {
- if (inData & bit)
- I2CAL_output_data(1);
- else
- I2CAL_output_data(0);
-
- I2CAL_output_clock(1);
- I2CAL_output_clock(0);
- }
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// UInt8 ReceiveI2CAck( )
-//
-// Receives the Ack (or Nack) from the slave.
-//
-// Output: (return) - TRUE (1) if ACK was received, FALSE (0) if not
-//
-//----------------------------------------------------------------------
-*/
-unsigned char ReceiveI2CAck(void)
-{
- unsigned char bit;
-
- /* Test for Ack/Nack */
- I2CAL_set_data_for_input();
- I2CAL_output_data(1);
- I2CAL_output_clock(1);
- bit = I2CAL_input_data();
- I2CAL_output_clock(0);
- I2CAL_set_data_for_output();
- return !bit;
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// unsigned char ReceiveI2CData(void)
-//
-// Receives a byte of data from the I2C bus.
-//
-// Output: (return) - The data byte recehved from the bus
-//
-//----------------------------------------------------------------------
-*/
-unsigned char ReceiveI2CData(void)
-{
- unsigned char data = 0;
- unsigned char x;
-
- /* make sure the data line is released */
- I2CAL_set_data_for_input();
- I2CAL_output_data(1);
-
- /* shift in the data */
- for (x=0; x<8; x++)
- {
- /* shift the data left */
- I2CAL_output_clock(1);
- data <<= 1;
- data |= I2CAL_input_data();
- I2CAL_output_clock(0);
- }
-
- I2CAL_set_data_for_output();
- I2CAL_output_data(1);
- return data;
-}
-
-
-/*
-//----------------------------------------------------------------------
-//
-// void I2C_init(void)
-//
-// This routine initializes the I2C interface. Clients of the I2C.c
-// will call this routine before calling any other routine in the I2C.c
-//
-//----------------------------------------------------------------------
-*/
-
-#if GFX_I2C_DYNAMIC
-int gpio_i2c_init(void)
-#else
-int gfx_i2c_init(void)
-#endif
-{
- int errc;
-
- /* init I2CAL */
- errc = I2CAL_init();
- if (errc)
- return errc;
-
- /* set the clock and data lines to the proper states */
- I2CAL_output_clock(1);
- I2CAL_output_data(1);
- I2CAL_set_data_for_output();
-
- SendI2CStart();
- SendI2CStop();
- SendI2CStop();
-
- g_initialized = 1;
-
- return 0;
-}
-
-/*
-//----------------------------------------------------------------------
-//
-// void I2C_cleanup(void)
-//
-// This routine disables the I2C interface. Clients of the I2C.c will not
-// call any other I2C routine after calling this routine.
-//
-//----------------------------------------------------------------------
-*/
-
-#if GFX_I2C_DYNAMIC
-void gpio_i2c_cleanup(void)
-#else
-void gfx_i2c_cleanup(void)
-#endif
-
-{
- if (g_initialized)
- {
-
- /* set the clock and data lines to a harmless state */
- I2CAL_output_clock(1);
- I2CAL_output_data(1);
-
- g_initialized = 0;
- }
-
- I2CAL_cleanup();
-}
-
-
-
-int I2CAL_init(void)
-{
- unsigned long l_reg;
- unsigned short reg;
-
- /* initialize the i2c port. */
- l_reg = gfx_pci_config_read(CS5530_GPIO);
-
- if (l_reg != 0x01001078)
- return 1;
-
- l_reg = gfx_pci_config_read(CS5530_GPIO);
- reg = (unsigned short) l_reg;
-
- /* both outputs, both high. */
- reg |= (SDADIR | SCLDIR | SDA | SCL);
- l_reg = reg;
- gfx_pci_config_write(CS5530_GPIO, l_reg);
-
- g_initialized = 1;
-
- return 0;
-}
-
-void I2CAL_cleanup(void)
-{
- if (g_initialized)
- {
-
- g_initialized = 0;
- }
-}
-
-
-/*
-//--------------------------------------------------------------------------------
-//
-// set the I2C clock line state
-//
-//--------------------------------------------------------------------------------
-*/
-void I2CAL_output_clock(int inState)
-{
- unsigned short reg;
- unsigned long value;
-
- value = gfx_pci_config_read(CS5530_GPIO);
- reg = (unsigned short)value;
-
- if (inState)
- { /* write a 1. */
- reg |= SCL;
- }
- else
- { /* write a 0. */
- reg &= ~SCL;
- }
-
- value = reg;
- gfx_pci_config_write(CS5530_GPIO, value);
-
- /* hold it for a minimum of 4.7us */
- gfx_delay_microseconds(5);
-}
-
-/*
-//--------------------------------------------------------------------------------
-//
-// set the I2C data line state
-//
-//--------------------------------------------------------------------------------
-*/
-void I2CAL_output_data(int inState)
-{
- unsigned short reg;
- unsigned long value;
-
- value = gfx_pci_config_read(CS5530_GPIO);
- reg = (unsigned short)value;
-
- if (inState)
- { /* write a 1. */
- reg |= SDA;
- }
- else
- {
- /* write a 0. */
- reg &= ~SDA;
- }
- value = reg;
- gfx_pci_config_write(CS5530_GPIO, value);
-
- /* 250 ns setup time */
- gfx_delay_microseconds(1);
-}
-
-/*
-//--------------------------------------------------------------------------------
-//
-// read the state of the data line
-//
-//--------------------------------------------------------------------------------
-*/
-unsigned char I2CAL_input_data(void)
-{
- unsigned short reg;
- unsigned long value;
-
- value = gfx_pci_config_read(CS5530_GPIO);
- reg = (unsigned short)value;
-
- if (reg & SDA)
- return 1;
- else
- return 0;
-}
-
-/*
-//--------------------------------------------------------------------------------
-//
-// set the I2C data for input mode
-//
-//--------------------------------------------------------------------------------
-*/
-void I2CAL_set_data_for_input(void)
-{
- unsigned short reg;
- unsigned long value;
-
- value = gfx_pci_config_read(CS5530_GPIO);
- reg = (unsigned short)value;
-
- reg &= ~SDADIR;
-
- value = reg;
-
- gfx_pci_config_write(CS5530_GPIO, value);
-}
-
-/*
-//--------------------------------------------------------------------------------
-//
-// set the I2C data for output mode
-//
-//--------------------------------------------------------------------------------
-*/
-void I2CAL_set_data_for_output(void)
-{
- unsigned short reg;
- unsigned long value;
-
- value = gfx_pci_config_read(CS5530_GPIO);
- reg = (unsigned short)value;
- reg |= SDADIR;
- value = reg;
-
- gfx_pci_config_write(CS5530_GPIO, value);
-
-}
-
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu1.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu1.c
deleted file mode 100644
index 6882122d5..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu1.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu1.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: init_gu1.c $
- *
- * This file contains routines used in the initialization of Geode-family
- * processors.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*-----------------------------------------------------------------------------
- * gfx_gxm_config_read
- *
- * This routine reads the value of the specified GXm configuration register.
- *-----------------------------------------------------------------------------
- */
-unsigned char gfx_gxm_config_read(unsigned char index)
-{
- unsigned char value = 0xFF;
- unsigned char lock;
-
- OUTB(0x22, GXM_CONFIG_CCR3);
- lock = INB(0x23);
- OUTB(0x22, GXM_CONFIG_CCR3);
- OUTB(0x23, (unsigned char) (lock | 0x10));
- OUTB(0x22, index);
- value = INB(0x23);
- OUTB(0x22, GXM_CONFIG_CCR3);
- OUTB(0x23, lock);
- return(value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_core_freq
- *
- * This routine returns the core clock frequency of a GXm if valid jumper settings are
- * detected; 0 if not. It assumes that a 33.3 MHz PCI clock is being used.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu1_get_core_freq(void)
-#else
-unsigned long gfx_get_core_freq(void)
-#endif
-{
- unsigned char dir0, dir1;
-
- dir0 = gfx_gxm_config_read(GXM_CONFIG_DIR0) & 0x0F;
- dir1 = gfx_gxm_config_read(GXM_CONFIG_DIR1);
-
- /* REVISION 4.0 AND UP */
-
- if(dir1 >= 0x50)
- {
- switch(dir0)
- {
- case 0:
- case 2: return 133;
-
- case 5: return 166;
- case 3: return 200;
- case 6: return 233;
- case 7: return 266;
- case 4: return 300;
- case 1: return 333;
- default:
- return(0);
- }
- }
- else
- {
- switch(dir0)
- {
- case 0:
- case 2: return 133;
-
- case 7: return 166;
-
- case 1:
- case 3: return 200;
-
- case 4:
- case 6: return 233;
-
- case 5: return 266;
- default:
- return(0);
- }
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cpu_register_base
- *
- * This routine returns the base address for graphics registers.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu1_get_cpu_register_base(void)
-#else
-unsigned long gfx_get_cpu_register_base(void)
-#endif
-{
- unsigned long base;
- base = (unsigned long) gfx_gxm_config_read(GXM_CONFIG_GCR);
- base = (base & 0x03) << 30;
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_frame_buffer_base
- *
- * This routine returns the base address for graphics memory. This is an
- * offset of 0x00800000 from the base address specified in the GCR register.
- *
- * The function returns zero if the GCR indicates the graphics subsystem
- * is disabled.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu1_get_frame_buffer_base(void)
-#else
-unsigned long gfx_get_frame_buffer_base(void)
-#endif
-{
- unsigned long base;
- base = (unsigned long) gfx_gxm_config_read(GXM_CONFIG_GCR);
- base = (base & 0x03) << 30;
- if (base) base |= 0x00800000;
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_frame_buffer_size
- *
- * This routine returns the total size of graphics memory, in bytes.
- *
- * Currently this routine is hardcoded to return 2 Meg.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu1_get_frame_buffer_size(void)
-#else
-unsigned long gfx_get_frame_buffer_size(void)
-#endif
-{
-#if FB4MB
- return(0x00400000);
-#else
- return(0x00200000);
-#endif
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vid_register_base
- *
- * This routine returns the base address for the video hardware. It assumes
- * an offset of 0x00010000 from the base address specified by the GCR.
- *
- * The function returns zero if the GCR indicates the graphics subsystem
- * is disabled.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu1_get_vid_register_base(void)
-#else
-unsigned long gfx_get_vid_register_base(void)
-#endif
-{
- unsigned long base;
- base = (unsigned long) gfx_gxm_config_read(GXM_CONFIG_GCR);
- base = (base & 0x03) << 30;
- if (base) base |= 0x00010000;
- return(base);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_register_base
- *
- * This routine returns the base address for the VIP hardware. This is
- * only applicable to the SC1200, for which this routine assumes an offset
- * of 0x00015000 from the base address specified by the GCR.
- *
- * The function returns zero if the GCR indicates the graphics subsystem
- * is disabled.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu1_get_vip_register_base(void)
-#else
-unsigned long gfx_get_vip_register_base(void)
-#endif
-{
- unsigned long base = 0;
- if ((gfx_cpu_version & 0xFF) == GFX_CPU_SC1200)
- {
- base = (unsigned long) gfx_gxm_config_read(GXM_CONFIG_GCR);
- base = (base & 0x03) << 30;
- if (base) base |= 0x00015000;
- }
- return(base);
-}
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu2.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu2.c
deleted file mode 100644
index 9194bcf32..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu2.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/init_gu2.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: init_gu2.c $
- *
- * This file contains routines used in Redcloud initialization.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*-----------------------------------------------------------------------------
- * gfx_get_core_freq
- *
- * Returns the core clock frequency of a GX2.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu2_get_core_freq(void)
-#else
-unsigned long gfx_get_core_freq(void)
-#endif
-{
- unsigned long value;
-
- /* CPU SPEED IS REPORTED BY A VSM IN VSA II */
- /* Virtual Register Class = 0x12 (Sysinfo) */
- /* CPU Speed Register = 0x01 */
-
- OUTW (0xAC1C, 0xFC53);
- OUTW (0xAC1C, 0x1201);
-
- value = (unsigned long)(INW (0xAC1E));
-
- return (value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_cpu_register_base
- *
- * This routine returns the base address for display controller registers.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu2_get_cpu_register_base(void)
-#else
-unsigned long gfx_get_cpu_register_base(void)
-#endif
-{
- return gfx_pci_config_read (0x80000918);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_graphics_register_base
- *
- * This routine returns the base address for the graphics acceleration.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu2_get_graphics_register_base(void)
-#else
-unsigned long gfx_get_graphics_register_base(void)
-#endif
-{
- return gfx_pci_config_read (0x80000914);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_frame_buffer_base
- *
- * This routine returns the base address for graphics memory.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu2_get_frame_buffer_base(void)
-#else
-unsigned long gfx_get_frame_buffer_base(void)
-#endif
-{
- return gfx_pci_config_read (0x80000910);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_frame_buffer_size
- *
- * This routine returns the total size of graphics memory, in bytes.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu2_get_frame_buffer_size(void)
-#else
-unsigned long gfx_get_frame_buffer_size(void)
-#endif
-{
- unsigned long value;
-
- /* FRAME BUFFER SIZE IS REPORTED BY A VSM IN VSA II */
- /* Virtual Register Class = 0x02 */
- /* VG_MEM_SIZE (512KB units) = 0x00 */
-
- OUTW (0xAC1C, 0xFC53);
- OUTW (0xAC1C, 0x0200);
-
- value = (unsigned long)(INW (0xAC1E)) & 0xFFl;
-
- return (value << 19);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vid_register_base
- *
- * This routine returns the base address for the video hardware.
- *-----------------------------------------------------------------------------
- */
-#if GFX_INIT_DYNAMIC
-unsigned long gu2_get_vid_register_base(void)
-#else
-unsigned long gfx_get_vid_register_base(void)
-#endif
-{
- return gfx_pci_config_read (0x8000091C);
-}
-
-
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/msr_rdcl.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/msr_rdcl.c
deleted file mode 100644
index 8c54f86cd..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/msr_rdcl.c
+++ /dev/null
@@ -1,715 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/msr_rdcl.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: msr_rdcl.c $
- *
- * This file contains MSR access routines for Redcloud.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-void redcloud_build_mbus_tree(void); /* private routine definition */
-int redcloud_init_msr_devices(MSR aDev[], unsigned int array_size); /* private routine definition */
-DEV_STATUS redcloud_find_msr_device (MSR *pDev); /* private routine definition */
-
-
-/* REDCLOUD MSR BITMASKS */
-
-#define MBD_MSR_CAP 0x2000
-#define MSR_CAP_ID_MASK 0xFF000
-#define MSR_CAP_ID_SHIFT 12
-#define MSR_CAP_REV_MASK 0x0F
-#define MBIU_CAP 0x86
-#define NUM_PORTS_MASK 0x00380000
-#define NUM_PORTS_SHIFT 19
-#define MBIU_WHOAMI 0x8B
-#define WHOAMI_MASK 0x07
-
-/* REDCLOUD and CS5535 MSR DEVICES */
-
-MSR msrDev[] = {
- { FOUND, RC_CC_MBIU, RC_MB0_MBIU0 },
- { FOUND, RC_CC_MBIU, RC_MB0_MBIU1 },
- { NOT_KNOWN, RC_CC_MCP , FAKE_ADDRESS },
- { NOT_KNOWN, RC_CC_MPCI, FAKE_ADDRESS },
- { NOT_KNOWN, RC_CC_MC , FAKE_ADDRESS },
- { NOT_KNOWN, RC_CC_GP , FAKE_ADDRESS },
- { NOT_KNOWN, RC_CC_VG , FAKE_ADDRESS },
- { NOT_KNOWN, RC_CC_DF , FAKE_ADDRESS },
- { NOT_KNOWN, RC_CC_FG , FAKE_ADDRESS },
- { FOUND, RC_CC_VA , RC_MB0_CPU },
- { FOUND, CP_CC_MBIU, CP_MB0_MBIU0 },
- { NOT_KNOWN, CP_CC_MPCI, FAKE_ADDRESS },
- { NOT_KNOWN, CP_CC_USB2, FAKE_ADDRESS },
- { NOT_KNOWN, CP_CC_ATAC, FAKE_ADDRESS },
- { NOT_KNOWN, CP_CC_MDD , FAKE_ADDRESS },
- { NOT_KNOWN, CP_CC_ACC , FAKE_ADDRESS },
- { NOT_KNOWN, CP_CC_USB1, FAKE_ADDRESS },
- { NOT_KNOWN, CP_CC_MCP , FAKE_ADDRESS },
-};
-#define NUM_DEVS sizeof(msrDev) / sizeof(struct msr)
-
-/* CAPISTRANO DEVICE INDEX LIMITS */
-/* These defines represent the start and stop indexes into the device array */
-/* for all Capistrano devices. These should be updated whenever a device is */
-/* added or removed to the Capistrano list. */
-
-#define CP_INDEX_START CP_ID_MBIU
-#define CP_INDEX_STOP CP_ID_MCP
-
-/* GLOBAL MBUS CACHE STRUCTURES */
-/* These structures contain a "cached" copy of the MBUS topology */
-/* for easy future lookup. */
-
-MBUS_NODE MBIU0[8], MBIU1[8], MBIU2[8];
-
-/* REGISTER MACROS */
-
-#define GET_DEVICE_ID( CAPABILITIES_HIGH, CAPABILITIES_LOW ) \
- ((unsigned int)(( (CAPABILITIES_LOW) & MSR_CAP_ID_MASK ) >> MSR_CAP_ID_SHIFT ))
-
-#define GET_NUM_PORTS( MBIU_CAP_HIGH, MBIU_CAP_LOW ) (((MBIU_CAP_HIGH) & NUM_PORTS_MASK ) >> NUM_PORTS_SHIFT)
-
-/*-----------------------------------------------------------------------------
- * gfx_msr_init
- *
- * This routine initializes the base addresses of all known MBUS devices.
- *-----------------------------------------------------------------------------
- */
-#if GFX_MSR_DYNAMIC
-int redcloud_msr_init(void)
-#else
-int gfx_msr_init(void)
-#endif
-{
- Q_WORD msrValue;
- int return_value = 1;
-
- /* CHECK FOR VALID MBUS CONFIGURATION */
- /* The CPU and the two MBIUs are assumed to be at known static addresses, so */
- /* we will check the device IDs at these addresses as proof of a valid mbus */
- /* configuration. */
-
- MSR_READ (MBD_MSR_CAP, RC_MB0_CPU, &(msrValue.high), &(msrValue.low));
- if (GET_DEVICE_ID (msrValue.high, msrValue.low) != RC_CC_VA)
- return_value = 0;
-
- MSR_READ (MBD_MSR_CAP, RC_MB0_MBIU0, &(msrValue.high), &(msrValue.low));
- if (GET_DEVICE_ID (msrValue.high, msrValue.low) != RC_CC_MBIU)
- return_value = 0;
-
- MSR_READ (MBD_MSR_CAP, RC_MB0_MBIU1, &(msrValue.high), &(msrValue.low));
- if (GET_DEVICE_ID (msrValue.high, msrValue.low) != RC_CC_MBIU)
- return_value = 0;
-
- /* ENUMERATE VALID BUS */
- /* If all static devices were identified, continue with the enumeration */
-
- if (return_value)
- {
- /* OPTIMIZATION */
- /* Build a local copy of the MBUS topology. This allows us to */
- /* quickly search the entire MBUS for a given device ID without */
- /* repeated MSR accesses. */
-
- redcloud_build_mbus_tree ();
-
- /* INITIALIZE MSR DEVICES */
-
- return_value = redcloud_init_msr_devices (msrDev, NUM_DEVS);
-
- }
-
- return return_value;
-
-}
-
-/*--------------------------------------------------------------------------
- * void redcloud_build_mbus_tree() (PRIVATE ROUTINE - NOT PART OF DURANGO API)
- *
- * This routine walks through the MBUS and records the address value and
- * device ID found at each node. If a node (aka port) is not populated,
- * that node returns '0'. The deviceID for that node is set to '0'
- * (NOT_POPULATED) to reflect this. If the node being queried points back to
- * Vail or MBIU0, the deviceID for that node is set to 'REFLECTIVE'. Reflective
- * nodes are nodes that forward the given MBUS address BACK to the initiator.
- *-----------------------------------------------------------------------------
- */
-void redcloud_build_mbus_tree(void)
-{
- unsigned long mbiu_port_count, reflective;
- unsigned long port;
- Q_WORD msrValue;
-
- /* */
- /* ENUMERATE MBIU0 */
- /* */
-
- /* COUNT MBIU PORTS */
-
- MSR_READ (MBIU_CAP, RC_MB0_MBIU0, &(msrValue.high), &(msrValue.low));
- mbiu_port_count = GET_NUM_PORTS (msrValue.high, msrValue.low);
-
- /* FIND REFLECTIVE PORT */
- /* Query the MBIU for the port through which we are communicating. */
- /* We will avoid accesses to this port to avoid a self-reference. */
-
- MSR_READ (MBIU_WHOAMI, RC_MB0_MBIU0, &(msrValue.high), &(msrValue.low));
- reflective = msrValue.low & WHOAMI_MASK;
-
- /* ENUMERATE ALL PORTS */
- /* For every possible port, set the MBIU.deviceId to something. */
-
- for (port = 0; port < 8; port++)
- {
- /* FILL IN CLAIMED FIELD */
- /* All MBIU ports can only be assigned to one device from the */
- /* Durango table */
-
- MBIU0[port].claimed = 0;
-
- /* MBIU0 PORT NUMBERS ARE IN ADDRESS BITS 31:29 */
-
- MBIU0[port].address = port << 29;
-
- /* SPECIAL CASE FOR MBIU0 */
- /* MBIU0 port 0 is a special case, as it points back to MBIU0. MBIU0 */
- /* responds at address 0x40000xxx, which does not equal 0 << 29. */
-
- if (port == 0) MBIU0[port].deviceId = RC_CC_MBIU;
- else if (port == reflective) MBIU0[port].deviceId = REFLECTIVE;
- else if (port > mbiu_port_count) MBIU0[port].deviceId = NOT_POPULATED;
- else
- {
- MSR_READ (MBD_MSR_CAP, MBIU0[port].address, &(msrValue.high), &(msrValue.low));
- MBIU0[port].deviceId = GET_DEVICE_ID (msrValue.high, msrValue.low);
- }
- }
-
- /* */
- /* ENUMERATE MBIU1 */
- /* */
-
- /* COUNT MBIU PORTS */
-
- MSR_READ (MBIU_CAP, RC_MB0_MBIU1, &(msrValue.high), &(msrValue.low));
- mbiu_port_count = GET_NUM_PORTS (msrValue.high, msrValue.low);
-
- /* FIND REFLECTIVE PORT */
- /* Query the MBIU for the port through which we are communicating. */
- /* We will avoid accesses to this port to avoid a self-reference. */
-
- MSR_READ (MBIU_WHOAMI, RC_MB0_MBIU1, &(msrValue.high), &(msrValue.low));
- reflective = msrValue.low & WHOAMI_MASK;
-
- /* ENUMERATE ALL PORTS */
- /* For every possible port, set the MBIU.deviceId to something. */
-
- for (port = 0; port < 8; port++)
- {
- /* FILL IN CLAIMED FIELD */
- /* All MBIU ports can only be assigned to one device from the */
- /* Durango table */
-
- MBIU1[port].claimed = 0;
-
- /* MBIU1 PORT NUMBERS ARE IN 28:26 AND 31:29 = 010B */
-
- MBIU1[port].address = (0x02l << 29) + (port << 26);
-
- if (port == reflective) MBIU1[port].deviceId = REFLECTIVE;
- else if (port > mbiu_port_count) MBIU1[port].deviceId = NOT_POPULATED;
- else
- {
- MSR_READ (MBD_MSR_CAP, MBIU1[port].address, &(msrValue.high), &(msrValue.low));
- MBIU1[port].deviceId = GET_DEVICE_ID (msrValue.high, msrValue.low);
- }
- }
-
- /* */
- /* ENUMERATE MBIU2 (CS5535) */
- /* (if present) */
-
- MSR_READ (MBD_MSR_CAP, CP_MB0_MBIU0, &(msrValue.high), &(msrValue.low));
- if (GET_DEVICE_ID (msrValue.high, msrValue.low) == CP_CC_MBIU)
- {
- /* COUNT MBIU PORTS */
-
- MSR_READ (MBIU_CAP, CP_MB0_MBIU0, &(msrValue.high), &(msrValue.low));
- mbiu_port_count = GET_NUM_PORTS (msrValue.high, msrValue.low);
-
- /* FIND REFLECTIVE PORT */
- /* Query the MBIU for the port through which we are communicating. */
- /* We will avoid accesses to this port to avoid a self-reference. */
-
- MSR_READ (MBIU_WHOAMI, CP_MB0_MBIU0, &(msrValue.high), &(msrValue.low));
- reflective = msrValue.low & WHOAMI_MASK;
-
- /* ENUMERATE ALL PORTS */
- /* For every possible port, set the MBIU.deviceId to something. */
-
- for (port = 0; port < 8; port++)
- {
- /* FILL IN CLAIMED FIELD */
- /* All MBIU ports can only be assigned to one device from the */
- /* Durango table */
-
- MBIU2[port].claimed = 0;
-
- /* MBIU2 PORT NUMBERS ARE IN 22:20 AND 31:23 = 010100010B */
-
- MBIU2[port].address = (0x02l << 29) + (0x04l << 26) + (0x02l << 23) + (port << 20);
-
- if (port == reflective) MBIU2[port].deviceId = REFLECTIVE;
- else if (port > mbiu_port_count) MBIU2[port].deviceId = NOT_POPULATED;
- else
- {
- MSR_READ (MBD_MSR_CAP, MBIU2[port].address, &(msrValue.high), &(msrValue.low));
- MBIU2[port].deviceId = GET_DEVICE_ID (msrValue.high, msrValue.low);
- }
- }
- }
- else
- {
- /* NO 5535 */
- /* If the CS5535 is not installed, fill in the cached table */
- /* with the 'NOT_INSTALLED' flag. Also, fill in the device */
- /* status from NOT_KNOWN to REQ_NOT_INSTALLED. */
-
- for (port = 0; port < 8; port++)
- {
- MBIU2[port].claimed = 0;
- MBIU2[port].deviceId = NOT_INSTALLED;
- MBIU2[port].address = (0x02l << 29) + (0x04l << 26) + (0x02l << 23) + (port << 20);
- }
- for (port = CP_INDEX_START; port <= CP_INDEX_STOP; port++)
- {
- msrDev[port].Present = REQ_NOT_INSTALLED;
- }
- }
-}
-
-/*------------------------------------------------------------------
- * redcloud_init_msr_devices (PRIVATE ROUTINE - NOT PART OF DURANGO API)
-
- * Handles the details of finding each possible device on the MBUS.
- * If a given device is not found, its structure is left uninitialized.
- * If a given device is found, its structure is updated.
- *
- * This init routine only checks for devices in aDev[].
- *
- * Passed:
- * aDev - is a pointer to the array of MBUS devices.
- * arraySize - number of elements in aDev.
- *
- * Returns:
- * 1 - If, for every device, its address was found.
- * 0 - If, for any device, an error was encountered.
- *------------------------------------------------------------------
- */
-int redcloud_init_msr_devices(MSR aDev[], unsigned int array_size)
-{
- unsigned int i, issues = 0;
-
- /* TRY TO FIND EACH ITEM IN THE ARRAY */
-
- for (i = 0; i < array_size; i++)
- {
- /* IGNORE DEVICES THAT ARE ALREADY FOUND */
- /* The addresses for "found" devices are already known. */
-
- if (aDev[i].Present == FOUND || aDev[i].Present == REQ_NOT_INSTALLED)
- continue;
-
- /* TRY TO FIND THE DEVICE ON THE MBUS */
-
- aDev[i].Present = redcloud_find_msr_device (&aDev[i]);
-
- /* INCREMENT ERROR COUNT IF DEVICE NOT FOUND */
-
- if (aDev[i].Present != FOUND)
- issues++;
- }
-
- return (issues == 0);
-}
-
-/*------------------------------------------------------------------
- * redcloud_find_msr_device (PRIVATE ROUTINE - NOT PART OF DURANGO API)
- *
- * Passed:
- * pDev - is a pointer to one element in the array of MBUS devices
- *
- * Returns:
- * FOUND - Device was found and pDev->Address has been updated.
- *
- * REQ_NOT_FOUND - Device was not found and pDev->Address has not
- * been updated.
- *
- *------------------------------------------------------------------
-*/
-DEV_STATUS redcloud_find_msr_device (MSR *pDev)
-{
- unsigned int i;
-
- /* SEARCH DURANGO'S CACHED MBUS TOPOLOGY */
- /* This gets a little tricky. As the only identifier we have for each */
- /* device is the device ID and we have multiple devices of the same type */
- /* MCP, MPCI, USB, etc. we need to make some assumptions based on table */
- /* order. These are as follows: */
- /* 1. All Redcloud nodes are searched first, as we assume that they */
- /* are first in the table. */
- /* 2. If two devices have the same device ID and are found on the same */
- /* device (GX2, CS5535, etc.) we assume that they are listed such */
- /* that the first device in the table with this device ID has a lower */
- /* port address. */
- /* 3. After a device ID has been matched, the port is marked as */
- /* 'claimed', such that future enumerations continue searching the */
- /* GeodeLink topology. */
-
- /* SEARCH MBIU0 */
-
- for (i = 0; i < 8; i++)
- {
- if (MBIU0[i].deviceId == pDev->Id && !(MBIU0[i].claimed))
- {
- MBIU0[i].claimed = 1;
- pDev->Address = MBIU0[i].address;
- return FOUND;
- }
- }
-
- /* SEARCH MBIU1 */
-
- for (i = 0; i < 8; i++)
- {
- if (MBIU1[i].deviceId == pDev->Id && !(MBIU1[i].claimed))
- {
- MBIU1[i].claimed = 1;
- pDev->Address = MBIU1[i].address;
- return FOUND;
- }
- }
-
- /* SEARCH MBIU2 */
-
- for (i = 0; i < 8; i++)
- {
- if (MBIU2[i].deviceId == pDev->Id && !(MBIU2[i].claimed))
- {
- MBIU2[i].claimed = 1;
- pDev->Address = MBIU2[i].address;
- return FOUND;
- }
- }
-
- return REQ_NOT_FOUND;
-}
-
-/*--------------------------------------------------------------------
- * gfx_id_msr_device
- *
- * This routine handles reading the capabilities MSR register (typically 0x2000)
- * and checking if the 'id' field matchs pDev.Id. This routine is
- * used by applications/drivers that need to extend the list of known
- * MBUS devices beyond those known by Durango.
- *
- * Passed:
- * pDev - Pointer to MSR structure containing the device's ID.
- * address - device address.
- *
- * Returns:
- * FOUND - The IDs do match.
- * REQ_NOT_FOUND - There was not a match.
- *
- *--------------------------------------------------------------------
- */
-#if GFX_MSR_DYNAMIC
-DEV_STATUS redcloud_id_msr_device (MSR *pDev, unsigned long address)
-#else
-DEV_STATUS gfx_id_msr_device (MSR *pDev, unsigned long address)
-#endif
-{
- Q_WORD msrValue;
-
- MSR_READ (MBD_MSR_CAP, address, &(msrValue.high), &(msrValue.low));
-
- if (GET_DEVICE_ID (msrValue.high, msrValue.low) == pDev->Id)
- return FOUND;
- else
- return REQ_NOT_FOUND;
-}
-
-/*--------------------------------------------------------------------
- * gfx_get_msr_dev_address
- *
- * This function returns the 32-bit address of the requested device.
- * The device must be a known MBUS device. (It must be in Durango's
- * device table.) DEV_STATUS should be checked to verify that the address
- * was updated.
- *
- *
- * Passed:
- * device - device index of the device in question.
- * *address - ptr to location where address should be stored.
- *
- * Returns:
- * DEV_STATUS of device in question. (NOT_KNOWN if device is out of range.)
- * *address - updated if 'device' is within range
- *
- * Notes:
- * This function should only be called after gfx_msr_init
- *
- *--------------------------------------------------------------------
- */
-#if GFX_MSR_DYNAMIC
-DEV_STATUS redcloud_get_msr_dev_address (unsigned int device, unsigned long *address)
-#else
-DEV_STATUS gfx_get_msr_dev_address (unsigned int device, unsigned long *address)
-#endif
-{
- if (device < NUM_DEVS)
- {
- if (msrDev[device].Present == FOUND)
- *address = msrDev[device].Address;
-
- return msrDev[device].Present;
- }
- return NOT_KNOWN;
-
-}
-
-/*--------------------------------------------------------------------
- * gfx_get_glink_id_at_address
- *
- * This function returns the 16-bit deviceId at the requested address.
- * DEV_STATUS should be checked to make sure that device was updated.
- *
- * Passed:
- * device - ptr to location where device ID should be stored.
- * address - address of desired device ID.
- *
- * Returns:
- * FOUND if address is a valid address, NOT_KNOWN if address cannot be found
- * on the mbus.
- * *device - updated with device Id info.
- *
- * Notes:
- * This function should be called after gfx_msr_init
- *
- *--------------------------------------------------------------------
- */
-#if GFX_MSR_DYNAMIC
-DEV_STATUS redcloud_get_glink_id_at_address(unsigned int *device, unsigned long address)
-#else
-DEV_STATUS gfx_get_glink_id_at_address(unsigned int *device, unsigned long address)
-#endif
-{
- int port;
-
- for (port = 0; port < 8; port++)
- {
- if (MBIU0[port].address == address)
- {
- *device = MBIU0[port].deviceId;
- return FOUND;
- }
- else if (MBIU1[port].address == address)
- {
- *device = MBIU1[port].deviceId;
- return FOUND;
- }
- else if (MBIU2[port].address == address)
- {
- *device = MBIU2[port].deviceId;
- return FOUND;
- }
- }
-
- return NOT_KNOWN;
-
-}
-
-/*--------------------------------------------------------------------
- * gfx_msr_read
- *
- * Performs a 64-bit read from 'msrRegister' in device 'device'. 'device' is
- * an index into Durango's table of known MBUS devices.
- *
- * Returns:
- * FOUND - if no errors were detected and msrValue has been updated.
- * NOT_KNOWN - an error was detected. msrValue is not updated.
- * REQ_NOT_FOUND - 'msrAddress' for 'devID' is unknown. Caller
- * should call msrInit() first. msrValue is not updated.
- * Notes:
- * This function should be called after gfx_msr_init
- *--------------------------------------------------------------------
- */
-#if GFX_MSR_DYNAMIC
-DEV_STATUS redcloud_msr_read (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue)
-#else
-DEV_STATUS gfx_msr_read (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue)
-#endif
-{
- if (device < NUM_DEVS)
- {
- if (msrDev[device].Present == FOUND)
- MSR_READ (msrRegister, msrDev[device].Address, &(msrValue->high), &(msrValue->low));
-
- return msrDev[device].Present;
- }
- return NOT_KNOWN;
-}
-
-/*--------------------------------------------------------------------
- * gfx_msr_write
- *
- * Performs a 64-bit write to 'msrRegister' in device 'devID'.
- *
- * Returns:
- * FOUND - if no errors were detected and msrValue has been updated.
- * NOT_KNOWN - an error was detected. msrValue is not updated.
- * REQ_NOT_FOUND - 'msrAddress' for 'devID' is unknown. Caller
- * should call msrInit() first. msrValue is not updated.
- *
- * Notes:
- * This function is valid to call after initMSR_API()
- *
- *--------------------------------------------------------------------
- */
-#if GFX_MSR_DYNAMIC
-DEV_STATUS redcloud_msr_write (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue)
-#else
-DEV_STATUS gfx_msr_write (unsigned int device, unsigned int msrRegister, Q_WORD *msrValue)
-#endif
-{
- if (device < NUM_DEVS)
- {
- if (msrDev[device].Present == FOUND)
- MSR_WRITE (msrRegister, msrDev[device].Address, &(msrValue->high), &(msrValue->low));
-
- return msrDev[device].Present;
- }
- return NOT_KNOWN;
-}
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/release.txt b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/release.txt
deleted file mode 100644
index 8337322ed..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/release.txt
+++ /dev/null
@@ -1,412 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/release.txt,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-Durango Release Notes
-Version 2.45.00
-Win98/DOS/Linux
-August 29, 2002
-
------------------------------------------------------------------------------
-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 ® 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
------------------------------------------------------------------------------
-
-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.
-* Modifed 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, realy 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 attrubute 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!: Modifed 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 rouines.
-* 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 initilization 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.
------------------------------------------------------------------------------
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu1.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu1.c
deleted file mode 100644
index 14f21d145..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu1.c
+++ /dev/null
@@ -1,1660 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu1.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: rndr_gu1.c $
- *
- * This file contains routines to program the 2D acceleration hardware for
- * the first generation graphics unit (GXLV, SC1200).
- *
- * gfx_set_bpp
- * gfx_set_solid_pattern
- * gfx_set_mono_pattern
- * gfx_set_color_pattern
- * gfx_set_solid_source
- * gfx_set_mono_source
- * gfx_set_raster_operation
- * gfx_pattern_fill
- * gfx_screen_to_screen_blt
- * gfx_screen_to_screen_xblt
- * gfx_color_bitmap_to_screen_blt
- * gfx_color_bitmap_to_screen_xblt
- * gfx_mono_bitmap_to_screen_blt
- * gfx_bresenham_line
- * gfx_wait_until_idle
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#if GFX_NO_IO_IN_WAIT_MACROS
-#define GFX_WAIT_PENDING while(READ_REG16(GP_BLIT_STATUS) & BS_BLIT_PENDING) { ; }
-#define GFX_WAIT_BUSY while(READ_REG16(GP_BLIT_STATUS) & BS_BLIT_BUSY) { ; }
-#define GFX_WAIT_PIPELINE while (READ_REG16(GP_BLIT_STATUS) & BS_PIPELINE_BUSY) { ; }
-#else
-#define GFX_WAIT_PENDING while(READ_REG16(GP_BLIT_STATUS) & BS_BLIT_PENDING) { INB (0x80); }
-#define GFX_WAIT_BUSY while(READ_REG16(GP_BLIT_STATUS) & BS_BLIT_BUSY) { INB (0x80); }
-#define GFX_WAIT_PIPELINE while (READ_REG16(GP_BLIT_STATUS) & BS_PIPELINE_BUSY) { INB (0x80); }
-#endif
-
-void gu1_detect_blt_buffer_base(void);
-
-/*---------------------------------------------------------------------------
- * GFX_SET_BPP
- *
- * This routine sets the bits per pixel value in the graphics engine.
- * It is also stored in a static variable to use in the future calls to
- * the rendering routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_bpp(unsigned short bpp)
-#else
-void gfx_set_bpp(unsigned short bpp)
-#endif
-{
- int control = 0;
- unsigned short pitch = gfx_get_display_pitch();
- GFXbpp = bpp;
-
- /* DETECT BASE ADDRESSES FOR BLT BUFFERS */
- /* Different for 2K or 3K of scratchpad. Also need to calculate */
- /* the number of pixels that can fit in a BLT buffer - need to */
- /* subtract 16 for alignment considerations. The 2K case, for */
- /* example, is 816 bytes wide, allowing 800 pixels in 8 BPP, which */
- /* means rendering operations won't be split for 800x600. */
-
- gu1_detect_blt_buffer_base();
- GFXbufferWidthPixels = GFXbb1Base - GFXbb0Base - 16;
- if( bpp > 8 ) {
- /* If 16bpp, divide GFXbufferWidthPixels by 2 */
- GFXbufferWidthPixels >>= 1;
- }
-
- /* SET THE GRAPHICS CONTROLLER BPP AND PITCH */
- if( bpp > 8 ) {
- /* Set the 16bpp bit if necessary */
- control = BC_16BPP;
- }
- if((gfx_cpu_version == GFX_CPU_PYRAMID) && ( pitch > 2048 )) {
- control |= BC_FB_WIDTH_4096;
- } else if ( pitch > 1024) {
- control |= BC_FB_WIDTH_2048;
- }
- GFX_WAIT_BUSY;
- WRITE_REG32(GP_BLIT_STATUS, control);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_SOLID_SOURCE
-//
-// This routine is used to specify a solid source color. For the Xfree96
-// display driver, the source color is used to specify a planemask and the
-// ROP is adjusted accordingly.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_solid_source(unsigned long color)
-#else
-void gfx_set_solid_source(unsigned long color)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* FORMAT 8 BPP COLOR */
- /* GX requires 8BPP color data be duplicated into bits [15:8]. */
-
- if (GFXbpp == 8)
- {
- color &= 0x00FF;
- color |= (color << 8);
- }
-
- /* POLL UNTIL ABLE TO WRITE THE SOURCE COLOR */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_SRC_COLOR_0, (unsigned short) color);
- WRITE_REG16(GP_SRC_COLOR_1, (unsigned short) color);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_MONO_SOURCE
-//
-// This routine is used to specify the monochrome source colors.
-// It must be called *after* loading any pattern data (those routines
-// clear the source flags).
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
- unsigned short transparent)
-#else
-void gfx_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
- unsigned short transparent)
-#endif
-{
- /* SET TRANSPARENCY FLAG */
-
- GFXsourceFlags = transparent ? RM_SRC_TRANSPARENT : 0;
-
- /* FORMAT 8 BPP COLOR */
- /* GX requires 8BPP color data be duplicated into bits [15:8]. */
-
- if (GFXbpp == 8)
- {
- bgcolor &= 0x00FF;
- bgcolor |= (bgcolor << 8);
- fgcolor &= 0x00FF;
- fgcolor |= (fgcolor << 8);
- }
-
- /* POLL UNTIL ABLE TO WRITE THE SOURCE COLOR */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_SRC_COLOR_0, (unsigned short) bgcolor);
- WRITE_REG16(GP_SRC_COLOR_1, (unsigned short) fgcolor);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_SOLID_PATTERN
-//
-// This routine is used to specify a solid pattern color. It is called
-// before performing solid rectangle fills or more complicated BLTs that
-// use a solid pattern color.
-//
-// The driver should always call "gfx_load_raster_operation" after a call
-// to this routine to make sure that the pattern flags are set appropriately.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_solid_pattern(unsigned long color)
-#else
-void gfx_set_solid_pattern(unsigned long color)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- GFXpatternFlags = 0;
-
- /* FORMAT 8 BPP COLOR */
- /* GX requires 8BPP color data be duplicated into bits [15:8]. */
-
- if (GFXbpp == 8)
- {
- color &= 0x00FF;
- color |= (color << 8);
- }
-
- /* SAVE THE REFORMATTED COLOR FOR LATER */
- /* Used to call the "GFX_solid_fill" routine for special cases. */
-
- GFXsavedColor = color;
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLOR */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_PAT_COLOR_0, (unsigned short) color);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_MONO_PATTERN
-//
-// This routine is used to specify a monochrome pattern.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned char transparent)
-#else
-void gfx_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned char transparent)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- GFXpatternFlags = transparent ? RM_PAT_MONO | RM_PAT_TRANSPARENT :
- RM_PAT_MONO;
-
- /* FORMAT 8 BPP COLOR */
- /* GXm requires 8BPP color data be duplicated into bits [15:8]. */
-
- if (GFXbpp == 8)
- {
- bgcolor &= 0x00FF;
- bgcolor |= (bgcolor << 8);
- fgcolor &= 0x00FF;
- fgcolor |= (fgcolor << 8);
- }
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLORS AND DATA */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_PAT_COLOR_0, (unsigned short) bgcolor);
- WRITE_REG16(GP_PAT_COLOR_1, (unsigned short) fgcolor);
- WRITE_REG32(GP_PAT_DATA_0, data0);
- WRITE_REG32(GP_PAT_DATA_1, data1);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_COLOR_PATTERN
-//
-// This routine is used to specify a color pattern.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_color_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1,unsigned long data2,unsigned long data3, unsigned char transparent)
-#else
-void gfx_set_color_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned long data2,unsigned long data3,unsigned char transparent)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- GFXpatternFlags = transparent ? RM_PAT_MONO | RM_PAT_TRANSPARENT :
- RM_PAT_MONO;
-
- GFXpatternFlags |= RM_PAT_COLOR;
- /* FORMAT 8 BPP COLOR */
- /* GXm requires 8BPP color data be duplicated into bits [15:8]. */
-
- if (GFXbpp == 8)
- {
- bgcolor &= 0x00FF;
- bgcolor |= (bgcolor << 8);
- fgcolor &= 0x00FF;
- fgcolor |= (fgcolor << 8);
- }
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLORS AND DATA */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_PAT_COLOR_0, (unsigned short) bgcolor);
- WRITE_REG16(GP_PAT_COLOR_1, (unsigned short) fgcolor);
- WRITE_REG32(GP_PAT_DATA_0, data0);
- WRITE_REG32(GP_PAT_DATA_1, data1);
- if (GFXbpp > 8)
- {
- WRITE_REG32(GP_PAT_DATA_2, data2);
- WRITE_REG32(GP_PAT_DATA_3, data3);
- }
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_LOAD_COLOR_PATTERN_LINE
-//
-// This routine is used to load a single line of a 8x8 color pattern.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_load_color_pattern_line (short y, unsigned long *pattern_8x8)
-#else
-void gfx_load_color_pattern_line (short y, unsigned long *pattern_8x8)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- GFXpatternFlags = RM_PAT_COLOR;
-
- y &= 7;
-
- if (GFXbpp > 8)
- pattern_8x8 += (y << 2);
- else
- pattern_8x8 += (y << 1);
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLORS AND DATA */
-
- GFX_WAIT_PENDING;
- WRITE_REG32(GP_PAT_DATA_0, pattern_8x8[0]);
- WRITE_REG32(GP_PAT_DATA_1, pattern_8x8[1]);
- if (GFXbpp > 8)
- {
- WRITE_REG32(GP_PAT_DATA_2, pattern_8x8[2]);
- WRITE_REG32(GP_PAT_DATA_3, pattern_8x8[3]);
- }
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_RASTER_OPERATION
-//
-// This routine loads the specified raster operation. It sets the pattern
-// flags appropriately.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_set_raster_operation(unsigned char rop)
-#else
-void gfx_set_raster_operation(unsigned char rop)
-#endif
-{
- unsigned short rop16;
-
- /* GENERATE 16-BIT VERSION OF ROP WITH PATTERN FLAGS */
-
- rop16 = (unsigned short) rop | GFXpatternFlags;
- if ((rop & 0x33) ^ ((rop >> 2) & 0x33))
- rop16 |= GFXsourceFlags;
-
- /* SAVE ROP FOR LATER COMPARISONS */
- /* Need to have the pattern flags included */
-
- GFXsavedRop = rop16;
-
- /* SET FLAG INDICATING ROP REQUIRES DESTINATION DATA */
- /* True if even bits (0:2:4:6) do not equal the correspinding */
- /* even bits (1:3:5:7). */
-
- GFXusesDstData = ((rop & 0x55) ^ ((rop >> 1) & 0x55));
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLOR */
- /* Only one operation can be pending at a time. */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_RASTER_MODE, rop16);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SOLID_FILL
-//
-// This routine MUST be used when performing a solid rectangle fill with
-// the ROPs of PATCOPY (0xF0), BLACKNESS (0x00), WHITENESS (0xFF), or
-// PATINVERT (0x0F). There is a bug in GXm for these cases that requires a
-// workaround.
-//
-// For BLACKNESS (ROP = 0x00), set the color to 0x0000.
-// For WHITENESS (ROP = 0xFF), set the color to 0xFFFF.
-// For PATINVERT (ROP = 0x0F), invert the desired color.
-//
-// X screen X position (left)
-// Y screen Y position (top)
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// COLOR fill color
-//
-// THIS ROUTINE SHOULD NOT BE DIRECTLY CALLED FROM THE DRIVER. The driver
-// should always use GFX_pattern_fill and let that routine call this one
-// when approipriate. This is to hide quirks specific to MediaGX hardware.
-//---------------------------------------------------------------------------
-*/
-void gu1_solid_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long color)
-{
- unsigned short section;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Only one operation can be pending at a time. */
-
- GFX_WAIT_PENDING;
-
- /* SET REGISTERS TO DRAW RECTANGLE */
-
- WRITE_REG16(GP_DST_XCOOR, x);
- WRITE_REG16(GP_DST_YCOOR, y);
- WRITE_REG16(GP_HEIGHT, height);
- WRITE_REG16(GP_RASTER_MODE, 0x00F0); /* PATCOPY */
- WRITE_REG16(GP_PAT_COLOR_0, (unsigned short) color);
-
- /* CHECK WIDTH FOR GX BUG WORKAROUND */
-
- if (width <= 16)
- {
- /* OK TO DRAW SMALL RECTANGLE IN ONE PASS */
-
- WRITE_REG16(GP_WIDTH, width);
- WRITE_REG16(GP_BLIT_MODE, 0);
- }
- else
- {
- /* DRAW FIRST PART OF RECTANGLE */
- /* Get to a 16 pixel boundary. */
-
- section = 0x10 - (x & 0x0F);
- WRITE_REG16(GP_WIDTH, section);
- WRITE_REG16(GP_BLIT_MODE, 0);
-
- /* POLL UNTIL ABLE TO LOAD THE SECOND RECTANGLE */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_DST_XCOOR, x + section);
- WRITE_REG16(GP_DST_YCOOR, y);
- WRITE_REG16(GP_WIDTH, width - section);
- WRITE_REG16(GP_BLIT_MODE, 0);
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// GFX_PATTERN_FILL
-//
-// This routine is used to fill a rectangular region. The pattern must
-// be previously loaded using one of GFX_load_*_pattern routines. Also, the
-// raster operation must be previously specified using the
-// "GFX_load_raster_operation" routine.
-//
-// X screen X position (left)
-// Y screen Y position (top)
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height)
-#else
-void gfx_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height)
-#endif
-{
- unsigned short section, buffer_width, blit_mode;
-
- /* CHECK IF OPTIMIZED SOLID CASES */
- /* Check all 16 bits of the ROP to include solid pattern flags. */
-
- switch(GFXsavedRop)
- {
- /* CHECK FOR SPECIAL CASES WITHOUT DESTINATION DATA */
- /* Need hardware workaround for fast "burst write" cases. */
-
- case 0x00F0:
- gu1_solid_fill(x, y, width, height, (unsigned short) GFXsavedColor);
- break;
- case 0x000F:
- gu1_solid_fill(x, y, width, height,
- (unsigned short) ~GFXsavedColor);
- break;
- case 0x0000:
- gu1_solid_fill(x, y, width, height, 0x0000);
- break;
- case 0x00FF:
- gu1_solid_fill(x, y, width, height, 0xFFFF);
- break;
-
- /* REMAINING CASES REQUIRE DESTINATION DATA OR NOT SOLID COLOR */
-
- default:
-
- /* DETERMINE BLT MODE VALUE */
- /* Still here for non-solid patterns without destination data. */
-
- blit_mode = GFXusesDstData ? BM_READ_DST_FB0 : 0;
-
- /* SET SOURCE EXPANSION MODE */
- /* If the ROP requires source data, then the source data is all 1's */
- /* and then expanded into the desired color in GP_SRC_COLOR_1. */
-
- blit_mode |= BM_SOURCE_EXPAND;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Write the registers that do not change for each section. */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, height);
-
- /* SINCE ONLY DESTINATION DATA, WE CAN USE BOTH BB0 AND BB1. */
- /* Therefore, width available = BLT buffer width * 2. */
-
- buffer_width = GFXbufferWidthPixels << 1;
-
- /* REPEAT UNTIL FINISHED WITH RECTANGLE */
- /* Perform BLT in vertical sections, as wide as the BLT buffer */
- /* allows. Hardware does not split the operations, so */
- /* software must do it to avoid large scanlines that would */
- /* overflow the BLT buffers. */
-
- while(width > 0)
- {
- /* DETERMINE WIDTH OF SECTION */
-
- if (width > buffer_width) section = buffer_width;
- else section = width;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_DST_XCOOR, x);
- WRITE_REG16(GP_DST_YCOOR, y);
- WRITE_REG16(GP_WIDTH, section);
- WRITE_REG16(GP_BLIT_MODE, blit_mode);
-
- /* ADJUST PARAMETERS FOR NEXT SECTION */
-
- width -= section;
- x += section;
- }
- break;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// GFX_COLOR_PATTERN_FILL
-//
-// This routine is used to render a rectangle using the current raster
-// operation and the specified color pattern. It allows an 8x8 color
-// pattern to be rendered without multiple calls to the gfx_set_color_pattern
-// and gfx_pattern_fill routines.
-//
-// X screen X position (left)
-// Y screen Y position (top)
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *PATTERN pointer to 8x8 color pattern data
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_color_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long *pattern)
-#else
-void gfx_color_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long *pattern)
-#endif
-{
- unsigned short blit_mode, passes, cur_y, pat_y, i;
- unsigned short buffer_width, line_width;
- unsigned short bpp_shift, section, cur_x;
-
- /* SET APPROPRIATE INCREMENT */
-
- bpp_shift = (GFXbpp > 8) ? 2 : 1;
-
- /* SET DESTINATION REQUIRED */
-
- blit_mode = GFXusesDstData ? BM_READ_DST_FB0 : 0;
-
- /* SET SOURCE EXPANSION */
-
- blit_mode |= BM_SOURCE_EXPAND;
-
- /* OVERRIDE RASTER MODE TO FORCE A COLOR PATTERN */
-
- GFX_WAIT_PENDING;
- WRITE_REG16 (GP_RASTER_MODE, (GFXsavedRop & ~RM_PAT_MASK & ~RM_PAT_TRANSPARENT) | RM_PAT_COLOR);
-
- /* WRITE THE REGISTERS THAT DO NOT CHANGE */
- /* If destination data is required, the width and */
- /* x position will be overwritten. */
-
- WRITE_REG16 (GP_HEIGHT, 1);
- WRITE_REG16 (GP_WIDTH, width);
- WRITE_REG16 (GP_DST_XCOOR, x);
-
- /* THE ENTIRE PATTERN WILL NOT BE DRAWN IF THE HEIGHT IS LESS THAN 8 */
-
- passes = (height < 8) ? height : 8;
-
- /* SINCE ONLY DESTINATION DATA, WE CAN USE BOTH BB0 AND BB1. */
- /* Therefore, width available = BLT buffer width * 2. */
-
- buffer_width = GFXbufferWidthPixels << 1;
-
-
- for (i = 0; i < passes; i++)
- {
- pat_y = ((y + i) & 7) << bpp_shift;
- cur_y = y + i;
-
- /* WRITE THE PATTERN DATA FOR THE ACTIVE LINE */
-
- GFX_WAIT_PENDING;
- WRITE_REG32 (GP_PAT_DATA_0, pattern[pat_y]);
- WRITE_REG32 (GP_PAT_DATA_1, pattern[pat_y + 1]);
-
- if (GFXbpp > 8)
- {
- WRITE_REG32 (GP_PAT_DATA_2, pattern[pat_y + 2]);
- WRITE_REG32 (GP_PAT_DATA_3, pattern[pat_y + 3]);
- }
-
- /* SPLIT BLT LINE INTO SECTIONS IF REQUIRED */
- /* If no destination data is required, we can ignore */
- /* the BLT buffers. Otherwise, we must separate the BLT */
- /* so as not to overflow the buffers */
-
- if (blit_mode & BM_READ_DST_BB0)
- {
- line_width = width;
- cur_x = x;
-
- while (line_width)
- {
- section = (line_width > buffer_width) ? buffer_width : line_width;
- cur_y = y + i;
-
- GFX_WAIT_PENDING;
- WRITE_REG16 (GP_DST_XCOOR, cur_x);
- WRITE_REG16 (GP_WIDTH, section);
-
- while (cur_y < y + height)
- {
- GFX_WAIT_PENDING;
- WRITE_REG16 (GP_DST_YCOOR, cur_y);
- WRITE_REG16 (GP_BLIT_MODE, blit_mode);
- cur_y += 8;
- }
-
- cur_x += section;
- line_width -= section;
- }
-
- }
- else
- {
- while (cur_y < y + height)
- {
- GFX_WAIT_PENDING;
- WRITE_REG16 (GP_DST_YCOOR, cur_y);
- WRITE_REG16 (GP_BLIT_MODE, blit_mode);
- cur_y += 8;
- }
- }
-
- }
-
-
- /* RESTORE ORIGINAL ROP AND FLAGS */
-
- GFX_WAIT_PENDING;
- WRITE_REG16 (GP_RASTER_MODE, GFXsavedRop);
-
-}
-
-/*
-//----------------------------------------------------------------------------
-// SCREEN TO SCREEN BLT
-//
-// This routine should be used to perform a screen to screen BLT when the
-// ROP does not require destination data.
-//
-// SRCX screen X position to copy from
-// SRCY screen Y position to copy from
-// DSTX screen X position to copy to
-// DSTY screen Y position to copy to
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height)
-#else
-void gfx_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height)
-#endif
-{
- unsigned short section, buffer_width;
- unsigned short blit_mode;
-
- /* CHECK IF RASTER OPERATION REQUIRES DESTINATION DATA */
-
- blit_mode = GFXusesDstData ? BM_READ_DST_FB1 | BM_READ_SRC_FB :
- BM_READ_SRC_FB;
-
- /* CHECK Y DIRECTION */
- /* Hardware has support for negative Y direction. */
-
- if (dsty > srcy)
- {
- blit_mode |= BM_REVERSE_Y;
- srcy += height - 1;
- dsty += height - 1;
- }
-
- /* CHECK X DIRECTION */
- /* Hardware does not support negative X direction since at the time */
- /* of development all supported resolutions could fit a scanline of */
- /* data at once into the BLT buffers (using both BB0 and BB1). This */
- /* code is more generic to allow for any size BLT buffer. */
-
- if (dstx > srcx)
- {
- srcx += width;
- dstx += width;
- }
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Write the registers that do not change for each section. */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, height);
-
- /* CHECK AVAILABLE BLT BUFFER SIZE */
- /* Can use both BLT buffers if no destination data is required. */
-
- buffer_width = GFXusesDstData ? GFXbufferWidthPixels :
- GFXbufferWidthPixels << 1;
-
- /* REPEAT UNTIL FINISHED WITH RECTANGLE */
- /* Perform BLT in vertical sections, as wide as the BLT buffer allows. */
- /* Hardware does not split the operations, so software must do it to */
- /* avoid large scanlines that would overflow the BLT buffers. */
-
- while(width > 0)
- {
- /* CHECK WIDTH OF CURRENT SECTION */
-
- if (width > buffer_width) section = buffer_width;
- else section = width;
-
- /* PROGRAM REGISTERS THAT ARE THE SAME FOR EITHER X DIRECTION */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_SRC_YCOOR, srcy);
- WRITE_REG16(GP_DST_YCOOR, dsty);
- WRITE_REG16(GP_WIDTH, section);
-
- /* CHECK X DIRECTION */
-
- if (dstx > srcx)
- {
- /* NEGATIVE X DIRECTION */
- /* Still positive X direction within the section. */
-
- srcx -= section;
- dstx -= section;
- WRITE_REG16(GP_SRC_XCOOR, srcx);
- WRITE_REG16(GP_DST_XCOOR, dstx);
- WRITE_REG16(GP_BLIT_MODE, blit_mode);
- }
- else
- {
- /* POSITIVE X DIRECTION */
-
- WRITE_REG16(GP_SRC_XCOOR, srcx);
- WRITE_REG16(GP_DST_XCOOR, dstx);
- WRITE_REG16(GP_BLIT_MODE, blit_mode);
- dstx += section;
- srcx += section;
- }
- width -= section;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// SCREEN TO SCREEN TRANSPARENT BLT
-//
-// This routine should be used to perform a screen to screen BLT when a
-// specified color should by transparent. The only supported ROP is SRCCOPY.
-//
-// SRCX screen X position to copy from
-// SRCY screen Y position to copy from
-// DSTX screen X position to copy to
-// DSTY screen Y position to copy to
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// COLOR transparent color
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned long color)
-#else
-void gfx_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned long color)
-#endif
-{
- unsigned short section, buffer_width;
- unsigned short blit_mode = BM_READ_SRC_FB;
-
- /* CHECK Y DIRECTION */
- /* Hardware has support for negative Y direction. */
-
- if (dsty > srcy)
- {
- blit_mode |= BM_REVERSE_Y;
- srcy += height - 1;
- dsty += height - 1;
- }
-
- /* CHECK X DIRECTION */
- /* Hardware does not support negative X direction since at the time */
- /* of development all supported resolutions could fit a scanline of */
- /* data at once into the BLT buffers (using both BB0 and BB1). This */
- /* code is more generic to allow for any size BLT buffer. */
-
- if (dstx > srcx)
- {
- srcx += width;
- dstx += width;
- }
-
- /* CALCULATE BLT BUFFER SIZE */
- /* Need to use BB1 to store the BLT buffer data. */
-
- buffer_width = GFXbufferWidthPixels;
-
- /* WRITE TRANSPARENCY COLOR TO BLT BUFFER 1 */
-
- if (GFXbpp == 8)
- {
- color &= 0x00FF;
- color |= (color << 8);
- }
- color = (color & 0x0000FFFF) | (color << 16);
-
- /* WAIT UNTIL PIPELINE IS NOT BUSY BEFORE LOADING DATA INTO BB1 */
- /* Need to make sure any previous BLT using BB1 is complete. */
- /* Only need to load 32 bits of BB1 for the 1 pixel BLT that follows. */
-
- GFX_WAIT_BUSY;
- WRITE_SCRATCH32(GFXbb1Base, color);
-
- /* DO BOGUS BLT TO LATCH DATA FROM BB1 */
- /* Already know graphics pipeline is idle. */
- /* Only need to latch data into the holding registers for the current */
- /* data from BB1. A 1 pixel wide BLT will suffice. */
-
- WRITE_REG32(GP_DST_XCOOR, 0);
- WRITE_REG32(GP_SRC_XCOOR, 0);
- WRITE_REG32(GP_WIDTH, 0x00010001);
- WRITE_REG16(GP_RASTER_MODE, 0x00CC);
- WRITE_REG16(GP_BLIT_MODE, BM_READ_SRC_FB | BM_READ_DST_BB1);
-
- /* WRITE REGISTERS FOR REAL SCREEN TO SCREEN BLT */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, height);
- WRITE_REG16(GP_RASTER_MODE, 0x10C6);
- WRITE_REG32(GP_PAT_COLOR_0, 0xFFFFFFFF);
-
- /* REPEAT UNTIL FINISHED WITH RECTANGLE */
- /* Perform BLT in vertical sections, as wide as the BLT buffer allows. */
- /* Hardware does not split the operations, so software must do it to */
- /* avoid large scanlines that would overflow the BLT buffers. */
-
- while(width > 0)
- {
- /* CHECK WIDTH OF CURRENT SECTION */
-
- if (width > buffer_width) section = buffer_width;
- else section = width;
-
- /* PROGRAM REGISTERS THAT ARE THE SAME FOR EITHER X DIRECTION */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_SRC_YCOOR, srcy);
- WRITE_REG16(GP_DST_YCOOR, dsty);
- WRITE_REG16(GP_WIDTH, section);
-
- /* CHECK X DIRECTION */
- /* Again, this must be done in software, and can be removed if the */
- /* display driver knows that the BLT buffers will always be large */
- /* enough to contain an entire scanline of a screen to screen BLT. */
-
- if (dstx > srcx)
- {
- /* NEGATIVE X DIRECTION */
- /* Still positive X direction within the section. */
-
- srcx -= section;
- dstx -= section;
- WRITE_REG16(GP_SRC_XCOOR, srcx);
- WRITE_REG16(GP_DST_XCOOR, dstx);
- WRITE_REG16(GP_BLIT_MODE, blit_mode);
- }
- else
- {
- /* POSITIVE X DIRECTION */
-
- WRITE_REG16(GP_SRC_XCOOR, srcx);
- WRITE_REG16(GP_DST_XCOOR, dstx);
- WRITE_REG16(GP_BLIT_MODE, blit_mode);
- dstx += section;
- srcx += section;
- }
- width -= section;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// COLOR BITMAP TO SCREEN BLT
-//
-// This routine transfers color bitmap data to the screen. For most cases,
-// when the ROP is SRCCOPY, it may be faster to write a separate routine that
-// copies the data to the frame buffer directly. This routine should be
-// used when the ROP requires destination data.
-//
-// Transparency is handled by another routine.
-//
-// SRCX X offset within source bitmap
-// SRCY Y offset within source bitmap
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-// PITCH pitch of bitmap data (bytes between scanlines)
-//----------------------------------------------------------------------------
-*/
-
-#if GFX_2DACCEL_DYNAMIC
-void gu1_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch)
-#else
-void gfx_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch)
-#endif
-{
- unsigned short section, buffer_width;
- unsigned short blit_mode = BM_READ_SRC_BB0;
- unsigned short temp_height;
- unsigned long dword_bytes_needed, bytes_extra;
- unsigned long bpp_shift;
- long array_offset;
-
- /* CHECK SIZE OF BLT BUFFER */
-
- buffer_width = GFXbufferWidthPixels;
-
- /* CHECK IF RASTER OPERATION REQUIRES DESTINATION DATA */
- /* If no destination data, we have twice the room for */
- /* source data. */
-
- if (GFXusesDstData)
- blit_mode |= BM_READ_DST_FB1;
- else
- buffer_width <<= 1;
-
- /* SET THE SCRATCHPAD BASE */
-
- SET_SCRATCH_BASE (GFXbb0Base);
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Write the registers that do not change for each section. */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, 1);
-
- bpp_shift = (GFXbpp + 7) >> 4;
-
- while (width > 0)
- {
- if (width > buffer_width) section = buffer_width;
- else section = width;
-
- dword_bytes_needed = (section << bpp_shift) & ~3l;
- bytes_extra = (section << bpp_shift) & 3l;
-
- temp_height = height;
-
- /* WRITE THE REGISTERS FOR EACH SECTION */
- /* The GX hardware will auto-increment the Y coordinate, meaning */
- /* that we don't have to. */
-
- WRITE_REG16 (GP_WIDTH, section);
- WRITE_REG16 (GP_DST_XCOOR, dstx);
- WRITE_REG16 (GP_DST_YCOOR, dsty);
-
- /* CALCULATE THE BITMAP OFFSET */
-
- array_offset = (unsigned long)srcy * (long)pitch + ((long)srcx << bpp_shift);
-
- while (temp_height--)
- {
- GFX_WAIT_PIPELINE;
-
- /* WRITE ALL DATA TO THE BLT BUFFERS */
- /* The WRITE_SCRATCH_STRING macro assumes that the data begins at the */
- /* scratchpad offset set by the SET_SCRATCH_BASE macro. */
-
- WRITE_SCRATCH_STRING (dword_bytes_needed, bytes_extra, data, array_offset);
- WRITE_REG16 (GP_BLIT_MODE, blit_mode);
-
- array_offset += pitch;
- }
-
- width -= section;
- srcx += section;
- dstx += section;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// COLOR BITMAP TO SCREEN TRANSPARENT BLT
-//
-// This routine transfers color bitmap data to the screen with transparency.
-// The transparent color is specified. The only supported ROP is SRCCOPY,
-// meaning that transparency cannot be applied if the ROP requires
-// destination data (this is a hardware restriction).
-//
-// SRCX X offset within source bitmap
-// SRCY Y offset within source bitmap
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-// PITCH pitch of bitmap data (bytes between scanlines)
-// COLOR transparent color
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch,
- unsigned long color)
-#else
-void gfx_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch,
- unsigned long color)
-#endif
-{
- unsigned short section, buffer_width;
- unsigned short temp_height;
- unsigned long dword_bytes_needed, bytes_extra;
- unsigned long bpp_shift;
- long array_offset;
-
- /* CHECK SIZE OF BLT BUFFER */
-
- buffer_width = GFXbufferWidthPixels;
-
- /* WRITE TRANSPARENCY COLOR TO BLT BUFFER 1 */
-
- if (GFXbpp == 8)
- {
- color &= 0x00FF;
- color |= (color << 8);
- }
- color = (color & 0x0000FFFF) | (color << 16);
-
- /* WAIT UNTIL PIPELINE IS NOT BUSY BEFORE LOADING DATA INTO BB1 */
- /* Need to make sure any previous BLT using BB1 is complete. */
- /* Only need to load 32 bits of BB1 for the 1 pixel BLT that follows. */
-
- GFX_WAIT_PIPELINE;
- GFX_WAIT_PENDING;
- WRITE_SCRATCH32(GFXbb1Base, color);
-
- /* DO BOGUS BLT TO LATCH DATA FROM BB1 */
- /* Already know graphics pipeline is idle. */
- /* Only need to latch data into the holding registers for the current */
- /* data from BB1. A 1 pixel wide BLT will suffice. */
-
- WRITE_REG32(GP_DST_XCOOR, 0);
- WRITE_REG32(GP_SRC_XCOOR, 0);
- WRITE_REG32(GP_WIDTH, 0x00010001);
- WRITE_REG16(GP_RASTER_MODE, 0x00CC);
- WRITE_REG16(GP_BLIT_MODE, BM_READ_SRC_FB | BM_READ_DST_BB1);
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Write the registers that do not change for each section. */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, 1);
- WRITE_REG16(GP_RASTER_MODE, 0x10C6);
- WRITE_REG32(GP_PAT_COLOR_0, 0xFFFFFFFF);
-
- bpp_shift = (GFXbpp + 7) >> 4;
-
- /* SET THE SCRATCHPAD BASE */
-
- SET_SCRATCH_BASE (GFXbb0Base);
-
- while (width > 0)
- {
- if (width > buffer_width) section = buffer_width;
- else section = width;
-
- dword_bytes_needed = (section << bpp_shift) & ~3l;
- bytes_extra = (section << bpp_shift) & 3l;
-
- temp_height = height;
-
- /* WRITE THE REGISTERS FOR EACH SECTION */
- /* The GX hardware will auto-increment the Y coordinate, meaning */
- /* that we don't have to. */
-
- WRITE_REG16 (GP_WIDTH, section);
- WRITE_REG16 (GP_DST_XCOOR, dstx);
- WRITE_REG16 (GP_DST_YCOOR, dsty);
-
- /* CALCULATE THE BITMAP OFFSET */
-
- array_offset = (unsigned long)srcy * (long)pitch + ((long)srcx << bpp_shift);
-
- while (temp_height--)
- {
- GFX_WAIT_PIPELINE;
-
- /* WRITE ALL DATA TO THE BLT BUFFERS */
- /* The WRITE_SCRATCH_STRING macro assumes that the data begins at the */
- /* scratchpad offset set by the SET_SCRATCH_BASE macro. */
-
- WRITE_SCRATCH_STRING (dword_bytes_needed, bytes_extra, data, array_offset);
- WRITE_REG16 (GP_BLIT_MODE, BM_READ_SRC_BB0);
-
- array_offset += pitch;
- }
-
- width -= section;
- srcx += section;
- dstx += section;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// MONOCHROME BITMAP TO SCREEN BLT
-//
-// This routine transfers monochrome bitmap data to the screen.
-//
-// SRCX X offset within source bitmap
-// SRCY Y offset within source bitmap
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-// PITCH pitch of bitmap data (bytes between scanlines)
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, short pitch)
-#else
-void gfx_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, short pitch)
-#endif
-{
- unsigned short section, buffer_width;
- unsigned short blit_mode = BM_READ_SRC_BB0 | BM_SOURCE_EXPAND;
- unsigned short temp_height;
- unsigned long dword_bytes_needed, bytes_extra;
- long array_offset;
-
- /* CHECK IF RASTER OPERATION REQUIRES DESTINATION DATA */
- /* If no destination data, the source data will always fit. */
- /* So, in that event we will set the buffer width to a */
- /* fictitiously large value such that the BLT is never split. */
-
- if (GFXusesDstData)
- {
- buffer_width = GFXbufferWidthPixels;
- blit_mode |= BM_READ_DST_FB1;
- }
- else
- buffer_width = 3200;
-
- /* CHECK IF DATA ALREADY IN BLIT BUFFER */
- /* If the pointer is NULL, data for the full BLT is already there */
- /* WARNING: This could cause problems if destination data is */
- /* involved and it overflows the BLT buffer. Need to remove */
- /* this option and change the drivers to use a temporary buffer. */
-
- if (!data)
- {
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_SRC_XCOOR, srcx & 7);
- WRITE_REG16(GP_DST_XCOOR, dstx);
- WRITE_REG16(GP_DST_YCOOR, dsty);
- WRITE_REG16(GP_WIDTH, width);
- WRITE_REG16(GP_HEIGHT, height);
- WRITE_REG16(GP_BLIT_MODE, blit_mode);
- return;
- }
-
- /* SET THE SCRATCHPAD BASE */
-
- SET_SCRATCH_BASE (GFXbb0Base);
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Write the registers that do not change for each section. */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, 1);
-
- while (width > 0)
- {
- if (width > buffer_width) section = buffer_width;
- else section = width;
-
- /* CALCULATE BYTES NEEDED */
- /* Add 1 for possible alignment issues. */
-
- dword_bytes_needed = ((section + 7 + (srcx & 7)) >> 3) & ~3l;
- bytes_extra = ((section + 7 + (srcx & 7)) >> 3) & 3l;
-
- temp_height = height;
-
- /* WRITE THE REGISTERS FOR EACH SECTION */
- /* The GX hardware will auto-increment the Y coordinate, meaning */
- /* that we don't have to. */
-
- WRITE_REG16 (GP_WIDTH, section);
- WRITE_REG16 (GP_DST_XCOOR, dstx);
- WRITE_REG16 (GP_DST_YCOOR, dsty);
- WRITE_REG16 (GP_SRC_XCOOR, srcx & 7);
-
- /* CALCULATE THE BITMAP OFFSET */
-
- array_offset = (unsigned long)srcy * (long)pitch + ((long)srcx >> 3);
-
- while (temp_height--)
- {
- GFX_WAIT_PIPELINE;
-
- /* WRITE ALL DATA TO THE BLT BUFFERS */
- /* The WRITE_SCRATCH_STRING macro assumes that the data begins at the */
- /* scratchpad offset set by the SET_SCRATCH_BASE macro. */
-
- WRITE_SCRATCH_STRING (dword_bytes_needed, bytes_extra, data, array_offset);
- WRITE_REG16 (GP_BLIT_MODE, blit_mode);
-
- array_offset += pitch;
- }
-
- width -= section;
- srcx += section;
- dstx += section;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// MONOCHROME TEXT BLT
-//
-// This routine transfers contiguous monochrome text data to the screen.
-//
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data)
-#else
-void gfx_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data)
-#endif
-{
- unsigned long dword_bytes_needed, bytes_extra;
- long pitch, buffer_bytes, data_bytes;
-
- /* CALCULATE DATA SIZE */
-
- pitch = (width + 7) >> 3;
- data_bytes = (long)height * pitch;
-
- /* CHECK FOR SIMPLE CASE */
- /* This routine is designed to render a source copy text glyph. If destination */
- /* data is required or the source data will not fit, we will punt the operation */
- /* to the more versatile (and slow) mono bitmap routine. */
-
- if (GFXbpp > 8) buffer_bytes = GFXbufferWidthPixels << 1;
- else buffer_bytes = GFXbufferWidthPixels;
-
- if (GFXusesDstData || data_bytes > buffer_bytes)
- {
- gfx_mono_bitmap_to_screen_blt (0, 0, dstx, dsty, width, height, data, (short)pitch);
- return;
- }
-
- /* SET THE SCRATCHPAD BASE */
-
- SET_SCRATCH_BASE (GFXbb0Base);
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
-
- dword_bytes_needed = data_bytes & ~3l;
- bytes_extra = data_bytes & 3l;
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_HEIGHT, height);
- WRITE_REG16 (GP_WIDTH, width);
- WRITE_REG16 (GP_DST_XCOOR, dstx);
- WRITE_REG16 (GP_DST_YCOOR, dsty);
- WRITE_REG16 (GP_SRC_XCOOR, 0);
-
- /* WRITE ALL DATA TO THE BLT BUFFERS */
- /* The WRITE_SCRATCH_STRING macro assumes that the data begins at the */
- /* scratchpad offset set by the SET_SCRATCH_BASE macro. */
-
- GFX_WAIT_PIPELINE;
-
- WRITE_SCRATCH_STRING (dword_bytes_needed, bytes_extra, data, 0);
- WRITE_REG16 (GP_BLIT_MODE, BM_READ_SRC_BB0 | BM_SOURCE_TEXT);
-}
-
-/*
-//----------------------------------------------------------------------------
-// BRESENHAM LINE
-//
-// This routine draws a vector using the specified Bresenham parameters.
-// Currently this file does not support a routine that accepts the two
-// endpoints of a vector and calculates the Bresenham parameters. If it
-// ever does, this routine is still required for vectors that have been
-// clipped.
-//
-// X screen X position to start vector
-// Y screen Y position to start vector
-// LENGTH length of the vector, in pixels
-// INITERR Bresenham initial error term
-// AXIALERR Bresenham axial error term
-// DIAGERR Bresenham diagonal error term
-// FLAGS VM_YMAJOR, VM_MAJOR_INC, VM_MINOR_INC
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu1_bresenham_line(unsigned short x, unsigned short y,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-#else
-void gfx_bresenham_line(unsigned short x, unsigned short y,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-#endif
-{
- unsigned short vector_mode = flags;
- if (GFXusesDstData) vector_mode |= VM_READ_DST_FB;
-
- /* CHECK NULL LENGTH */
-
- if (!length) return;
-
- /* LOAD THE REGISTERS FOR THE VECTOR */
-
- GFX_WAIT_PENDING;
- WRITE_REG16(GP_DST_XCOOR, x);
- WRITE_REG16(GP_DST_YCOOR, y);
- WRITE_REG16(GP_VECTOR_LENGTH, length);
- WRITE_REG16(GP_INIT_ERROR, initerr);
- WRITE_REG16(GP_AXIAL_ERROR, axialerr);
- WRITE_REG16(GP_DIAG_ERROR, diagerr);
- WRITE_REG16(GP_VECTOR_MODE, vector_mode);
-}
-
-/*---------------------------------------------------------------------------
- * GFX_WAIT_UNTIL_IDLE
- *
- * This routine waits until the graphics engine is idle. This is required
- * before allowing direct access to the frame buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu1_wait_until_idle(void)
-#else
-void gfx_wait_until_idle(void)
-#endif
-{
- GFX_WAIT_BUSY;
-}
-
-/*---------------------------------------------------------------------------
- * GFX_TEST_BLT_PENDING
- *
- * This routine returns 1 if a BLT is pending, meaning that a call to
- * perform a rendering operation would stall. Otherwise it returns 0.
- * It is used by Darwin during random testing to only start a BLT
- * operation when it knows the Durango routines won't spin on graphics
- * (so Darwin can continue to do frame buffer reads and writes).
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-int gu1_test_blt_pending(void)
-#else
-int gfx_test_blt_pending(void)
-#endif
-{
- if(READ_REG16(GP_BLIT_STATUS) & BS_BLIT_PENDING) return(1);
- else return(0);
-}
-
-/*---------------------------------------------------------------------------
- * BLT BUFFERS!!!!!
- *---------------------------------------------------------------------------
- */
-
-/* THE BOOT CODE MUST SET THE BLT BUFFER BASES USING THE "CPU_WRITE" */
-/* INSTRUCTION TO ONE OF THE FOLLOWING VALUES: */
-
-#define BB0_BASE_2K 0x800
-#define BB1_BASE_2K 0xB30
-#define BB0_BASE_3K 0x400
-#define BB1_BASE_3K 0x930
-
-/*---------------------------------------------------------------------------
- * gu1_detect_blt_buffer_base
- *
- * This detection is hidden from the driver by being called from the
- * "gfx_set_bpp" routine.
- *
- * This is fairly ugly for the following reasons:
- *
- * - It is the boot code that must set the BLT buffer bases to the
- * appropriate values and load the scratchpad tags.
- * - The old drivers would also set the base address values to what they
- * knew they should be for the 2K or 3K scratchpad configuration.
- * - Unfortunately, to set the base addresses requires the use of the
- * CPU_WRITE instruction, an instruction specific to GX.
- * - Using the CPU_WRITE instruction requires the use of assembly to
- * produce the appropriate op codes.
- * - Assembly is something that is avoided in Durango because it is not
- * platform independent. Some compilers do not support inline assembly.
- * - Therefore Durango cannot use the CPU_WRITE instruction.
- * - Therefore drivers using Durango must rely on the boot code to set
- * the appropriate values. Durango uses this routine to check where
- * the base addresses have been set.
- * - Unfortunately, it is not as simple as using IO to check for 2K or 3K
- * scratchpad size. In VSA1, even though the boot code may set it for
- * 3K, SoftVGA comes along and resets it to 2K for it's use in text
- * redraws. It used to be that the display driver would set it back
- * to 3K.
- * - So, the Durango code was changed to just always use 2K.
- * - But, the XpressROM code sets it for 3K, and the newer versions of
- * SoftVGA do not interfere with that, so then Durango needs to use
- * the 3K values to work properly.
- * - Therefore, Durango does somewhat of a kludge by writing to directly
- * to the scratchpad at both the 2K and 3K locations, then performing
- * a unobtrusive BLT that loads data into BB0 (the graphics engine
- * always knows the true base). After the BLT, Durango looks to see
- * which location changed to know where the base address is.
- * - This is a relatively simple way to allow Durango to work on old
- * and new platforms without using theCPU_WRITE instructions.
- *
- * To summarize, the BLT buffers are one of the most painful aspects of
- * the GX graphics unit design, and have been removed from future designs
- * (the graphics unit has its own dedicated RAM). Durango has tried to
- * hide the BLT buffer use from the drivers.
- *---------------------------------------------------------------------------
- */
-void gu1_detect_blt_buffer_base(void)
-{
- /* ASSUME 2K */
-
- GFXbb0Base = BB0_BASE_2K;
- GFXbb1Base = BB1_BASE_2K;
-
- /* CHECK IF SCRATCHPAD IS SET TO 3K OR 4K */
- /* Boot code should still set 3K values for 4K. */
-
- if (gfx_gxm_config_read(GXM_CONFIG_GCR) & 0x08)
- {
- /* WRITE DATA TO 3K LOCATION */
-
- GFX_WAIT_BUSY;
- WRITE_SCRATCH32(BB0_BASE_3K, 0xFEEDFACE);
-
- /* HAVE THE GRAPHICS UNIT STORE SOMETHING IN BB0 */
-
- WRITE_REG32(GP_DST_XCOOR, 0x00000000); /* AT (0,0) */
- WRITE_REG32(GP_WIDTH, 0x00010004); /* 4x1 BLT */
- WRITE_REG16(GP_RASTER_MODE, 0x00AA); /* KEEP DST */
- WRITE_REG16(GP_BLIT_MODE, BM_READ_DST_FB0); /* STORE IN BB0 */
-
- /* CHECK 3K LOCATION */
- /* Breaks if data happened to be 0xFEEDFACE - unlikely. */
-
- GFX_WAIT_BUSY;
- if (READ_SCRATCH32(BB0_BASE_3K) != 0xFEEDFACE)
- {
- GFXbb0Base = BB0_BASE_3K;
- GFXbb1Base = BB1_BASE_3K;
- }
- }
-}
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu2.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu2.c
deleted file mode 100644
index 68952ac1e..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu2.c
+++ /dev/null
@@ -1,2208 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/rndr_gu2.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: rndr_gu2.c $
- *
- * This file contains routines to program the 2D acceleration hardware for
- * the second generation graphics unit.
- *
- * Basic rendering routines (common to all Geode processors):
- * gfx_set_bpp
- * gfx_set_solid_pattern
- * gfx_set_mono_pattern
- * gfx_set_color_pattern
- * gfx_set_solid_source
- * gfx_set_mono_source
- * gfx_set_raster_operation
- * gfx_pattern_fill
- * gfx_color_pattern_fill
- * gfx_screen_to_screen_blt
- * gfx_screen_to_screen_xblt
- * gfx_color_bitmap_to_screen_blt
- * gfx_color_bitmap_to_screen_xblt
- * gfx_mono_bitmap_to_screen_blt
- * gfx_bresenham_line
- * gfx_wait_until_idle
- *
- * Extended rendering routines for second generation functionality:
- * gfx2_set_source_stride
- * gfx2_set_destination_stride
- * gfx2_set_pattern_origins
- * gfx2_set_source_transparency
- * gfx2_set_alpha_mode
- * gfx2_set_alpha_value
- * gfx2_pattern_fill
- * gfx2_color_pattern_fill
- * gfx2_screen_to_screen_blt
- * gfx2_mono_expand_blt
- * gfx2_color_bitmap_to_screen_blt
- * gfx2_mono_bitmap_to_screen_blt
- * gfx2_bresenham_line
- * gfx2_sync_to_vblank
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#define GU2_WAIT_PENDING while(READ_GP32(MGP_BLT_STATUS) & MGP_BS_BLT_PENDING)
-#define GU2_WAIT_BUSY while(READ_GP32(MGP_BLT_STATUS) & MGP_BS_BLT_BUSY)
-#define GU2_WAIT_HALF_EMPTY while(!(READ_GP32(MGP_BLT_STATUS) & MGP_BS_HALF_EMPTY))
-
-/* PATTERN SWIZZLES */
-
-#define WORD_SWIZZLE(x) (((x) << 16) | ((x) >> 16))
-#define BYTE_SWIZZLE(x) (((x) << 24) | ((x) >> 24) | (((x) << 8) & 0x00FF0000) | (((x) >> 8) & 0x0000FF00))
-
-/* GLOBAL VARIABLES USED BY THE RENDERING ROUTINES */
-
-unsigned long gu2_bpp;
-unsigned long gu2_pitch = 1280;
-unsigned long gu2_src_pitch = 1280;
-unsigned long gu2_dst_pitch = 1280;
-unsigned long gu2_xshift = 1;
-unsigned long gu2_pattern_origin = 0;
-unsigned long gu2_rop32;
-unsigned long gu2_alpha32 = 0;
-unsigned long gu2_alpha_value = 0;
-unsigned long gu2_alpha_mode = 0;
-unsigned long gu2_alpha_active = 0;
-unsigned short gu2_alpha_blt_mode = 0;
-unsigned short gu2_alpha_vec_mode = 0;
-unsigned short gu2_blt_mode = 0;
-unsigned short gu2_vector_mode = 0;
-unsigned short gu2_bm_throttle = 0;
-unsigned short gu2_vm_throttle = 0;
-int gu2_current_line = 0;
-
-/*---------------------------------------------------------------------------
- * GFX_RESET_PITCH (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine resets all pitches in the graphics engine to one value.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu2_reset_pitch(unsigned short pitch)
-#else
-void gfx_reset_pitch(unsigned short pitch)
-#endif
-{
- gu2_pitch = pitch;
- gu2_dst_pitch = pitch;
- gu2_src_pitch = pitch;
-}
-
-/*---------------------------------------------------------------------------
- * GFX_SET_BPP
- *
- * This routine sets the bits per pixel value in the graphics engine.
- * It is also stored in the static variable "gu2_bpp" to use in the future
- * calls to the rendering routines. That variable contains the hardware
- * specific value to load into the MGP_RASTER_MODE register.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_bpp(unsigned short bpp)
-#else
-void gfx_set_bpp(unsigned short bpp)
-#endif
-{
- GFXbpp = bpp;
-
- /* COVERT TO BPP/FORMAT VALUE */
- /* Save in global to combine with ROP later. */
- /* Could write register here and then use byte access for */
- /* the ROP, but would need to set other 24 bits to make */
- /* sure all are set to their appropriate values. */
-
- switch(bpp)
- {
- case 8: gu2_bpp = MGP_RM_BPPFMT_332; gu2_xshift = 0; break;
- case 12: gu2_bpp = MGP_RM_BPPFMT_4444; gu2_xshift = 1; break;
- case 15: gu2_bpp = MGP_RM_BPPFMT_1555; gu2_xshift = 1; break;
- case 16: gu2_bpp = MGP_RM_BPPFMT_565; gu2_xshift = 1; break;
- case 32: gu2_bpp = MGP_RM_BPPFMT_8888; gu2_xshift = 2; break;
- }
-
- /* SET INITIAL ROP BASED ONLY ON BPP */
- /* Needs to be set before loading any pattern or source colors. */
- /* We must wait for BUSY because these bits are not pipelined */
- /* in the hardware. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_RASTER_MODE, gu2_bpp);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_SOLID_SOURCE
-//
-// This routine is used to specify a solid source color. For the Xfree96
-// display driver, the source color is used to specify a planemask and the
-// ROP is adjusted accordingly.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_solid_source(unsigned long color)
-#else
-void gfx_set_solid_source(unsigned long color)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* WRITE REGISTERS TO SPECIFY SOURCE COLOR */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_SRC_COLOR_FG, color);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_MONO_SOURCE
-//
-// This routine is used to specify the monochrome source colors.
-// It must be called *after* loading any pattern data (those routines
-// clear the source flags).
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
- unsigned short transparent)
-#else
-void gfx_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
- unsigned short transparent)
-#endif
-{
- /* SET TRANSPARENCY FLAG */
-
- GFXsourceFlags = transparent ? MGP_RM_SRC_TRANS : 0;
-
- /* WRITE COLOR VALUES */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_SRC_COLOR_FG, fgcolor);
- WRITE_GP32(MGP_SRC_COLOR_BG, bgcolor);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_SOLID_PATTERN
-//
-// This routine is used to specify a solid pattern color. It is called
-// before performing solid rectangle fills or more complicated BLTs that
-// use a solid pattern color.
-//
-// The driver should always call "gfx_load_raster_operation" after a call
-// to this routine to make sure that the pattern flags are set appropriately.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_solid_pattern(unsigned long color)
-#else
-void gfx_set_solid_pattern(unsigned long color)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- GFXpatternFlags = 0;
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLOR */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_bpp);
- WRITE_GP32(MGP_PAT_COLOR_0, color);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_MONO_PATTERN
-//
-// This routine is used to specify a monochrome pattern.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned char transparent)
-#else
-void gfx_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned char transparent)
-#endif
-{
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- if (transparent)
- GFXpatternFlags = MGP_RM_PAT_MONO | MGP_RM_PAT_TRANS;
- else GFXpatternFlags = MGP_RM_PAT_MONO;
-
- /* POLL UNTIL ABLE TO WRITE THE PATTERN COLOR */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_bpp | GFXpatternFlags);
- WRITE_GP32(MGP_PAT_COLOR_0, bgcolor);
- WRITE_GP32(MGP_PAT_COLOR_1, fgcolor);
- WRITE_GP32(MGP_PAT_DATA_0, data0);
- WRITE_GP32(MGP_PAT_DATA_1, data1);
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_COLOR_PATTERN
-//
-// This routine is used to specify a color pattern.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_color_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1,unsigned long data2,unsigned long data3, unsigned char transparent)
-#else
-void gfx_set_color_pattern(unsigned long bgcolor, unsigned long fgcolor,
- unsigned long data0, unsigned long data1, unsigned long data2,unsigned long data3,unsigned char transparent)
-#endif
-{
- /* REMOVE */
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_LOAD_COLOR_PATTERN_LINE
-//
-// This routine is used to load a single line of a 8x8 color pattern.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_load_color_pattern_line (short y, unsigned long *pattern_8x8)
-
-#else
-void gfx_load_color_pattern_line (short y, unsigned long *pattern_8x8)
-#endif
-{
- unsigned long temp1, temp2, temp3, temp4;
-
- /* CLEAR TRANSPARENCY FLAG */
-
- GFXsourceFlags = 0;
-
- /* SET PATTERN FLAGS */
-
- GFXpatternFlags = MGP_RM_PAT_COLOR;
-
- /* OVERRIDE THE RASTER MODE REGISTER */
- /* If the pattern format is set to anything but color */
- /* before loading the registers, some of the data will */
- /* be duplicated according to the current mode. */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, (gu2_rop32 & ~MGP_RM_PAT_FLAGS) | MGP_RM_PAT_COLOR);
-
- /* LOAD THE PATTERN DATA */
- /* This routine is designed to work in tandem with gfx_pattern_fill. */
- /* It is used for cases when multiple BLTs with color pattern data */
- /* are desired on the same line. It would be inefficient to */
- /* repeatedly call gfx_color_pattern_fill for each single-line BLT. */
- /* So, we will simply replicate the pattern data across all available */
- /* lines such that the pattern y origin plays no part in the BLT. */
-
- /* 8 BPP */
-
- if (gu2_xshift == 0)
- {
- pattern_8x8 += (y & 7) << 1;
- temp1 = BYTE_SWIZZLE(pattern_8x8[0]);
- temp2 = BYTE_SWIZZLE(pattern_8x8[1]);
- WRITE_GP32 (MGP_PAT_DATA_1, temp1);
- WRITE_GP32 (MGP_PAT_DATA_0, temp2);
- WRITE_GP32 (MGP_PAT_COLOR_1, temp1);
- WRITE_GP32 (MGP_PAT_COLOR_0, temp2);
-
- GU2_WAIT_BUSY;
- WRITE_GP32 (MGP_PAT_COLOR_3, temp1);
- WRITE_GP32 (MGP_PAT_COLOR_2, temp2);
- WRITE_GP32 (MGP_PAT_COLOR_5, temp1);
- WRITE_GP32 (MGP_PAT_COLOR_4, temp2);
- }
- else if (gu2_xshift == 1)
- {
- pattern_8x8 += (y & 7) << 2;
- temp1 = WORD_SWIZZLE(pattern_8x8[0]);
- temp2 = WORD_SWIZZLE(pattern_8x8[1]);
- temp3 = WORD_SWIZZLE(pattern_8x8[2]);
- temp4 = WORD_SWIZZLE(pattern_8x8[3]);
-
- WRITE_GP32 (MGP_PAT_COLOR_1, temp1);
- WRITE_GP32 (MGP_PAT_COLOR_0, temp2);
- WRITE_GP32 (MGP_PAT_DATA_1, temp3);
- WRITE_GP32 (MGP_PAT_DATA_0, temp4);
-
- GU2_WAIT_BUSY;
- WRITE_GP32 (MGP_PAT_COLOR_5, temp1);
- WRITE_GP32 (MGP_PAT_COLOR_4, temp2);
- WRITE_GP32 (MGP_PAT_COLOR_3, temp3);
- WRITE_GP32 (MGP_PAT_COLOR_2, temp4);
- }
- else
- {
- pattern_8x8 += (y & 7) << 3;
-
- WRITE_GP32(MGP_PAT_COLOR_1, pattern_8x8[4]);
- WRITE_GP32(MGP_PAT_COLOR_0, pattern_8x8[5]);
- WRITE_GP32(MGP_PAT_DATA_1, pattern_8x8[6]);
- WRITE_GP32(MGP_PAT_DATA_0, pattern_8x8[7]);
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_5, pattern_8x8[0]);
- WRITE_GP32(MGP_PAT_COLOR_4, pattern_8x8[1]);
- WRITE_GP32(MGP_PAT_COLOR_3, pattern_8x8[2]);
- WRITE_GP32(MGP_PAT_COLOR_2, pattern_8x8[3]);
- }
-}
-
-/*
-//---------------------------------------------------------------------------
-// GFX_SET_RASTER_OPERATION
-//
-// This routine loads the specified raster operation. It sets the pattern
-// flags appropriately.
-//---------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_set_raster_operation(unsigned char rop)
-#else
-void gfx_set_raster_operation(unsigned char rop)
-#endif
-{
- /* DISABLE ALPHA BLENDING */
-
- gu2_alpha_active = 0;
-
- /* GENERATE 32-BIT VERSION OF ROP WITH PATTERN FLAGS */
-
- gu2_rop32 = (unsigned long) rop | GFXpatternFlags | gu2_bpp;
-
- /* CHECK IF SOURCE FLAGS SHOULD BE MERGED */
-
- if ((rop & 0x33) ^ ((rop >> 2) & 0x33)) gu2_rop32 |= GFXsourceFlags;
-
- /* SET FLAG INDICATING ROP REQUIRES DESTINATION DATA */
- /* True if even bits (0:2:4:6) do not equal the corresponding */
- /* even bits (1:3:5:7). */
-
- if ((rop & 0x55) ^ ((rop >> 1) & 0x55))
- {
- gu2_blt_mode = MGP_BM_DST_REQ;
- gu2_vector_mode = MGP_VM_DST_REQ;
- }
- else
- {
- gu2_blt_mode = 0;
- gu2_vector_mode = 0;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// GFX_PATTERN_FILL
-//
-// This routine is used to fill a rectangular region. The pattern must
-// be previously loaded using one of GFX_load_*_pattern routines. Also, the
-// raster operation must be previously specified using the
-// "GFX_load_raster_operation" routine.
-//
-// X screen X position (left)
-// Y screen Y position (top)
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height)
-#else
-void gfx_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height)
-#endif
-{
- unsigned long offset = 0, size;
- size = (((unsigned long) width) << 16) | height;
-
- /* CALCULATE STARTING OFFSET */
-
- offset = (unsigned long) y * gu2_pitch +
- (((unsigned long) x) << gu2_xshift);
-
- /* CHECK IF PATTERN ORIGINS NEED TO BE SET */
-
- if (GFXpatternFlags)
- {
- /* COMBINE X AND Y PATTERN ORIGINS WITH OFFSET */
-
- offset |= ((unsigned long) (x & 7)) << 26;
- offset |= ((unsigned long) (y & 7)) << 29;
- }
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_DST_OFFSET, offset);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_pitch);
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode);
-}
-
-/*
-//----------------------------------------------------------------------------
-// GFX_COLOR_PATTERN_FILL
-//
-// This routine is used to render a rectangle using the current raster
-// operation and the specified color pattern. It allows an 8x8 color
-// pattern to be rendered without multiple calls to the gfx_set_color_pattern
-// and gfx_pattern_fill routines.
-//
-// X screen X position (left)
-// Y screen Y position (top)
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *PATTERN pointer to 8x8 color pattern data
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_color_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long *pattern)
-#else
-void gfx_color_pattern_fill(unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, unsigned long *pattern)
-#endif
-{
- /* CALL GFX2 ROUTINE TO AVOID DUPLICATION OF CODE */
-
- unsigned long offset = (unsigned long) y * gu2_pitch +
- (((unsigned long) x) << gu2_xshift);
- unsigned long origin = gu2_pattern_origin;
- unsigned long pitch = gu2_dst_pitch;
- gfx2_set_pattern_origin(x, y);
- gfx2_set_destination_stride((unsigned short) gu2_pitch);
- gfx2_color_pattern_fill(offset, width, height, pattern);
-
- /* RESTORE GFX2 VALUES */
-
- gu2_pattern_origin = origin;
- gu2_dst_pitch = pitch;
-};
-
-/*
-//----------------------------------------------------------------------------
-// SCREEN TO SCREEN BLT
-//
-// This routine should be used to perform a screen to screen BLT when the
-// ROP does not require destination data.
-//
-// SRCX screen X position to copy from
-// SRCY screen Y position to copy from
-// DSTX screen X position to copy to
-// DSTY screen Y position to copy to
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height)
-#else
-void gfx_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height)
-#endif
-{
- unsigned long srcoffset, dstoffset, size;
- unsigned short blt_mode;
- size = (((unsigned long) width) << 16) | height;
-
- /* CALCULATE THE DIRECTION OF THE BLT */
-
- blt_mode = gu2_blt_mode | MGP_BM_SRC_FB;
- if (dstx > srcx)
- {
- blt_mode |= MGP_BM_NEG_XDIR;
- srcx += width - 1;
- dstx += width - 1;
- }
- if (dsty > srcy)
- {
- blt_mode |= MGP_BM_NEG_YDIR;
- srcy += height - 1;
- dsty += height - 1;
- }
-
- /* CALCULATE STARTING OFFSETS */
-
- srcoffset = (unsigned long) srcy * gu2_pitch +
- (((unsigned long) srcx) << gu2_xshift);
- dstoffset = ((unsigned long) dsty * gu2_pitch +
- (((unsigned long) dstx) << gu2_xshift)) & 0xFFFFFF;
-
- /* MERGE PATTERN INFORMATION */
- /* This must be done after the x and y coordinates have been updated, */
- /* as the x and y pattern origins correspond to the first ROPed pixel. */
-
- if (GFXpatternFlags)
- {
- /* COMBINE X AND Y PATTERN ORIGINS WITH OFFSET */
-
- dstoffset |= ((unsigned long) (dstx & 7)) << 26;
- dstoffset |= ((unsigned long) (dsty & 7)) << 29;
- }
-
- /* TURN INTO BYTE ADDRESS IF NEGATIVE X DIRECTION */
- /* This is a quirk of the hardware. */
-
- if (blt_mode & MGP_BM_NEG_XDIR)
- {
- srcoffset += (1 << gu2_xshift) - 1;
- dstoffset += (1 << gu2_xshift) - 1;
- }
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_SRC_OFFSET, srcoffset);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_pitch | (gu2_pitch << 16));
- WRITE_GP16(MGP_BLT_MODE, blt_mode);
-}
-
-/*
-//----------------------------------------------------------------------------
-// SCREEN TO SCREEN TRANSPARENT BLT
-//
-// This routine should be used to perform a screen to screen BLT when a
-// specified color should by transparent. The only supported ROP is SRCCOPY.
-//
-// SRCX screen X position to copy from
-// SRCY screen Y position to copy from
-// DSTX screen X position to copy to
-// DSTY screen Y position to copy to
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// COLOR transparent color
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned long color)
-#else
-void gfx_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned long color)
-#endif
-{
- unsigned long rop32;
-
- /* SAVE ORIGINAL RASTER MODE SETTINGS */
-
- rop32 = gu2_rop32;
-
- /* WRITE REGISTERS TO SPECIFY COLOR TRANSPARENCY */
- /* Match GU1 implementation that only allows SRCCOPY for the ROP. */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_SRC_COLOR_FG, color);
- WRITE_GP32(MGP_SRC_COLOR_BG, 0xFFFFFFFF);
-
- /* SET GLOBAL RASTER SETTINGS */
- /* This is needed, as the screen-to-screen BLT */
- /* routine will overwrite the raster mode register. */
-
- gu2_rop32 = gu2_bpp | MGP_RM_SRC_TRANS | 0xCC;
-
- /* CALL NORMAL SCREEN TO SCREEN BLT ROUTINE */
-
- gfx_screen_to_screen_blt(srcx, srcy, dstx, dsty, width, height);
-
- /* RESTORE GLOBAL RASTER SETTINGS */
-
- gu2_rop32 = rop32;
-}
-
-/*
-//----------------------------------------------------------------------------
-// COLOR BITMAP TO SCREEN BLT
-//
-// This routine transfers color bitmap data to the screen.
-//
-// SRCX X offset within source bitmap
-// SRCY Y offset within source bitmap
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-// PITCH pitch of bitmap data (bytes between scanlines)
-//
-// Transparency is handled by another routine.
-//----------------------------------------------------------------------------
-*/
-
-#if GFX_2DACCEL_DYNAMIC
-void gu2_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch)
-#else
-void gfx_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch)
-#endif
-{
- unsigned long dstoffset, srcoffset, size, bytes;
- unsigned long offset, temp_offset;
- unsigned long dword_bytes, bytes_extra;
- unsigned short blt_mode;
-
- blt_mode = gu2_blt_mode | MGP_BM_SRC_FB;
- size = (((unsigned long) width) << 16) | 1;
-
- /* CALCULATE STARTING OFFSETS */
-
- offset = (unsigned long) srcy * pitch + ((unsigned long)srcx << gu2_xshift);
-
- dstoffset = (unsigned long) dsty * gu2_pitch +
- (((unsigned long) dstx) << gu2_xshift);
-
- /* CHECK IF PATTERN ORIGINS NEED TO BE SET */
-
- if (GFXpatternFlags)
- {
- /* COMBINE X AND Y PATTERN ORIGINS WITH OFFSET */
-
- dstoffset |= ((unsigned long) (dstx & 7)) << 26;
- dstoffset |= ((unsigned long) (dsty & 7)) << 29;
- }
-
- bytes = width << gu2_xshift;
- dword_bytes = bytes & ~0x3L;
- bytes_extra = bytes & 0x3L;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
- /* The source offset is always 0 since we allow misaligned dword reads. */
- /* We must wait for BLT busy because the GP may be executing a screen */
- /* to screen BLT from the scratchpad area. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_pitch);
-
- /* WRITE DATA ONE LINE AT A TIME */
- /* For speed reasons, data is written to an offscreen scratch area and then */
- /* BLTed using a screen to screen BLT. This is similar to the GX1 BLT buffers, but */
- /* slightly more efficient in that we can queue up data while the GP is rendering */
- /* a line. */
-
- while (height--)
- {
- temp_offset = offset;
- srcoffset = gfx_gx2_scratch_base;
- if (gu2_current_line)
- srcoffset += 8192;
-
- GU2_WAIT_PENDING;
- WRITE_GP32 (MGP_SRC_OFFSET, srcoffset);
- WRITE_GP32 (MGP_DST_OFFSET, dstoffset);
- dstoffset += gu2_pitch;
- dstoffset += 0x20000000;
-
- WRITE_FRAME_BUFFER_STRING32 (srcoffset, dword_bytes, data, temp_offset);
- if (bytes_extra)
- {
- temp_offset += dword_bytes;
- srcoffset += dword_bytes;
- WRITE_FRAME_BUFFER_STRING8 (srcoffset, bytes_extra, data, temp_offset);
- }
- WRITE_GP16 (MGP_BLT_MODE, blt_mode);
- offset += pitch;
- gu2_current_line = 1 - gu2_current_line;
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// COLOR BITMAP TO SCREEN TRANSPARENT BLT
-//
-// This routine transfers color bitmap data to the screen with transparency.
-// The transparent color is specified. The only supported ROP is SRCCOPY,
-// meaning that transparency cannot be applied if the ROP requires
-// destination data (this is a hardware restriction).
-//
-// SRCX X offset within source bitmap
-// SRCY Y offset within source bitmap
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-// PITCH pitch of bitmap data (bytes between scanlines)
-// COLOR transparent color
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch,
- unsigned long color)
-#else
-void gfx_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, long pitch,
- unsigned long color)
-#endif
-{
- unsigned long rop32;
-
- /* SAVE EXISTING RASTER MODE SETTINGS */
-
- rop32 = gu2_rop32;
-
- /* WRITE REGISTERS TO SPECIFY COLOR TRANSPARENCY */
- /* Match GU1 implementation that only allows SRCCOPY for the ROP. */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_SRC_COLOR_FG, color);
- WRITE_GP32(MGP_SRC_COLOR_BG, 0xFFFFFFFF);
-
- /* SET GLOBAL RASTER SETTINGS */
- /* This is needed, as the screen-to-screen BLT */
- /* routine will overwrite the raster mode register. */
-
- gu2_rop32 = gu2_bpp | MGP_RM_SRC_TRANS | 0xCC;
-
- /* CALL NORMAL COLOR BITMAP TO SCREEN BLT ROUTINE */
-
- gfx_color_bitmap_to_screen_blt(srcx, srcy, dstx, dsty, width, height,
- data, pitch);
-
- /* RESTORE RASTER SETTINGS */
-
- gu2_rop32 = rop32;
-}
-
-/*
-//----------------------------------------------------------------------------
-// MONOCHROME BITMAP TO SCREEN BLT
-//
-// This routine transfers monochrome bitmap data to the screen.
-//
-// SRCX X offset within source bitmap
-// SRCY Y offset within source bitmap
-// DSTX screen X position to render data
-// DSTY screen Y position to render data
-// WIDTH width of rectangle, in pixels
-// HEIGHT height of rectangle, in scanlines
-// *DATA pointer to bitmap data
-// PITCH pitch of bitmap data (bytes between scanlines)
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, short pitch)
-#else
-void gfx_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data, short pitch)
-#endif
-{
- unsigned long dstoffset, size, bytes;
- unsigned long offset, temp_offset, temp1 = 0, temp2 = 0;
- unsigned long i, j = 0, fifo_lines, dwords_extra, bytes_extra;
- unsigned long shift = 0;
-
- size = (((unsigned long) width) << 16) | height;
-
- /* CALCULATE STARTING OFFSETS */
-
- offset = (unsigned long) srcy * pitch + ((unsigned long)srcx >> 3);
-
- dstoffset = (unsigned long) dsty * gu2_pitch +
- (((unsigned long) dstx) << gu2_xshift);
-
- /* CHECK IF PATTERN ORIGINS NEED TO BE SET */
-
- if (GFXpatternFlags)
- {
- /* COMBINE X AND Y PATTERN ORIGINS WITH OFFSET */
-
- dstoffset |= ((unsigned long) (dstx & 7)) << 26;
- dstoffset |= ((unsigned long) (dsty & 7)) << 29;
- }
-
- bytes = ((srcx & 7) + width + 7) >> 3;
- fifo_lines = bytes >> 5;
- dwords_extra = (bytes & 0x0000001Cl) >> 2;
- bytes_extra = bytes & 0x00000003l;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
- /* The source offset is always 0 since we allow misaligned dword reads. */
- /* Need to wait for busy instead of pending, since hardware clears */
- /* the host data FIFO at the beginning of a BLT. */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_SRC_OFFSET, ((unsigned long) srcx & 7) << 26);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_pitch);
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | MGP_BM_SRC_HOST | MGP_BM_SRC_MONO);
-
- /* WAIT FOR BLT TO BE LATCHED */
-
- GU2_WAIT_PENDING;
-
- /* WRITE ALL OF THE DATA TO THE HOST SOURCE REGISTER */
-
- while (height--)
- {
- temp_offset = offset;
-
- /* WRITE ALL FULL FIFO LINES */
-
- for (i = 0; i < fifo_lines; i++)
- {
- GU2_WAIT_HALF_EMPTY;
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, 8, j, data, temp_offset, temp1);
- temp_offset += 32;
- }
-
- /* WRITE ALL FULL DWORDS */
-
- GU2_WAIT_HALF_EMPTY;
- if (dwords_extra)
- {
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, dwords_extra, i, data, temp_offset, temp1);
- temp_offset += (dwords_extra << 2);
- }
-
- /* WRITE REMAINING BYTES */
-
- shift = 0;
- if (bytes_extra)
- WRITE_GPREG_STRING8 (MGP_HST_SOURCE, bytes_extra, shift, i, data, temp_offset, temp1, temp2);
-
- offset += pitch;
- }
-}
-
-/*---------------------------------------------------------------------------
- * GFX_TEXT_BLT
- *
- * This routine is similar to the gfx_mono_bitmap_to_screen_blt routine
- * but assumes that source data is byte-packed.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu2_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data)
-#else
-void gfx_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
- unsigned short height, unsigned char *data)
-#endif
-{
- unsigned long size, bytes;
- unsigned long dstoffset, temp1 = 0, temp2 = 0, temp_offset = 0;
- unsigned long i, j = 0, fifo_lines, dwords_extra, bytes_extra;
- unsigned long shift;
-
- size = (((unsigned long) width) << 16) | height;
-
- dstoffset = (unsigned long) dsty * gu2_pitch +
- (((unsigned long) dstx) << gu2_xshift);
-
- /* CHECK IF PATTERN ORIGINS NEED TO BE SET */
-
- if (GFXpatternFlags)
- {
- /* COMBINE X AND Y PATTERN ORIGINS WITH OFFSET */
-
- dstoffset |= ((unsigned long) (dstx & 7)) << 26;
- dstoffset |= ((unsigned long) (dsty & 7)) << 29;
- }
-
- /* CALCULATE STARTING OFFSETS */
-
- bytes = ((width + 7) >> 3) * height;
- fifo_lines = bytes >> 5;
- dwords_extra = (bytes & 0x0000001Cl) >> 2;
- bytes_extra = bytes & 0x00000003l;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_SRC_OFFSET, 0);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_pitch);
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | MGP_BM_SRC_HOST |
- MGP_BM_SRC_BP_MONO);
-
- /* WAIT FOR BLT TO BE LATCHED */
-
- GU2_WAIT_PENDING;
-
- /* WRITE ALL FULL FIFO LINES */
-
- for (i = 0; i < fifo_lines; i++)
- {
- GU2_WAIT_HALF_EMPTY;
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, 8, j, data, temp_offset, temp1);
- temp_offset += 32;
- }
-
- /* WRITE ALL FULL DWORDS */
-
- if (dwords_extra || bytes_extra)
- {
- GU2_WAIT_HALF_EMPTY;
- if (dwords_extra)
- {
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, dwords_extra, i, data, temp_offset, temp1);
- temp_offset += (dwords_extra << 2);
- }
- if (bytes_extra)
- {
- shift = 0;
- WRITE_GPREG_STRING8 (MGP_HST_SOURCE, bytes_extra, shift, i, data, temp_offset, temp1, temp2);
- }
- }
-}
-
-/*
-//----------------------------------------------------------------------------
-// BRESENHAM LINE
-//
-// This routine draws a vector using the specified Bresenham parameters.
-// Currently this file does not support a routine that accepts the two
-// endpoints of a vector and calculates the Bresenham parameters. If it
-// ever does, this routine is still required for vectors that have been
-// clipped.
-//
-// X screen X position to start vector
-// Y screen Y position to start vector
-// LENGTH length of the vector, in pixels
-// INITERR Bresenham initial error term
-// AXIALERR Bresenham axial error term
-// DIAGERR Bresenham diagonal error term
-// FLAGS VM_YMAJOR, VM_MAJOR_INC, VM_MINOR_INC
-//----------------------------------------------------------------------------
-*/
-#if GFX_2DACCEL_DYNAMIC
-void gu2_bresenham_line(unsigned short x, unsigned short y,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-#else
-void gfx_bresenham_line(unsigned short x, unsigned short y,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-#endif
-{
- unsigned long offset;
- unsigned long data1 = (((unsigned long) axialerr) << 16) | diagerr;
- unsigned long data2 = (((unsigned long) length) << 16) | initerr;
- unsigned short vector_mode = gu2_vector_mode | flags;
-
- /* CALCULATE STARTING OFFSET */
-
- offset = (unsigned long) y * gu2_pitch +
- (((unsigned long) x) << gu2_xshift);
-
- /* CHECK NULL LENGTH */
-
- if (!length) return;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_DST_OFFSET, offset);
- WRITE_GP32(MGP_VEC_ERR, data1);
- WRITE_GP32(MGP_VEC_LEN, data2);
- WRITE_GP32(MGP_STRIDE, gu2_pitch);
- WRITE_GP16(MGP_VECTOR_MODE, vector_mode);
-}
-
-/*---------------------------------------------------------------------------
- * GFX_WAIT_UNTIL_IDLE
- *
- * This routine waits until the graphics engine is idle. This is required
- * before allowing direct access to the frame buffer.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu2_wait_until_idle(void)
-#else
-void gfx_wait_until_idle(void)
-#endif
-{
- while(READ_GP32(MGP_BLT_STATUS) & MGP_BS_BLT_BUSY);
-}
-
-/*---------------------------------------------------------------------------
- * GFX_TEST_BLT_PENDING
- *
- * This routine returns 1 if a BLT is pending, meaning that a call to
- * perform a rendering operation would stall. Otherwise it returns 0.
- * It is used by Darwin during random testing to only start a BLT
- * operation when it knows the Durango routines won't spin on graphics
- * (so Darwin can continue to do frame buffer reads and writes).
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-int gu2_test_blt_pending(void)
-#else
-int gfx_test_blt_pending(void)
-#endif
-{
- if (READ_GP32(MGP_BLT_STATUS) & MGP_BS_BLT_PENDING) return(1);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * NEW ROUTINES FOR REDCLOUD
- *---------------------------------------------------------------------------
- */
-
-/*---------------------------------------------------------------------------
- * GFX2_SET_SOURCE_STRIDE
- *
- * This routine sets the stride to be used in successive screen to screen
- * BLTs (used by gfx2_screen_to_screen_blt and gfx2_mono_expand_blt).
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_set_source_stride (unsigned short stride)
-#else
-void gfx2_set_source_stride (unsigned short stride)
-#endif
-{
- /* SAVE STRIDE TO BE USED LATER */
-
- gu2_src_pitch = (unsigned long) stride;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SET_DESTINATION_STRIDE
- *
- * This routine sets the stride used when rendering to the screen.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_set_destination_stride(unsigned short stride)
-#else
-void gfx2_set_destination_stride(unsigned short stride)
-#endif
-{
- /* SAVE STRIDE TO BE USED LATER */
-
- gu2_dst_pitch = (unsigned long) stride;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SET_PATTERN_ORIGIN
- *
- * This routine sets the origin within an 8x8 pattern. It is needed if
- * using a monochrome or color pattern (not used for a solid pattern).
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_set_pattern_origin(int x, int y)
-#else
-void gfx2_set_pattern_origin(int x, int y)
-#endif
-{
- /* STORE IN FORMAT THAT CAN BE COMBINED WITH THE DESTINATION OFFSET */
-
- gu2_pattern_origin = (((unsigned long) (x & 7)) << 26) |
- (((unsigned long) (y & 7)) << 29);
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SET_SOURCE_TRANSPARENCY
- *
- * This routine sets the source transparency color and mask to be used
- * in future rendering operations. If both the color and mask are set
- * to zero (normally completely transparent), those values indicate that
- * transparency should be disabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_set_source_transparency(unsigned long color, unsigned long mask)
-#else
-void gfx2_set_source_transparency(unsigned long color, unsigned long mask)
-#endif
-{
- /* WRITE REGISTERS TO SPECIFY COLOR TRANSPARENCY */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_SRC_COLOR_FG, color);
- WRITE_GP32(MGP_SRC_COLOR_BG, mask);
-
- /* SET TRANSPARENCY FLAG */
-
- GFXsourceFlags = (color || mask) ? MGP_RM_SRC_TRANS : 0;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SET_ALPHA_MODE
- *
- * This routine sets the alpha blending mode to be used in successive
- * rendering operations.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_set_alpha_mode(int mode)
-#else
-void gfx2_set_alpha_mode(int mode)
-#endif
-{
- /* SAVE ALPHA MODE FOR LATER */
-
- gu2_alpha_mode = mode;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SET_ALPHA_VALUE
- *
- * This routine sets the alpha value to be used with certain alpha blending
- * modes (ALPHA_MODE_BLEND).
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_set_alpha_value(unsigned char value)
-#else
-void gfx2_set_alpha_value(unsigned char value)
-#endif
-{
- /* SAVE ALPHA VALUE TO BE USED LATER */
-
- gu2_alpha_value = (unsigned long)value;
-
- /* SET GLOBAL FLAG */
- /* gfx2_* routines will use this flag to program alpha values */
- /* appropriately. Normal gfx_* routines will always write */
- /* the current ROP settings. In this way, the alpha mode */
- /* affects only second generation routines. */
-
- gu2_alpha_active = 1;
-
- switch (gu2_alpha_mode)
- {
- case ALPHA_MODE_BLEND:
-
- /* GENERATE 32-BIT VERSION OF RASTER MODE REGISTER */
- /* Pattern data is not involved in the operation. */
-
- gu2_alpha32 = gu2_alpha_value | gu2_bpp;
-
- /* HANDLE SPECIAL CASES FOR ENDPOINTS */
- /* The 8-bit hardware alpha value is always */
- /* interpreted as a fraction. Consequently, there */
- /* is no way to use values of 255 or 0 to exclude */
- /* one of the inputs. */
-
- switch (gu2_alpha_value)
- {
- /* DESTINATION ONLY */
- /* Operation is alpha * A, where A is destination */
- /* and alpha is 1. */
-
- case 0:
-
- gu2_alpha32 |= MGP_RM_SELECT_ALPHA_1 |
- MGP_RM_ALPHA_TIMES_A |
- MGP_RM_ALPHA_TO_RGB |
- MGP_RM_DEST_FROM_CHAN_A;
- break;
-
- /* SOURCE ONLY */
- /* Operation is alpha * A, where A is source and */
- /* alpha is 1. */
-
- case 255:
-
- gu2_alpha32 |= MGP_RM_SELECT_ALPHA_1 |
- MGP_RM_ALPHA_TO_RGB |
- MGP_RM_ALPHA_TIMES_A;
- break;
-
- /* DEFAULT */
- /* Operation is alpha * A + (1 - alpha) * B; */
- /* A is source, B is destination and alpha is the */
- /* programmed 8-bit value. */
-
- default:
-
- gu2_alpha32 |= MGP_RM_SELECT_ALPHA_R |
- MGP_RM_ALPHA_TO_RGB |
- MGP_RM_ALPHA_A_PLUS_BETA_B;
-
- }
-
- /* CHECK IF SOURCE INFORMATION SHOULD BE MERGED */
- /* Alpha value of 0 indicates destination only. */
-
- if (gu2_alpha_value != 0)
- gu2_alpha32 |= GFXsourceFlags;
-
- /* SET FLAG FOR DESTINATION DATA IF NECESSARY */
- /* Alpha value of 255 indicates no destination */
-
- if (gu2_alpha_value != 255)
- {
- gu2_alpha_blt_mode = MGP_BM_DST_REQ;
- gu2_alpha_vec_mode = MGP_VM_DST_REQ;
- }
-
- break;
- }
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_PATTERN_FILL
- *
- * This routine is similar to the gfx_pattern_fill routine, but allows the
- * use of an arbitrary destination stride. The rendering position is
- * also specified as an offset instead of an (x,y) position.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_pattern_fill(unsigned long dstoffset, unsigned short width, unsigned short height)
-#else
-void gfx2_pattern_fill(unsigned long dstoffset, unsigned short width, unsigned short height)
-#endif
-{
- unsigned long size;
-
- size = (((unsigned long) width) << 16) | height;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | gu2_pattern_origin);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch);
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_COLOR_PATTERN_FILL
- *
- * This routine is used to render a rectangle using the current raster
- * operation and the specified color pattern. It allows an 8x8 color
- * pattern to be rendered without multiple calls to the gfx_set_color_pattern
- * and gfx_pattern_fill routines.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_color_pattern_fill(unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned long *pattern)
-#else
-void gfx2_color_pattern_fill(unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned long *pattern)
-#endif
-{
- int pass;
- unsigned long lines, size, patxorigin, patoffset;
-
- /* ONLY USE HW PATTERN ORIGIN FOR THE X DIRECTION */
- /* Y direction handled by referencing proper location in pattern data. */
-
- patxorigin = (gu2_pattern_origin) & 0x1C000000;
-
- /* OVERRIDE PATTERN FLAGS IN ROP TO FORCE COLOR PATTERN */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_RASTER_MODE, (gu2_rop32 & ~MGP_RM_PAT_FLAGS) | MGP_RM_PAT_COLOR);
-
- /* ATTEMPT TO OPTIMIZE */
- /* If possible, we can perform the pattern fill in only a few passes */
- /* This is performed by multiplying the pitch by an appropriate amount. */
- /* Consequently, if the multiplied pitch exceeds 16 bits, this */
- /* optimization is impossible. */
-
- if ((gu2_dst_pitch << (gu2_xshift + 1)) <= 0xFFFF)
- {
- /* HANDLE VARIOUS COLOR DEPTHS DIFFERENTLY */
-
- switch (gu2_xshift)
- {
- case 0: /* 8 BPP */
-
- /* TWO PASSES FOR 8 BPP */
- /* Render every other line per pass by doubling the pitch. */
-
- patoffset = (gu2_pattern_origin >> 28) & 0x0E;
- for (pass = 0; pass < 2; pass++)
- {
- /* CAN WRITE SOME PATTERN REGISTERS WHILE "PENDING" */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | patxorigin);
- lines = (height + 1 - pass) >> 1;
- if (!lines) break;
- size = (((unsigned long) width) << 16) | lines;
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch << 1);
- WRITE_GP32(MGP_PAT_DATA_1, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_DATA_0, BYTE_SWIZZLE (pattern[patoffset+1]));
- patoffset = (patoffset + 4) & 0x0E;
- WRITE_GP32(MGP_PAT_COLOR_1, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_0, BYTE_SWIZZLE (pattern[patoffset+1]));
- patoffset = (patoffset + 4) & 0x0E;
-
- /* NEED TO WAIT UNTIL IDLE FOR COLORS 2 THROUGH 5 */
- /* Those registers are not pipelined. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_3, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_2, BYTE_SWIZZLE (pattern[patoffset+1]));
- patoffset = (patoffset + 4) & 0x0E;
- WRITE_GP32(MGP_PAT_COLOR_5, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_4, BYTE_SWIZZLE (pattern[patoffset+1]));
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-
- /* ADJUST FOR NEXT PASS */
-
- dstoffset += gu2_dst_pitch;
- patoffset = (patoffset + 6) & 0x0E;
- }
- break;
-
- case 1: /* 12, 15, OR 16 BPP */
-
- /* FOUR PASSES FOR 16 BPP */
- /* Render every 4th line per pass by quadrupling the pitch. */
-
- patoffset = (gu2_pattern_origin >> 27) & 0x1C;
- for (pass = 0; pass < 4; pass++)
- {
- /* CAN WRITE SOME PATTERN REGISTERS WHILE "PENDING" */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | patxorigin);
- lines = (height + 3 - pass) >> 2;
- if (!lines) break;
- size = (((unsigned long) width) << 16) | lines;
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch << 2);
- WRITE_GP32(MGP_PAT_COLOR_1, WORD_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_0, WORD_SWIZZLE (pattern[patoffset+1]));
- WRITE_GP32(MGP_PAT_DATA_1, WORD_SWIZZLE (pattern[patoffset+2]));
- WRITE_GP32(MGP_PAT_DATA_0, WORD_SWIZZLE (pattern[patoffset+3]));
- patoffset = (patoffset + 16) & 0x1C;
-
- /* NEED TO WAIT UNTIL IDLE FOR COLORS 2 THROUGH 5 */
- /* Those registers are not pipelined. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_5, WORD_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_4, WORD_SWIZZLE (pattern[patoffset+1]));
- WRITE_GP32(MGP_PAT_COLOR_3, WORD_SWIZZLE (pattern[patoffset+2]));
- WRITE_GP32(MGP_PAT_COLOR_2, WORD_SWIZZLE (pattern[patoffset+3]));
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-
- /* ADJUST FOR NEXT PASS */
-
- dstoffset += gu2_dst_pitch;
- patoffset = (patoffset + 20) & 0x1C;
- }
- break;
-
- case 2: /* 32 BPP */
-
- /* EIGHT PASSES FOR 32 BPP */
- /* Render every 8th line per pass by setting pitch * 8. */
-
- patoffset = (gu2_pattern_origin >> 26) & 0x38;
- for (pass = 0; pass < 8; pass++)
- {
- /* CAN WRITE SOME PATTERN REGISTERS WHILE "PENDING" */
-
- GU2_WAIT_PENDING;
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | patxorigin);
- lines = (height + 7 - pass) >> 3;
- if (!lines) break;
- size = (((unsigned long) width) << 16) | lines;
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch << 3);
- WRITE_GP32(MGP_PAT_COLOR_1, pattern[patoffset+4]);
- WRITE_GP32(MGP_PAT_COLOR_0, pattern[patoffset+5]);
- WRITE_GP32(MGP_PAT_DATA_1, pattern[patoffset+6]);
- WRITE_GP32(MGP_PAT_DATA_0, pattern[patoffset+7]);
-
- /* NEED TO WAIT UNTIL IDLE FOR COLORS 2 THROUGH 5 */
- /* Those registers are not pipelined. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_5, pattern[patoffset]);
- WRITE_GP32(MGP_PAT_COLOR_4, pattern[patoffset+1]);
- WRITE_GP32(MGP_PAT_COLOR_3, pattern[patoffset+2]);
- WRITE_GP32(MGP_PAT_COLOR_2, pattern[patoffset+3]);
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-
- /* ADJUST FOR NEXT PASS */
-
- dstoffset += gu2_dst_pitch;
- patoffset = (patoffset + 8) & 0x38;
- }
- break;
- }
- }
-
- else
- {
- WRITE_GP32 (MGP_STRIDE, gu2_dst_pitch);
-
- switch (gu2_xshift)
- {
- case 0: /* 8 BPP - 4 LINES PER PASS */
-
- patoffset = (gu2_pattern_origin >> 28) & 0x0E;
- while (height)
- {
- lines = height > 4 ? 4 : height;
-
- /* CAN WRITE SOME REGISTERS WHILE PENDING */
-
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | patxorigin);
- WRITE_GP32(MGP_WID_HEIGHT, (((unsigned long) width) << 16) | lines);
- WRITE_GP32(MGP_PAT_DATA_1, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_DATA_0, BYTE_SWIZZLE (pattern[patoffset + 1]));
- patoffset = (patoffset + 2) & 0x0E;
- WRITE_GP32(MGP_PAT_COLOR_1, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_0, BYTE_SWIZZLE (pattern[patoffset + 1]));
- patoffset = (patoffset + 2) & 0x0E;
-
- /* NEED TO WAIT UNTIL IDLE FOR COLORS 2 THROUGH 5 */
- /* Those registers are not pipelined. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_3, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_2, BYTE_SWIZZLE (pattern[patoffset + 1]));
- patoffset = (patoffset + 2) & 0x0E;
- WRITE_GP32(MGP_PAT_COLOR_5, BYTE_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_4, BYTE_SWIZZLE (pattern[patoffset + 1]));
- patoffset = (patoffset + 2) & 0x0E;
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
-
- /* ADJUST FOR NEXT PASS */
-
- dstoffset += gu2_dst_pitch << 2;
- height -= (unsigned short)lines;
- }
- break;
-
- case 1: /* 12, 15 AND 16 BPP - 2 LINES PER PASS */
-
- patoffset = (gu2_pattern_origin >> 27) & 0x1C;
- while (height)
- {
- lines = height > 2 ? 2 : height;
-
- /* CAN WRITE SOME REGISTERS WHILE PENDING */
-
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | patxorigin);
- WRITE_GP32(MGP_WID_HEIGHT, (((unsigned long) width) << 16) | lines);
- WRITE_GP32(MGP_PAT_COLOR_1, WORD_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_0, WORD_SWIZZLE (pattern[patoffset + 1]));
- WRITE_GP32(MGP_PAT_DATA_1, WORD_SWIZZLE (pattern[patoffset + 2]));
- WRITE_GP32(MGP_PAT_DATA_0, WORD_SWIZZLE (pattern[patoffset + 3]));
- patoffset = (patoffset + 4) & 0x1C;
-
- /* NEED TO WAIT UNTIL IDLE FOR COLORS 2 THROUGH 5 */
- /* Those registers are not pipelined. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_5, WORD_SWIZZLE (pattern[patoffset]));
- WRITE_GP32(MGP_PAT_COLOR_4, WORD_SWIZZLE (pattern[patoffset + 1]));
- WRITE_GP32(MGP_PAT_COLOR_3, WORD_SWIZZLE (pattern[patoffset + 2]));
- WRITE_GP32(MGP_PAT_COLOR_2, WORD_SWIZZLE (pattern[patoffset + 3]));
- patoffset = (patoffset + 4) & 0x1C;
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
-
- /* ADJUST FOR NEXT PASS */
-
- dstoffset += gu2_dst_pitch << 1;
- height -= (unsigned short)lines;
- }
- break;
-
- case 2: /* 32 BPP - 1 LINE PER PASS */
-
- patoffset = (gu2_pattern_origin >> 26) & 0x38;
- while (height)
- {
- /* CAN WRITE SOME REGISTERS WHILE PENDING */
-
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | patxorigin);
- WRITE_GP32(MGP_WID_HEIGHT, (((unsigned long) width) << 16) | 1l);
- WRITE_GP32(MGP_PAT_COLOR_1, pattern[patoffset + 4]);
- WRITE_GP32(MGP_PAT_COLOR_0, pattern[patoffset + 5]);
- WRITE_GP32(MGP_PAT_DATA_1, pattern[patoffset + 6]);
- WRITE_GP32(MGP_PAT_DATA_0, pattern[patoffset + 7]);
-
- /* NEED TO WAIT UNTIL IDLE FOR COLORS 2 THROUGH 5 */
- /* Those registers are not pipelined. */
-
- GU2_WAIT_BUSY;
- WRITE_GP32(MGP_PAT_COLOR_5, pattern[patoffset]);
- WRITE_GP32(MGP_PAT_COLOR_4, pattern[patoffset + 1]);
- WRITE_GP32(MGP_PAT_COLOR_3, pattern[patoffset + 2]);
- WRITE_GP32(MGP_PAT_COLOR_2, pattern[patoffset + 3]);
- patoffset = (patoffset + 8) & 0x38;
- WRITE_GP16(MGP_BLT_MODE, gu2_blt_mode | gu2_bm_throttle);
-
- /* ADJUST FOR NEXT PASS */
-
- dstoffset += gu2_dst_pitch ;
- height--;
- }
- break;
- }
-
- }
-
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SCREEN_TO_SCREEN_BLT
- *
- * This routine is similar to the gfx_screen_to_screen_blt routine but
- * allows the use of arbitrary source and destination strides and alpha
- * blending. It also allows the use of an arbitrary ROP with transparency.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_screen_to_screen_blt(unsigned long srcoffset, unsigned long dstoffset,
- unsigned short width, unsigned short height, int flags)
-#else
-void gfx2_screen_to_screen_blt(unsigned long srcoffset, unsigned long dstoffset,
- unsigned short width, unsigned short height, int flags)
-#endif
-{
- unsigned long size, xbytes;
- unsigned short blt_mode;
- size = (((unsigned long) width) << 16) | height;
-
- /* USE ALPHA SETTINGS, IF REQUESTED */
-
- if (gu2_alpha_active)
- blt_mode = gu2_alpha_blt_mode | MGP_BM_SRC_FB;
-
- else
- blt_mode = gu2_blt_mode | MGP_BM_SRC_FB;
-
-
- /* CALCULATE THE DIRECTION OF THE BLT */
- /* Using offsets, so flags from the calling routine are needed. */
-
- if (flags & 1)
- {
- xbytes = (width - 1) << gu2_xshift;
- srcoffset += xbytes;
- dstoffset += xbytes;
- blt_mode |= MGP_BM_NEG_XDIR;
- }
- if (flags & 2)
- {
- srcoffset += (height - 1) * gu2_src_pitch;
- dstoffset += (height - 1) * gu2_dst_pitch;
- blt_mode |= MGP_BM_NEG_YDIR;
- }
-
- /* TURN INTO BYTE ADDRESS IF NEGATIVE X DIRECTION */
- /* This is a quirk of the hardware. */
-
- if (blt_mode & MGP_BM_NEG_XDIR)
- {
- srcoffset += (1 << gu2_xshift) - 1;
- dstoffset += (1 << gu2_xshift) - 1;
- }
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
-
- if (gu2_alpha_active)
- {
- WRITE_GP32(MGP_RASTER_MODE, gu2_alpha32);
- }
- else
- {
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- }
-
- WRITE_GP32(MGP_SRC_OFFSET, srcoffset);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | gu2_pattern_origin);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch | (gu2_src_pitch << 16));
- WRITE_GP16(MGP_BLT_MODE, blt_mode | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_MONO_EXPAND_BLT
- *
- * This routine is similar to the gfx2_screen_to_screen_blt routine but
- * expands monochrome data stored in graphics memory.
- * WARNING: This routine assumes that the regions in graphics memory
- * will not overlap, and therefore does not check the BLT direction.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_mono_expand_blt(unsigned long srcbase, unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width, unsigned short height,
- int byte_packed)
-#else
-void gfx2_mono_expand_blt(unsigned long srcbase, unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width, unsigned short height,
- int byte_packed)
-#endif
-{
- unsigned long size, srcoffset;
- unsigned short blt_mode;
-
- size = (((unsigned long) width) << 16) | height;
-
- /* CALCULATE SOURCE OFFSET */
-
- srcoffset = srcbase + (unsigned long) srcy * gu2_src_pitch;
- srcoffset += srcx >> 3;
- srcoffset |= ((unsigned long) srcx & 7) << 26;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
-
- if (gu2_alpha_active)
- {
- blt_mode = gu2_alpha_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_alpha32);
- }
- else
- {
- blt_mode = gu2_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- }
-
- if (byte_packed) blt_mode |= MGP_BM_SRC_FB | MGP_BM_SRC_BP_MONO | gu2_bm_throttle;
- else blt_mode |= MGP_BM_SRC_FB | MGP_BM_SRC_MONO | gu2_bm_throttle;
-
- WRITE_GP32(MGP_SRC_OFFSET, srcoffset);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | gu2_pattern_origin);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch | (gu2_src_pitch << 16));
- WRITE_GP16(MGP_BLT_MODE, blt_mode);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_COLOR_BITMAP_TO_SCREEN_BLT
- *
- * This routine is similar to the gfx_color_bitmap_to_screen_blt routine
- * but allows the use of an arbitrary destination stride and alpha blending.
- * It also allows the use of an arbitrary ROP with transparency.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width,
- unsigned short height, unsigned char *data, unsigned short pitch)
-#else
-void gfx2_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width,
- unsigned short height, unsigned char *data, unsigned short pitch)
-#endif
-{
- unsigned long size, bytes;
- unsigned long offset, temp_offset;
- unsigned long srcoffset, dword_bytes, bytes_extra;
- unsigned short blt_mode;
-
- size = (((unsigned long) width) << 16) | 1;
-
- /* CALCULATE STARTING OFFSETS */
-
- offset = (unsigned long) srcy * pitch + ((unsigned long)srcx << gu2_xshift);
-
- dstoffset |= gu2_pattern_origin;
-
- bytes = width << gu2_xshift;
- dword_bytes = bytes & ~0x3L;
- bytes_extra = bytes & 0x3L;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
- /* The source offset is always 0 since we allow misaligned dword reads. */
- /* We must wait for BLT busy because the GP may be executing a screen */
- /* to screen BLT from the scratchpad area. */
-
- GU2_WAIT_BUSY;
-
- if (gu2_alpha_active)
- {
- blt_mode = gu2_alpha_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_alpha32);
- }
- else
- {
- blt_mode = gu2_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- }
- blt_mode |= MGP_BM_SRC_FB | gu2_bm_throttle;
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-
- WRITE_GP32(MGP_WID_HEIGHT, size);
-
- /* WRITE DATA ONE LINE AT A TIME */
- /* For speed reasons, data is written to an offscreen scratch area and then */
- /* BLTed using a screen to screen BLT. This is similar to the GX1 BLT buffers, but */
- /* slightly more efficient in that we can queue up data while the GP is rendering */
- /* a line. */
-
- while (height--)
- {
- temp_offset = offset;
- srcoffset = gfx_gx2_scratch_base;
- if (gu2_current_line)
- srcoffset += 8192;
-
- GU2_WAIT_PENDING;
- WRITE_GP32 (MGP_SRC_OFFSET, srcoffset);
- WRITE_GP32 (MGP_DST_OFFSET, dstoffset);
- dstoffset += gu2_dst_pitch;
- dstoffset += 0x20000000;
-
- WRITE_FRAME_BUFFER_STRING32 (srcoffset, dword_bytes, data, temp_offset);
- if (bytes_extra)
- {
- temp_offset += dword_bytes;
- srcoffset += dword_bytes;
- WRITE_FRAME_BUFFER_STRING8 (srcoffset, bytes_extra, data, temp_offset);
- }
- WRITE_GP16 (MGP_BLT_MODE, blt_mode);
- offset += pitch;
- gu2_current_line = 1 - gu2_current_line;
- }
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_TEXT_BLT
- *
- * This routine is similar to the gfx2_mono_bitmap_to_screen_blt routine
- * but assumes that source data is byte-packed.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_text_blt(unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data)
-#else
-void gfx2_text_blt(unsigned long dstoffset, unsigned short width, unsigned short height,
- unsigned char *data)
-#endif
-{
- unsigned long size, bytes;
- unsigned long temp1 = 0, temp2 = 0, temp_offset = 0;
- unsigned long i, j = 0, fifo_lines, dwords_extra, bytes_extra;
- unsigned long shift;
- unsigned short blt_mode;
-
- size = (((unsigned long) width) << 16) | height;
-
- /* CALCULATE STARTING OFFSETS */
-
- bytes = ((width + 7) >> 3) * height;
- fifo_lines = bytes >> 5;
- dwords_extra = (bytes & 0x0000001Cl) >> 2;
- bytes_extra = bytes & 0x00000003l;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
-
- GU2_WAIT_PENDING;
-
- if (gu2_alpha_active)
- {
- blt_mode = gu2_alpha_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_alpha32);
- }
- else
- {
- blt_mode = gu2_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- }
-
- WRITE_GP32(MGP_SRC_OFFSET, 0);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | gu2_pattern_origin);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch);
- WRITE_GP16(MGP_BLT_MODE, blt_mode | MGP_BM_SRC_HOST |
- MGP_BM_SRC_BP_MONO | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-
- /* WAIT FOR BLT TO BE LATCHED */
-
- GU2_WAIT_PENDING;
-
- /* WRITE ALL FULL FIFO LINES */
-
- for (i = 0; i < fifo_lines; i++)
- {
- GU2_WAIT_HALF_EMPTY;
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, 8, j, data, temp_offset, temp1);
- temp_offset += 32;
- }
-
- /* WRITE ALL FULL DWORDS */
-
- if (dwords_extra || bytes_extra)
- {
- GU2_WAIT_HALF_EMPTY;
- if (dwords_extra)
- {
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, dwords_extra, i, data, temp_offset, temp1);
- temp_offset += (dwords_extra << 2);
- }
- if (bytes_extra)
- {
- shift = 0;
- WRITE_GPREG_STRING8 (MGP_HST_SOURCE, bytes_extra, shift, i, data, temp_offset, temp1, temp2);
- }
- }
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_MONO_BITMAP_TO_SCREEN_BLT
- *
- * This routine is similar to the gfx_mono_bitmap_to_screen_blt routine
- * but allows the use of an arbitrary destination stride and alpha blending.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width,
- unsigned short height, unsigned char *data, unsigned short pitch)
-#else
-void gfx2_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
- unsigned long dstoffset, unsigned short width,
- unsigned short height, unsigned char *data, unsigned short pitch)
-#endif
-{
- unsigned long size, bytes;
- unsigned long offset, temp_offset, temp1 = 0, temp2 = 0;
- unsigned long i, j = 0, fifo_lines, dwords_extra, bytes_extra;
- unsigned long shift = 0;
- unsigned short blt_mode;
-
- size = (((unsigned long) width) << 16) | height;
-
- /* CALCULATE STARTING OFFSETS */
-
- offset = (unsigned long) srcy * pitch + ((unsigned long)srcx >> 3);
-
- bytes = ((srcx & 7) + width + 7) >> 3;
- fifo_lines = bytes >> 5;
- dwords_extra = (bytes & 0x0000001Cl) >> 2;
- bytes_extra = bytes & 0x00000003l;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
-
- GU2_WAIT_PENDING;
-
- if (gu2_alpha_active)
- {
- blt_mode = gu2_alpha_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_alpha32);
- }
- else
- {
- blt_mode = gu2_blt_mode;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
- }
-
- WRITE_GP32(MGP_SRC_OFFSET, ((unsigned long) srcx & 7) << 26);
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | gu2_pattern_origin);
- WRITE_GP32(MGP_WID_HEIGHT, size);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch);
- WRITE_GP16(MGP_BLT_MODE, blt_mode | MGP_BM_SRC_HOST |
- MGP_BM_SRC_MONO | gu2_bm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-
- /* WAIT FOR BLT TO BE LATCHED */
-
- GU2_WAIT_PENDING;
-
- /* WRITE ALL OF THE DATA TO THE HOST SOURCE REGISTER */
-
- while (height--)
- {
- temp_offset = offset;
-
- /* WRITE ALL FULL FIFO LINES */
-
- for (i = 0; i < fifo_lines; i++)
- {
- GU2_WAIT_HALF_EMPTY;
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, 8, j, data, temp_offset, temp1);
- temp_offset += 32;
- }
-
- /* WRITE ALL FULL DWORDS */
-
- GU2_WAIT_HALF_EMPTY;
- if (dwords_extra)
- WRITE_GPREG_STRING32 (MGP_HST_SOURCE, dwords_extra, i, data, temp_offset, temp1);
- temp_offset += (dwords_extra << 2);
-
- /* WRITE REMAINING BYTES */
-
- shift = 0;
- if (bytes_extra)
- WRITE_GPREG_STRING8 (MGP_HST_SOURCE, bytes_extra, shift, i, data, temp_offset, temp1, temp2);
-
- offset += pitch;
- }
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_BRESENHAM_LINE
- *
- * This routine is similar to the gfx_bresenam_line routine but allows
- * the use of an arbitrary destination stride.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_bresenham_line(unsigned long dstoffset,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-#else
-void gfx2_bresenham_line(unsigned long dstoffset,
- unsigned short length, unsigned short initerr,
- unsigned short axialerr, unsigned short diagerr,
- unsigned short flags)
-#endif
-{
- unsigned long vector_mode = gu2_vector_mode | flags;
- unsigned long data1 = (((unsigned long) axialerr) << 16) | diagerr;
- unsigned long data2 = (((unsigned long) length) << 16) | initerr;
-
- /* CHECK NULL LENGTH */
-
- if (!length) return;
-
- /* POLL UNTIL ABLE TO WRITE TO THE REGISTERS */
- /* Put off poll for as long as possible (do most calculations first). */
-
- GU2_WAIT_PENDING;
-
- if (gu2_alpha_active)
- {
- vector_mode = gu2_alpha_vec_mode | flags;
-
- WRITE_GP32(MGP_RASTER_MODE, gu2_alpha32);
- }
- else
- WRITE_GP32(MGP_RASTER_MODE, gu2_rop32);
-
-
- WRITE_GP32(MGP_DST_OFFSET, dstoffset | gu2_pattern_origin);
- WRITE_GP32(MGP_VEC_ERR, data1);
- WRITE_GP32(MGP_VEC_LEN, data2);
- WRITE_GP32(MGP_STRIDE, gu2_dst_pitch);
- WRITE_GP32(MGP_VECTOR_MODE, vector_mode | gu2_vm_throttle);
- gu2_bm_throttle = 0;
- gu2_vm_throttle = 0;
-}
-
-/*---------------------------------------------------------------------------
- * GFX2_SYNC_TO_VBLANK
- *
- * This routine sets a flag to synchronize the next rendering routine to
- * VBLANK. The flag is cleared by the rendering routine.
- *---------------------------------------------------------------------------
- */
-#if GFX_2DACCEL_DYNAMIC
-void gu22_sync_to_vblank(void)
-#else
-void gfx2_sync_to_vblank(void)
-#endif
-{
- /* SET FLAGS TO THROTTLE NEXT RENDERING ROUTINE */
-
- gu2_bm_throttle = MGP_BM_THROTTLE;
- gu2_vm_throttle = MGP_VM_THROTTLE;
-}
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/saa7114.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/saa7114.c
deleted file mode 100644
index 31d48abe3..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/saa7114.c
+++ /dev/null
@@ -1,916 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/saa7114.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: saa7114.c $
- *
- * This file contains routines to control the Philips SAA7114 video decoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*---------------------------*/
-/* TABLE OF DEFAULT VALUES */
-/*---------------------------*/
-
-typedef struct tagGFX_SAA7114_INIT
-{
- unsigned char index;
- unsigned char value;
-} GFX_SAA7114_INIT;
-
-/* Task A is for VBI raw data and task B is for video */
-
-GFX_SAA7114_INIT gfx_saa7114_init_values[] = {
- { 0x01, 0x08 }, { 0x02, 0xC0 }, { 0x03, 0x00 }, { 0x04, 0x90 },
- { 0x05, 0x90 }, { 0x06, 0xEB }, { 0x07, 0xE0 }, { 0x08, 0x88 },
- { 0x09, 0x40 }, { 0x0A, 0x80 }, { 0x0B, 0x44 }, { 0x0C, 0x40 },
- { 0x0D, 0x00 }, { 0x0E, 0x89 }, { 0x0F, 0x2E }, { 0x10, 0x0E },
- { 0x11, 0x00 }, { 0x12, 0x05 }, { 0x13, 0x00 }, { 0x14, 0x08 },
- { 0x15, 0x11 }, { 0x16, 0xFE }, { 0x17, 0x00 }, { 0x18, 0x40 },
- { 0x19, 0x80 }, { 0x30, 0xBC }, { 0x31, 0xDF }, { 0x32, 0x02 },
- { 0x34, 0xCD }, { 0x35, 0xCC }, { 0x36, 0x3A }, { 0x38, 0x03 },
- { 0x39, 0x10 }, { 0x3A, 0x00 }, { 0x40, 0x00 }, { 0x41, 0xFF },
- { 0x42, 0xFF }, { 0x43, 0xFF }, { 0x44, 0xFF }, { 0x45, 0xFF },
- { 0x46, 0xFF }, { 0x47, 0xFF }, { 0x48, 0xFF }, { 0x49, 0xFF },
- { 0x4A, 0xFF }, { 0x4B, 0xFF }, { 0x4C, 0xFF }, { 0x4D, 0xFF },
- { 0x4E, 0xFF }, { 0x4F, 0xFF }, { 0x50, 0xFF }, { 0x51, 0xFF },
- { 0x52, 0xFF }, { 0x53, 0xFF }, { 0x54, 0xFF }, { 0x55, 0xFF },
- { 0x56, 0xFF }, { 0x57, 0xFF }, { 0x58, 0x00 }, { 0x59, 0x47 },
- { 0x5A, 0x06 }, { 0x5B, 0x43 }, { 0x5D, 0x3E }, { 0x5E, 0x00 },
- { 0x80, 0x30 }, { 0x83, 0x00 }, { 0x84, 0x60 }, { 0x85, 0x00 },
- { 0x86, 0xE5 }, { 0x87, 0x01 }, { 0x88, 0xF8 },
-
- /* VBI task */
-
- { 0x90, 0x01 }, { 0x91, 0xC8 }, { 0x92, 0x08 }, { 0x93, 0x84 },
- { 0x94, 0x10 }, { 0x95, 0x00 }, { 0x96, 0xD0 }, { 0x97, 0x02 },
- { 0x98, 0x05 }, { 0x99, 0x00 }, { 0x9A, 0x0B }, { 0x9B, 0x00 },
- { 0x9C, 0xA0 }, { 0x9D, 0x05 }, { 0x9E, 0x0B }, { 0x9F, 0x00 },
- { 0xA0, 0x01 }, { 0xA1, 0x00 }, { 0xA2, 0x00 }, { 0xA4, 0x80 },
- { 0xA5, 0x40 }, { 0xA6, 0x40 }, { 0xA8, 0x00 }, { 0xA9, 0x02 },
- { 0xAA, 0x00 }, { 0xAC, 0x00 }, { 0xAD, 0x01 }, { 0xAE, 0x00 },
- { 0xB0, 0x00 }, { 0xB1, 0x04 }, { 0xB2, 0x00 }, { 0xB3, 0x04 },
- { 0xB4, 0x00 }, { 0xB8, 0x00 }, { 0xB9, 0x00 }, { 0xBA, 0x00 },
- { 0xBB, 0x00 }, { 0xBC, 0x00 }, { 0xBD, 0x00 }, { 0xBE, 0x00 },
- { 0xBF, 0x00 },
-
- /* Video task */
-
- { 0xC0, 0x80 }, { 0xC1, 0x08 }, { 0xC2, 0x00 }, { 0xC3, 0x80 },
- { 0xC4, 0x10 }, { 0xC5, 0x00 }, { 0xC6, 0xD0 }, { 0xC7, 0x02 },
- { 0xC8, 0x11 }, { 0xC9, 0x00 }, { 0xCA, 0xF1 }, { 0xCB, 0x00 },
- { 0xCC, 0xD0 }, { 0xCD, 0x02 }, { 0xCE, 0xF1 }, { 0xCF, 0x00 },
- { 0xD0, 0x01 }, { 0xD1, 0x00 }, { 0xD2, 0x00 }, { 0xD4, 0x80 },
- { 0xD5, 0x40 }, { 0xD6, 0x40 }, { 0xD8, 0x00 }, { 0xD9, 0x04 },
- { 0xDA, 0x00 }, { 0xDC, 0x00 }, { 0xDD, 0x02 }, { 0xDE, 0x00 },
- { 0xE0, 0x00 }, { 0xE1, 0x04 }, { 0xE2, 0x00 }, { 0xE3, 0x04 },
- { 0xE4, 0x00 }, { 0xE8, 0x00 }, { 0xE9, 0x00 }, { 0xEA, 0x00 },
- { 0xEB, 0x00 }, { 0xEC, 0x00 }, { 0xED, 0x00 }, { 0xEE, 0x00 },
- { 0xEF, 0x00 },
-};
-
-#define GFX_NUM_SAA7114_INIT_VALUES sizeof(gfx_saa7114_init_values)/sizeof(GFX_SAA7114_INIT)
-
-/*-----------------------------------------------------*/
-/* TABLE OF FIR PREFILTER RECOMMENDED VALUES */
-/*-----------------------------------------------------*/
-
-int optimize_for_aliasing = 0;
-
-typedef struct tagGFX_SAA7114_FIR_PREFILTER
-{
- unsigned char prescaler;
- unsigned char acl_low;
- unsigned char prefilter_low;
- unsigned char acl_high;
- unsigned char prefilter_high;
-} GFX_SAA7114_FIR_PREFILTER;
-
-GFX_SAA7114_FIR_PREFILTER gfx_saa7114_fir_values[] = {
- { 0x01, 0x00, 0x00, 0x00, 0x00 }, { 0x02, 0x02, 0x5A, 0x01, 0x51 },
- { 0x03, 0x04, 0xAB, 0x03, 0xA2 }, { 0x04, 0x07, 0xA3, 0x04, 0xAB },
- { 0x05, 0x08, 0xAC, 0x07, 0xA3 }, { 0x06, 0x08, 0xFC, 0x07, 0xF3 },
- { 0x07, 0x08, 0xFC, 0x07, 0xF3 }, { 0x08, 0x0F, 0xF4, 0x08, 0xFC },
- { 0x09, 0x0F, 0xF4, 0x08, 0xFC }, { 0x0A, 0x10, 0xFD, 0x08, 0xFC },
- { 0x0B, 0x10, 0xFD, 0x08, 0xFC }, { 0x0C, 0x10, 0xFD, 0x08, 0xFC },
- { 0x0D, 0x10, 0xFD, 0x10, 0xFD }, { 0x0E, 0x10, 0xFD, 0x10, 0xFD },
- { 0x0F, 0x1F, 0xF5, 0x10, 0xFD }, { 0x10, 0x20, 0xFE, 0x10, 0xFD },
- { 0x11, 0x20, 0xFE, 0x10, 0xFD }, { 0x12, 0x20, 0xFE, 0x10, 0xFD },
- { 0x13, 0x20, 0xFE, 0x20, 0xFE }, { 0x14, 0x20, 0xFE, 0x20, 0xFE },
- { 0x15, 0x20, 0xFE, 0x20, 0xFE }, { 0x16, 0x20, 0xFE, 0x20, 0xFE },
- { 0x17, 0x20, 0xFE, 0x20, 0xFE }, { 0x18, 0x20, 0xFE, 0x20, 0xFE },
- { 0x19, 0x20, 0xFE, 0x20, 0xFE }, { 0x1A, 0x20, 0xFE, 0x20, 0xFE },
- { 0x1B, 0x20, 0xFE, 0x20, 0xFE }, { 0x1C, 0x20, 0xFE, 0x20, 0xFE },
- { 0x1D, 0x20, 0xFE, 0x20, 0xFE }, { 0x1E, 0x20, 0xFE, 0x20, 0xFE },
- { 0x1F, 0x20, 0xFE, 0x20, 0xFE }, { 0x20, 0x3F, 0xFF, 0x20, 0xFE },
- { 0x21, 0x3F, 0xFF, 0x20, 0xFE }, { 0x22, 0x3F, 0xFF, 0x20, 0xFE },
- { 0x23, 0x3F, 0xFF, 0x20, 0xFF }
-};
-
-int saa7114_write_reg(unsigned char reg, unsigned char val)
-{
- return gfx_i2c_write(2, SAA7114_CHIPADDR, reg, 1, &val);
-}
-
-int saa7114_read_reg(unsigned char reg, unsigned char * val)
-{
- return gfx_i2c_read(2, SAA7114_CHIPADDR, reg, 1, val);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_vbi_upscale
- *
- * This routine configures the video decoder task A to upscale raw VBI data
- * horizontally to match a different system clock.
- * The upscale is from 13.5 MHz (SAA7114) to 14.318 MHz (Bt835).
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_vbi_upscale(void)
-#else
-int gfx_set_decoder_vbi_upscale(void)
-#endif
-{
- /* Set horizontal output length to 1528 (720 * 2 * 14.318 / 13.5) */
- saa7114_write_reg(SAA7114_TASK_A_HORZ_OUTPUT_LO, 0xF8);
- saa7114_write_reg(SAA7114_TASK_A_HORZ_OUTPUT_HI, 0x05);
-
- /* Set horizontal luminance scaling increment to 484 (1024 * 13.5 / 28.636) */
- saa7114_write_reg(SAA7114_TASK_A_HSCALE_LUMA_LO, 0xE4);
- saa7114_write_reg(SAA7114_TASK_A_HSCALE_LUMA_HI, 0x01);
-
- /* Set horizontal chrominance scaling increment to 242 */
- saa7114_write_reg(SAA7114_TASK_A_HSCALE_CHROMA_LO, 0xF2);
- saa7114_write_reg(SAA7114_TASK_A_HSCALE_CHROMA_HI, 0x00);
-
- return GFX_STATUS_OK;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_decoder_software_reset
- *
- * This routine performs a software reset of the decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_decoder_software_reset(void)
-#else
-int gfx_decoder_software_reset(void)
-#endif
-{
- saa7114_write_reg(0x88, 0xC0);
- /* I2C-bus latency should be sufficient for resetting the internal state machine. */
- /* gfx_delay_milliseconds(10); */
- saa7114_write_reg(0x88, 0xF0);
- return GFX_STATUS_OK;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_decoder_detect_macrovision
- *
- * This routine detects if macrovision exists in the input of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_decoder_detect_macrovision(void)
-#else
-int gfx_decoder_detect_macrovision(void)
-#endif
-{
- unsigned char macrovision = 0xff;
- saa7114_read_reg(SAA7114_STATUS, &macrovision);
- return ((macrovision & 0x02) >> 1);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_decoder_detect_video
- *
- * This routine detects if video exists in the input of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_decoder_detect_video(void)
-#else
-int gfx_decoder_detect_video(void)
-#endif
-{
- unsigned char video = 0xff;
- saa7114_read_reg(SAA7114_STATUS, &video);
- return !((video & 0x40) >> 6);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_defaults
- *
- * This routine is called to set the initial register values of the
- * video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_defaults(void)
-#else
-int gfx_set_decoder_defaults(void)
-#endif
-{
- int i;
-
- /* LOOP THROUGH INDEX/DATA PAIRS IN THE TABLE */
-
- for (i = 0; i < GFX_NUM_SAA7114_INIT_VALUES; i++)
- {
- saa7114_write_reg(gfx_saa7114_init_values[i].index,
- gfx_saa7114_init_values[i].value);
- }
-
- gfx_decoder_software_reset();
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_analog_input
- *
- * This routine sets the analog input of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_analog_input(unsigned char input)
-#else
-int gfx_set_decoder_analog_input(unsigned char input)
-#endif
-{
- saa7114_write_reg(SAA7114_ANALOG_INPUT_CTRL1, input);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_brightness
- *
- * This routine sets the brightness of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_brightness(unsigned char brightness)
-#else
-int gfx_set_decoder_brightness(unsigned char brightness)
-#endif
-{
- saa7114_write_reg(SAA7114_BRIGHTNESS, brightness);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_contrast
- *
- * This routine sets the contrast of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_contrast(unsigned char contrast)
-#else
-int gfx_set_decoder_contrast(unsigned char contrast)
-#endif
-{
- saa7114_write_reg(SAA7114_CONTRAST, (unsigned char) (contrast >> 1));
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_hue
- *
- * This routine sets the hue control of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_hue(char hue)
-#else
-int gfx_set_decoder_hue(char hue)
-#endif
-{
- saa7114_write_reg(SAA7114_HUE, (unsigned char) hue);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_saturation
- *
- * This routine sets the saturation adjustment of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_saturation(unsigned char saturation)
-#else
-int gfx_set_decoder_saturation(unsigned char saturation)
-#endif
-{
- saa7114_write_reg(SAA7114_SATURATION, (unsigned char) (saturation >> 1));
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_input_offset
- *
- * This routine sets the size of the decoder input window.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_input_offset(unsigned short x, unsigned short y)
-#else
-int gfx_set_decoder_input_offset(unsigned short x, unsigned short y)
-#endif
-{
- /* SET THE INPUT WINDOW OFFSET */
-
- saa7114_write_reg(SAA7114_HORZ_OFFSET_LO, (unsigned char) (x & 0x00FF));
- saa7114_write_reg(SAA7114_HORZ_OFFSET_HI, (unsigned char) (x >> 8));
- saa7114_write_reg(SAA7114_VERT_OFFSET_LO, (unsigned char) (y & 0x00FF));
- saa7114_write_reg(SAA7114_VERT_OFFSET_HI, (unsigned char) (y >> 8));
-
- gfx_decoder_software_reset();
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_input_size
- *
- * This routine sets the size of the decoder input window.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_input_size(unsigned short width, unsigned short height)
-#else
-int gfx_set_decoder_input_size(unsigned short width, unsigned short height)
-#endif
-{
- /* DIVIDE HEIGHT BY TWO FOR INTERLACING */
-
- height = (height + 1) >> 1;
-
- /* SET THE INPUT WINDOW SIZE */
-
- saa7114_write_reg(SAA7114_HORZ_INPUT_LO, (unsigned char) (width & 0x00FF));
- saa7114_write_reg(SAA7114_HORZ_INPUT_HI, (unsigned char) (width >> 8));
- saa7114_write_reg(SAA7114_VERT_INPUT_LO, (unsigned char) (height & 0x00FF));
- saa7114_write_reg(SAA7114_VERT_INPUT_HI, (unsigned char) (height >> 8));
-
- gfx_decoder_software_reset();
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_output_size
- *
- * This routine sets the size of the decoder output window.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_output_size(unsigned short width, unsigned short height)
-#else
-int gfx_set_decoder_output_size(unsigned short width, unsigned short height)
-#endif
-{
- /* ROUND WIDTH UP TO EVEN NUMBER TO PREVENT DECODER BECOMING STUCK */
-
- width = ((width + 1) >> 1) << 1;
-
- /* DIVIDE HEIGHT BY TWO FOR INTERLACING */
-
- height = (height + 1) >> 1;
-
- /* SET THE OUTPUT WINDOW SIZE */
-
- saa7114_write_reg(SAA7114_HORZ_OUTPUT_LO, (unsigned char) (width & 0x00FF));
- saa7114_write_reg(SAA7114_HORZ_OUTPUT_HI, (unsigned char) (width >> 8));
- saa7114_write_reg(SAA7114_VERT_OUTPUT_LO, (unsigned char) (height & 0x00FF));
- saa7114_write_reg(SAA7114_VERT_OUTPUT_HI, (unsigned char) (height >> 8));
-
- gfx_decoder_software_reset();
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_scale
- *
- * This routine sets the scaling of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#else
-int gfx_set_decoder_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#endif
-{
- unsigned char prescale = 0;
- int scale = 0;
-
- /* SET THE HORIZONTAL PRESCALE */
- /* Downscale from 1 to 1/63 source size. */
-
- if (dstw) prescale = (unsigned char) (srcw/dstw);
- if (!prescale) prescale = 1;
- if (prescale > 63) return(1);
- saa7114_write_reg(SAA7114_HORZ_PRESCALER, prescale);
-
- /* USE FIR PREFILTER FUNCTIONALITY (OPTIMISATION) */
-
- if ( prescale < 36 ) {
- if (optimize_for_aliasing) {
- saa7114_write_reg(SAA7114_HORZ_ACL,
- gfx_saa7114_fir_values[prescale-1].acl_low );
- saa7114_write_reg(SAA7114_HORZ_FIR_PREFILTER,
- gfx_saa7114_fir_values[prescale-1].prefilter_low );
- } else {
- saa7114_write_reg(SAA7114_HORZ_ACL,
- gfx_saa7114_fir_values[prescale-1].acl_high );
- saa7114_write_reg(SAA7114_HORZ_FIR_PREFILTER,
- gfx_saa7114_fir_values[prescale-1].prefilter_high );
- }
- } else {
- /* SAME SETTINGS FOR RATIO 1/35 DOWNTO 1/63 */
- if (optimize_for_aliasing) {
- saa7114_write_reg(SAA7114_HORZ_ACL,
- gfx_saa7114_fir_values[34].acl_low );
- saa7114_write_reg(SAA7114_HORZ_FIR_PREFILTER,
- gfx_saa7114_fir_values[34].prefilter_low );
- } else {
- saa7114_write_reg(SAA7114_HORZ_ACL,
- gfx_saa7114_fir_values[34].acl_high );
- saa7114_write_reg(SAA7114_HORZ_FIR_PREFILTER,
- gfx_saa7114_fir_values[34].prefilter_high );
- }
- }
-
- /* SET THE HORIZONTAL SCALING */
-
- if (!dstw) return(1);
- scale = ( (1024 * srcw * 1000) / (dstw * prescale) ) / 1000;
- if ((scale > 8191) || (scale < 300)) return(1);
- saa7114_write_reg(SAA7114_HSCALE_LUMA_LO, (unsigned char) (scale & 0x00FF));
- saa7114_write_reg(SAA7114_HSCALE_LUMA_HI, (unsigned char) (scale >> 8));
- scale >>= 1;
- saa7114_write_reg(SAA7114_HSCALE_CHROMA_LO, (unsigned char) (scale & 0x00FF));
- saa7114_write_reg(SAA7114_HSCALE_CHROMA_HI, (unsigned char) (scale >> 8));
-
- /* SET THE VERTICAL SCALING (INTERPOLATION MODE) */
-
- if (!dsth) return(1);
-
- /* ROUND DESTINATION HEIGHT UP TO EVEN NUMBER TO PREVENT DECODER BECOMING STUCK */
-
- dsth = ((dsth + 1) >> 1) << 1;
-
- scale = (int)((1024 * srch) / dsth);
- saa7114_write_reg(SAA7114_VSCALE_LUMA_LO, (unsigned char) (scale & 0x00FF));
- saa7114_write_reg(SAA7114_VSCALE_LUMA_HI, (unsigned char) (scale >> 8));
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_LO, (unsigned char) (scale & 0x00FF));
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_HI, (unsigned char) (scale >> 8));
-
- if (dsth >= (srch >> 1))
- {
- /* USE INTERPOLATION MODE FOR SCALE FACTOR ABOVE 0.5 */
-
- saa7114_write_reg(SAA7114_VSCALE_CONTROL, 0x00);
-
- /* SET VERTICAL PHASE REGISTER FOR CORRECT SCALED INTERLACED OUTPUT (OPTIMISATION) */
- /* THE OPTIMISATION IS BASED ON OFIDC = 0 (REG 90h[6] = 0 ) */
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS0, SAA7114_VSCALE_PHO );
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS1, SAA7114_VSCALE_PHO );
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS2, (unsigned char)(SAA7114_VSCALE_PHO+scale/64-16) );
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS3, (unsigned char)(SAA7114_VSCALE_PHO+scale/64-16) );
-
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS0, SAA7114_VSCALE_PHO );
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS1, SAA7114_VSCALE_PHO );
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS2, (unsigned char)(SAA7114_VSCALE_PHO+scale/64-16) );
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS3, (unsigned char)(SAA7114_VSCALE_PHO+scale/64-16) );
-
- /* RESTORE CONTRAST AND SATURATION FOR INTERPOLATION MODE */
-
- saa7114_write_reg(SAA7114_FILTER_CONTRAST, (unsigned char) 0x40);
- saa7114_write_reg(SAA7114_FILTER_SATURATION, (unsigned char) 0x40);
- }
- else
- {
- /* USE ACCUMULATION MODE FOR DOWNSCALING BY MORE THAN 2x */
-
- saa7114_write_reg(SAA7114_VSCALE_CONTROL, 0x01);
-
- /* SET VERTICAL PHASE OFFSETS OFF (OPTIMISATION) */
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS0, 0x00 );
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS1, 0x00 );
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS2, 0x00 );
- saa7114_write_reg(SAA7114_VSCALE_CHROMA_OFFS3, 0x00 );
-
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS0, 0x00 );
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS1, 0x00 );
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS2, 0x00 );
- saa7114_write_reg(SAA7114_VSCALE_LUMINA_OFFS3, 0x00 );
-
- /* ADJUST CONTRAST AND SATURATION FOR ACCUMULATION MODE */
-
- if (srch) scale = (64 * dsth) / srch;
- saa7114_write_reg(SAA7114_FILTER_CONTRAST, (unsigned char) scale);
- saa7114_write_reg(SAA7114_FILTER_SATURATION, (unsigned char) scale);
- }
-
- gfx_decoder_software_reset();
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_vbi_format
- *
- * This routine programs the decoder to produce the specified format of VBI
- * data for the specified lines.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_vbi_format(int start, int end, int format)
-#else
-int gfx_set_decoder_vbi_format(int start, int end, int format)
-#endif
-{
- int i;
- unsigned char data;
-
- for (i = start; i <= end; i++)
- {
- switch (format)
- {
- case VBI_FORMAT_VIDEO: data = 0xFF; break; /* Active video */
- case VBI_FORMAT_RAW: data = 0x77; break; /* Raw VBI data */
- case VBI_FORMAT_CC: data = 0x55; break; /* US CC */
- case VBI_FORMAT_NABTS: data = 0xCC; break; /* US NABTS */
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- saa7114_write_reg((unsigned char)(0x3F + i), data);
- }
- return GFX_STATUS_OK;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_vbi_enable
- *
- * This routine enables or disables VBI transfer in the decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_vbi_enable(int enable)
-#else
-int gfx_set_decoder_vbi_enable(int enable)
-#endif
-{
- unsigned char data;
- saa7114_read_reg(SAA7114_IPORT_CONTROL, &data);
- if (enable) data |= 0x80;
- else data &= ~0x80;
- saa7114_write_reg(SAA7114_IPORT_CONTROL, data);
- return GFX_STATUS_OK;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_TV_standard
- *
- * This routine configures the decoder for the required TV standard.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_TV_standard(TVStandardType TVStandard)
-#else
-int gfx_set_decoder_TV_standard(TVStandardType TVStandard)
-#endif
-{
- switch (TVStandard) {
- case TV_STANDARD_NTSC:
- saa7114_write_reg(0x0E, 0x89);
- saa7114_write_reg(0x5A, 0x06);
- break;
- case TV_STANDARD_PAL:
- saa7114_write_reg(0x0E, 0x81);
- saa7114_write_reg(0x5A, 0x03);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- gfx_decoder_software_reset();
- return GFX_STATUS_OK;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_decoder_luminance_filter
- *
- * This routine sets the hue control of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_set_decoder_luminance_filter(unsigned char lufi)
-#else
-int gfx_set_decoder_luminance_filter(unsigned char lufi)
-#endif
-{
- unsigned char data;
- saa7114_read_reg(SAA7114_LUMINANCE_CONTROL, &data);
- saa7114_write_reg(SAA7114_LUMINANCE_CONTROL, (unsigned char)((data & ~0x0F) | (lufi & 0x0F)));
- return(0);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_brightness
- *
- * This routine returns the current brightness of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-unsigned char saa7114_get_decoder_brightness(void)
-#else
-unsigned char gfx_get_decoder_brightness(void)
-#endif
-{
- unsigned char brightness = 0;
- saa7114_read_reg(SAA7114_BRIGHTNESS, &brightness);
- return(brightness);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_contrast
- *
- * This routine returns the current contrast of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-unsigned char saa7114_get_decoder_contrast(void)
-#else
-unsigned char gfx_get_decoder_contrast(void)
-#endif
-{
- unsigned char contrast = 0;
- saa7114_read_reg(SAA7114_CONTRAST, &contrast);
- contrast <<= 1;
- return(contrast);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_hue
- *
- * This routine returns the current hue of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-char saa7114_get_decoder_hue(void)
-#else
-char gfx_get_decoder_hue(void)
-#endif
-{
- unsigned char hue = 0;
- saa7114_read_reg(SAA7114_HUE, &hue);
- return((char)hue);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_saturation
- *
- * This routine returns the current saturation of the video decoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-unsigned char saa7114_get_decoder_saturation(void)
-#else
-unsigned char gfx_get_decoder_saturation(void)
-#endif
-{
- unsigned char saturation = 0;
- saa7114_read_reg(SAA7114_SATURATION, &saturation);
- saturation <<= 1;
- return(saturation);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_input_offset
- *
- * This routine returns the offset into the input window.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-unsigned long saa7114_get_decoder_input_offset(void)
-#else
-unsigned long gfx_get_decoder_input_offset(void)
-#endif
-{
- unsigned long value = 0;
- unsigned char data;
- saa7114_read_reg(SAA7114_HORZ_OFFSET_LO, &data);
- value = (unsigned long) data;
- saa7114_read_reg(SAA7114_HORZ_OFFSET_HI, &data);
- value |= ((unsigned long) data) << 8;
- saa7114_read_reg(SAA7114_VERT_OFFSET_LO, &data);
- value |= ((unsigned long) data) << 16;
- saa7114_read_reg(SAA7114_VERT_OFFSET_HI, &data);
- value |= ((unsigned long) data) << 24;
- return(value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_input_size
- *
- * This routine returns the current size of the input window
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-unsigned long saa7114_get_decoder_input_size(void)
-#else
-unsigned long gfx_get_decoder_input_size(void)
-#endif
-{
- unsigned long value = 0;
- unsigned char data;
- saa7114_read_reg(SAA7114_HORZ_INPUT_LO, &data);
- value = (unsigned long) data;
- saa7114_read_reg(SAA7114_HORZ_INPUT_HI, &data);
- value |= ((unsigned long) data) << 8;
- saa7114_read_reg(SAA7114_VERT_INPUT_LO, &data);
- value |= ((unsigned long) data) << 17;
- saa7114_read_reg(SAA7114_VERT_INPUT_HI, &data);
- value |= ((unsigned long) data) << 25;
- return(value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_output_size
- *
- * This routine returns the current size of the output window.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-unsigned long saa7114_get_decoder_output_size(void)
-#else
-unsigned long gfx_get_decoder_output_size(void)
-#endif
-{
- unsigned long value = 0;
- unsigned char data;
- saa7114_read_reg(SAA7114_HORZ_OUTPUT_LO, &data);
- value = (unsigned long) data;
- saa7114_read_reg(SAA7114_HORZ_OUTPUT_HI, &data);
- value |= ((unsigned long) data) << 8;
- saa7114_read_reg(SAA7114_VERT_OUTPUT_LO, &data);
- value |= ((unsigned long) data) << 17;
- saa7114_read_reg(SAA7114_VERT_OUTPUT_HI, &data);
- value |= ((unsigned long) data) << 25;
- return(value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_decoder_vbi_format
- *
- * This routine returns the current format of VBI data for the specified line.
- *-----------------------------------------------------------------------------
- */
-#if GFX_DECODER_DYNAMIC
-int saa7114_get_decoder_vbi_format(int line)
-#else
-int gfx_get_decoder_vbi_format(int line)
-#endif
-{
- unsigned char format = 0, data;
- saa7114_read_reg((unsigned char)(0x3F + line), &data);
- switch (data)
- {
- case 0xFF: format = VBI_FORMAT_VIDEO; break; /* Active video */
- case 0x77: format = VBI_FORMAT_RAW; break; /* Raw VBI data */
- case 0x55: format = VBI_FORMAT_CC; break; /* US CC */
- case 0xCC: format = VBI_FORMAT_NABTS; break; /* US NABTS */
- }
- return(format);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_1200.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_1200.c
deleted file mode 100644
index 34bc08507..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_1200.c
+++ /dev/null
@@ -1,969 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_1200.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: tv_1200.c $
- *
- * This file contains routines to control the SC1200 TVOUT and TV encoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_format
- *
- * This routine sets the TV encoder registers to the specified format
- * and resolution.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_format(TVStandardType format, GfxOnTVType resolution)
-#else
-int gfx_set_tv_format(TVStandardType format, GfxOnTVType resolution)
-#endif
-{
- unsigned long ctrl2, mode;
-
- /* Save TV output mode */
- ctrl2 = READ_VID32(SC1200_TVENC_TIM_CTRL_2) & (SC1200_TVENC_OUTPUT_YCBCR | SC1200_TVENC_CFS_MASK);
- /* Save flicker filter setting */
- mode = READ_VID32(SC1200_TVOUT_HORZ_SCALING) & SC1200_TVOUT_FLICKER_FILTER_MASK;
-
- switch (format) {
- case TV_STANDARD_NTSC :
- /* Horizontal Sync Start is 848 */
- /* Horizontal Sync End is 856 */
- WRITE_VID32(SC1200_TVOUT_HORZ_SYNC, 0x03580350);
- /* Vertical Sync Start is 0 */
- /* Vertical Sync End is 1 */
- /* Vertical Display Start Skew is 1 */
- /* Vertical Display End Skew is 1 */
- WRITE_VID32(SC1200_TVOUT_VERT_SYNC, 0x05001000);
- /* Disable vertical down scaling, take all lines */
- if (gfx_chip_revision <= SC1200_REV_B3)
- WRITE_VID32(SC1200_TVOUT_VERT_DOWNSCALE, 0xffffffff);
- /* Enable video timing */
- /* Never reset sub carrier */
- /* Disable BLANK */
- /* Enable color burst */
- /* Add the IRE offset */
- /* NTSC color encoding */
- /* Video generator timing is 525 lines / 60Hz */
- /* Horizontal and Vertical counters are initialized to HPHASE & VPHASE */
- /* VPHASE is 2, HPHASE is 0x50 */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, 0x82a01050);
- /* Increase horizontal blanking interval */
- /* Low Water Mark for Y is 0x1F */
- /* Low Water Mark for Cb is 0xF */
- /* HUE is 0 */
- /* SCPHASE is 0xF9 */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, 0x9ff000f9 | ctrl2);
- /* Subcarrier Frequency is 3.579545 MHz */
- WRITE_VID32(SC1200_TVENC_SUB_FREQ, 0x21f07c1f);
- /* VSTART is 18, HSTART is 113 */
- WRITE_VID32(SC1200_TVENC_DISP_POS, 0x00120071);
- /* Display size: HEIGHT is 239, WIDTH is 719 */
- WRITE_VID32(SC1200_TVENC_DISP_SIZE, 0x00ef02cf);
- switch (resolution) {
- case GFX_ON_TV_SQUARE_PIXELS :
- if (gfx_chip_revision <= SC1200_REV_B3) {
- /* Horizontal Display start is 116 */
- /* Total number of pixels per line is 857 */
- WRITE_VID32(SC1200_TVOUT_HORZ_TIM, 0x00740359);
- /* HSYNC generated in the TV Encoder module */
- /* Interval between resets of TV Encoder is once every odd field */
- /* Enable Horizontal interpolation */
- /* Enable Horizontal up scaling 9/8 */
- /* Disable Horizontal downscale */
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, 0x10020700 | mode);
- /* Horizontal display end is 919, i.e. 720 active pixels */
- /* Total number of display lines per field is 240 */
- WRITE_VID32(SC1200_TVOUT_LINE_END, 0x039700f0);
- } else { /* Use new scaler available in Rev. C */
- /* Horizontal Display start is 111 */
- /* Total number of pixels per line is 857 */
- WRITE_VID32(SC1200_TVOUT_HORZ_TIM, 0x006f0359);
- /* HSYNC generated in the TV Encoder module */
- /* Interval between resets of TV Encoder is once every odd field */
- /* Enable Horizontal interpolation */
- /* Disable Horizontal up scaling 9/8 */
- /* Disable Horizontal downscale */
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, 0x10020500 | mode);
- /* Set Horizontal upscaling to 64/58 (~ 11/10) */
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, 0x3A000000);
- /* Horizontal display end is 900, i.e. 706 active pixels */
- /* Total number of display lines per field is 240 */
- WRITE_VID32(SC1200_TVOUT_LINE_END, 0x038400f0);
- }
- break;
- case GFX_ON_TV_NO_SCALING :
- /* Horizontal Display start is 116 */
- /* Total number of pixels per line is 857 */
- WRITE_VID32(SC1200_TVOUT_HORZ_TIM, 0x00740359);
- /* HSYNC generated in the TV Encoder module */
- /* Interval between resets of TV Encoder is once every odd field */
- /* Enable Horizontal interpolation */
- /* Disable Horizontal up scaling 9/8 */
- /* Disable Horizontal downscale */
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, 0x10020500 | mode);
- /* Disable Horizontal scaling (set to 64/64) */
- if (gfx_chip_revision >= SC1200_REV_C1)
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, 0x40000000);
- /* Horizontal display end is 919, i.e. 720 active pixels */
- /* Total number of display lines per field is 240 */
- WRITE_VID32(SC1200_TVOUT_LINE_END, 0x039700f0);
- break;
- default :
- return(GFX_STATUS_BAD_PARAMETER);
- }
- break;
- case TV_STANDARD_PAL :
- /* Horizontal Sync Start is 854 */
- /* Horizontal Sync End is 862 */
- WRITE_VID32(SC1200_TVOUT_HORZ_SYNC, 0x035e0356);
- /* Vertical Sync Start is 0 */
- /* Vertical Sync End is 1 */
- /* Vertical Display Start Skew is 1 */
- /* Vertical Display End Skew is 1 */
- WRITE_VID32(SC1200_TVOUT_VERT_SYNC, 0x05001000);
- /* Disable vertical down scaling, take all lines */
- if (gfx_chip_revision <= SC1200_REV_B3)
- WRITE_VID32(SC1200_TVOUT_VERT_DOWNSCALE, 0xffffffff);
- /* Enable video timing */
- /* Never reset sub carrier (should be every 4 frames but doesn't work with genlock) */
- /* Disable BLANK */
- /* Enable color burst */
- /* Do not add the IRE offset */
- /* NTSC color encoding */
- /* Video generator timing is 625 lines / 50Hz */
- /* Horizontal and Vertical counters are initialized to HPHASE & VPHASE */
- /* VPHASE is 2, HPHASE is 50 */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, 0x81201050);
- /* Increase horizontal blanking interval */
- /* Low Water Mark for Y is 0x1F */
- /* Low Water Mark for Cb is 0xF */
- /* HUE is 0 */
- /* SCPHASE is 0xD9 */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, 0x9ff000d9 | ctrl2);
- /* Subcarrier Frequency is 4.43361875 MHz */
- WRITE_VID32(SC1200_TVENC_SUB_FREQ, 0x2a098acb);
- /* VSTART is 22, HSTART is 123 */
- WRITE_VID32(SC1200_TVENC_DISP_POS, 0x0016007b);
- /* Display size: HEIGHT is 287, WIDTH is 719 */
- WRITE_VID32(SC1200_TVENC_DISP_SIZE, 0x011f02cf);
- switch (resolution) {
- case GFX_ON_TV_NO_SCALING :
- /* Horizontal Display start is 124 */
- /* Total number of pixels per line is 863 */
- WRITE_VID32(SC1200_TVOUT_HORZ_TIM, 0x007c035f);
- /* HSYNC generated in the TV Encoder module */
- /* Interval between resets of TV Encoder is once every odd field */
- /* Enable Horizontal interpolation */
- /* Disable Horizontal up scaling 9/8 */
- /* Disable Horizontal downscale */
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, 0x10020500 | mode);
- /* Disable Horizontal scaling (set to 64/64) */
- if (gfx_chip_revision >= SC1200_REV_C1)
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, 0x40000000);
- /* Horizontal display end is 924, i.e. 720 active pixels */
- /* Total number of display lines per field is 288 */
- WRITE_VID32(SC1200_TVOUT_LINE_END, 0x039c0120);
- break;
- case GFX_ON_TV_SQUARE_PIXELS :
- /* Horizontal Display start is 122 */
- /* Total number of pixels per line is 863 */
- WRITE_VID32(SC1200_TVOUT_HORZ_TIM, 0x007a035f);
- if (gfx_chip_revision <= SC1200_REV_B3) {
- /* HSYNC generated in the TV Encoder module */
- /* Interval between resets of TV Encoder is once every odd field */
- /* Enable Horizontal interpolation */
- /* Disable Horizontal up scaling 9/8 */
- /* Horizontal downscale m/(m+1), m = 11, (i.e. 11/12 - closest possible to 54/59) */
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, 0x1002040b | mode);
- /* Horizontal display end is 906, i.e. 704 active pixels */
- /* Total number of display lines per field is 288 */
- WRITE_VID32(SC1200_TVOUT_LINE_END, 0x038a0120);
- } else {
- /* HSYNC generated in the TV Encoder module */
- /* Interval between resets of TV Encoder is once every odd field */
- /* Enable Horizontal interpolation */
- /* Disable Horizontal up scaling 9/8 */
- /* Disable Horizontal downscale */
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, 0x10020500 | mode);
- /* Set Horizontal down scaling to 64/70 (closest possible to 54/59) */
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, 0x46000000);
- /* Horizontal display end is 904, i.e. 702 active pixels */
- /* Total number of display lines per field is 288 */
- WRITE_VID32(SC1200_TVOUT_LINE_END, 0x03880120);
- }
- break;
- default :
- return(GFX_STATUS_BAD_PARAMETER);
- }
- break;
- default :
- return(GFX_STATUS_BAD_PARAMETER);
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_output
- *
- * This routine sets the TV encoder registers to the specified output type.
- * Supported output types are : S-VIDEO, Composite, YUV and SCART.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_output(int output)
-#else
-int gfx_set_tv_output(int output)
-#endif
-{
- unsigned long ctrl2, ctrl3;
-
- ctrl2 = READ_VID32(SC1200_TVENC_TIM_CTRL_2);
- ctrl3 = READ_VID32(SC1200_TVENC_TIM_CTRL_3);
- ctrl2 &= ~(SC1200_TVENC_OUTPUT_YCBCR | SC1200_TVENC_CFS_MASK);
- ctrl3 &= ~(SC1200_TVENC_CM | SC1200_TVENC_SYNCMODE_MASK | SC1200_TVENC_CS);
- switch (output) {
- case TV_OUTPUT_COMPOSITE :
- /* Analog outputs provide Y, C and CVBS */
- /* Chrominance Lowpass filter is 1.3MHz (for composite video output) */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, ctrl2 | SC1200_TVENC_CFS_CVBS);
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_3, ctrl3);
- break;
- case TV_OUTPUT_S_VIDEO :
- /* Analog outputs provide Y, C and CVBS */
- /* Chrominance Lowpass filter is 1.8MHz (for S-video output) */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, ctrl2 | SC1200_TVENC_CFS_SVIDEO);
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_3, ctrl3);
- break;
- case TV_OUTPUT_YUV :
- /* Analog outputs provide Y, Cb and Cr */
- /* A 7.5 IRE setup is applied to the output */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, ctrl2 | SC1200_TVENC_OUTPUT_YCBCR | SC1200_TVENC_CFS_BYPASS);
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_3, ctrl3 | SC1200_TVENC_CM | SC1200_TVENC_CS);
- break;
- case TV_OUTPUT_SCART :
- /* Analog outputs provide SCART (RGB and CVBS) */
- /* Sync is added to green signal */
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_2, ctrl2 | SC1200_TVENC_CFS_CVBS);
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_3, ctrl3 | SC1200_TVENC_CM | SC1200_TVENC_SYNC_ON_GREEN);
- break;
- default :
- return(GFX_STATUS_BAD_PARAMETER);
- }
-
- /* Adjusts the internal voltage reference */
- ctrl2 = READ_VID32(SC1200_TVENC_DAC_CONTROL);
- ctrl2 &= ~SC1200_TVENC_TRIM_MASK;
-
- /* Bypass for issue #926 : Inadequate chroma level of S-Video output */
- if ((gfx_chip_revision == SC1200_REV_B3) && (output == TV_OUTPUT_S_VIDEO))
- ctrl2 |= 0x7;
- else
- ctrl2 |= 0x5;
-
- WRITE_VID32(SC1200_TVENC_DAC_CONTROL, ctrl2);
-
- /* Disable 4:2:2 to 4:4:4 converter interpolation */
- WRITE_VID32(SC1200_TVOUT_DEBUG, SC1200_TVOUT_CONVERTER_INTERPOLATION);
-
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_enable
- *
- * This routine enables or disables the TV output.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_enable(int enable)
-#else
-int gfx_set_tv_enable(int enable)
-#endif
-{
- unsigned long value_tim, value_dac;
- value_tim = READ_VID32(SC1200_TVENC_TIM_CTRL_1);
- value_dac = READ_VID32(SC1200_TVENC_DAC_CONTROL);
-
- if (enable) {
- value_tim |= SC1200_TVENC_VIDEO_TIMING_ENABLE;
- value_dac &= ~SC1200_TVENC_POWER_DOWN;
- /* ENABLE GRAPHICS DISPLAY LOGIC IN VIDEO PROCESSOR */
- gfx_set_screen_enable(1);
- } else {
- value_tim &= ~SC1200_TVENC_VIDEO_TIMING_ENABLE;
- value_dac |= SC1200_TVENC_POWER_DOWN;
- /* Do not disable the graphics display logic because it might be needed for CRT */
- }
-
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, value_tim);
- WRITE_VID32(SC1200_TVENC_DAC_CONTROL, value_dac);
-
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_flicker_filter
- *
- * This routine configures the TV out flicker filter.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_flicker_filter(int ff)
-#else
-int gfx_set_tv_flicker_filter(int ff)
-#endif
-{
- unsigned long mode;
- mode = READ_VID32(SC1200_TVOUT_HORZ_SCALING);
- mode &= ~SC1200_TVOUT_FLICKER_FILTER_MASK;
- switch (ff)
- {
- case TV_FLICKER_FILTER_NONE:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, mode | SC1200_TVOUT_FLICKER_FILTER_DISABLED);
- break;
- case TV_FLICKER_FILTER_NORMAL:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, mode | SC1200_TVOUT_FLICKER_FILTER_FOURTH_HALF_FOURTH);
- break;
- case TV_FLICKER_FILTER_INTERLACED:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, mode | SC1200_TVOUT_FLICKER_FILTER_HALF_ONE_HALF);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_sub_carrier_reset
- *
- * This routine configures the TV encoder sub carrier reset interval.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_sub_carrier_reset(int screset)
-#else
-int gfx_set_tv_sub_carrier_reset(int screset)
-#endif
-{
- unsigned long mode;
- mode = READ_VID32(SC1200_TVENC_TIM_CTRL_1);
- mode &= ~SC1200_TVENC_SUB_CARRIER_RESET_MASK;
- switch (screset)
- {
- case TV_SUB_CARRIER_RESET_NEVER:
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, mode | SC1200_TVENC_SUB_CARRIER_RESET_NEVER);
- break;
- case TV_SUB_CARRIER_RESET_EVERY_TWO_LINES:
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, mode | SC1200_TVENC_SUB_CARRIER_RESET_EVERY_TWO_LINES);
- break;
- case TV_SUB_CARRIER_RESET_EVERY_TWO_FRAMES:
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, mode | SC1200_TVENC_SUB_CARRIER_RESET_EVERY_TWO_FRAMES);
- break;
- case TV_SUB_CARRIER_RESET_EVERY_FOUR_FRAMES:
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, mode | SC1200_TVENC_SUB_CARRIER_RESET_EVERY_FOUR_FRAMES);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_vphase
- *
- * This routine sets the tv encoder VPHASE value.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_vphase(int vphase)
-#else
-int gfx_set_tv_vphase(int vphase)
-#endif
-{
- unsigned long mode = READ_VID32(SC1200_TVENC_TIM_CTRL_1);
- mode &= ~SC1200_TVENC_VPHASE_MASK;
- mode |= (vphase << SC1200_TVENC_VPHASE_POS) & SC1200_TVENC_VPHASE_MASK;
- WRITE_VID32(SC1200_TVENC_TIM_CTRL_1, mode);
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_YC_delay
- *
- * This routine configures the TV out Y/C delay.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_YC_delay(int delay)
-#else
-int gfx_set_tv_YC_delay(int delay)
-#endif
-{
- unsigned long mode;
-
- /* This feature is implemented in Rev C1 */
- if (gfx_chip_revision < SC1200_REV_C1) return(GFX_STATUS_OK);
-
- mode = READ_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE);
- mode &= ~SC1200_TVOUT_YC_DELAY_MASK;
- switch (delay)
- {
- case TV_YC_DELAY_NONE:
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, mode | SC1200_TVOUT_YC_DELAY_NONE);
- break;
- case TV_Y_DELAY_ONE_PIXEL:
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, mode | SC1200_TVOUT_Y_DELAY_ONE_PIXEL);
- break;
- case TV_C_DELAY_ONE_PIXEL:
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, mode | SC1200_TVOUT_C_DELAY_ONE_PIXEL);
- break;
- case TV_C_DELAY_TWO_PIXELS:
- WRITE_VID32(SC1200_TVOUT_HORZ_PRE_ENCODER_SCALE, mode | SC1200_TVOUT_C_DELAY_TWO_PIXELS);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tvenc_reset_interval
- *
- * This routine sets the interval between external resets of the TV encoder
- * timing generator by the TV out.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tvenc_reset_interval(int interval)
-#else
-int gfx_set_tvenc_reset_interval(int interval)
-#endif
-{
- unsigned long value;
- value = READ_VID32(SC1200_TVOUT_HORZ_SCALING);
- value &= ~SC1200_TVENC_EXTERNAL_RESET_INTERVAL_MASK;
- switch (interval)
- {
- case TVENC_RESET_EVERY_ODD_FIELD:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, value | SC1200_TVENC_EXTERNAL_RESET_EVERY_ODD_FIELD);
- break;
- case TVENC_RESET_EVERY_EVEN_FIELD:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, value | SC1200_TVENC_EXTERNAL_RESET_EVERY_EVEN_FIELD);
- break;
- case TVENC_RESET_NEXT_ODD_FIELD:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, value | SC1200_TVENC_EXTERNAL_RESET_NEXT_ODD_FIELD);
- break;
- case TVENC_RESET_NEXT_EVEN_FIELD:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, value | SC1200_TVENC_EXTERNAL_RESET_NEXT_EVEN_FIELD);
- break;
- case TVENC_RESET_EVERY_FIELD:
- WRITE_VID32(SC1200_TVOUT_HORZ_SCALING, value | SC1200_TVENC_EXTERNAL_RESET_EVERY_FIELD);
- break;
- case TVENC_RESET_EVERY_X_ODD_FIELDS:
- case TVENC_RESET_EVERY_X_EVEN_FIELDS:
- return GFX_STATUS_UNSUPPORTED;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_cc_enable
- *
- * This routine enables or disables the use of the hardware CC registers
- * in the TV encoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_cc_enable(int enable)
-#else
-int gfx_set_tv_cc_enable(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VID32(SC1200_TVENC_CC_CONTROL);
- value &= ~(0x0005F);
- if (enable) value |= 0x51;
- WRITE_VID32(SC1200_TVENC_CC_CONTROL, value);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_tv_display
- *
- * This routine sets the timings in the display controller to support a
- * TV resolution.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_display(int width, int height)
-#else
-int gfx_set_tv_display(int width, int height)
-#endif
-{
- DISPLAYMODE *pMode;
- int i;
-
- for (i = 0; i < NUM_TV_MODES; i++)
- {
- pMode = &TVTimings[i];
- if ((unsigned)width == pMode->hactive && (unsigned)height == pMode->vactive)
- break;
- }
-
- if (i == NUM_TV_MODES)
- return 0;
-
- gfx_set_display_timings (gfx_get_display_bpp(), (unsigned short)pMode->flags, pMode->hactive, pMode->hblankstart,
- pMode->hsyncstart, pMode->hsyncend, pMode->hblankend,
- pMode->htotal, pMode->vactive, pMode->vblankstart,
- pMode->vsyncstart, pMode->vsyncend, pMode->vblankend,
- pMode->vtotal, pMode->frequency);
-
- return 1;
-}
-
-/*-----------------------------------------------------------------------------
- * cc_add_parity_bit
- *
- * This routine adds the (odd) parity bit to the data character.
- *-----------------------------------------------------------------------------
- */
-unsigned char cc_add_parity_bit(unsigned char data)
-{
- int i, num = 0;
- unsigned char d = data;
-
- for (i = 0; i < 7; i++)
- {
- if (d & 0x1)
- num++;
- d >>= 1;
- }
- if (num & 0x1)
- return (data & ~0x80);
- else
- return (data | 0x80);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_cc_data
- *
- * This routine writes the two specified characters to the CC data register
- * of the TV encoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_cc_data(unsigned char data1, unsigned char data2)
-#else
-int gfx_set_tv_cc_data(unsigned char data1, unsigned char data2)
-#endif
-{
- unsigned long value;
- value = cc_add_parity_bit(data1) | (cc_add_parity_bit(data2) << 8);
- WRITE_VID32(SC1200_TVENC_CC_DATA, value);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_tvout_odd_field
- *
- * This routine returns 1 if the current TVout field is odd. Otherwise returns 0.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_test_tvout_odd_field(void)
-#else
-int gfx_test_tvout_odd_field(void)
-#endif
-{
- unsigned long debug = READ_VID32(SC1200_TVOUT_DEBUG);
- WRITE_VID32(SC1200_TVOUT_DEBUG, debug | SC1200_TVOUT_FIELD_STATUS_TV);
- if (READ_VID32(SC1200_TVOUT_DEBUG) & SC1200_TVOUT_FIELD_STATUS_EVEN)
- return(0);
- else return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_test_tvenc_odd_field
- *
- * This routine returns 1 if the current TV encoder field is odd. Otherwise returns 0.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_test_tvenc_odd_field(void)
-#else
-int gfx_test_tvenc_odd_field(void)
-#endif
-{
- unsigned long debug = READ_VID32(SC1200_TVOUT_DEBUG);
- WRITE_VID32(SC1200_TVOUT_DEBUG, debug & ~SC1200_TVOUT_FIELD_STATUS_TV);
- if (READ_VID32(SC1200_TVOUT_DEBUG) & SC1200_TVOUT_FIELD_STATUS_EVEN)
- return(0);
- else return(1);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_field_status_invert
- *
- * This routines determines whether the tvout/tvencoder field status bit is
- * inverted (enable = 1) or not (enable = 0).
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_set_tv_field_status_invert(int enable)
-#else
-int gfx_set_tv_field_status_invert(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VID32(SC1200_TVOUT_DEBUG);
-
- if (enable) {
- value |= SC1200_TVOUT_FIELD_STATUS_INVERT;
- } else {
- value &= ~(SC1200_TVOUT_FIELD_STATUS_INVERT);
- }
-
- WRITE_VID32(SC1200_TVOUT_DEBUG, value);
-
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_vphase
- *
- * This routine returns the tv encoder vertical phase.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_get_tv_vphase(void)
-#else
-int gfx_get_tv_vphase(void)
-#endif
-{
- unsigned long mode = READ_VID32(SC1200_TVENC_TIM_CTRL_1);
- return (int)((mode & SC1200_TVENC_VPHASE_MASK) >> SC1200_TVENC_VPHASE_POS);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_enable
- *
- * This routine returns the current tv enable status
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_get_tv_enable(unsigned int *p_on)
-#else
-int gfx_get_tv_enable(unsigned int *p_on)
-#endif
-{
- unsigned long control = READ_VID32 (SC1200_TVENC_DAC_CONTROL);
-
- *p_on = (unsigned int)(!(control & SC1200_TVENC_POWER_DOWN));
-
- return GFX_STATUS_OK;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_output
- *
- * This routine returns the current programmed TV output type. It does not
- * detect invalid configurations.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_get_tv_output(void)
-#else
-int gfx_get_tv_output(void)
-#endif
-{
- unsigned long ctrl2, ctrl3;
- int format = 0;
-
- ctrl2 = READ_VID32 (SC1200_TVENC_TIM_CTRL_2);
- ctrl3 = READ_VID32 (SC1200_TVENC_TIM_CTRL_3);
-
- if ((ctrl2 & SC1200_TVENC_CFS_MASK) == SC1200_TVENC_CFS_SVIDEO)
- format = TV_OUTPUT_S_VIDEO;
- else if (ctrl2 & SC1200_TVENC_OUTPUT_YCBCR)
- format = TV_OUTPUT_YUV;
- else if ((ctrl2 & SC1200_TVENC_CFS_MASK) == SC1200_TVENC_CFS_CVBS)
- {
- if (ctrl3 & SC1200_TVENC_CM) format = TV_OUTPUT_SCART;
- else format = TV_OUTPUT_COMPOSITE;
- }
-
- return format;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_mode_count
- *
- * This routine returns the number of valid TV out resolutions.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_get_tv_mode_count(TVStandardType format)
-#else
-int gfx_get_tv_mode_count(TVStandardType format)
-#endif
-{
- int mode, count = 0;
- unsigned long flag;
-
- switch (format)
- {
- case TV_STANDARD_NTSC: flag = GFX_MODE_TV_NTSC; break;
- case TV_STANDARD_PAL: flag = GFX_MODE_TV_PAL; break;
- default: return 0;
- }
-
- for (mode = 0; mode < NUM_TV_MODES; mode++)
- {
- if (TVTimings[mode].flags & flag)
- count++;
- }
-
- return count;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_display_mode
- *
- * This routine returns the current TV display parameters.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_get_tv_display_mode (int *width, int *height, int *bpp, int *hz)
-#else
-int gfx_get_tv_display_mode (int *width, int *height, int *bpp, int *hz)
-#endif
-{
- unsigned long frequency;
- unsigned long mode, flags;
-
- *width = gfx_get_hactive();
- *height = gfx_get_vactive();
- *bpp = gfx_get_display_bpp ();
- frequency = gfx_get_clock_frequency ();
-
- for (mode = 0; mode < NUM_TV_MODES; mode++)
- {
- if (TVTimings[mode].hactive == (unsigned short)(*width) &&
- TVTimings[mode].vactive == (unsigned short)(*height) &&
- TVTimings[mode].frequency == frequency)
- {
- flags = TVTimings[mode].flags;
-
- if (flags & GFX_MODE_TV_NTSC) *hz = 60;
- else if (flags & GFX_MODE_TV_PAL) *hz = 50;
- else *hz = 0;
- return (1);
- }
- }
-
- return -1;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_tv_display_mode_frequency
- *
- * This routine returns the PLL frequency of a given TV mode.
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_get_tv_display_mode_frequency (unsigned short width, unsigned short height,
- TVStandardType format, int *frequency)
-#else
-int gfx_get_tv_display_mode_frequency (unsigned short width, unsigned short height,
- TVStandardType format, int *frequency)
-#endif
-{
- unsigned long mode, flag;
- int retval = -1;
-
- *frequency = 0;
-
- switch (format)
- {
- case TV_STANDARD_NTSC: flag = GFX_MODE_TV_NTSC; break;
- case TV_STANDARD_PAL: flag = GFX_MODE_TV_PAL; break;
- default: return -1;
- }
-
- for (mode = 0; mode < NUM_TV_MODES; mode++)
- {
- if ((TVTimings[mode].hactive == width) &&
- (TVTimings[mode].vactive == height) &&
- (TVTimings[mode].flags & flag))
- {
- *frequency = TVTimings[mode].frequency;
- retval = 1;
- }
- }
- return retval;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_is_tv_display_mode_supported
- *
- * Returns >= 0 if the mode is available, -1 if the mode could not be found
- *---------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int sc1200_is_tv_display_mode_supported (unsigned short width, unsigned short height, TVStandardType format)
-#else
-int gfx_is_tv_display_mode_supported (unsigned short width, unsigned short height, TVStandardType format)
-#endif
-{
- unsigned long mode, flag;
-
- switch (format)
- {
- case TV_STANDARD_NTSC: flag = GFX_MODE_TV_NTSC; break;
- case TV_STANDARD_PAL: flag = GFX_MODE_TV_PAL; break;
- default: return -1;
- }
-
- for (mode = 0; mode < NUM_TV_MODES; mode++)
- {
- if (TVTimings[mode].hactive == width &&
- TVTimings[mode].vactive == height &&
- (TVTimings[mode].flags & flag))
- {
- return ((int)mode);
- }
- }
-
- return -1;
-}
-
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.c
deleted file mode 100644
index 488d07506..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.c
+++ /dev/null
@@ -1,3437 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.c,v 1.2 2002/10/18 20:02:40 tsi Exp $ */
-/*
- * $Workfile: tv_fs450.c $
- *
- * This file contains routines to control the FS450 tvout encoder.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#define FS450_DIRECTREG 0
-
-#include "tv_fs450.h"
-
-/*==========================================================================
-*
-* Macros
-*
-*==========================================================================
-*/
-
-#undef fsmax
-#undef fsmin
-#define fsmax(a, b) ((a) > (b) ? (a) : (b))
-#define fsmin(a, b) ((a) < (b) ? (a) : (b))
-
-#undef range_limit
-#define range_limit(val,min_val,max_val) (fsmax((min_val),fsmin((val),(max_val))))
-
-/*==========================================================================
-*
-* Registers
-*
-*==========================================================================
-*/
-
-#define MAX_REGISTERS 32
-#define MAX_BITS 32
-
-#define READ 1
-#define WRITE 2
-#define READ_WRITE (READ | WRITE)
-
-typedef struct
-{
- char *name;
- unsigned long offset;
- unsigned char bit_length;
- unsigned char valid_bits;
- unsigned char read_write;
- char *bitfield_names[MAX_BITS];
-} S_REGISTER_DESCRIP;
-
-typedef struct
-{
- int source;
- char *name;
- S_REGISTER_DESCRIP registers[MAX_REGISTERS];
-} S_SET_DESCRIP;
-
-const S_SET_DESCRIP *houston_regs(void);
-const S_SET_DESCRIP *encoder_regs(void);
-const S_SET_DESCRIP *macrovision_regs(void);
-const S_SET_DESCRIP *gcc_regs(void);
-
-/*==========================================================================
-*
-* Houston Register Addresses & Bit Definitions
-*
-*==========================================================================
-*/
-
-#define HOUSTON_IHO 0x00 /*Input Horizontal Offset*/
-#define HOUSTON_IVO 0x02 /*Input Vertical Offset*/
-#define HOUSTON_IHA 0x04 /*Input Horizontal Active Width*/
-#define HOUSTON_VSC 0x06 /*Vertical Scaling Coeficient*/
-#define HOUSTON_HSC 0x08 /*Horizontal Scaling Coeficient*/
-#define HOUSTON_BYP 0x0A /*Bypass Register*/
-#define HOUSTON_CR 0x0C /*Control Register*/
-#define HOUSTON_SP 0x0E /*Status*/
-#define HOUSTON_NCONL 0x10 /*NCO numerator low word*/
-#define HOUSTON_NCONH 0x12 /*NCO numerator high word*/
-#define HOUSTON_NCODL 0x14 /*NCO denominator low word*/
-#define HOUSTON_NCODH 0x16 /*NCO denominator high word*/
-#define HOUSTON_APO 0x18 /**/
-#define HOUSTON_ALO 0x1A /**/
-#define HOUSTON_AFO 0x1C /**/
-#define HOUSTON_HSOUTWID 0x1E /**/
-#define HOUSTON_HSOUTST 0x20 /**/
-#define HOUSTON_HSOUTEND 0x22 /**/
-#define HOUSTON_SHP 0x24 /*Sharpness*/
-#define HOUSTON_FLK 0x26 /*Flicker Filter*/
-#define HOUSTON_BCONTL 0x28 /**/
-#define HOUSTON_BCONTH 0x2A /**/
-#define HOUSTON_BDONE 0x2C /**/
-#define HOUSTON_BDIAGL 0x2E /**/
-#define HOUSTON_BDIAGH 0x30 /**/
-#define HOUSTON_REV 0x32 /**/
-#define HOUSTON_MISC 0x34 /**/
-#define HOUSTON_FFO 0x36 /**/
-#define HOUSTON_FFO_LAT 0x38 /**/
-#define HOUSTON_VSOUTWID 0x3A
-#define HOUSTON_VSOUTST 0x3C
-#define HOUSTON_VSOUTEND 0x3E
-
-/*// BYP Register Bits*/
-#define BYP_RGB_BYPASS 0x0001
-#define BYP_HDS_BYPASS 0x0002
-#define BYP_HDS_TBYPASS 0x0004
-#define BYP_CAC_BYPASS 0x0008
-#define BYP_R2V_SBYPASS 0x0010
-#define BYP_R2V_BYPASS 0x0020
-#define BYP_VDS_BYPASS 0x0040
-#define BYP_FFT_BYPASS 0x0080
-#define BYP_FIF_BYPASS 0x0100
-#define BYP_FIF_TBYPASS 0x0200
-#define BYP_HUS_BYPASS 0x0400
-#define BYP_HUS_TBYPASS 0x0800
-#define BYP_CCR_BYPASS 0x1000
-#define BYP_PLL_BYPASS 0x2000
-#define BYP_NCO_BYPASS 0x4000
-#define BYP_ENC_BYPASS 0x8000
-
-/*// CR Register Bits*/
-#define CR_RESET 0x0001
-#define CR_CLKOFF 0x0002
-#define CR_NCO_EN 0x0004
-#define CR_COMPOFF 0x0008
-#define CR_YCOFF 0x0010
-#define CR_LP_EN 0x0020
-#define CR_CACQ_CLR 0x0040
-#define CR_FFO_CLR 0x0080
-#define CR_656_PAL_NTSC 0x0100
-#define CR_656_STD_VMI 0x0200
-#define CR_OFMT 0x0400
-#define CR_UIM_CLK 0x0800
-#define CR_UIM_DEC 0x1000
-#define CR_BIPGEN_EN1 0x2000
-#define CR_UIM_MOD0 0x4000
-#define CR_UIM_MOD1 0x8000
-
-/*// Status Register Bits*/
-#define SP_CACQ_ST 0x0001
-#define SP_FFO_ST 0x0002
-#define SP_REVID_MASK 0x7FFC
-#define SP_MV_EN 0x8000
-
-/*// BDONE Register Bits*/
-#define BDONE_BIST_DONE_A 0x0001
-#define BDONE_BIST_DONE_B 0x0002
-#define BDONE_BIST_DONE_C 0x0004
-#define BDONE_BIST_DONE_D 0x0008
-#define BDONE_BIST_DONE_E 0x0010
-#define BDONE_BIST_DONE_F 0x0020
-#define BDONE_BIST_DONE_G 0x0040
-
-/*// BDIAGL Register Bits*/
-#define BDIAGL_BIST_DIAG_A 0x000F
-#define BDIAGL_BIST_DIAG_B 0x00F0
-#define BDIAGL_BIST_DIAG_C 0x0F00
-#define BDIAGL_BIST_DIAG_D 0xF000
-
-/*// BDIAGH Register Bits*/
-#define BDIAGH_BIST_DIAG_E 0x000F
-#define BDIAGH_BIST_DIAG_F 0x000F
-#define BDIAGH_BIST_DIAG_G 0x000F
-
-/*// MISC Register Bits*/
-#define MISC_TV_SHORT_FLD 0x0001
-#define MISC_ENC_TEST 0x0002
-#define MISC_DAC_TEST 0x0004
-#define MISC_MV_SOFT_EN 0x0008
-#define MISC_NCO_LOAD0 0x0010
-#define MISC_NCO_LOAD1 0x0020
-#define MISC_VGACKDIV 0x0200
-#define MISC_BRIDGE_SYNC 0x0400
-#define MISC_GTLIO_PD 0x8000
-
-
-/*==========================================================================
-*
-* Encoder Registers & Bit Definitions
-*
-*==========================================================================
-*/
-
-#define ENC_CHROMA_FREQ 0x40
-#define ENC_CHROMA_PHASE 0x44
-#define ENC_REG05 0x45
-#define ENC_REG06 0x46
-#define ENC_REG07 0x47
-#define ENC_HSYNC_WIDTH 0x48
-#define ENC_BURST_WIDTH 0x49
-#define ENC_BACK_PORCH 0x4A
-#define ENC_CB_BURST_LEVEL 0x4B
-#define ENC_CR_BURST_LEVEL 0x4C
-#define ENC_SLAVE_MODE 0x4D
-#define ENC_BLACK_LEVEL 0x4e
-#define ENC_BLANK_LEVEL 0x50
-#define ENC_NUM_LINES 0x57
-#define ENC_WHITE_LEVEL 0x5e
-#define ENC_CB_GAIN 0x60
-#define ENC_CR_GAIN 0x62
-#define ENC_TINT 0x65
-#define ENC_BREEZE_WAY 0x69
-#define ENC_FRONT_PORCH 0x6C
-#define ENC_ACTIVELINE 0x71
-#define ENC_FIRST_LINE 0x73
-#define ENC_REG34 0x74
-#define ENC_SYNC_LEVEL 0x75
-#define ENC_VBI_BLANK_LEVEL 0x7C
-#define ENC_RESET 0x7e
-#define ENC_NOTCH_FILTER 0x8d
-
-/*==========================================================================
-*
-* Macrovision Registers & Bit Definitions
-*
-*==========================================================================
-*/
-
-#define MV_N0 0x59
-#define MV_N1 0x52
-#define MV_N2 0x7b
-#define MV_N3 0x53
-#define MV_N4 0x79
-#define MV_N5 0x5d
-#define MV_N6 0x7a
-#define MV_N7 0x64
-#define MV_N8 0x54
-#define MV_N9 0x55
-#define MV_N10 0x56
-#define MV_N11 0x6d
-#define MV_N12 0x6f
-#define MV_N13 0x5a
-#define MV_N14 0x5b
-#define MV_N15 0x5c
-#define MV_N16 0x63
-#define MV_N17 0x66
-#define MV_N18 0x68
-#define MV_N19 0x67
-#define MV_N20 0x61
-#define MV_N21 0x6a
-#define MV_N22 0x76
-#define MV_AGC_PULSE_LEVEL 0x77
-#define MV_BP_PULSE_LEVEL 0x78
-
-/*==========================================================================
-*
-* The TRACE macro can be used to display debug information. It can display
-* one or more parameters in a formatted string like printf. No code will be
-* generated for a release build. Use double parentheses for compatibility
-* with C #define statements. Newline characters are not added
-* automatically. Usage example:
-*
-* TRACE(("Number is %d, Name is %s.\n",iNumber,lpszName))
-*
-*==========================================================================
-*/
-
-/*//#ifdef _DEBUG*/
-/*//void trace(const char *p_fmt,...);*/
-/*//#define TRACE(parameters) {trace parameters;}*/
-/*//#else*/
-#define TRACE(parameters) {}
-/*//#endif*/
-
-/****/
-/*// GCC timing structure.*/
-/****/
-typedef struct _S_TIMING_SPECS
-{
- int vga_width;
- int vga_lines;
- int tv_width;
- int tv_lines;
- int h_total;
- int h_sync;
- int v_total;
- int v_sync;
-} S_TIMING_SPECS;
-
-/****/
-/*// Revision of Houston chip*/
-/****/
-#define HOUSTON_REV_A 0
-#define HOUSTON_REV_B 1
-static int houston_Rev(void);
-
-/*==========================================================================
-*
-* Functions
-*
-*==========================================================================
-*/
-
-static int houston_init(void);
-
-static unsigned char PLAL_FS450_i2c_address(void);
-static int PLAL_FS450_UIM_mode(void);
-static int PLAL_ReadRegister(S_REG_INFO *p_reg);
-static int PLAL_WriteRegister(const S_REG_INFO *p_reg);
-static int PLAL_IsTVOn(void);
-static int PLAL_EnableVga(void);
-static int PLAL_PrepForTVout(void);
-static int PLAL_SetTVTimingRegisters(const S_TIMING_SPECS *p_specs);
-static int PLAL_FinalEnableTVout(unsigned long vga_mode);
-
-/****/
-/*Direct Memory Access Functions*/
-/****/
-/*NOTE: Cx5530 is assumed hardcoded at 0x10000 offset*/
-/*from MediaGX base. F4Bar is bogus as described in the*/
-/*Cx5530 datasheet (actually points to GX frame buffer).*/
-/****/
-static int DMAL_ReadUInt32(unsigned long phys_addr, unsigned long *p_data)
-{
- *p_data = READ_REG32(phys_addr);
- return 0;
-}
-
-static int DMAL_WriteUInt32(unsigned long phys_addr, unsigned long data)
-{
- WRITE_REG32(phys_addr, data);
- return 0;
-}
-
-/****/
-/*Houston register access functions.*/
-/****/
-static int houston_ReadReg(unsigned int reg, unsigned long *p_value, unsigned int bytes)
-{
- return gfx_i2c_read(1, PLAL_FS450_i2c_address(), (unsigned char)reg,
- (unsigned char)bytes, (unsigned char *)p_value);
-}
-
-static int houston_WriteReg(unsigned int reg, unsigned long value, unsigned int bytes)
-{
- return gfx_i2c_write(1, PLAL_FS450_i2c_address(), (unsigned char)reg,
- (unsigned char)bytes, (unsigned char *)&value);
-}
-
-/****/
-/*TV configuration functions.*/
-/****/
-static int config_init(void);
-static const S_TIMING_SPECS *p_specs(void);
-static void config_power(int on);
-static void config_vga_mode(unsigned long vga_mode);
-static void config_tv_std(unsigned long tv_std, unsigned int trigger_bits);
-static void conget_tv_std(unsigned long *p_tv_std);
-static unsigned long supported_standards(void);
-static void config_tvout_mode(unsigned long tvout_mode);
-static void conget_tvout_mode(unsigned long *p_tvout_mode);
-static void config_overscan_xy( unsigned long tv_std, unsigned long vga_mode,
- int overscan_x, int overscan_y, int pos_x, int pos_y);
-static void config_nco(unsigned long tv_std,unsigned long vga_mode);
-static void config_sharpness(int sharpness);
-static void conget_sharpness(int *p_sharpness);
-static void config_flicker(int flicker);
-static void conget_flicker(int *p_flicker);
-static void config_color(int color);
-static void conget_color(int *p_color);
-static void config_brightness_contrast(unsigned long tv_std, unsigned int trigger_bits,
- int brightness, int contrast);
-static void conget_brightness_contrast(unsigned long tv_std, unsigned int trigger_bits,
- int *p_brightness,int *p_contrast);
-static void config_yc_filter(unsigned long tv_std,int luma_filter, int chroma_filter);
-static void conget_yc_filter(int *p_luma_filter, int *p_chroma_filter);
-static void config_macrovision(unsigned long tv_std, unsigned int cp_trigger_bits);
-static void conget_macrovision(unsigned long tv_std, unsigned int *p_cp_trigger_bits);
-
-/****/
-/*Device settings.*/
-/****/
-typedef struct _S_DEVICE_SETTINGS
-{
- int tv_on;
- unsigned long vga_mode;
- unsigned long tv_std;
- unsigned long tvout_mode;
- int overscan_x;
- int overscan_y;
- int position_x;
- int position_y;
- int sharpness;
- int flicker;
- int color;
- int brightness;
- int contrast;
- unsigned char yc_filter;
- unsigned int aps_trigger_bits;
- int last_overscan_y;
-} S_DEVICE_SETTINGS;
-
-static S_DEVICE_SETTINGS d;
-
-/*//==========================================================================*/
-/****/
-/*TV Setup Parameters*/
-/****/
-/*//==========================================================================*/
-
-static const struct
-{
- unsigned long chroma_freq[5];
- unsigned short chroma_phase[5];
- unsigned short cphase_rst[5];
- unsigned short color[5];
- unsigned short cr_burst_level[5];
- unsigned short cb_burst_level[5];
- unsigned short sys625_50[5];
- unsigned short vsync5[5];
- unsigned short pal_mode[5];
- unsigned short hsync_width[5];
- unsigned short burst_width[5];
- unsigned short back_porch[5];
- unsigned short front_porch[5];
- unsigned short breeze_way[5];
- unsigned short activeline[5];
- unsigned short blank_level[5];
- unsigned short vbi_blank_level[5];
- unsigned short black_level[5];
- unsigned short white_level[5];
- unsigned short hamp_offset[5];
- unsigned short sync_level[5];
- unsigned short tv_lines[5];
- unsigned short tv_width[5];
- unsigned short tv_active_lines[5];
- unsigned short tv_active_width[5];
- unsigned char notch_filter[5];
- unsigned short houston_cr[5];
- unsigned short houston_ncodl[5];
- unsigned short houston_ncodh[5];
-} tvsetup =
-{
- /* ntsc, pal, ntsc-eij, pal-m, pal-n*/
- { 0x1f7cf021, 0xcb8a092a, 0x1f7cf021, 0xe3efe621, 0xcb8a092a }, /*chroma_freq*/
- { 0, 0, 0, 0, 0 }, /*chroma_phase*/
- { 2, 0, 2, 0, 0 }, /*cphase_rst*/
- { 54, 43, 54, 43, 43 }, /*color*/
- { 0, 31, 0, 29, 29 }, /*cr_burst_level*/
- { 59, 44, 59, 41, 41 }, /*cb_burst_level*/
- { 0, 1, 0, 0, 1 }, /*sys625_50*/
- { 0, 1, 0, 0, 0 }, /*vsync5*/
- { 0, 1, 0, 1, 1 }, /*pal_mode*/
- { 0x7a, 0x7a, 0x7a, 0x7a, 0x7a }, /*hsync_width*/
- { 0x40, 0x3c, 0x40, 0x40, 0x3c }, /*burst_width*/
- { 0x80, 0x9a, 0x80, 0x80, 0x9a }, /*back_porch*/
- { 0x24, 0x1e, 0x24, 0x24, 0x1e }, /*front_porch*/
- { 0x19, 0x1a, 0x19, 0x12, 0x1a }, /*breeze_way*/
- { 0xb4, 0xb4, 0xb4, 0xb4, 0xb4 }, /*active_line*/
- { 240, 251, 240, 240, 240 }, /*blank_level*/
- { 240, 251, 240, 240, 240 }, /*vbi_blank_level*/
- { 284, 252, 240, 252, 252 }, /*black_level*/
- { 823, 821, 823, 821, 821 }, /*white_level*/
- { 60, 48, 60, 48, 48 }, /*hamp_offset*/
- { 0x08, 0x08, 0x08, 0x08, 0x08 }, /*sync_level*/
- { 525, 625, 525, 525, 625 }, /*tv_lines*/
- { 858, 864, 858, 858, 864 }, /*tv_width*/
- { 487, 576, 487, 487, 576 }, /*tv_active_lines*/
- { 800, 800, 800, 800, 800 }, /*tv_active_width*/
- { 0x1a, 0x1d, 0x1a, 0x1d, 0x1d }, /*notch filter enabled*/
- { 0x0000, 0x0100, 0x0000, 0x0000, 0x0100 }, /*houston cr pal*/
- { 0x7e48, 0xf580, 0x7e48, 0x7e48, 0xf580 }, /*houston ncodl*/
- { 0x001b, 0x0020, 0x001b, 0x001b, 0x0020 } /*houston ncodh*/
-};
-
-/****/
-/*MediaGX default underscan and centered position setups.*/
-/****/
-#define SCANTABLE_ENTRIES 5
-struct _scantable
-{
- unsigned long mode;
- unsigned short v_total[5];
- unsigned short v_sync[5];
- unsigned short iha[5];
- signed short iho[5];
- signed short hsc[5];
-};
-
-static struct _scantable scantable[SCANTABLE_ENTRIES] =
-{
- {
- GFX_VGA_MODE_640X480,
- { 617, 624, 617, 624, 624 }, /*v_total*/
- { 69, 88, 69, 88, 88 }, /*v_sync*/
- { 720, 720, 720, 720, 720 }, /*iha */
- { 0, 0, 0, 0, 0 }, /*iho */
- { -12, 0, -6, 0, 0 } /*hsc*/
- },
- {
- GFX_VGA_MODE_800X600,
- { 740, 740, 740, 740, 740 }, /*v_total*/
- { 90, 88, 90, 88, 88 }, /*v_sync*/
- { 720, 720, 508, 720, 720 }, /*iha */
- { -8, 11, -8, -8, 11 }, /*iho */
- { -27, -27, -27, -27, -27 } /*hsc*/
- },
- {
- GFX_VGA_MODE_720X487,
- { 525, 720, 525, 720, 720 }, /*v_total*/
- { 23, 230, 23, 230, 230 }, /*v_sync*/
- { 720, 720, 720, 720, 720 }, /*iha */
- { 0xa2, 0xa2, 0xa2, 0xa2, 0xa2 }, /*iho */
- { 0, 0, 0, 0, 0 } /*hsc*/
- },
- {
- GFX_VGA_MODE_720X576,
- { 720, 625, 720, 625, 625 }, /*v_total*/
- { 129, 25, 129, 25, 25 }, /*v_sync*/
- { 720, 720, 720, 720, 720 }, /*iha */
- { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa }, /*iho */
- { 0, 0, 0, 0, 0 } /*hsc*/
- },
- {
- GFX_VGA_MODE_1024X768,
- { 933, 942, 933, 806, 806 }, /*v_total*/
- { 121, 112, 121, 88, 88 }, /*v_sync*/
- { 600, 600, 600, 600, 600 }, /*iha */
- { 0x3c, 0x23, 0x3c, 0x65, 0x65 }, /*iho */
- { 35, 26, 35, 26, 26 } /*hsc*/
- },
-};
-
-/****/
-/*Houston fifo configuration constants.*/
-/****/
-struct _ffolat
-{
- int v_total;
- unsigned short ffolat;
-};
-
-struct _ffolativo
-{
- int v_total;
- unsigned short ivo;
- unsigned short ffolat;
-};
-
-/*h_total=832, ivo=40, tv_width=858, tv_lines=525, vga_lines=480*/
-#define SIZE6X4NTSC 66
-static struct _ffolat ffo6x4ntsc[SIZE6X4NTSC+1] =
-{
- { 541, 0x40 }, { 545, 0x40 }, { 549, 0x40 }, { 553, 0x40 },
- { 557, 0x58 }, { 561, 0x40 }, { 565, 0x40 }, { 569, 0x40 },
- { 573, 0x48 }, { 577, 0x40 }, { 581, 0x40 }, { 585, 0x40 },
- { 589, 0x40 }, { 593, 0x48 }, { 597, 0x40 }, { 601, 0x40 },
- { 605, 0x40 }, { 609, 0x40 }, { 613, 0x5b }, { 617, 0x48 },
- { 621, 0x60 }, { 625, 0x48 }, { 629, 0x48 }, { 633, 0x40 },
- { 637, 0x5e }, { 641, 0x40 }, { 645, 0x50 }, { 649, 0x56 },
- { 653, 0x58 }, { 657, 0x6c }, { 661, 0x40 }, { 665, 0x40 },
- { 669, 0x40 }, { 673, 0x40 }, { 677, 0x40 }, { 681, 0x40 },
- { 685, 0x40 }, { 689, 0x40 }, { 693, 0x40 }, { 697, 0x40 },
- { 701, 0x40 }, { 705, 0x40 }, { 709, 0x40 }, { 713, 0x40 },
- { 717, 0x40 }, { 721, 0x40 }, { 725, 0x40 }, { 729, 0x40 },
- { 733, 0x40 }, { 737, 0x40 }, { 741, 0x40 }, { 745, 0x40 },
- { 749, 0x40 }, { 753, 0x40 }, { 757, 0x40 }, { 761, 0x40 },
- { 765, 0x40 }, { 769, 0x40 }, { 773, 0x40 }, { 777, 0x40 },
- { 781, 0x40 }, { 785, 0x40 }, { 789, 0x40 }, { 793, 0x40 },
- { 797, 0x30 }, { 801, 0x40 },
- { -1, 0 }
-};
-
-#define SIZE6X4PAL 45
-static struct _ffolat ffo6x4pal[SIZE6X4PAL+1] =
-{
- { 625, 0x60 }, { 629, 0x60 }, { 633, 0x60 }, { 637, 0x60 },
- { 641, 0x50 }, { 645, 0x60 }, { 649, 0x60 }, { 653, 0x60 },
- { 657, 0x60 }, { 661, 0x60 }, { 665, 0x60 }, { 669, 0x60 },
- { 673, 0x60 }, { 677, 0x60 }, { 681, 0x60 }, { 685, 0x60 },
- { 689, 0x60 }, { 693, 0x60 }, { 697, 0x60 }, { 701, 0x60 },
- { 705, 0x60 }, { 709, 0x60 }, { 713, 0x60 }, { 717, 0x60 },
- { 721, 0x60 }, { 725, 0x60 }, { 729, 0x60 }, { 733, 0x60 },
- { 737, 0x60 }, { 741, 0x60 }, { 745, 0x60 }, { 749, 0x60 },
- { 753, 0x60 }, { 757, 0x60 }, { 761, 0x60 }, { 765, 0x60 },
- { 769, 0x60 }, { 773, 0x60 }, { 777, 0x60 }, { 781, 0x60 },
- { 785, 0x60 }, { 789, 0x60 }, { 793, 0x60 }, { 797, 0x60 },
- { 801, 0x60 },
- { -1, 0 }
-};
-
-#define SIZE7X4NTSC 40
-static struct _ffolat ffo7x4ntsc[SIZE7X4NTSC+1] =
-{
- { 525, 0x52 }, { 529, 0x52 }, { 533, 0x52 }, { 537, 0x52 },
- { 541, 0x52 }, { 545, 0x40 }, { 549, 0x40 }, { 553, 0x40 },
- { 557, 0x58 }, { 561, 0x40 }, { 565, 0x58 }, { 569, 0x40 },
- { 573, 0x48 }, { 577, 0x40 }, { 581, 0x40 }, { 585, 0x40 },
- { 589, 0x40 }, { 593, 0x48 }, { 597, 0x40 }, { 601, 0x40 },
- { 605, 0x40 }, { 609, 0x40 }, { 613, 0x5b }, { 617, 0x48 },
- { 621, 0x60 }, { 625, 0x48 }, { 629, 0x48 }, { 633, 0x40 },
- { 637, 0x5e }, { 641, 0x40 }, { 645, 0x50 }, { 649, 0x56 },
- { 653, 0x58 }, { 657, 0x6c }, { 661, 0x40 }, { 665, 0x40 },
- { 669, 0x40 }, { 673, 0x40 }, { 677, 0x40 }, { 681, 0x40 },
- { -1, 0 }
-};
-
-#define SIZE7X4PAL 24
-static struct _ffolat ffo7x4pal[SIZE7X4PAL+1] =
-{
- { 625, 0x60 }, { 629, 0x60 }, { 633, 0x60 }, { 637, 0x60 },
- { 641, 0x50 }, { 645, 0x60 }, { 649, 0x60 }, { 653, 0x60 },
- { 657, 0x60 }, { 661, 0x60 }, { 665, 0x60 }, { 669, 0x60 },
- { 673, 0x60 }, { 677, 0x60 }, { 681, 0x60 }, { 685, 0x60 },
- { 689, 0x60 }, { 693, 0x60 }, { 697, 0x60 }, { 701, 0x60 },
- { 705, 0x60 }, { 709, 0x60 }, { 713, 0x60 }, { 717, 0x60 },
- { -1, 0 }
-};
-
-#define SIZE7X5NTSC 54
-static struct _ffolat ffo7x5ntsc[SIZE7X5NTSC+1] =
-{
- { 590, 0x40 }, { 594, 0x48 }, { 598, 0x40 }, { 602, 0x40 },
- { 606, 0x40 }, { 610, 0x40 }, { 614, 0x5b }, { 618, 0x48 },
- { 622, 0x60 }, { 626, 0x48 }, { 630, 0x48 }, { 634, 0x40 },
- { 638, 0x5e }, { 642, 0x40 }, { 646, 0x50 }, { 650, 0x56 },
- { 654, 0x58 }, { 658, 0x6c }, { 662, 0x40 }, { 666, 0x40 },
- { 670, 0x40 }, { 674, 0x40 }, { 678, 0x40 }, { 682, 0x40 },
- { 686, 0x40 }, { 690, 0x40 }, { 694, 0x40 }, { 698, 0x40 },
- { 702, 0x40 }, { 706, 0x40 }, { 710, 0x40 }, { 714, 0x40 },
- { 718, 0x40 }, { 722, 0x40 }, { 726, 0x40 }, { 730, 0x40 },
- { 734, 0x40 }, { 738, 0x40 }, { 742, 0x40 }, { 746, 0x40 },
- { 750, 0x40 }, { 754, 0x40 }, { 758, 0x40 }, { 762, 0x40 },
- { 766, 0x40 }, { 770, 0x40 }, { 774, 0x40 }, { 778, 0x40 },
- { 782, 0x40 }, { 786, 0x40 }, { 790, 0x40 }, { 794, 0x40 },
- { 798, 0x30 }, { 802, 0x40 },
- { -1, 0 }
-};
-
-#define SIZE7X5PAL 45
-static struct _ffolat ffo7x5pal[SIZE7X5PAL+1] =
-{
- { 625, 0x60 }, { 629, 0x60 }, { 633, 0x60 }, { 637, 0x60 },
- { 641, 0x50 }, { 645, 0x60 }, { 649, 0x60 }, { 653, 0x60 },
- { 657, 0x60 }, { 661, 0x60 }, { 665, 0x60 }, { 669, 0x60 },
- { 673, 0x60 }, { 677, 0x60 }, { 681, 0x60 }, { 685, 0x60 },
- { 689, 0x60 }, { 693, 0x60 }, { 697, 0x60 }, { 701, 0x60 },
- { 705, 0x60 }, { 709, 0x60 }, { 713, 0x60 }, { 717, 0x60 },
- { 721, 0x60 }, { 725, 0x60 }, { 729, 0x60 }, { 733, 0x60 },
- { 737, 0x60 }, { 741, 0x60 }, { 745, 0x60 }, { 749, 0x60 },
- { 753, 0x60 }, { 757, 0x60 }, { 761, 0x60 }, { 765, 0x60 },
- { 769, 0x60 }, { 773, 0x60 }, { 777, 0x60 }, { 781, 0x60 },
- { 785, 0x60 }, { 789, 0x60 }, { 793, 0x60 }, { 797, 0x60 },
- { 801, 0x60 },
- { -1, 0 }
-};
-
-/*h_total=1056, vga_lines=600*/
-#define SIZE8X6NTSC 37
-static struct _ffolat ffo8x6ntsc[SIZE8X6NTSC+1] = {
- { 620, 0x40 }, /*v_total_min >= vsync+10 >= vga_lines+10 = 610*/
- { 625, 0x58 }, { 630, 0x40 }, { 635, 0x40 }, { 640, 0x40 },
- { 645, 0x46 }, { 650, 0x46 }, { 655, 0x4f }, { 660, 0x4c },
- { 665, 0x4a }, { 670, 0x50 }, { 675, 0x2f }, { 680, 0x48 },
- { 685, 0x38 }, { 690, 0x31 }, { 695, 0x40 }, { 700, 0x21 },
- { 705, 0x25 }, { 710, 0x40 }, { 715, 0x48 }, { 720, 0x50 },
- { 725, 0x30 }, { 730, 0x50 }, { 735, 0x50 }, { 740, 0x50 },
- { 745, 0x40 }, { 750, 0x38 }, { 755, 0x50 }, { 760, 0x50 },
- { 765, 0x40 }, { 770, 0x38 }, { 775, 0x40 }, { 780, 0x40 },
- { 785, 0x40 }, { 790, 0x38 }, { 795, 0x50 }, { 800, 0x50 },
- { -1, 0 }
-};
-
-/*h_total=1056, vga_lines=600*/
-#define SIZE8X6PAL 36
-static struct _ffolat ffo8x6pal[SIZE8X6PAL+1] = {
- { 625, 0x80 }, { 630, 0x80 }, { 635, 0x5a }, { 640, 0x55 },
- { 645, 0x48 }, { 650, 0x65 }, { 655, 0x65 }, { 660, 0x50 },
- { 665, 0x80 }, { 670, 0x70 }, { 675, 0x56 }, { 680, 0x80 },
- { 685, 0x58 }, { 690, 0x31 }, { 695, 0x80 }, { 700, 0x60 },
- { 705, 0x45 }, { 710, 0x4a }, { 715, 0x50 }, { 720, 0x50 },
- { 725, 0x50 }, { 730, 0x45 }, { 735, 0x50 }, { 740, 0x50 },
- { 745, 0x50 }, { 750, 0x50 }, { 755, 0x50 }, { 760, 0x50 },
- { 765, 0x50 }, { 770, 0x50 }, { 775, 0x50 }, { 780, 0x50 },
- { 785, 0x50 }, { 790, 0x50 }, { 795, 0x50 }, { 800, 0x50 },
- { -1, 0 }
-};
-
-/*h_total=1344, vga_lines=768*/
-#define SIZE10X7NTSC 45
-static struct _ffolativo ffo10x7ntsc[SIZE10X7NTSC] = {
- { 783, 0x4d, 0x40 },
- { 789, 0x47, 0x14 },
- { 795, 0x47, 0x7f },
- { 801, 0x47, 0x53 },
- { 807, 0x47, 0x11 },
- { 813, 0x47, 0x78 },
- { 819, 0x47, 0x54 },
- { 825, 0x47, 0x40 },
- { 831, 0x47, 0x0f },
- { 837, 0x4d, 0x40 },
- { 843, 0x47, 0x5a },
- { 849, 0x4d, 0x40 },
- { 855, 0x47, 0x4b },
- { 861, 0x4d, 0x40 },
- { 867, 0x47, 0x4b },
- { 873, 0x4d, 0x40 },
- { 879, 0x47, 0x07 },
- { 885, 0x48, 0x20 },
- { 891, 0x47, 0x82 },
- { 897, 0x47, 0x60 },
- { 903, 0x47, 0x7f },
- { 909, 0x4d, 0x40 },
- { 915, 0x48, 0x40 },
- { 921, 0x4c, 0x40 },
- { 927, 0x49, 0x40 },
- { 933, 0x48, 0x40 },
- { 939, 0x4a, 0x40 },
- { 945, 0x46, 0x40 },
- { 951, 0x4a, 0x40 },
- { 957, 0x4a, 0x40 },
- { 963, 0x4b, 0x40 },
- { 969, 0x4b, 0x40 },
- { 975, 0x48, 0x40 },
- { 981, 0x47, 0x40 },
- { 987, 0x47, 0x40 },
- { 993, 0x47, 0x40 },
- { 999, 0x48, 0x40 },
- { 1005, 0x48, 0x40 },
- { 1011, 0x47, 0x40 },
- { 1017, 0x47, 0x40 },
- { 1023, 0x48, 0x40 },
- { 1029, 0x48, 0x40 },
- { 1035, 0x46, 0x40 },
- { 1041, 0x47, 0x40 },
- { 1047, 0x47, 0x40 }
-};
-
-/*h_total=1344, vga_lines=768*/
-#define SIZE10X7PAL 46
-static struct _ffolativo ffo10x7pal[SIZE10X7PAL] = {
- { 781, 0x49, 0x40 },
- { 787, 0x46, 0x40 },
- { 793, 0x48, 0x40 },
- { 799, 0x46, 0x40 },
- { 805, 0x49, 0x40 },
- { 811, 0x47, 0x40 },
- { 817, 0x46, 0x40 },
- { 823, 0x46, 0x56 },
- { 829, 0x46, 0x2d },
- { 835, 0x46, 0x40 },
- { 841, 0x46, 0x2d },
- { 847, 0x46, 0x3f },
- { 853, 0x46, 0x10 },
- { 859, 0x46, 0x86 },
- { 865, 0x46, 0xc9 },
- { 871, 0x46, 0x83 },
- { 877, 0x46, 0xa8 },
- { 883, 0x46, 0x81 },
- { 889, 0x46, 0xa5 },
- { 895, 0x46, 0xa9 },
- { 901, 0x46, 0x81 },
- { 907, 0x46, 0xa4 },
- { 913, 0x46, 0xa5 },
- { 919, 0x46, 0x7f },
- { 925, 0x46, 0xa2 },
- { 931, 0x46, 0x9d },
- { 937, 0x46, 0xc1 },
- { 943, 0x46, 0x96 },
- { 949, 0x46, 0xb7 },
- { 955, 0x46, 0xb1 },
- { 961, 0x46, 0x8a },
- { 967, 0x46, 0xa9 },
- { 973, 0x46, 0xa0 },
- { 979, 0x46, 0x40 },
- { 985, 0x46, 0x97 },
- { 991, 0x46, 0xb5 },
- { 997, 0x46, 0xaa },
- { 1003, 0x46, 0x83 },
- { 1009, 0x46, 0x9f },
- { 1015, 0x47, 0x40 },
- { 1021, 0x46, 0xad },
- { 1027, 0x46, 0x87 },
- { 1033, 0x46, 0xa2 },
- { 1039, 0x47, 0x40 },
- { 1045, 0x46, 0xac },
- { 1051, 0x46, 0x86 }
-};
-
-/*//==========================================================================*/
-/****/
-/*FS450 API Functions.*/
-/****/
-/*//==========================================================================*/
-
-/****/
-/*Initialize device settings*/
-/****/
-static void initialize_houston_static_registers(void)
-{
- houston_WriteReg(HOUSTON_BYP, 0, 2);
- houston_WriteReg(HOUSTON_APO, 0, 2);
- houston_WriteReg(HOUSTON_ALO, 0, 2);
- houston_WriteReg(HOUSTON_AFO, 0, 2);
- houston_WriteReg(HOUSTON_BCONTL,0, 2);
- houston_WriteReg(HOUSTON_BCONTH,0, 2);
- houston_WriteReg(HOUSTON_BDONE, 0, 2);
- houston_WriteReg(HOUSTON_BDIAGL,0, 2);
- houston_WriteReg(HOUSTON_BDIAGH,0, 2);
- houston_WriteReg(HOUSTON_MISC, 0, 2);
-}
-
-int FS450_init(void)
-{
- int err;
-
- TRACE(("FS450_Init()\n"))
-
- err = houston_init();
- if (err)
- return err;
-
-
- initialize_houston_static_registers();
-
-#if 1
- d.tv_on = PLAL_IsTVOn() ? 1 : 0;
-#else
- d.tv_on = 0;
-#endif
-
-#if 1
- /*get the current tv standard*/
- conget_tv_std(&d.tv_std);
-#else
- /*default to VP_TV_STANDARD_NTSC_M*/
- d.tv_std = VP_TV_STANDARD_NTSC_M;
- config_tv_std(d.tv_std);
-#endif
-
- d.vga_mode = 0;
-
-#if 0
- /*get the current tvout mode*/
- conget_tvout_mode(&d.tvout_mode);
-#else
- /*default to VP_TVOUT_MODE_CVBS_YC*/
- d.tvout_mode = GFX_TVOUT_MODE_CVBS_YC;
-#endif
-
-#if 0
- /*get the current sharpness*/
- conget_sharpness(d.sharpness);
-#else
- /*default to 1000 out of 1000*/
- d.sharpness = 1000;
- config_sharpness(d.sharpness);
-#endif
-
-#if 0
- /*get the current flicker*/
- conget_flicker(d.flicker);
-#else
- /*default to 800 out of 1000*/
- d.flicker = 800;
- config_flicker(d.flicker);
-#endif
-
-#if 0
- /*get the current size and position*/
-#else
- /*default to zeros*/
- d.overscan_x = 0;
- d.overscan_y = 0;
- d.position_x = 0;
- d.position_y = 0;
-#endif
-
-#if 0
- /*get the current color*/
- conget_color(d.color);
-#else
- d.color = 50;
- /*//d.color = tvsetup.color[k];*/
- config_color(d.color);
-#endif
-
-#if 0
- /*get the current brightness and contrast*/
- conget_brightness_contrast(d.tv_std,d.aps_trigger_bits,d.brightness,d.contrast);
-#else
- /*default*/
- d.brightness = 50;
- d.contrast = 60;
- config_brightness_contrast(d.tv_std,d.aps_trigger_bits,d.brightness,d.contrast);
-#endif
-
-#if 1
- /*get the current yc filtering*/
- {
- int luma_filter,chroma_filter;
-
- conget_yc_filter(&luma_filter,&chroma_filter);
- d.yc_filter = 0;
- if (luma_filter)
- d.yc_filter |= GFX_LUMA_FILTER;
- if (chroma_filter)
- d.yc_filter |= GFX_CHROMA_FILTER;
- }
-#else
- /*default*/
- d.yc_filter = GFX_LUMA_FILTER + GFX_CHROMA_FILTER;
-#endif
-
-#if 0
- /*get the current cp settings*/
- conget_macrovision(d.tv_std,&d.aps_trigger_bits);
-#else
- d.aps_trigger_bits = 0;
- config_macrovision(d.tv_std,d.aps_trigger_bits);
-#endif
-
- d.last_overscan_y = -10000;
-
- return 0;
-}
-
-void FS450_cleanup(void)
-{
-}
-
-/*//==========================================================================*/
-/****/
-/*// Required configuration calls to write new settings to the device*/
-
-#define REQ_TV_STANDARD_BIT 0x0002
-#define REQ_VGA_MODE_BIT 0x0004
-#define REQ_TVOUT_MODE_BIT 0x0008
-#define REQ_SHARPNESS_BIT 0x0010
-#define REQ_FLICKER_BIT 0x0020
-#define REQ_OVERSCAN_POSITION_BIT 0x0040
-#define REQ_COLOR_BIT 0x0080
-#define REQ_BRIGHTNESS_CONTRAST_BIT 0x0100
-#define REQ_YC_FILTER_BIT 0x0200
-#define REQ_MACROVISION_BIT 0x0400
-#define REQ_NCO_BIT 0x1000
-
-#define REQ_TV_STANDARD (REQ_TV_STANDARD_BIT | REQ_OVERSCAN_POSITION | REQ_BRIGHTNESS_CONTRAST | REQ_MACROVISION_BIT | REQ_YC_FILTER)
-#define REQ_VGA_MODE (REQ_VGA_MODE_BIT | REQ_OVERSCAN_POSITION)
-#define REQ_TVOUT_MODE (REQ_TVOUT_MODE_BIT)
-#define REQ_SHARPNESS (REQ_SHARPNESS_BIT)
-#define REQ_FLICKER (REQ_FLICKER_BIT)
-#define REQ_OVERSCAN_POSITION (REQ_OVERSCAN_POSITION_BIT | REQ_NCO)
-#define REQ_COLOR (REQ_COLOR_BIT)
-#define REQ_BRIGHTNESS_CONTRAST (REQ_BRIGHTNESS_CONTRAST_BIT)
-#define REQ_YC_FILTER (REQ_YC_FILTER_BIT)
-#define REQ_MACROVISION (REQ_TV_STANDARD_BIT | REQ_BRIGHTNESS_CONTRAST_BIT | REQ_MACROVISION_BIT)
-#define REQ_NCO (REQ_NCO_BIT)
-#define REQ_ENCODER (REQ_TV_STANDARD | REQ_COLOR | REQ_BRIGHTNESS_CONTRAST | REQ_YC_FILTER)
-
-static int write_config(int req)
-{
- unsigned long reg, reg_encoder_reset = 0;
- int reset;
-
- /*if we're changing the nco, and the vertical scaling has changed...*/
- reset = ((REQ_NCO_BIT & req) && (d.overscan_y != d.last_overscan_y));
- if (reset)
- {
- /*put the encoder into reset while making changes*/
- houston_ReadReg(ENC_RESET, &reg, 1);
- houston_WriteReg(ENC_RESET, reg | 0x01, 1);
- reg_encoder_reset = reg & 0x01;
- }
-
- if (REQ_TV_STANDARD_BIT & req)
- config_tv_std(d.tv_std, d.aps_trigger_bits);
-
- if (REQ_VGA_MODE_BIT & req)
- config_vga_mode(d.vga_mode);
-
- if (REQ_TVOUT_MODE_BIT & req)
- config_tvout_mode(d.tvout_mode);
-
- if (REQ_OVERSCAN_POSITION_BIT & req)
- {
- config_overscan_xy(
- d.tv_std,
- d.vga_mode,
- d.overscan_x,
- d.overscan_y,
- d.position_x,
- d.position_y);
-
- /*h_timing and v_timing and syncs.*/
- if (PLAL_IsTVOn())
- PLAL_SetTVTimingRegisters(p_specs());
- }
-
- if (REQ_NCO_BIT & req)
- config_nco(d.tv_std,d.vga_mode);
-
- if (REQ_SHARPNESS_BIT & req)
- config_sharpness(d.sharpness);
-
- if (REQ_FLICKER_BIT & req)
- config_flicker(d.flicker);
-
- if (REQ_COLOR_BIT & req)
- config_color(d.color);
-
- if (REQ_BRIGHTNESS_CONTRAST_BIT & req)
- {
- config_brightness_contrast(
- d.tv_std,
- d.aps_trigger_bits,
- d.brightness,
- d.contrast);
- }
-
- if (REQ_YC_FILTER_BIT & req)
- {
- config_yc_filter(
- d.tv_std,
- (d.yc_filter & GFX_LUMA_FILTER),
- (d.yc_filter & GFX_CHROMA_FILTER));
- }
-
- if (REQ_MACROVISION_BIT & req)
- config_macrovision(d.tv_std,d.aps_trigger_bits);
-
- /*if we decided to put the encoder into reset, put it back*/
- if (reset)
- {
- houston_ReadReg(ENC_RESET, &reg, 1);
- houston_WriteReg(ENC_RESET, reg_encoder_reset | (reg & ~0x01), 1);
-
- d.last_overscan_y = d.overscan_y;
- }
- return 0;
-}
-
-/*==========================================================================*/
-/****/
-/*// TV On*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_tv_enable(unsigned int *p_on)
-#else
-int gfx_get_tv_enable(unsigned int *p_on)
-#endif
-{
- if (!p_on)
- return ERR_INVALID_PARAMETER;
-
- *p_on = d.tv_on;
-
- return 0;
-}
-
-/*//int FS450_set_tv_on(unsigned int on)*/
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_enable(int on)
-#else
-int gfx_set_tv_enable(int on)
-#endif
-{
- unsigned long reg;
-
- /*if not mode change, just return*/
- if ((d.tv_on && on) || (!d.tv_on && !on))
- return 0;
-
- /*if turning off...*/
- if (!on)
- {
- /*reenable vga.*/
- PLAL_EnableVga();
-
- /*power down houston*/
- config_power(0);
-
- d.tv_on = 0;
-
- return 0;
- }
-
- /*turning on...*/
-
- /*power up houston */
- config_power(1);
-
- /*assert encoder reset.*/
- houston_WriteReg(ENC_RESET, 0x01, 1);
-
- /*initial platform preparation*/
- PLAL_PrepForTVout();
-
- /*configure encoder and nco.*/
- write_config(
- REQ_VGA_MODE |
- REQ_TV_STANDARD |
- REQ_TVOUT_MODE |
- REQ_OVERSCAN_POSITION |
- REQ_YC_FILTER |
- REQ_MACROVISION);
-
- /*set LP_EN and UIM*/
- houston_ReadReg(HOUSTON_CR, &reg, 2);
- reg |= CR_LP_EN;
- reg &= ~(CR_UIM_MOD0 | CR_UIM_MOD1);
- reg |= (PLAL_FS450_UIM_mode() << 14);
- houston_WriteReg(HOUSTON_CR,reg,2);
-
- /*set platform timing registers*/
- PLAL_SetTVTimingRegisters(p_specs());
-
- PLAL_FinalEnableTVout(d.vga_mode);
-
- /*sync bridge*/
- {
- int retry_count = 0;
-
- /*sync 50 times*/
- while (retry_count++ < 50)
- {
- /*sync bridge.*/
- houston_ReadReg(HOUSTON_MISC, &reg, 2);
- reg |= MISC_BRIDGE_SYNC;
- houston_WriteReg(HOUSTON_MISC, reg, 2);
- reg &= ~MISC_BRIDGE_SYNC;
- houston_WriteReg(HOUSTON_MISC, reg, 2);
- }
- }
-
- /*deassert encoder reset.*/
- houston_WriteReg(ENC_RESET, 0x00, 1);
-
- d.tv_on = 1;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_defaults(int format)
-#else
-int gfx_set_tv_defaults(int format)
-#endif
-{
- return 0;
-}
-
-/*==========================================================================*/
-/****/
-/*// TV standard*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_tv_standard(unsigned long *p_standard)
-#else
-int gfx_get_tv_standard(unsigned long *p_standard)
-#endif
-{
- if (!p_standard)
- return ERR_INVALID_PARAMETER;
-
- *p_standard = d.tv_std;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_get_available_tv_standards(unsigned long *p_standards)
-#else
-int gfx_get_available_tv_standards(unsigned long *p_standards)
-#endif
-{
- if (!p_standards)
- return ERR_INVALID_PARAMETER;
-
- *p_standards = supported_standards();
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_standard(unsigned long standard)
-#else
-int gfx_set_tv_standard(unsigned long standard)
-#endif
-{
- /*verify supported standard.*/
- if (!(standard & supported_standards()))
- return ERR_INVALID_PARAMETER;
-
- /*disallow if tv is on*/
- if (d.tv_on)
- return ERR_CANNOT_CHANGE_WHILE_TV_ON;
-
- d.tv_std = standard;
-/*// d.color = tvsetup.color[k];*/
-
- return write_config(REQ_TV_STANDARD);
-}
-
-/*==========================================================================*/
-/****/
-/*// vga mode as known by the driver*/
-#if GFX_TV_DYNAMIC
-int fs450_get_tv_vga_mode(unsigned long *p_vga_mode)
-#else
-int gfx_get_tv_vga_mode(unsigned long *p_vga_mode)
-#endif
-
-{
- if (!p_vga_mode)
- return ERR_INVALID_PARAMETER;
-
- *p_vga_mode = d.vga_mode;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_get_available_tv_vga_modes(unsigned long *p_vga_modes)
-#else
-int gfx_get_available_tv_vga_modes(unsigned long *p_vga_modes)
-#endif
-{
- if (!p_vga_modes)
- return ERR_INVALID_PARAMETER;
-
- *p_vga_modes =
- GFX_VGA_MODE_640X480 |
- GFX_VGA_MODE_720X487 |
- GFX_VGA_MODE_720X576 |
- GFX_VGA_MODE_800X600;
- if (houston_Rev() >= HOUSTON_REV_B)
- *p_vga_modes |= GFX_VGA_MODE_1024X768;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_vga_mode(unsigned long vga_mode)
-#else
-int gfx_set_tv_vga_mode(unsigned long vga_mode)
-#endif
-{
- /*reject if not a single valid VGA mode*/
- switch (vga_mode)
- {
- default:
- return ERR_INVALID_PARAMETER;
-
- case GFX_VGA_MODE_640X480:
- case GFX_VGA_MODE_720X487:
- case GFX_VGA_MODE_720X576:
- case GFX_VGA_MODE_800X600:
- break;
-
- case GFX_VGA_MODE_1024X768:
- if (houston_Rev() >= HOUSTON_REV_B)
- break;
- return ERR_INVALID_PARAMETER;
- }
-
- /*if the mode has changed...*/
- if (vga_mode != d.vga_mode)
- {
- d.vga_mode = vga_mode;
-
- return write_config(REQ_VGA_MODE);
- }
-
- return 0;
-}
-
-/*==========================================================================*/
-/****/
-/*// tvout mode*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_tvout_mode(unsigned long *p_tvout_mode)
-#else
-int gfx_get_tvout_mode(unsigned long *p_tvout_mode)
-#endif
-{
- if (!p_tvout_mode)
- return ERR_INVALID_PARAMETER;
-
- *p_tvout_mode = d.tvout_mode;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_tvout_mode(unsigned long tvout_mode)
-#else
-int gfx_set_tvout_mode(unsigned long tvout_mode)
-#endif
-{
- d.tvout_mode = tvout_mode;
-
- return write_config(REQ_TVOUT_MODE);
-}
-
-/*==========================================================================*/
-/****/
-/*// Sharpness*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_sharpness(int *p_sharpness)
-#else
-int gfx_get_sharpness(int *p_sharpness)
-#endif
-{
- if (!p_sharpness)
- return ERR_INVALID_PARAMETER;
-
- *p_sharpness = d.sharpness;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_sharpness(int sharpness)
-#else
-int gfx_set_sharpness(int sharpness)
-#endif
-{
- d.sharpness = range_limit(sharpness, 0, 1000);
-
- return write_config(REQ_SHARPNESS);
-}
-
-/*==========================================================================*/
-/****/
-/*flicker filter control.*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_flicker_filter(int *p_flicker)
-#else
-int gfx_get_flicker_filter(int *p_flicker)
-#endif
-{
- if (!p_flicker)
- return ERR_INVALID_PARAMETER;
-
- *p_flicker = d.flicker;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_flicker_filter(int flicker)
-#else
-int gfx_set_flicker_filter(int flicker)
-#endif
-{
- d.flicker = range_limit(flicker, 0, 1000);
-
- return write_config(REQ_FLICKER);
-}
-
-/*==========================================================================*/
-/****/
-/*// Overscan and Position*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_overscan(int *p_x, int *p_y)
-#else
-int gfx_get_overscan(int *p_x, int *p_y)
-#endif
-{
- if (!p_x || !p_y)
- return ERR_INVALID_PARAMETER;
-
- *p_x = d.overscan_x;
- *p_y = d.overscan_y;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_overscan(int x, int y)
-#else
-int gfx_set_overscan(int x, int y)
-#endif
-{
- d.overscan_x = range_limit(x, -1000, 1000);
- d.overscan_y = range_limit(y, -1000, 1000);
-
- return write_config(REQ_OVERSCAN_POSITION);
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_get_position(int *p_x, int *p_y)
-#else
-int gfx_get_position(int *p_x, int *p_y)
-#endif
-{
- if (!p_x || !p_y)
- return ERR_INVALID_PARAMETER;
-
- *p_x = d.position_x;
- *p_y = d.position_y;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_position(int x, int y)
-#else
-int gfx_set_position(int x, int y)
-#endif
-{
- d.position_x = range_limit(x, -1000, 1000);
- d.position_y = range_limit(y, -1000, 1000);
-
- return write_config(REQ_OVERSCAN_POSITION);
-}
-
-/*==========================================================================*/
-/****/
-/*// Color, Brightness, and Contrast*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_color(int *p_color)
-#else
-int gfx_get_color(int *p_color)
-#endif
-{
- if (!p_color)
- return ERR_INVALID_PARAMETER;
-
- *p_color = d.color;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_color(int color)
-#else
-int gfx_set_color(int color)
-#endif
-{
- d.color = range_limit(color, 0, 100);
-
- return write_config(REQ_COLOR);
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_get_brightness(int *p_brightness)
-#else
-int gfx_get_brightness(int *p_brightness)
-#endif
-{
- if (!p_brightness)
- return ERR_INVALID_PARAMETER;
-
- *p_brightness = d.brightness;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_brightness(int brightness)
-#else
-int gfx_set_brightness(int brightness)
-#endif
-{
- d.brightness = range_limit(brightness, 0, 100);
-
- return write_config(REQ_BRIGHTNESS_CONTRAST);
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_get_contrast(int *p_contrast)
-#else
-int gfx_get_contrast(int *p_contrast)
-#endif
-{
- if (!p_contrast)
- return ERR_INVALID_PARAMETER;
-
- *p_contrast = d.contrast;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_contrast(int constrast)
-#else
-int gfx_set_contrast(int constrast)
-#endif
-{
- d.contrast = range_limit(constrast, 0, 100);
-
- return write_config(REQ_BRIGHTNESS_CONTRAST);
-}
-
-/*==========================================================================*/
-/****/
-/*// YC filters*/
-
-#if GFX_TV_DYNAMIC
-int fs450_get_yc_filter(unsigned int *p_yc_filter)
-#else
-int gfx_get_yc_filter(unsigned int *p_yc_filter)
-#endif
-{
- if (!p_yc_filter)
- return ERR_INVALID_PARAMETER;
-
- if (houston_Rev() < HOUSTON_REV_B)
- return ERR_NOT_SUPPORTED;
-
- *p_yc_filter = d.yc_filter;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_yc_filter(unsigned int yc_filter)
-#else
-int gfx_set_yc_filter(unsigned int yc_filter)
-#endif
-{
- if (houston_Rev() < HOUSTON_REV_B)
- return ERR_NOT_SUPPORTED;
-
- /*luma filter.*/
- if (yc_filter & GFX_LUMA_FILTER)
- d.yc_filter |= GFX_LUMA_FILTER;
- else
- d.yc_filter &= ~GFX_LUMA_FILTER;
-
- /*chroma filter.*/
- if (yc_filter & GFX_CHROMA_FILTER)
- d.yc_filter |= GFX_CHROMA_FILTER;
- else
- d.yc_filter &= ~GFX_CHROMA_FILTER;
-
- return write_config(REQ_YC_FILTER);
-}
-
-
-#if GFX_TV_DYNAMIC
-int fs450_get_aps_trigger_bits(unsigned int *p_trigger_bits)
-#else
-int gfx_get_aps_trigger_bits(unsigned int *p_trigger_bits)
-#endif
-{
- if (!p_trigger_bits)
- return ERR_INVALID_PARAMETER;
-
- *p_trigger_bits = d.aps_trigger_bits;
-
- return 0;
-}
-
-#if GFX_TV_DYNAMIC
-int fs450_set_aps_trigger_bits(unsigned int trigger_bits)
-#else
-int gfx_set_aps_trigger_bits(unsigned int trigger_bits)
-#endif
-{
- d.aps_trigger_bits = trigger_bits;
-
- return write_config(REQ_MACROVISION);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_format
- *
- * This routine sets the TV encoder registers to the specified format
- * and resolution.
- * Currently only NTSC 640x480 is supported.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_format(TVStandardType format, GfxOnTVType resolution)
-#else
-int gfx_set_tv_format(TVStandardType format, GfxOnTVType resolution)
-#endif
-{
- /* ### ADD ### IMPLEMENTATION */
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_output
- *
- * This routine sets the TV encoder registers to the specified output type.
- * Supported output types are : S-VIDEO and Composite.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_output(int output)
-#else
-int gfx_set_tv_output(int output)
-#endif
-{
- /* ### ADD ### IMPLEMENTATION */
- return(0);
-}
-
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_cc_enable
- *
- * This routine enables or disables the use of the hardware CC registers
- * in the TV encoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_cc_enable(int enable)
-#else
-int gfx_set_tv_cc_enable(int enable)
-#endif
-{
- /* ### ADD ### IMPLEMENTATION */
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_tv_cc_data
- *
- * This routine writes the two specified characters to the CC data register
- * of the TV encoder.
- *-----------------------------------------------------------------------------
- */
-#if GFX_TV_DYNAMIC
-int fs450_set_tv_cc_data(unsigned char data1, unsigned char data2)
-#else
-int gfx_set_tv_cc_data(unsigned char data1, unsigned char data2)
-#endif
-{
- /* ### ADD ### IMPLEMENTATION */
- return(0);
-}
-
-#ifdef FS450_DIRECTREG
-
-/*//==========================================================================*/
-/****/
-/*// Direct Read and Write registers*/
-
-int FS450_ReadRegister(S_REG_INFO *p_reg)
-{
- unsigned long tmp;
-
- if (PLAL_ReadRegister(p_reg))
- return 0;
-
- if (SOURCE_HOUSTON == p_reg->source)
- {
- switch(p_reg->size)
- {
- case 1:
- case 2:
- {
- houston_ReadReg((int)p_reg->offset, &tmp, (int)p_reg->size);
- p_reg->value = tmp;
- }
- return 0;
-
- case 4:
- {
- houston_ReadReg((unsigned int)p_reg->offset, &tmp, 2);
- p_reg->value = (tmp << 16);
- houston_ReadReg((unsigned int)(p_reg->offset+2), &tmp, 2);
- p_reg->value |= tmp;
- }
- return 0;
- }
- }
-
- return ERR_INVALID_PARAMETER;
-}
-
-int FS450_WriteRegister(S_REG_INFO *p_reg)
-{
- if (PLAL_WriteRegister(p_reg))
- return 0;
-
- if (SOURCE_HOUSTON == p_reg->source)
- {
- houston_WriteReg((unsigned int)p_reg->offset, p_reg->value, p_reg->size);
-
- return 0;
- }
-
- return ERR_INVALID_PARAMETER;
-}
-
-#endif
-
-/****/
-/*Houston initialization function.*/
-/****/
-static int g_houston_rev = -1;
-
-static int houston_init(void)
-{
- /*//int errc;*/
- unsigned long write, read;
-
- TRACE(("houston_init()\n"))
-
- /*initialize I2C*/
- /*errc = I2C_init();
- if (errc)
- return errc;
- */
-
- /*Before we begin, we must enable power to the TFT*/
- read = READ_VID32 (CS5530_DISPLAY_CONFIG);
- read |= CS5530_DCFG_FP_PWR_EN | CS5530_DCFG_FP_DATA_EN;
- WRITE_VID32 (CS5530_DISPLAY_CONFIG, read);
-
-
- /*simple w/r test.*/
- write = 0x0055;
- read = 0;
-
- houston_WriteReg(HOUSTON_IHO, write, 2);
- houston_ReadReg(HOUSTON_IHO, &read, 2);
- if (read != write)
- {
- houston_WriteReg(HOUSTON_IHO, write, 2);
- houston_ReadReg(HOUSTON_IHO, &read, 2);
- if (read != write)
- {
- /*chip is not there, do something appropriate?*/
- TRACE(("wrote HOUSTON_IHO=0x0055, read 0x%04x\n",read))
- return ERR_DEVICE_NOT_FOUND;
- }
- }
-
- /*read chip revision.*/
- houston_ReadReg(HOUSTON_REV, &read, 2);
- g_houston_rev = (int) read;
-
- /*ok.*/
- return 0;
-}
-
-static int houston_Rev(void)
-{
- return g_houston_rev;
-}
-
-static S_TIMING_SPECS g_specs;
-
-static const S_TIMING_SPECS *p_specs(void)
-{
- return &g_specs;
-}
-
-/*//==========================================================================*/
-/****/
-/*FS450 configuration functions.*/
-/****/
-/*//==========================================================================*/
-static int config_init(void)
-{
- int err;
-
- TRACE(("config_init()\n"))
-
- err = houston_init();
- if (err)
- return err;
-
- return 0;
-}
-
-
-/*==========================================================================*/
-/****/
-/*convert word to encoder 10 bit value.*/
-
-static unsigned short w10bit2z(unsigned short w)
-{
- return (w >> 2) | ((w & 0x03) << 8);
-}
-
-static unsigned short z2w10bit(unsigned short z)
-{
- return (0x03 & (z >> 8)) | ((0xFF & z) << 2);
-}
-
-
-/*==========================================================================*/
-/****/
-/*// TV Standards*/
-
-static const struct
-{
- unsigned long standard;
- int tvsetup_index;
-} g_tv_standards[] =
-{
- {GFX_TV_STANDARD_NTSC_M, 0},
- {GFX_TV_STANDARD_NTSC_M_J, 2},
- {GFX_TV_STANDARD_PAL_B, 1},
- {GFX_TV_STANDARD_PAL_D, 1},
- {GFX_TV_STANDARD_PAL_H, 1},
- {GFX_TV_STANDARD_PAL_I, 1},
- {GFX_TV_STANDARD_PAL_M, 3},
- {GFX_TV_STANDARD_PAL_N, 4},
- {GFX_TV_STANDARD_PAL_G, 1},
-};
-
-static int map_tvstd_to_index(unsigned long tv_std)
-{
- unsigned int i;
-
- for (i = 0; i < sizeof(g_tv_standards) / sizeof(*g_tv_standards); i++)
- {
- if (tv_std == g_tv_standards[i].standard)
- return g_tv_standards[i].tvsetup_index;
- }
-
- return -1;
-}
-
-static unsigned long supported_standards(void)
-{
- unsigned long standards = 0;
- unsigned int i;
-
- for (i = 0; i < sizeof(g_tv_standards) / sizeof(*g_tv_standards); i++)
- {
- if (g_tv_standards[i].tvsetup_index >= 0)
- standards |= g_tv_standards[i].standard;
- }
-
- return standards;
-}
-
-
-/*==========================================================================*/
-
-static void config_power(int on)
-{
- unsigned long reg;
-
- if (houston_Rev() < HOUSTON_REV_B)
- {
- /*no power down supported, but still turn of clock in off mode*/
- if (on)
- {
- houston_ReadReg(HOUSTON_CR, &reg, 2);
- reg &= ~(CR_CLKOFF | CR_RESET);
- houston_WriteReg(HOUSTON_CR, reg, 2);
- reg |= CR_RESET;
- houston_WriteReg(HOUSTON_CR, reg, 2);
- reg &= ~CR_RESET;
- houston_WriteReg(HOUSTON_CR, reg, 2);
- }
- else
- {
- houston_ReadReg(HOUSTON_CR, &reg, 2);
- reg |= CR_CLKOFF;
- houston_WriteReg(HOUSTON_CR, reg, 2);
- }
-
- return;
- }
-
- if (on)
- {
- /*!CLKOFF, !COMPOFF, !YCOFF*/
- /*and reset Houston*/
- houston_ReadReg(HOUSTON_CR, &reg, 2);
- reg &= ~(CR_CLKOFF | CR_RESET | CR_COMPOFF | CR_YCOFF);
- houston_WriteReg(HOUSTON_CR, reg, 2);
- reg |= CR_RESET;
- houston_WriteReg(HOUSTON_CR, reg, 2);
- reg &= ~CR_RESET;
- houston_WriteReg(HOUSTON_CR, reg, 2);
-
- /*!GTLIO_PD*/
- houston_ReadReg(HOUSTON_MISC, &reg, 2);
- reg &= ~MISC_GTLIO_PD;
- houston_WriteReg(HOUSTON_MISC,reg,2);
- }
- else
- {
- /*CLKOFF, COMPOFF, YCOFF*/
- houston_ReadReg(HOUSTON_CR, &reg, 2);
- reg |= (CR_CLKOFF | CR_COMPOFF | CR_YCOFF);
- houston_WriteReg(HOUSTON_CR, reg, 2);
-
- /*GTLIO_PD*/
- houston_ReadReg(HOUSTON_MISC, &reg, 2);
- reg |= MISC_GTLIO_PD;
- houston_WriteReg(HOUSTON_MISC,reg,2);
- }
-}
-
-
-/*==========================================================================*/
-/****/
-/*// VGA mode*/
-
-static void config_vga_mode(unsigned long vga_mode)
-{
- /*h_total must be evenly divisible by 32?*/
-
- static struct
- {
- unsigned long mode;
- int width;
- int lines;
- int h_total;
- } vgaparams[] =
- {
- {GFX_VGA_MODE_640X480, 640, 480, 1056},
- {GFX_VGA_MODE_720X487, 720, 487, 1056},
- {GFX_VGA_MODE_720X576, 720, 576, 1056},
- {GFX_VGA_MODE_800X600, 800, 600, 1056},
- {GFX_VGA_MODE_1024X768, 1024, 768, 1344},
- };
-
- unsigned long cr, misc, byp;
- unsigned int i;
-
- g_specs.vga_width = 0;
- g_specs.vga_lines = 0;
- g_specs.h_total = 0;
-
- for (i = 0; i < sizeof(vgaparams) / sizeof(*vgaparams); i++)
- {
- if (vga_mode == vgaparams[i].mode)
- {
- g_specs.vga_width = vgaparams[i].width;
- g_specs.vga_lines = vgaparams[i].lines;
- g_specs.h_total = vgaparams[i].h_total;
- break;
- }
- }
- if (!g_specs.h_total)
- return;
-
- /*clock mux decimator and vga dual.*/
- houston_ReadReg(HOUSTON_CR, &cr, 2);
- houston_ReadReg(HOUSTON_MISC, &misc, 2);
- houston_ReadReg(HOUSTON_BYP, &byp, 2);
-
- if (vga_mode == GFX_VGA_MODE_1024X768)
- {
- /*XGA*/
- cr |= CR_UIM_DEC;
- misc |= MISC_VGACKDIV;
- byp |= (BYP_HDS_BYPASS | BYP_CAC_BYPASS);
- }
- else
- {
- /*VGA,SVGA*/
- cr &= ~CR_UIM_DEC;
- misc &= ~MISC_VGACKDIV;
- byp &= ~(BYP_HDS_BYPASS | BYP_CAC_BYPASS);
- }
-
- houston_WriteReg(HOUSTON_CR, cr, 2);
- houston_WriteReg(HOUSTON_MISC, misc, 2);
- houston_WriteReg(HOUSTON_BYP, byp, 2);
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Write settings for TV standard to device*/
-
-static void config_tv_std(unsigned long tv_std, unsigned int trigger_bits)
-{
- int k;
- unsigned short reg34;
- unsigned long cr, w;
- unsigned long l;
-
- /*verify supported standard.*/
- k = map_tvstd_to_index(tv_std);
- if (k < 0)
- return;
-
- /*store tv width and lines*/
- g_specs.tv_width = tvsetup.tv_width[k];
- g_specs.tv_lines = tvsetup.tv_lines[k];
-
- /*houston CR register.*/
- houston_ReadReg(HOUSTON_CR, &cr, 2);
- cr &= ~CR_656_PAL_NTSC;
- cr |= tvsetup.houston_cr[k];
- houston_WriteReg(HOUSTON_CR, cr, 2);
-
- /*setup the encoder.*/
- l = tvsetup.chroma_freq[k];
- houston_WriteReg(ENC_CHROMA_FREQ, (int)(l & 0x00ff), 1);
- houston_WriteReg(ENC_CHROMA_FREQ+1, (int)((l>>8) & 0x00ff), 1);
- houston_WriteReg(ENC_CHROMA_FREQ+2, (int)((l>>16) & 0x00ff), 1);
- houston_WriteReg(ENC_CHROMA_FREQ+3, (int)((l>>24) & 0x00ff), 1);
-
- houston_WriteReg(ENC_CHROMA_PHASE, tvsetup.chroma_phase[k], 1);
- houston_WriteReg(ENC_REG05, 0x00, 1); /*reg 0x05*/
- houston_WriteReg(ENC_REG06, 0x89, 1); /*reg 0x06*/
- houston_WriteReg(ENC_REG07, 0x00, 1); /*reg 0x07*/
- houston_WriteReg(ENC_HSYNC_WIDTH, tvsetup.hsync_width[k], 1);
- houston_WriteReg(ENC_BURST_WIDTH, tvsetup.burst_width[k], 1);
- houston_WriteReg(ENC_BACK_PORCH, tvsetup.back_porch[k], 1);
- houston_WriteReg(ENC_CB_BURST_LEVEL, tvsetup.cb_burst_level[k], 1);
- houston_WriteReg(ENC_CR_BURST_LEVEL, tvsetup.cr_burst_level[k], 1);
- houston_WriteReg(ENC_SLAVE_MODE, 0x01, 1); /*slave mode*/
- if (trigger_bits == 0)
- w = w10bit2z(tvsetup.blank_level[k]); /*blank level*/
- else
- w = w10bit2z((unsigned short)(tvsetup.blank_level[k]-tvsetup.hamp_offset[k]));
- houston_WriteReg(ENC_BLANK_LEVEL, w & 0x00ff, 1);
- houston_WriteReg(ENC_BLANK_LEVEL+1, w >> 8, 1);
- w = w10bit2z(tvsetup.tv_lines[k]); /*num_lines*/
- houston_WriteReg(ENC_NUM_LINES, w & 0x00ff, 1);
- houston_WriteReg(ENC_NUM_LINES+1, w >> 8, 1);
-
- houston_WriteReg(ENC_TINT, 0x00, 1); /*tint*/
- houston_WriteReg(ENC_BREEZE_WAY, tvsetup.breeze_way[k], 1);
- houston_WriteReg(ENC_FRONT_PORCH, tvsetup.front_porch[k], 1);
- houston_WriteReg(ENC_ACTIVELINE, tvsetup.activeline[k], 1);
- houston_WriteReg(ENC_FIRST_LINE, 0x15, 1); /*firstvideoline*/
- reg34 =
- 0x80 |
- (tvsetup.pal_mode[k] << 6) |
- (tvsetup.sys625_50[k] << 3) |
- (tvsetup.cphase_rst[k] << 1) |
- (tvsetup.vsync5[k]);
- houston_WriteReg(ENC_REG34, reg34, 1); /*reg 0x34*/
- houston_WriteReg(ENC_SYNC_LEVEL, tvsetup.sync_level[k], 1);
- if (trigger_bits == 0)
- w = w10bit2z(tvsetup.vbi_blank_level[k]); /*blank level*/
- else
- w = w10bit2z((unsigned short)(tvsetup.vbi_blank_level[k]-1));
- houston_WriteReg(ENC_VBI_BLANK_LEVEL, w & 0x00ff, 1);
- houston_WriteReg(ENC_VBI_BLANK_LEVEL+1, w >> 8, 1);
-}
-
-static void conget_tv_std(unsigned long *p_tv_standard)
-{
- unsigned long cr;
-
- if (!p_tv_standard)
- return;
-
- /*just pick between NTSC and PAL*/
- houston_ReadReg(HOUSTON_CR, &cr, 2);
- if (CR_656_PAL_NTSC & cr)
- *p_tv_standard = GFX_TV_STANDARD_PAL_B;
- else
- *p_tv_standard = GFX_TV_STANDARD_NTSC_M;
-}
-
-/*==========================================================================*/
-/****/
-/*// TVout mode*/
-
-static void config_tvout_mode(unsigned long tvout_mode)
-{
- unsigned long cr;
-
- houston_ReadReg(HOUSTON_CR, &cr, 2);
-
- /*all dacs off*/
- cr |= (CR_COMPOFF | CR_YCOFF);
- /*not rgb*/
- cr &= ~CR_OFMT;
-
- /*turn on requested output*/
- if (GFX_TVOUT_MODE_CVBS & tvout_mode)
- cr &= ~CR_COMPOFF;
- if (GFX_TVOUT_MODE_YC & tvout_mode)
- cr &= ~CR_YCOFF;
- if (GFX_TVOUT_MODE_RGB & tvout_mode)
- {
- cr &= ~(CR_COMPOFF | CR_YCOFF);
- cr |= CR_OFMT;
- }
-
- houston_WriteReg(HOUSTON_CR, cr, 2);
-}
-
-static void conget_tvout_mode(unsigned long *p_tvout_mode)
-{
- unsigned long cr;
-
- if (!p_tvout_mode)
- return;
-
- houston_ReadReg(HOUSTON_CR, &cr, 2);
-
- if (CR_OFMT & cr)
- *p_tvout_mode = GFX_TVOUT_MODE_RGB;
- else
- {
- *p_tvout_mode = 0;
- if (!(CR_YCOFF & cr))
- *p_tvout_mode |= GFX_TVOUT_MODE_YC;
- if (!(CR_COMPOFF & cr))
- *p_tvout_mode |= GFX_TVOUT_MODE_CVBS;
- }
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Size & Position*/
-
-#define IS_NTSC(tv_std) (tv_std & ( \
- GFX_TV_STANDARD_NTSC_M | \
- GFX_TV_STANDARD_NTSC_M_J | \
- GFX_TV_STANDARD_PAL_M))
-#define IS_PAL(tv_std) (tv_std & ( \
- GFX_TV_STANDARD_PAL_B | \
- GFX_TV_STANDARD_PAL_D | \
- GFX_TV_STANDARD_PAL_H | \
- GFX_TV_STANDARD_PAL_I | \
- GFX_TV_STANDARD_PAL_N | \
- GFX_TV_STANDARD_PAL_G))
-
-/*return fifo delay setting for mode, std, and total lines.*/
-
-static void get_ffolat_ivo(
- unsigned long vga_mode,
- unsigned long tv_std,
- long i,
- unsigned short *ffolat,
- unsigned short *ivo)
-{
- switch (vga_mode)
- {
- case GFX_VGA_MODE_640X480:
- if (IS_NTSC(tv_std))
- {
- if (i > SIZE6X4NTSC-1) i = SIZE6X4NTSC-1;
- *ffolat = ffo6x4ntsc[i].ffolat;
- *ivo = 0x20;
- }
- else
- {
- if (i > SIZE6X4PAL-1) i = SIZE6X4PAL-1;
- *ffolat = ffo6x4pal[i].ffolat;
- *ivo = 0x28;
- }
- break;
-
- case GFX_VGA_MODE_800X600:
- if (IS_NTSC(tv_std))
- {
- if (i > SIZE8X6NTSC-1) i = SIZE8X6NTSC-1;
- *ffolat = ffo8x6ntsc[i].ffolat;
- *ivo = 0x3a;
- }
- else
- {
- if (i > SIZE8X6PAL-1) i = SIZE8X6PAL-1;
- *ffolat = ffo8x6pal[i].ffolat;
- *ivo = 0x39;
- }
- break;
-
- case GFX_VGA_MODE_720X487:
- *ffolat = 0x40; /*//FFO7x4;*/
- *ivo = 0x1a;
- break;
-
- case GFX_VGA_MODE_720X576:
- *ffolat = 0x40; /*//FFO7x5;*/
- *ivo = 0x1a;
- break;
-
- case GFX_VGA_MODE_1024X768:
- default:
- if (IS_NTSC(tv_std))
- {
- if (i > SIZE10X7NTSC-1) i = SIZE10X7NTSC-1;
- *ffolat = ffo10x7ntsc[i].ffolat;
- *ivo = ffo10x7ntsc[i].ivo;
- }
- else
- {
- if (i > SIZE10X7PAL-1) i = SIZE10X7PAL-1;
- *ffolat = ffo10x7pal[i].ffolat;
- *ivo = ffo10x7pal[i].ivo;
- }
- break;
- }
-}
-
-
-/*get vertical line min and max for mode and std.*/
-
-static void get_vtotal_min_max(
- unsigned long vga_mode,
- unsigned long tv_std,
- int *v_total_min,
- int *v_total_max,
- int *v_step)
-{
- int k = map_tvstd_to_index(tv_std);
-
- switch (vga_mode)
- {
- case GFX_VGA_MODE_640X480:
- if (IS_NTSC(tv_std))
- {
- *v_total_min = ffo6x4ntsc[0].v_total;
- *v_total_max = ffo6x4ntsc[SIZE6X4NTSC-1].v_total;
- }
- else
- {
- *v_total_min = ffo6x4pal[0].v_total;
- *v_total_max = ffo6x4pal[SIZE6X4PAL-1].v_total;
- }
- *v_step = 4;
- break;
-
- case GFX_VGA_MODE_800X600:
- if (IS_NTSC(tv_std))
- {
- *v_total_min = ffo8x6ntsc[0].v_total;
- *v_total_max = ffo8x6ntsc[SIZE8X6NTSC-1].v_total;
- }
- else
- {
- *v_total_min = ffo8x6pal[0].v_total;
- *v_total_max = ffo8x6pal[SIZE8X6PAL-1].v_total;
- }
- *v_step = 5;
- break;
-
- case GFX_VGA_MODE_720X487:
- case GFX_VGA_MODE_720X576:
- *v_total_min = tvsetup.tv_lines[k];
- *v_total_max = tvsetup.tv_lines[k];
- *v_step = 4;
- break;
-
- case GFX_VGA_MODE_1024X768:
- if (IS_NTSC(tv_std))
- {
- *v_total_min = ffo10x7ntsc[0].v_total;
- *v_total_max = ffo10x7ntsc[SIZE10X7NTSC-1].v_total;
- }
- else
- {
- *v_total_min = ffo10x7pal[0].v_total;
- *v_total_max = ffo10x7pal[SIZE10X7PAL-1].v_total;
- }
- *v_step = 6;
- break;
- }
-}
-
-static void config_overscan_xy(
- unsigned long tv_std,
- unsigned long vga_mode,
- int overscan_x,
- int overscan_y,
- int pos_x,
- int pos_y)
-{
- unsigned int vga_index;
- unsigned long reg;
- double vsc;
- int k;
- unsigned short ffolat, ivo;
- int base_v_total, range, v_offset;
- int v_total_min, v_total_max, v_step;
- float r, f;
- int vga_pixels,pre_pixels;
- float hscale, hscale_min, hscale_max;
- int hsc;
- int iho, iho_max, ihw;
-
- /*tv_std is valid.*/
- k = map_tvstd_to_index(tv_std);
-
- /*store tv width and lines*/
- g_specs.tv_width = tvsetup.tv_width[k];
- g_specs.tv_lines = tvsetup.tv_lines[k];
-
- /*determine vga mode index*/
- for (vga_index = 0; vga_index < SCANTABLE_ENTRIES; vga_index++)
- {
- if (scantable[vga_index].mode == vga_mode)
- break;
- }
- if (vga_index >= SCANTABLE_ENTRIES)
- return;
-
- /****/
- /*vertical scaling (v_total setup).*/
- /****/
- /*calculate vertical range.*/
- get_vtotal_min_max(vga_mode, tv_std, &v_total_min, &v_total_max, &v_step);
- TRACE(("v_total min=%d, max=%d\n", v_total_min, v_total_max))
- base_v_total = scantable[vga_index].v_total[k];
- range = fsmax(base_v_total - v_total_min, v_total_max - base_v_total);
- TRACE(("v_total range = %d\n",range))
-
- /*map +/-1000 overscan y into +/-range.*/
- v_offset = (int) ((((float)overscan_y * range) / 1000.f) + .5f);
- TRACE(("v_offset = %d\n", v_offset))
-
- /*range limit v_total.*/
- g_specs.v_total = range_limit(base_v_total + v_offset, v_total_min, v_total_max);
-
- /*round to calibrated value.*/
- v_offset = (g_specs.v_total - v_total_min + (v_step/2)) / v_step;
- g_specs.v_total = v_total_min + v_offset * v_step;
- TRACE(("desired v_total=%d\n", g_specs.v_total))
-
- /****/
- /*vertical positioning (vsync setup).*/
- /****/
- get_ffolat_ivo(vga_mode, tv_std, v_offset, &ffolat, &ivo);
- houston_WriteReg(HOUSTON_IVO, ivo, 2);
-
- /*scale base sync offset by scaling ratio.*/
- r = (float) g_specs.v_total / (float) base_v_total;
- v_offset = (int) (r * (float) scantable[vga_index].v_sync[k]);
-
- /*scale ivo.*/
- f = (float) ivo;
- v_offset -= (int) (f - f/r);
-
- /*compensate for center screen.*/
- f = (float) tvsetup.tv_active_lines[k] / 2.f;
- v_offset += (int) (f * r - f);
-
- /*calculate vsync.*/
- g_specs.v_sync = g_specs.v_total-v_offset + pos_y;
- TRACE(("desired v_total=%d, desired v_sync=%d\n", g_specs.v_total, g_specs.v_sync))
- if (g_specs.v_sync < g_specs.vga_lines+10)
- {
- TRACE(("vsync too low\n"))
- /*//d.v_total += d.vga_lines+10-d.v_sync;*/
- g_specs.v_sync = g_specs.vga_lines+10;
- }
- else if (g_specs.v_sync > g_specs.v_total-10)
- {
- TRACE(("vsync too high\n"))
- g_specs.v_sync = g_specs.v_total-10;
- }
- TRACE(("v_total=%d v_sync=%d\n", g_specs.v_total, g_specs.v_sync))
-
- /*FFOLAT.*/
- houston_WriteReg(HOUSTON_FFO_LAT, ffolat, 2);
-
- /*VSC.*/
- vsc = (65536.0f * (1.0f - (double)g_specs.tv_lines / (double)g_specs.v_total)) + 0.5f;
- reg = ((unsigned long) -vsc) & 0xffff;
- TRACE(("vsc=%04x, tv_lines=%d, v_total=%d\n", reg, g_specs.tv_lines, g_specs.v_total))
- houston_WriteReg(HOUSTON_VSC, (int)reg, 2);
-
- /****/
- /*horizontal scaling.*/
- /****/
-
- /*vga pixels is vga width, except in 1024x768, where it's half that.*/
- vga_pixels = g_specs.vga_width;
- if (1024 == vga_pixels)
- vga_pixels /= 2;
-
- /*maximum scaling coefficient is tv_width / vga_pixels*/
- /*minimum is about 1/2, but that is quite small. arbitrarily set minimum at 75% maximum.*/
- hscale_max = (720.0f / vga_pixels);
- hscale_min = fsmax((0.75f * hscale_max),(1.0f - (63.0f / 128.0f)));
- TRACE((
- "hscale_min = %u.%u, hscale_max = %u.%u\n",
- (int)hscale_min,
- (int)((hscale_min - (int)hscale_min) * 1000),
- (int)hscale_max,
- (int)((hscale_max - (int)hscale_max) * 1000)))
-
- /*map overscan_x into min to max.*/
- hscale = hscale_min + ((overscan_x + 1000.0f) / 2000.0f) * (hscale_max - hscale_min);
- TRACE(("hscale = %u.%u\n",(int)hscale,(int)((hscale - (int)hscale) * 1000)))
-
- /*determine hsc where hscale = (1 + hsc/128)*/
- if (hscale >= 1.0f)
- hsc = (int)(128.f * (hscale - 1.0f) + .5f);
- else
- hsc = (int)(128.f * (hscale - 1.0f) - .5f);
- TRACE(("hsc = %d\n",hsc))
- if (hsc >= 0)
- houston_WriteReg(HOUSTON_HSC, hsc << 8, 2);
- else
- houston_WriteReg(HOUSTON_HSC, hsc & 0xFF, 2);
-
- /*recalculate hscale for future formulas*/
- hscale = 1.0f + (hsc / 128.0f);
- TRACE(("recalculated hscale = %u.%u\n",(int)hscale,(int)((hscale - (int)hscale) * 1000)))
-
- /****/
- /*horizontal offset.*/
- /****/
-
- /*place hsync 40 before halfway from vga_width to htotal*/
- /*but not less than vga_width + 10*/
- g_specs.h_sync = fsmax((g_specs.h_total + g_specs.vga_width) / 2 - 40, g_specs.vga_width + 10);
- /*also, make it even*/
- g_specs.h_sync &= ~1;
- TRACE(("hsync = %u\n",g_specs.h_sync))
-
- /*iho range is 0 to iho_max.*/
- /*iho_max is 2 * iho_center.*/
- /*iho_center is pre_pixels - (tvwidth / hscale - vga pixels) / 2.*/
- /*pre_pixels = (htotal - hsync) * (vga_pixels / vga_width)*/
- /*note that the range is inverted also, because it specifies the number of pixels*/
- /*to skip, or subtract. iho=0 maps to farthest right.*/
- /*map -pos_x = +/-1000 into (0 to iho_max)*/
- pre_pixels = (int)((long)(g_specs.h_total - g_specs.h_sync) * vga_pixels / g_specs.vga_width);
- iho_max = (2 * pre_pixels) - ((int)(720.0f / hscale + 0.5f) - vga_pixels);
- TRACE(("iho_max = %u\n",iho_max))
- iho = (int) range_limit(((long)(1000 - pos_x) * iho_max / 2000)+scantable[vga_index].iho[k], 0, iho_max);
- TRACE(("iho = %u\n",iho))
- houston_WriteReg(HOUSTON_IHO, iho, 2);
-
- /****/
- /*input horizontal width.*/
- /****/
-
- /*input horizontal width is vga pixels + pre_pixels - iho*/
- /*additionally, ihw cannot exceed tv width / hscale*/
- /*and if hsc is negative, (ihw)(-hsc/128) cannot exceed ~250.*/
- /*and ihw should be even.*/
- ihw = fsmin(
- vga_pixels + pre_pixels - iho,
- (int)(720.0f / hscale));
- if (hsc < 0)
- ihw = (int)fsmin(ihw,253L * 128 / (-hsc));
- ihw &= ~1;
- TRACE(("ihw = %u\n",ihw))
- houston_WriteReg(HOUSTON_IHA, ihw, 2);
-
- f = (((float)g_specs.h_total * g_specs.v_total)*27.f) /
- ((float)g_specs.tv_width * g_specs.tv_lines);
-
- TRACE(("freq=%u.%uMHz\n",(int)f,(int)((f - (int)f) * 1000)))
-}
-
-/*==========================================================================*/
-/****/
-/*configure houston nco.*/
-
-static void config_nco(unsigned long tv_std,unsigned long vga_mode)
-{
- unsigned long cr, misc;
- unsigned long reg;
- int k = map_tvstd_to_index(tv_std);
-
- /*read and store CR.*/
- houston_ReadReg(HOUSTON_CR, &cr, 2);
-
- /*make sure NCO_EN (enable latch) bit is clear*/
- cr &= ~CR_NCO_EN;
- houston_WriteReg(HOUSTON_CR, cr, 2);
-
- /*clear NCO_LOADX.*/
- houston_ReadReg(HOUSTON_MISC, &misc, 2);
- misc &= ~(MISC_NCO_LOAD1 + MISC_NCO_LOAD0);
- houston_WriteReg(HOUSTON_MISC, misc, 2);
-
- if (vga_mode == GFX_VGA_MODE_1024X768)
- {
- /*setup for M and N load (Nco_load=1).*/
- misc |= (MISC_NCO_LOAD0);
- houston_WriteReg(HOUSTON_MISC, misc, 2);
-
- /*M and N.*/
- houston_WriteReg(HOUSTON_NCONL, 1024-2, 2);
- houston_WriteReg(HOUSTON_NCODL, 128-1, 2);
-
- /*latch M/N in.*/
- cr |= CR_NCO_EN;
- houston_WriteReg(HOUSTON_CR, cr, 2);
- cr &= ~CR_NCO_EN;
- houston_WriteReg(HOUSTON_CR, cr, 2);
-
- /*setup ncon and ncod load (Nco_load=0).*/
- misc &= ~(MISC_NCO_LOAD1 + MISC_NCO_LOAD0);
- houston_WriteReg(HOUSTON_MISC, misc, 2);
-
- /*NCON.*/
- reg = ((unsigned long)g_specs.v_total * g_specs.h_total) / 2;
- houston_WriteReg(HOUSTON_NCONH, reg >> 16, 2);
- houston_WriteReg(HOUSTON_NCONL, reg & 0xffff, 2);
-
- /*NCOD.*/
- houston_WriteReg(HOUSTON_NCODL, tvsetup.houston_ncodl[k], 2);
- houston_WriteReg(HOUSTON_NCODH, tvsetup.houston_ncodh[k], 2);
- }
- else
- {
- /*setup for M and N load (Nco_load=2).*/
- misc |= (MISC_NCO_LOAD1);
- houston_WriteReg(HOUSTON_MISC, misc, 2);
-
- /*NCON.*/
- reg = (unsigned long)g_specs.v_total * g_specs.h_total;
- houston_WriteReg(HOUSTON_NCONH, reg >> 16, 2);
- houston_WriteReg(HOUSTON_NCONL, reg & 0xffff, 2);
-
- /*NCOD.*/
- houston_WriteReg(HOUSTON_NCODL, tvsetup.houston_ncodl[k], 2);
- houston_WriteReg(HOUSTON_NCODH, tvsetup.houston_ncodh[k], 2);
-
- TRACE((
- "NCON = %lu (0x%08lx), NCOD = %lu (0x%08lx)\n",
- reg,
- reg,
- ((unsigned long)tvsetup.houston_ncodh[k] << 16) + tvsetup.houston_ncodl[k],
- ((unsigned long)tvsetup.houston_ncodh[k] << 16) + tvsetup.houston_ncodl[k]))
- }
-
- /*latch M/N and NCON/NCOD in.*/
- cr |= CR_NCO_EN;
- houston_WriteReg(HOUSTON_CR, cr, 2);
- cr &= ~CR_NCO_EN;
- houston_WriteReg(HOUSTON_CR, cr, 2);
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Write sharpness settings to device*/
-
-static void config_sharpness(int sharpness)
-{
- unsigned int shp;
-
- /*map 0-1000 to 0-20.*/
- shp = (unsigned int)(0.5f + ((float)sharpness * 20.0f / 1000.0f));
- shp = range_limit(shp, 0, 20);
-
- houston_WriteReg(HOUSTON_SHP, shp, 2);
-}
-
-static void conget_sharpness(int *p_sharpness)
-{
- unsigned long shp;
-
- if (!p_sharpness)
- return;
-
- houston_ReadReg(HOUSTON_SHP, &shp, 2);
-
- /*map 0-20 to 0-1000.*/
- *p_sharpness = (int)(0.5f + ((float)shp * 1000.0f / 20.0f));
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Write flicker settings to device*/
-
-static void config_flicker(int flicker)
-{
- unsigned int flk;
-
- /*map 0-1000 to 0-16.*/
- flk = (unsigned int)(0.5f + ((float)flicker * 16.0f / 1000.0f));
- flk = range_limit(flk,0,16);
-
- houston_WriteReg(HOUSTON_FLK, flk, 2);
-}
-
-static void conget_flicker(int *p_flicker)
-{
- unsigned long flk;
-
- if (!p_flicker)
- return;
-
- houston_ReadReg(HOUSTON_FLK, &flk, 2);
-
- /*map 0-16 to 0-1000.*/
- *p_flicker = (int)(0.5f + ((float)flk * 1000.0f / 16.0f));
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Write color settings to device*/
-
-static void config_color(int color)
-{
- unsigned long clr;
-
- /*map 0-100 to 0-255.*/
- /*montreal production test needs 169 to be mappable, so*/
- /*use .8 rounding factor, 169=(int)(66.*2.55+.8).*/
- clr = (unsigned long)(0.8f + ((float)color * 255.0f / 100.0f));
- clr = range_limit(clr,0,255);
-
- houston_WriteReg(ENC_CR_GAIN, clr, 1);
- houston_WriteReg(ENC_CB_GAIN, clr, 1);
-}
-
-static void conget_color(int *p_color)
-{
- unsigned long cr_gain;
-
- if (!p_color)
- return;
-
- /*just get CR GAIN, CB GAIN should match.*/
- houston_ReadReg(ENC_CR_GAIN, &cr_gain, 1);
-
- /*map 0-255 to 0-100.*/
- *p_color = (int)(0.5f + ((float)cr_gain * 100.0f / 255.0f));
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Write brightness and contrast settings to device*/
-
-#define NTSC_BLANK_LEVEL 240
-
-static const int min_black_level = NTSC_BLANK_LEVEL+1;
-static const int max_white_level = 1023;
-
-static void config_brightness_contrast(unsigned long tv_std, unsigned int trigger_bits,
- int brightness, int contrast)
-{
- int brightness_off;
- float contrast_mult;
- int black, white;
- unsigned short w;
- int k = map_tvstd_to_index(tv_std);
-
- /*0-100 maps to +/-220.*/
- brightness_off = (int)(0.5f + ((float)brightness * 440.0f / 100.0f)) - 220;
-
- /*0-100 maps to .75-1.25.*/
- contrast_mult = ((float) contrast * 0.5f / 100.0f) + 0.75f;
-
- black = tvsetup.black_level[k];
- if (trigger_bits != 0)
- black -= tvsetup.hamp_offset[k];
-
- white = tvsetup.white_level[k];
- if (trigger_bits != 0)
- white -= tvsetup.hamp_offset[k];
-
- black = (int) ((float) (black + brightness_off) * contrast_mult);
- white = (int) ((float) (white + brightness_off) * contrast_mult);
- if (black < min_black_level)
- black = min_black_level;
- if (white > max_white_level)
- white = max_white_level;
-
- w = w10bit2z((unsigned short) black);
- houston_WriteReg(ENC_BLACK_LEVEL, w & 0x00ff, 1);
- houston_WriteReg(ENC_BLACK_LEVEL+1, w >> 8, 1);
- w = w10bit2z((unsigned short) white);
- houston_WriteReg(ENC_WHITE_LEVEL, w & 0x00ff, 1);
- houston_WriteReg(ENC_WHITE_LEVEL+1, w >> 8, 1);
-}
-
-static void conget_brightness_contrast(unsigned long tv_std, unsigned int trigger_bits,
- int *p_brightness, int *p_contrast)
-{
- int brightness_off;
- float contrast_mult;
- unsigned short black, white;
- unsigned long zh,zl;
- int k;
-
- if (!p_brightness || !p_contrast)
- return;
-
- k = map_tvstd_to_index(tv_std);
-
- houston_ReadReg(ENC_BLACK_LEVEL, &zl, 1);
- houston_ReadReg(ENC_BLACK_LEVEL+1, &zh, 1);
- black = z2w10bit((unsigned short)(zl + (zh << 8)));
- if (trigger_bits != 0)
- black += tvsetup.hamp_offset[k];
- houston_ReadReg(ENC_WHITE_LEVEL, &zl, 1);
- houston_ReadReg(ENC_WHITE_LEVEL+1, &zh, 1);
- white = z2w10bit((unsigned short)(zl + (zh << 8)));
- if (trigger_bits != 0)
- white += tvsetup.hamp_offset[k];
-
- /*this reverse computation does not account for clipping, but should*/
- /*provide somewhat reasonable numbers*/
- contrast_mult = ((float)white - (float)black) / ((float)tvsetup.white_level[k] - (float)tvsetup.black_level[k]);
- brightness_off = (int)(((float)black / contrast_mult) - tvsetup.black_level[k]);
-
- /*+/-220 maps to 0-100.*/
- *p_brightness = range_limit((int)(0.5f + ((float)(brightness_off + 220) * 100.0f / 440.0f)),0,100);
-
- /*.75-1.25 maps to 0-100.*/
- *p_contrast = range_limit((int)(0.5f + ((float)(contrast_mult - 0.75f) * 100.0f / 0.5f)),0,100);
-}
-
-
-/*==========================================================================*/
-/****/
-/*configure luma/chroma filters.*/
-
-static void config_yc_filter(unsigned long tv_std,int luma_filter, int chroma_filter)
-{
- unsigned long reg, reg07, reg34;
-
- if (houston_Rev() < HOUSTON_REV_B)
- return;
-
- /*luma filter.*/
- if (luma_filter)
- reg = tvsetup.notch_filter[map_tvstd_to_index(tv_std)];
- else
- reg = 0;
- houston_WriteReg(ENC_NOTCH_FILTER, reg, 1);
-
- /*chroma filter.*/
- houston_ReadReg(ENC_REG07, &reg07, 1);
- houston_ReadReg(ENC_REG34, &reg34, 1);
- if (chroma_filter)
- {
- reg07 &= ~0x08;
- reg34 &= ~0x20;
- }
- else
- {
- reg07 |= 0x08;
- reg34 |= 0x20;
- }
- houston_WriteReg(ENC_REG07, reg07, 1);
- houston_WriteReg(ENC_REG34, reg34, 1);
-}
-
-static void conget_yc_filter(int *p_luma_filter, int *p_chroma_filter)
-{
- unsigned long reg, reg07, reg34;
-
- if (!p_luma_filter || !p_chroma_filter)
- return;
-
- if (houston_Rev() < HOUSTON_REV_B)
- {
- *p_luma_filter = 0;
- *p_chroma_filter = 0;
- return;
- }
-
- /*luma filter.*/
- houston_ReadReg(ENC_NOTCH_FILTER, &reg, 1);
- *p_luma_filter = (reg ? 1 : 0);
-
- /*chroma filter.*/
- houston_ReadReg(ENC_REG07, &reg07, 1);
- houston_ReadReg(ENC_REG34, &reg34, 1);
- *p_chroma_filter = !((0x08 & reg07) || (0x20 & reg34));
-}
-
-
-/*==========================================================================*/
-/****/
-/*// Macrovision*/
-
-static void config_macrovision(unsigned long tv_std, unsigned int trigger_bits)
-{
-/****/
-/*Constants to index into mvsetup columns.*/
-/****/
-#define nNTSC_APS00 0 /*ntsc mv off.*/
-#define nNTSC_APS01 1 /*ntsc AGC only.*/
-#define nNTSC_APS10 2 /*ntsc AGC + 2-line CS.*/
-#define nNTSC_APS11 3 /*ntsc AGC + 4-line CS.*/
-#define nPAL_APS00 4 /*pal mv off.*/
-#define nPAL_APSXX 5 /*pal mv on.*/
-#define nMVModes 6
-
-/****/
-/*Macrovision setup table.*/
-/****/
-static const struct mvparms
- {
- unsigned short n0[nMVModes];
- unsigned short n1[nMVModes];
- unsigned short n2[nMVModes];
- unsigned short n3[nMVModes];
- unsigned short n4[nMVModes];
- unsigned short n5[nMVModes];
- unsigned short n6[nMVModes];
- unsigned short n7[nMVModes];
- unsigned short n8[nMVModes];
- unsigned short n9[nMVModes];
- unsigned short n10[nMVModes];
- unsigned short n11[nMVModes];
- unsigned short n12[nMVModes];
- unsigned short n13[nMVModes];
- unsigned short n14[nMVModes];
- unsigned short n15[nMVModes];
- unsigned short n16[nMVModes];
- unsigned short n17[nMVModes];
- unsigned short n18[nMVModes];
- unsigned short n19[nMVModes];
- unsigned short n20[nMVModes];
- unsigned short n21[nMVModes];
- unsigned short n22[nMVModes];
- unsigned short agc_pulse_level[nMVModes];
- unsigned short bp_pulse_level[nMVModes];
- }
-
-mvsetup =
-
- { /*// ntsc ntsc ntsc ntsc pal pal*/
- /*// MV AGC AGC + AGC + MV MV*/
- /*// off. only 2-line 4-line off. on.*/
- /*// CS. CS.*/
- { 0x00, 0x36, 0x3e, 0x3e, 0x00, 0x3e }, /*n0*/
- { 0x1d, 0x1d, 0x1d, 0x17, 0x1a, 0x1a }, /*n1*/
- { 0x11, 0x11, 0x11, 0x15, 0x22, 0x22 }, /*n2*/
- { 0x25, 0x25, 0x25, 0x21, 0x2a, 0x2a }, /*n3*/
- { 0x11, 0x11, 0x11, 0x15, 0x22, 0x22 }, /*n4*/
- { 0x01, 0x01, 0x01, 0x05, 0x05, 0x05 }, /*n5*/
- { 0x07, 0x07, 0x07, 0x05, 0x02, 0x02 }, /*n6*/
- { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 }, /*n7*/
- { 0x1b, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c }, /*n8*/
- { 0x1b, 0x1b, 0x1b, 0x1b, 0x3d, 0x3d }, /*n9*/
- { 0x24, 0x24, 0x24, 0x24, 0x14, 0x14 }, /*n10*/
- { 0x780f, 0x780f, 0x780f, 0x780f, 0x7e07, 0x7e07 }, /*n11*/
- { 0x0000, 0x0000, 0x0000, 0x0000, 0x5402, 0x5402 }, /*n12*/
- { 0x0f, 0x0f, 0x0f, 0x0f, 0xfe, 0xfe }, /*n13*/
- { 0x0f, 0x0f, 0x0f, 0x0f, 0x7e, 0x7e }, /*n14*/
- { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, /*n15*/
- { 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 }, /*n16*/
- { 0x0a, 0x0a, 0x0a, 0x0a, 0x08, 0x08 }, /*n17*/
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /*n18*/
- { 0x05, 0x05, 0x05, 0x05, 0x04, 0x04 }, /*n19*/
- { 0x04, 0x04, 0x04, 0x04, 0x07, 0x07 }, /*n20*/
- { 0x03ff, 0x03ff, 0x03ff, 0x03ff, 0x0155, 0x0155 }, /*n21*/
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, /*n22*/
- { 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3 }, /*agc_pulse_level*/
- { 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8 }, /*bp_pulse_level*/
- };
-
- int nMode;
- unsigned long misc;
- unsigned short n0;
-
- trigger_bits &= 0x3;
-
- /*Determine the OEM Macrovision Program Mode and Register 0 Data.*/
- if (IS_NTSC(tv_std))
- {
- /*NTSC TV Standard.*/
- if (trigger_bits == 0)
- {
- /*turn Macrovision OFF.*/
- nMode = nNTSC_APS00;
- }
- else if (trigger_bits == 1)
- {
- /*AGC Only.*/
- nMode = nNTSC_APS01;
- }
- else if (trigger_bits == 2)
- {
- /*AGC + 2-line CS.*/
- nMode = nNTSC_APS10;
- }
- else
- {
- /*AGC + 4-line CS.*/
- nMode = nNTSC_APS11;
- }
- }
- else
- {
- /*PAL TV Standard.*/
- if (trigger_bits == 0)
- {
- /*turn Macrovision OFF.*/
- nMode = nPAL_APS00;
- }
- else
- {
- /*APS 01, 10, or 11.*/
- nMode = nPAL_APSXX;
- }
- }
-
- /*Retrieve the Macrovision Program Mode Data*/
- if (tv_std != GFX_TV_STANDARD_PAL_M)
- n0 = mvsetup.n0[nMode];
- else
- {
- /*PAL-M sets up like NTSC except for n0.*/
- if ((trigger_bits & 0x03) == 0)
- n0 = mvsetup.n0[nPAL_APS00];
- else
- n0 = mvsetup.n0[nPAL_APSXX];
- }
-
- /*download settings now.*/
- houston_WriteReg(MV_N0, n0, 1);
- houston_WriteReg(MV_N1, mvsetup.n1[nMode], 1);
- houston_WriteReg(MV_N2, mvsetup.n2[nMode], 1);
- houston_WriteReg(MV_N3, mvsetup.n3[nMode], 1);
- houston_WriteReg(MV_N4, mvsetup.n4[nMode], 1);
- houston_WriteReg(MV_N5, mvsetup.n5[nMode], 1);
- houston_WriteReg(MV_N6, mvsetup.n6[nMode], 1);
- houston_WriteReg(MV_N7, mvsetup.n7[nMode], 1);
- houston_WriteReg(MV_N8, mvsetup.n8[nMode], 1);
- houston_WriteReg(MV_N9, mvsetup.n9[nMode], 1);
- houston_WriteReg(MV_N10, mvsetup.n10[nMode], 1);
- houston_WriteReg(MV_N11, mvsetup.n11[nMode] & 0xff, 1);
- houston_WriteReg(MV_N11+1, mvsetup.n11[nMode] >> 8, 1);
- houston_WriteReg(MV_N12, mvsetup.n12[nMode] & 0xff, 1);
- houston_WriteReg(MV_N12+1, mvsetup.n12[nMode] >> 8, 1);
- houston_WriteReg(MV_N13, mvsetup.n13[nMode], 1);
- houston_WriteReg(MV_N14, mvsetup.n14[nMode], 1);
- houston_WriteReg(MV_N15, mvsetup.n15[nMode], 1);
- houston_WriteReg(MV_N16, mvsetup.n16[nMode], 1);
- houston_WriteReg(MV_N17, mvsetup.n17[nMode], 1);
- houston_WriteReg(MV_N18, mvsetup.n18[nMode], 1);
- houston_WriteReg(MV_N19, mvsetup.n19[nMode], 1);
- houston_WriteReg(MV_N20, mvsetup.n20[nMode], 1);
- houston_WriteReg(MV_N21, mvsetup.n21[nMode] & 0xff, 1);
- houston_WriteReg(MV_N21+1, mvsetup.n21[nMode] >> 8, 1);
- houston_WriteReg(MV_N22, mvsetup.n22[nMode], 1);
- houston_WriteReg(MV_AGC_PULSE_LEVEL, mvsetup.agc_pulse_level[nMode], 1);
- houston_WriteReg(MV_BP_PULSE_LEVEL, mvsetup.bp_pulse_level[nMode], 1);
-
- houston_ReadReg(HOUSTON_MISC, &misc, 2);
- if (trigger_bits == 0)
- misc &= ~MISC_MV_SOFT_EN;
- else
- misc |= MISC_MV_SOFT_EN;
- houston_WriteReg(HOUSTON_MISC, misc, 2);
-}
-
-static void conget_macrovision(unsigned long tv_std, unsigned int *p_cp_trigger_bits)
-{
- unsigned long n0,n1;
-
- if (!p_cp_trigger_bits)
- return;
-
- houston_ReadReg(MV_N0,&n0,1);
- houston_ReadReg(MV_N1,&n1,1);
-
- *p_cp_trigger_bits = 0;
-
- if (IS_NTSC(tv_std))
- {
- switch(n0)
- {
- case 0:
- *p_cp_trigger_bits = 0;
- break;
-
- case 0x36:
- *p_cp_trigger_bits = 1;
- break;
-
- case 0x3E:
- {
- if (0x1D == n1)
- *p_cp_trigger_bits = 2;
- else
- *p_cp_trigger_bits = 3;
- }
- break;
- }
- }
- else if (IS_PAL(tv_std))
- {
- if (0 == n0)
- *p_cp_trigger_bits = 0;
- else
- {
- /*don't know here what the non-zero trigger bits were*/
- *p_cp_trigger_bits = 1;
- }
- }
-}
-
-/*// PLAL_MediaGX.cpp*/
-/*//==========================================================================*/
-/****/
-/*These functions provides implementation of platform-specific functions*/
-/*MediaGX platform.*/
-/****/
-/*//==========================================================================*/
-
-/*MediaGX control registers.*/
-#define CCR3 0xC3
-#define GCR 0xb8
-
-/*Media GX registers*/
-/*
-#define DC_UNLOCK 0x8300
-#define DC_GENERAL_CFG 0x8304
-#define DC_TIMING_CFG 0x8308
-#define DC_OUTPUT_CFG 0x830c
-#define DC_H_TIMING_1 0X8330
-#define DC_H_TIMING_2 0X8334
-#define DC_H_TIMING_3 0X8338
-#define DC_FP_H_TIMING 0X833c
-#define DC_V_TIMING_1 0X8340
-#define DC_V_TIMING_2 0X8344
-#define DC_V_TIMING_3 0X8348
-#define DC_FP_V_TIMING 0X834c
-*/
-/*Media GX general config register.*/
-#define GX_DCLK_MUL 0x00c0
-#define GX_DCLKx1 0x0040
-#define GX_DCLKx2 0x0080
-#define GX_DCLKx4 0x00c0
-
-/*Media GX timing config register.*/
-#define GX_TGEN 0x0020
-
-/*Cx5530 register offsets (from GX_BASE).*/
-#define CX_DISPLAY_CONFIG 0x10004
-#define CX_DOT_CLK 0x10024
-#define CX_TV_CONFIG 0x10028
-
-/*Cx5530 display configuration register.*/
-#define CX_FPVSYNC_POL 0x0800
-#define CX_FPHSYNC_POL 0x0400
-#define CX_FPDATA_ENB 0x0080
-#define CX_FPPOWER_ENB 0x0040
-#define CX_CRTVSYNC_POL 0x0200
-#define CX_CRTHSYNC_POL 0x0100
-
-/*Cx5530 dot clock configuration register.*/
-#define CX_TVCLK_SELECT 0x0400
-
-/*Cx5530 tv configuration register*/
-#define CX_INVERT_FPCLK (1 << 6)
-
-/*//==========================================================================*/
-/****/
-/*// FS450 I2C Address*/
-/****/
-/*// There are two possible 7-bit addresses, 0x4A and 0x6A.*/
-/*// The address if selectable via pins on the FS450.*/
-/*// There are also two possible 10-bit addresses, 0x224 and 0x276, but this*/
-/*// source is not designed to use them.*/
-/****/
-
-#define FS450_I2C_ADDRESS (0x4A)
-
-static unsigned char PLAL_FS450_i2c_address(void)
-{
- return FS450_I2C_ADDRESS;
-}
-
-
-/*//==========================================================================*/
-/****/
-/*// FS450 UIM mode*/
-/****/
-/*// This mode is programmed in the FS450 command register when enabling TV*/
-/*// out.*/
-
-static int PLAL_FS450_UIM_mode(void)
-{
- return 3;
-}
-
-/*//==========================================================================*/
-/****/
-/*// Read and Write MediaGX registers*/
-
-static unsigned long ReadGx(unsigned long inRegAddr)
-{
- unsigned long data;
-
- DMAL_ReadUInt32(inRegAddr, &data);
-
- return data;
-}
-
-static void WriteGx(unsigned long inRegAddr, unsigned long inData)
-{
- int is_timing_register;
- unsigned long reg_timing_cfg;
-
- /*because the unlock register for the MediaGx video registers may not*/
- /*persist, we will write the unlock code before every write.*/
- DMAL_WriteUInt32(DC_UNLOCK, 0x4758);
-
- /*see if register is a timing register*/
- is_timing_register =
- (DC_H_TIMING_1 == inRegAddr) ||
- (DC_H_TIMING_2 == inRegAddr) ||
- (DC_H_TIMING_3 == inRegAddr) ||
- (DC_FP_H_TIMING == inRegAddr) ||
- (DC_V_TIMING_1 == inRegAddr) ||
- (DC_V_TIMING_2 == inRegAddr) ||
- (DC_V_TIMING_3 == inRegAddr) ||
- (DC_FP_V_TIMING == inRegAddr);
-
- /*if the register is a timing register, clear the TGEN bit to allow modification*/
- if (is_timing_register)
- {
- DMAL_ReadUInt32(DC_TIMING_CFG, &reg_timing_cfg);
- DMAL_WriteUInt32(DC_TIMING_CFG, reg_timing_cfg & ~GX_TGEN);
- }
-
- /*write the requested register*/
- DMAL_WriteUInt32(inRegAddr, inData);
-
- /*reset the TGEN bit to previous state*/
- if (is_timing_register)
- {
- DMAL_WriteUInt32(DC_TIMING_CFG, reg_timing_cfg);
- }
-}
-
-#ifdef FS450_DIRECTREG
-
-/*//==========================================================================*/
-/****/
-/*// Platform-specific processing for a Read or Write Register calls.*/
-/*// The functions should return true if the specified register belongs to*/
-/*// this platform.*/
-
-static int PLAL_ReadRegister(S_REG_INFO *p_reg)
-{
- if (!p_reg)
- return 0;
-
- if (SOURCE_GCC == p_reg->source)
- {
- p_reg->value = ReadGx(p_reg->offset);
-
- return 1;
- }
-
- return 0;
-}
-
-static int PLAL_WriteRegister(const S_REG_INFO *p_reg)
-{
- if (!p_reg)
- return 0;
-
- if (SOURCE_GCC == p_reg->source)
- {
- WriteGx(p_reg->offset, p_reg->value);
-
- return 1;
- }
-
- return 0;
-}
-
-#endif
-
-
-/*//==========================================================================*/
-/****/
-/*// Determine if TV is on*/
-
-static int PLAL_IsTVOn(void)
-{
- unsigned long reg;
-
- /*check Cx5530 dot clock*/
- reg = ReadGx(CX_DOT_CLK);
- return (reg & CX_TVCLK_SELECT) ? 1 : 0;
-}
-
-
-/*//==========================================================================*/
-/****/
-/*// Platform-specific actions to reset to VGA mode*/
-
-static int PLAL_EnableVga(void)
-{
- unsigned long reg;
-
- /*2 x dclk*/
- reg = ReadGx(DC_GENERAL_CFG);
- reg &= ~GX_DCLK_MUL;
- reg |= GX_DCLKx2;
- WriteGx(DC_GENERAL_CFG, reg);
-
- /*select pll dot clock.*/
- reg = ReadGx(CX_DOT_CLK);
- reg &= ~CX_TVCLK_SELECT;
- WriteGx(CX_DOT_CLK, reg);
-
- /*timing config, reset everything on dclk.*/
- reg = ReadGx(DC_TIMING_CFG);
- reg &= ~GX_TGEN;
- WriteGx(DC_TIMING_CFG, reg);
- reg |= GX_TGEN;
- WriteGx(DC_TIMING_CFG, reg);
-
- /*un-invert FP clock*/
- reg = ReadGx(CX_TV_CONFIG);
- reg &= ~CX_INVERT_FPCLK;
- WriteGx(CX_TV_CONFIG,reg);
-
- return 0;
-}
-
-
-/*//==========================================================================*/
-/****/
-/*// Platform-specific actions to enter TVout mode*/
-
-static int PLAL_PrepForTVout(void)
-{
- unsigned int reg;
-
- /*Cx5530 tv config.*/
- reg = 0;
- WriteGx(CX_TV_CONFIG, reg);
-
- /*invert FP clock*/
- reg = (int)ReadGx(CX_TV_CONFIG);
- reg |= CX_INVERT_FPCLK;
- WriteGx(CX_TV_CONFIG,reg);
-
- return 0;
-}
-
-static int PLAL_SetTVTimingRegisters(const S_TIMING_SPECS *p_specs)
-{
- unsigned long reg;
-
- /*timing config, reset everything on dclk.*/
- reg = ReadGx(DC_TIMING_CFG);
- reg &= ~GX_TGEN;
- WriteGx(DC_TIMING_CFG, reg);
-
- /*htotal and hactive.*/
- reg = ((p_specs->h_total-1) << 16) | (p_specs->vga_width-1);
- WriteGx(DC_H_TIMING_1, reg);
-
- /*hblank.*/
- reg = ((p_specs->h_total-1) << 16) | (p_specs->vga_width-1);
- WriteGx(DC_H_TIMING_2, reg);
-
- /*hsync.*/
- reg = ((p_specs->h_sync+63) << 16) | p_specs->h_sync;
- WriteGx(DC_H_TIMING_3, reg);
-
- /*fp hsync.*/
- WriteGx(DC_FP_H_TIMING, reg);
-
- /*vtotal and vactive.*/
- reg = ((p_specs->v_total-1) << 16) | (p_specs->vga_lines-1);
- WriteGx(DC_V_TIMING_1, reg);
-
- /*vblank.*/
- reg = ((p_specs->v_total-1) << 16) | (p_specs->vga_lines-1);
- WriteGx(DC_V_TIMING_2, reg);
-
- /*vsync.*/
- reg = ((p_specs->v_sync) << 16) | (p_specs->v_sync-1);
- WriteGx(DC_V_TIMING_3, reg);
-
- /*fp vsync.*/
- reg = ((p_specs->v_sync-1) << 16) | (p_specs->v_sync-2);
- WriteGx(DC_FP_V_TIMING, reg);
-
- /*timing config, reenable all dclk stuff.*/
- reg = ReadGx(DC_TIMING_CFG);
- reg |= GX_TGEN;
- WriteGx(DC_TIMING_CFG, reg);
-
- return 0;
-}
-
-static int PLAL_FinalEnableTVout(unsigned long vga_mode)
-{
- unsigned int reg;
-
- /*Cx5530 select tv dot clock.*/
- reg = (int)ReadGx(CX_DOT_CLK);
- reg |= CX_TVCLK_SELECT;
- WriteGx(CX_DOT_CLK, reg);
-
- /*2 x dclk (actually 1x)*/
- reg = (int)ReadGx(DC_GENERAL_CFG);
- reg &= ~GX_DCLK_MUL;
- WriteGx(DC_GENERAL_CFG, reg);
-
-
- reg |= GX_DCLKx2;
- WriteGx(DC_GENERAL_CFG, reg);
-
- /*Cx5530 display configuration register.*/
- reg = (int)ReadGx(CX_DISPLAY_CONFIG);
- reg |= (CX_FPVSYNC_POL | CX_FPHSYNC_POL | CX_FPDATA_ENB | CX_FPPOWER_ENB);
- WriteGx(CX_DISPLAY_CONFIG, reg);
-
-/*disable, shouldn't be necessary*/
-#if 0
- /*kick MediaGX clock multiplier to clean up clock*/
- reg = ReadGx(DC_GENERAL_CFG);
- reg &= ~GX_DCLK_MUL;
- WriteGx(DC_GENERAL_CFG, reg);
- reg |= GX_DCLKx2;
- WriteGx(DC_GENERAL_CFG, reg);
-#endif
-
- return 0;
-}
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.h
deleted file mode 100644
index 01f35052c..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/tv_fs450.h,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: tv_fs450.h $
- *
- * This file defines the common FS450 API.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#ifndef __FS450_H__
-#define __FS450_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ==========================================================================*/
-/* Init and cleanup functions*/
-
-int FS450_init(void);
-void FS450_cleanup(void);
- /* call FS450_init at startup to probe for and initialize FS450.*/
- /* returns 0 if successful.*/
-
-/* ==========================================================================*/
-/* TV output on or off*/
-
-int FS450_get_tv_enable(unsigned int *p_on);
-int FS450_set_tv_enable(unsigned int on);
- /* on is 1 for TV on, 0 for off*/
-
-
-/* ==========================================================================*/
-/* TV standard*/
-
-int FS450_get_tv_standard(unsigned long *p_standard);
-int FS450_get_available_tv_standards(unsigned long *p_standards);
-int FS450_set_tv_standard(unsigned long standard);
- /* standard is one of the FS450_TV_STANDARD constants*/
- /* standards is a bitmask of zero or more FS450_TV_STANDARD constants*/
-
-/* FS450 TV Standard flags*/
-#define FS450_TV_STANDARD_NTSC_M 0x0001
-#define FS450_TV_STANDARD_NTSC_M_J 0x0002
-#define FS450_TV_STANDARD_PAL_B 0x0004
-#define FS450_TV_STANDARD_PAL_D 0x0008
-#define FS450_TV_STANDARD_PAL_H 0x0010
-#define FS450_TV_STANDARD_PAL_I 0x0020
-#define FS450_TV_STANDARD_PAL_M 0x0040
-#define FS450_TV_STANDARD_PAL_N 0x0080
-#define FS450_TV_STANDARD_PAL_G 0x0100
-
-
-/* ==========================================================================*/
-/* VGA mode assumed by FS450*/
-
-int FS450_get_vga_mode(unsigned long *p_vga_mode);
-int FS450_get_available_vga_modes(unsigned long *p_vga_modes);
-int FS450_set_vga_mode(unsigned long vga_mode);
- /* vga_mode is one of the FS450_VGA_MODE constants*/
- /* vga_modes is a bitmask of zero or more FS450_VGA_MODE constants*/
-
-/* FS450 VGA Mode flags*/
-#define FS450_VGA_MODE_UNKNOWN 0
-#define FS450_VGA_MODE_640X480 0x0001
-#define FS450_VGA_MODE_720X487 0x0002
-#define FS450_VGA_MODE_720X576 0x0004
-#define FS450_VGA_MODE_800X600 0x0008
-#define FS450_VGA_MODE_1024X768 0x0010
-
-
-/* ==========================================================================*/
-/* TVout mode*/
-
-int FS450_get_tvout_mode(unsigned long *p_tvout_mode);
-int FS450_set_tvout_mode(unsigned long tvout_mode);
- /* tvout_mode is a bitmask of FS450_TVOUT_MODE constants*/
-
-/* FS450 TVout mode flags*/
-#define FS450_TVOUT_MODE_CVBS 0x0001
-#define FS450_TVOUT_MODE_YC 0x0002
-#define FS450_TVOUT_MODE_RGB 0x0004
-#define FS450_TVOUT_MODE_CVBS_YC (FS450_TVOUT_MODE_CVBS | FS450_TVOUT_MODE_YC)
-
-
-/* ==========================================================================*/
-/* Flicker control*/
-
-int FS450_get_sharpness(int *p_sharpness);
-int FS450_set_sharpness(int sharpness);
- /* sharpness is a percentage in tenths of a percent, 0 to 1000*/
-
-int FS450_get_flicker_filter(int *p_flicker);
-int FS450_set_flicker_filter(int flicker);
- /* flicker_filter is a percentage in tenths of a percent, 0 to 1000*/
-
-
-/* ==========================================================================*/
-/* Size and Position*/
-
-int FS450_get_overscan(int *p_x, int *p_y);
-int FS450_set_overscan(int x, int y);
-int FS450_get_position(int *p_x, int *p_y);
-int FS450_set_position(int x, int y);
- /* x and y are horizontal and vertical adjustments, -1000 to +1000*/
-
-
-/* ==========================================================================*/
-/* Visual adjustments*/
-
-int FS450_get_color(int *p_color);
-int FS450_set_color(int color);
- /* color is a percentage, 0 to 100*/
-
-int FS450_get_brightness(int *p_brightness);
-int FS450_set_brightness(int brightness);
- /* brightness is a percentage, 0 to 100*/
-
-int FS450_get_contrast(int *p_contrast);
-int FS450_set_contrast(int constrast);
- /* contrast is a percentage, 0 to 100*/
-
-/* ==========================================================================*/
-/* Luma and Chroma filter*/
-
-int FS450_get_yc_filter(unsigned int *p_yc_filter);
-int FS450_set_yc_filter(unsigned int yc_filter);
- /* yc_filter is a bitmask of FS450_LUMA_FILTER and/or FS450_CHROMA_FILTER*/
-
-/* FS450 Luma and Chroma Filters*/
-#define FS450_LUMA_FILTER 0x0001
-#define FS450_CHROMA_FILTER 0x0002
-
-
-/* ==========================================================================*/
-/* Macrovision*/
-
-int FS450_get_aps_trigger_bits(unsigned int *p_trigger_bits);
-int FS450_set_aps_trigger_bits(unsigned int trigger_bits);
- /* trigger_bits is one of the FS450_APS_TRIGGER constants*/
-
-/* APS Trigger Bits*/
-#define FS450_APS_TRIGGER_OFF 0
-#define FS450_APS_TRIGGER_AGC_ONLY 1
-#define FS450_APS_TRIGGER_AGC_2_LINE 2
-#define FS450_APS_TRIGGER_AGC_4_LINE 3
-
-
-/* ==========================================================================*/
-/* direct access to Houston and platform registers (debug builds only)*/
-/* The two functions FS450_ReadRegister and FS450_WriteRegister allow access*/
-/* to device registers. These functions are intended for debugging purposes*/
-/* only and should not be included in a shipping product.*/
-
-#ifdef FS450_DIRECTREG
-
-#define SOURCE_HOUSTON 0
-#define SOURCE_GCC 1
-
-typedef struct _S_REG_INFO
-{
- int source;
- unsigned int size;
- unsigned long offset;
- unsigned long value;
-} S_REG_INFO;
-
-int FS450_ReadRegister(S_REG_INFO *p_reg);
-int FS450_WriteRegister(S_REG_INFO *p_reg);
-
-#endif
-
-
-/* ==========================================================================*/
-/* Error Codes*/
-
-#define ERR_INVALID_PARAMETER 0x1000
-#define ERR_NOT_SUPPORTED 0x1001
-#define ERR_CANNOT_CHANGE_WHILE_TV_ON 0x1002
-
-#define ERR_DRIVER_NOT_FOUND 0x1100
-#define ERR_DRIVER_ERROR 0x1101
-#define ERR_DEVICE_NOT_FOUND 0x1120
-
-#define ERR_I2C_MISSING_DEVICE 0x1200
-#define ERR_I2C_WRITE_FAILED 0x1201
-#define ERR_I2C_READ_FAILED 0x1202
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vga_gu1.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vga_gu1.c
deleted file mode 100644
index 754a64f94..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vga_gu1.c
+++ /dev/null
@@ -1,696 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vga_gu1.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: vga_gu1.c $
- *
- * This file contains routines to set modes using the VGA registers.
- * Since this file is for the first generation graphics unit, it interfaces
- * to SoftVGA registers. It works for both VSA1 and VSA2.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/* SoftVGA Extended CRTC register indices and bit definitions */
-
-#define CRTC_EXTENDED_REGISTER_LOCK 0x30
-#define CRTC_MODE_SWITCH_CONTROL 0x3F
-
-/* BIT DEFINITIONS */
-
-#define CRTC_BIT_16BPP 0x01
-#define CRTC_BIT_555 0x02
-
-/* LOCAL ROUTINE DEFINITIONS */
-
-int gu1_detect_vsa2(void);
-
-/*---------------------------------*/
-/* MODE TABLES FOR VGA REGISTERS */
-/*---------------------------------*/
-
-/* FOR SoftVGA, the CRTC_EXTENDED_ADDRESS_CONTROL (0x43) is always equal to
- * 0x03 for a packed linear frame buffer organization. The
- * CRTC_EXTENDED_DAC_CONTROL (0x4B) is always equal to 0x03 to work with
- * older versions of VSA1 (that needed to specify 8 or 16 bit bus to an
- * external RAMDAC. This is not used in VSA2. The clock frequency is
- * specified in register 0x4D if clock control (0x4C) is set to 0x80.
- * Higher resolutions (1280x1024) use the CRTC_EXTENDED_VERTICAL_TIMING
- * register (index 0x41).
- */
-
-gfx_vga_struct gfx_vga_modes[] =
-{
-/*------------------------------------------------------------------------------*/
- { 640, 480, 60, /* 640x480 */
- 25, /* 25 MHz clock = 60 Hz refresh rate */
- 0xE3, /* miscOutput register */
- { 0x5F, 0x4F, 0x50, 0x82, 0x54, 0x80, 0x0B, 0x3E, /* standard CRTC */
- 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xEA, 0x0C, 0xDF, 0x50, 0x00, 0xE7, 0x04, 0xE3, 0xFF },
- { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 640, 480, 72, /* 640x480 */
- 29, /* 29 MHz clock = 72 Hz refresh rate */
- 0xE3, /* miscOutput register */
- { 0x63, 0x4f, 0x50, 0x86, 0x55, 0x99, 0x06, 0x3e, /* standard CRTC */
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xe9, 0x0c, 0xdf, 0x00, 0x00, 0xe7, 0x00, 0xe3, 0xff },
- { 0x6D, 0x00, 0x00, 0x03, 0x00, 0x01, 0x01, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x01, 0x08, 0x80, 0x1F, 0x00, 0x4B } },
-/*------------------------------------------------------------------------------*/
- { 640, 480, 75, /* 640x480 */
- 31, /* 31.5 MHz clock = 75 Hz refresh rate */
- 0xE3, /* miscOutput register */
- { 0x64, 0x4F, 0x4F, 0x88, 0x54, 0x9B, 0xF2, 0x1F, /* standard CRTC */
- 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xE1, 0x04, 0xDF, 0x50, 0x00, 0xDF, 0xF3, 0xE3, 0xFF },
- { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 800, 600, 60, /* 800x600 */
- 40, /* 40 MHz clock = 60 Hz refresh rate */
- 0x23, /* miscOutput register */
- { 0x7F, 0x63, 0x64, 0x82, 0x6B, 0x1B, 0x72, 0xF0, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x59, 0x0D, 0x57, 0x64, 0x00, 0x57, 0x73, 0xE3, 0xFF },
- { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x28, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 800, 600, 72, /* 800x600 */
- 47, /* 47 MHz clock = 72 Hz refresh rate */
- 0x2B, /* miscOutput register */
- { 0x7D, 0x63, 0x63, 0x81, 0x6D, 0x1B, 0x98, 0xF0, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7D, 0x03, 0x57, 0x00, 0x00, 0x57, 0x9A, 0xE3, 0xFF },
- { 0x6F, 0x00, 0x00, 0x03, 0x00, 0x01, 0x01, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x01, 0x08, 0x80, 0x32, 0x00, 0x4B } },
-/*------------------------------------------------------------------------------*/
- { 800, 600, 75, /* 800x600 */
- 49, /* 49.5 MHz clock = 75 Hz refresh rate */
- 0x23, /* miscOutput register */
- { 0x7F, 0x63, 0x63, 0x83, 0x68, 0x11, 0x6F, 0xF0, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x59, 0x1C, 0x57, 0x64, 0x00, 0x57, 0x70, 0xE3, 0xFF },
- { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x31, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 1024, 768, 60, /* 1024x768 */
- 65, /* 65 MHz clock = 60 Hz refresh rate */
- 0xE3, /* miscOutput register */
- { 0xA3, 0x7F, 0x80, 0x86, 0x85, 0x96, 0x24, 0xF5, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x0A, 0xFF, 0x80, 0x00, 0xFF, 0x25, 0xE3, 0xFF },
- { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x41, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 1024, 768, 70, /* 1024x768 */
- 76, /* 76 MHz clock = 70 Hz refresh rate */
- 0x2B, /* miscOutput register */
- { 0xA1, 0x7F, 0x7F, 0x85, 0x85, 0x95, 0x24, 0xF5, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x09, 0xFF, 0x00, 0x00, 0xFF, 0x26, 0xE3, 0xFF },
- { 0x62, 0x00, 0x00, 0x03, 0x00, 0x01, 0x01, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x01, 0x02, 0x80, 0x4B, 0x00, 0x4B } },
-/*------------------------------------------------------------------------------*/
- { 1024, 768, 75, /* 1024x768 */
- 79, /* 79 MHz clock = 75 Hz refresh rate */
- 0xE3, /* miscOutput register */
- { 0x9F, 0x7F, 0x7F, 0x83, 0x84, 0x8F, 0x1E, 0xF5, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x04, 0xFF, 0x80, 0x00, 0xFF, 0x1F, 0xE3, 0xFF },
- { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x4F, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 1280, 1024, 60, /* 1280x1024 */
- 108, /* 108 MHz clock = 60 Hz refresh rate */
- 0x23, /* miscOutput register */
- { 0xCF, 0x9F, 0xA0, 0x92, 0xAA, 0x19, 0x28, 0x52, /* standard CRTC */
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x04, 0xFF, 0xA0, 0x00, 0x00, 0x29, 0xE3, 0xFF },
- { 0x00, 0x51, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x6C, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 1280, 1024, 75, /* 1280x1024 */
- 135, /* 135 MHz clock = 75 Hz refresh rate */
- 0x23, /* miscOutput register */
- { 0xCE, 0x9F, 0x9F, 0x92, 0xA4, 0x15, 0x28, 0x52, /* standard CRTC */
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x04, 0xFF, 0xA0, 0x00, 0x00, 0x29, 0xE3, 0xFF },
- { 0x00, 0x51, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x00, 0x03, 0x80, 0x87, 0x00, 0x00 } },
-/*------------------------------------------------------------------------------*/
- { 1280, 1024, 85, /* 1280x1024 */
- 159, /* 159 MHz clock = 85 Hz refresh rate */
- 0x2B, /* miscOutput register */
- { 0xD3, 0x9F, 0xA0, 0x98, 0xA8, 0x9C, 0x2E, 0x5A, /* standard CRTC */
- 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x04, 0xFF, 0x00, 0x00, 0xFF, 0x30, 0xE3, 0xFF },
- { 0x6B, 0x41, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, /* extended CRTC */
- 0x00, 0x00, 0x01, 0x00, 0x80, 0x9D, 0x00, 0x4B } },
-
-/*------------------------------------------------------------------------------*/
-};
-
-#define GFX_VGA_MODES sizeof(gfx_vga_modes)/sizeof(gfx_vga_struct)
-
-/*-----------------------------------------------------------------------------
- * gfx_get_softvga_active
- *
- * This returns the active status of SoftVGA
- *-----------------------------------------------------------------------------
- */
-int gfx_get_softvga_active(void)
-{
- unsigned short crtcindex, crtcdata;
-
- if(gu1_detect_vsa2())
- return(gfx_get_vsa2_softvga_enable());
-
- crtcindex = (INB(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- OUTB(crtcindex, CRTC_MODE_SWITCH_CONTROL);
- return(INB(crtcdata) & 0x1);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_test_pci
- *
- * This routine looks for the VGA PCI header. It checks to see that bit 1
- * of the command register is writable to know that SoftVGA is trapping
- * the PCI config cuscles. If SoftVGA is not emulating the header, the
- * hardware will still respond with the proper device ID, etc.
- *
- * We need to know that SoftVGA is really there so that we can set the
- * command register and have the proper effect (enable trapping of VGA).
- * Otherwise, if we enable VGA via the PCI header, trapping really won't be
- * enabled and the VGA register writes will go out to the external card.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_test_pci(void)
-{
- int softvga = 1;
- unsigned long value;
- value = gfx_pci_config_read(0x80009400);
- if ((value & 0x0000FFFF) != 0x1078) softvga = 0;
- else
- {
- value = gfx_pci_config_read(0x80009404);
- gfx_pci_config_write(0x80009404, value | 0x02);
- if (!(gfx_pci_config_read(0x80009404) & 0x02)) softvga = 0;
- gfx_pci_config_write(0x80009404, value);
- }
- return(softvga);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_get_pci_command
- *
- * This routine returns the value of the PCI command register.
- *-----------------------------------------------------------------------------
- */
-unsigned char gfx_vga_get_pci_command(void)
-{
- unsigned long value;
- value = gfx_pci_config_read(0x80009404);
- return((unsigned char) value);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_set_pci_command
- *
- * This routine writes the value of the PCI command register. It is used
- * to enable or disable SoftVGA.
- *
- * Bit 0: Enable VGA IO
- * Bit 1: Enable VGA memory
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_set_pci_command(unsigned char command)
-{
- unsigned long value;
- value = gfx_pci_config_read(0x80009404) & 0xFFFFFF00;
- value |= (unsigned long) command;
- gfx_pci_config_write(0x80009404, value);
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_seq_reset
- *
- * This routine enables or disables SoftVGA. It is used to make SoftVGA
- * "be quiet" and not interfere with any of the direct hardware access from
- * Durango. For VSA1, the sequencer is reset to stop text redraws. VSA2 may
- * provide a better way to have SoftVGA sit in the background.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_seq_reset(int reset)
-{
- OUTB(0x3C4, 0);
- OUTB(0x3C5, (unsigned char) (reset ? 0x00 : 0x03));
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_set_graphics_bits
- *
- * This routine sets the standard VGA sequencer, graphics controller, and
- * attribute registers to appropriate values for a graphics mode (packed,
- * 8 BPP or greater). This is also known as "VESA" modes. The timings for
- * a particular mode are handled by the CRTC registers, which are set by
- * the "gfx_vga_restore" routine. Most OSs that use VGA to set modes save
- * and restore the standard VGA registers themselves, which is why these
- * registers are not part of the save/restore paradigm.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_set_graphics_bits(void)
-{
- /* SET GRAPHICS BIT IN GRAPHICS CONTROLLER REG 0x06 */
-
- OUTB(0x3CE, 0x06);
- OUTB(0x3CF, 0x01);
-
- /* SET GRAPHICS BIT IN ATTRIBUTE CONTROLLER REG 0x10 */
-
- INB(0x3BA); /* Reset flip-flop */
- INB(0x3DA);
- OUTB(0x3C0, 0x10);
- OUTB(0x3C0, 0x01);
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_mode
- *
- * This routine searches the VGA mode table for a match of the specified
- * mode and then fills in the VGA structure with the associated VGA register
- * values. The "gfx_vga_restore" routine can then be called to actually
- * set the mode.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_mode(gfx_vga_struct *vga, int xres, int yres, int bpp, int hz)
-{
- int i;
- unsigned short pitch;
- for (i = 0; i < GFX_VGA_MODES; i++)
- {
- if ((gfx_vga_modes[i].xsize == xres) &&
- (gfx_vga_modes[i].ysize == yres) &&
- (gfx_vga_modes[i].hz == hz))
- {
- /* COPY ENTIRE STRUCTURE FROM THE TABLE */
-
- *vga = gfx_vga_modes[i];
-
- /* SET PITCH TO 1K OR 2K */
- /* CRTC_EXTENDED_OFFSET index is 0x45, so offset = 0x05 */
-
- pitch = (unsigned short) xres;
- if (bpp > 8) pitch <<= 1;
- if (pitch <= 1024) pitch = 1024 >> 3;
- else pitch = 2048 >> 3;
- vga->stdCRTCregs[0x13] = (unsigned char) pitch;
- vga->extCRTCregs[0x05] = (unsigned char)((pitch >> 8) & 0x03);
-
- /* SET PROPER COLOR DEPTH VALUE */
- /* CRTC_EXTENDED_COLOR_CONTROL index is 0x46, so offset = 0x06 */
-
- switch(bpp)
- {
- case 15:
- vga->extCRTCregs[0x06] = CRTC_BIT_16BPP | CRTC_BIT_555;
- break;
- case 16:
- vga->extCRTCregs[0x06] = CRTC_BIT_16BPP;
- break;
- default:
- vga->extCRTCregs[0x06] = 0;
- break;
- }
- return(GFX_STATUS_OK);
- }
- }
- return(GFX_STATUS_UNSUPPORTED);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_pitch
- *
- * This routine updates the VGA regisers in the specified VGA structure for
- * the specified pitch. It does not program the hardware.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_pitch(gfx_vga_struct *vga, unsigned short pitch)
-{
- pitch >>= 3;
- vga->stdCRTCregs[0x13] = (unsigned char) pitch;
- vga->extCRTCregs[0x05] = (unsigned char)((pitch >> 8) & 0x03);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_save
- *
- * This routine saves the state of the VGA registers into the specified
- * structure. Flags indicate what portions of the register state need to
- * be saved.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_save(gfx_vga_struct *vga, int flags)
-{
- int i;
- unsigned short crtcindex, crtcdata;
- crtcindex = (INB(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- /* CHECK MISCELLANEOUS OUTPUT FLAG */
-
- if (flags & GFX_VGA_FLAG_MISC_OUTPUT)
- {
- /* SAVE MISCCELLANEOUS OUTPUT REGISTER */
-
- vga->miscOutput = INB(0x3CC);
- }
-
- /* CHECK STANDARD CRTC FLAG */
-
- if (flags & GFX_VGA_FLAG_STD_CRTC)
- {
- /* SAVE STANDARD CRTC REGISTERS */
-
- for (i = 0; i < GFX_STD_CRTC_REGS; i++)
- {
- OUTB(crtcindex, (unsigned char) i);
- vga->stdCRTCregs[i] = INB(crtcdata);
- }
- }
-
- /* CHECK EXTENDED CRTC FLAG */
-
- if (flags & GFX_VGA_FLAG_EXT_CRTC)
- {
- /* SAVE EXTENDED CRTC REGISTERS */
-
- for (i = 0; i < GFX_EXT_CRTC_REGS; i++)
- {
- OUTB(crtcindex, (unsigned char) (0x40+i));
- vga->extCRTCregs[i] = INB(crtcdata);
- }
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_clear_extended
- *
- * This routine clears the extended SoftVGA register values to have SoftVGA
- * behave like standard VGA.
- *-----------------------------------------------------------------------------
- */
-void gfx_vga_clear_extended(void)
-{
- int i;
- unsigned short crtcindex, crtcdata;
- crtcindex = (INB(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- OUTB(crtcindex, 0x30);
- OUTB(crtcdata, 0x57);
- OUTB(crtcdata, 0x4C);
- for (i = 0x40; i <= 0x4F; i++)
- {
- OUTB(crtcindex, (unsigned char) i);
- OUTB(crtcdata, 0);
- }
- OUTB(crtcindex, 0x30);
- OUTB(crtcdata, 0x00);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_restore
- *
- * This routine restores the state of the VGA registers from the specified
- * structure. Flags indicate what portions of the register state need to
- * be saved.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_restore(gfx_vga_struct *vga, int flags)
-{
- int i;
- unsigned short crtcindex, crtcdata;
- crtcindex = (INB(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- /* CHECK MISCELLANEOUS OUTPUT FLAG */
-
- if (flags & GFX_VGA_FLAG_MISC_OUTPUT)
- {
- /* RESTORE MISCELLANEOUS OUTPUT REGISTER VALUE */
-
- OUTB(0x3C2, vga->miscOutput);
- }
-
- /* CHECK STANDARD CRTC FLAG */
-
- if (flags & GFX_VGA_FLAG_STD_CRTC)
- {
- /* UNLOCK STANDARD CRTC REGISTERS */
-
- OUTB(crtcindex, 0x11);
- OUTB(crtcdata, 0);
-
- /* RESTORE STANDARD CRTC REGISTERS */
-
- for (i = 0; i < GFX_STD_CRTC_REGS; i++)
- {
- OUTB(crtcindex, (unsigned char) i);
- OUTB(crtcdata, vga->stdCRTCregs[i]);
- }
- }
-
- /* CHECK EXTENDED CRTC FLAG */
-
- if (flags & GFX_VGA_FLAG_EXT_CRTC)
- {
- /* UNLOCK EXTENDED CRTC REGISTERS */
-
- OUTB(crtcindex, 0x30);
- OUTB(crtcdata, 0x57);
- OUTB(crtcdata, 0x4C);
-
- /* RESTORE EXTENDED CRTC REGISTERS */
-
- for (i = 0; i < GFX_EXT_CRTC_REGS; i++)
- {
- OUTB(crtcindex, (unsigned char) (0x40+i));
- OUTB(crtcdata, vga->extCRTCregs[i]);
- }
-
- /* LOCK EXTENDED CRTC REGISTERS */
-
- OUTB(crtcindex, 0x30);
- OUTB(crtcdata, 0x00);
-
- /* CHECK IF DIRECT FRAME BUFFER MODE (VESA MODE) */
-
- if (vga->extCRTCregs[0x03] & 1)
- {
- /* SET BORDER COLOR TO BLACK */
- /* This really should be another thing saved/restored, but */
- /* Durango currently doesn't do the attr controller registers. */
-
- INB(0x3BA); /* Reset flip-flop */
- INB(0x3DA);
- OUTB(0x3C0, 0x11);
- OUTB(0x3C0, 0x00);
- }
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_vga_mode_switch
- *
- * This routine programs the SoftVGA register to indicate that a mode switch
- * is in progress. This results in a cleaner mode switch since SoftVGA will
- * not validate the hardware with intermediate values.
- *-----------------------------------------------------------------------------
- */
-int gfx_vga_mode_switch(int active)
-{
- unsigned short crtcindex, crtcdata;
- crtcindex = (INB(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- /* UNLOCK EXTENDED CRTC REGISTERS */
-
- OUTB(crtcindex, CRTC_EXTENDED_REGISTER_LOCK);
- OUTB(crtcdata, 0x57);
- OUTB(crtcdata, 0x4C);
-
- /* SIGNAL THE BEGINNING OR END OF THE MODE SWITCH */
- /* SoftVGA will hold off validating the back end hardware. */
-
- OUTB(crtcindex, CRTC_MODE_SWITCH_CONTROL);
- active = active ? 1 : 0;
- OUTB(crtcdata, (unsigned char) active);
-
- /* WAIT UNTIL SOFTVGA HAS VALIDATED MODE IF ENDING MODE SWITCH */
- /* This is for VSA1 only, where SoftVGA waits until the next */
- /* vertical blank to validate the hardware state. */
-
- if ((!active) && (!(gu1_detect_vsa2())))
- {
- OUTB(crtcindex, 0x33);
- while(INB(crtcdata) & 0x80);
- }
-
- /* LOCK EXTENDED CRTC REGISTERS */
-
- OUTB(crtcindex, CRTC_EXTENDED_REGISTER_LOCK);
- OUTB(crtcdata, 0x00);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gu1_detect_vsa2
- *
- * This routine detects if VSA2 is present. The interface to SoftVGA
- * changed slightly.
- *-----------------------------------------------------------------------------
- */
-int gu1_detect_vsa2(void)
-{
- unsigned short crtcindex, crtcdata;
- crtcindex = (INB(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
- OUTB(crtcindex, 0x35);
- if (INB(crtcdata) != 'C') return(0);
- OUTB(crtcindex, 0x36);
- if (INB(crtcdata) != 'X') return(0);
- return(1);
-}
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_1200.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_1200.c
deleted file mode 100644
index 4d1837d85..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_1200.c
+++ /dev/null
@@ -1,2532 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_1200.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: vid_1200.c $
- *
- * This file contains routines to control the SC1200 video overlay hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*----------------------------------------------------------------------------
- * SC1200 PLL TABLE
- *----------------------------------------------------------------------------
- */
-
-typedef struct tagSC1200PLL
-{
- long frequency; /* 16.16 fixed point frequency */
- unsigned long clock_select; /* clock select register (0x2C) */
-} SC1200PLL;
-
-SC1200PLL gfx_sc1200_clock_table[] = {
- { (25L << 16) | ((1750L * 65536L) / 10000L), 0x0070E00C }, /* 25.1750 (sc=24.9231) */
- { (27L << 16) | ((0000L * 65536L) / 10000L), 0x00300100 }, /* 27.0000 */
- { (28L << 16) | ((3220L * 65536L) / 10000L), 0x0070EC0C }, /* 28.3220 (SC=27.000) */
- { (31L << 16) | ((5000L * 65536L) / 10000L), 0x00500D02 }, /* 31.5000 */
- { (36L << 16) | ((0000L * 65536L) / 10000L), 0x00500F02 }, /* 36.0000 */
- { (37L << 16) | ((5000L * 65536L) / 10000L), 0x0050B108 }, /* 37.5000 */
- { (40L << 16) | ((0000L * 65536L) / 10000L), 0x0050D20D }, /* 40.0000 */
- { (44L << 16) | ((9000L * 65536L) / 10000L), 0x0050DC0D }, /* 44.9000 */
- { (49L << 16) | ((5000L * 65536L) / 10000L), 0x00501502 }, /* 49.5000 */
- { (50L << 16) | ((0000L * 65536L) / 10000L), 0x0050A404 }, /* 50.0000 */
- { (50L << 16) | ((3500L * 65536L) / 10000L), 0x0050E00C }, /* 50.3500 */
- { (54L << 16) | ((0000L * 65536L) / 10000L), 0x00300300 }, /* 54.0000 */
- { (56L << 16) | ((3916L * 65536L) / 10000L), 0x0050F40D }, /* 56.3916 */
- { (56L << 16) | ((6440L * 65536L) / 10000L), 0x0050EC0C }, /* 56.6440 */
- { (59L << 16) | ((0000L * 65536L) / 10000L), 0x0030A207 }, /* 59.0000 */
- { (63L << 16) | ((0000L * 65536L) / 10000L), 0x00300D02 }, /* 63.0000 */
- { (65L << 16) | ((0000L * 65536L) / 10000L), 0x0030CC0F }, /* 65.0000 */
- { (67L << 16) | ((5000L * 65536L) / 10000L), 0x00300400 }, /* 67.5000 */
- { (70L << 16) | ((8000L * 65536L) / 10000L), 0x00301403 }, /* 70.8000 */
- { (72L << 16) | ((0000L * 65536L) / 10000L), 0x00300F02 }, /* 72.0000 */
- { (75L << 16) | ((0000L * 65536L) / 10000L), 0x0030B108 }, /* 75.0000 */
- { (78L << 16) | ((7500L * 65536L) / 10000L), 0x0030A205 }, /* 78.7500 */
- { (80L << 16) | ((0000L * 65536L) / 10000L), 0x0030D20D }, /* 80.0000 */
- { (87L << 16) | ((2728L * 65536L) / 10000L), 0x0030E00E }, /* 87.2728 */
- { (89L << 16) | ((8000L * 65536L) / 10000L), 0x0030DC0D }, /* 89.8000 */
- { (94L << 16) | ((5000L * 65536L) / 10000L), 0x00300600 }, /* 99.0000 */
- { (99L << 16) | ((0000L * 65536L) / 10000L), 0x00301502 }, /* 99.0000 */
- { (100L << 16) | ((0000L * 65536L) / 10000L), 0x0030A404 }, /* 100.00 */
- { (108L << 16) | ((0000L * 65536L) / 10000L), 0x00100300 }, /* 108.00 */
- { (112L << 16) | ((5000L * 65536L) / 10000L), 0x00301802 }, /* 108.00 */
- { (130L << 16) | ((0000L * 65536L) / 10000L), 0x0010CC0F }, /* 130.00 */
- { (135L << 16) | ((0000L * 65536L) / 10000L), 0x00100400 }, /* 135.00 */
- { (157L << 16) | ((5000L * 65536L) / 10000L), 0x0010A205 }, /* 157.50 */
- { (162L << 16) | ((0000L * 65536L) / 10000L), 0x00100500 }, /* 162.00 */
- { (175L << 16) | ((0000L * 65536L) / 10000L), 0x0010E00E }, /* 175.50 */
- { (189L << 16) | ((0000L * 65536L) / 10000L), 0x00100600 }, /* 189.00 */
- { (202L << 16) | ((0000L * 65536L) / 10000L), 0x0010EF0E }, /* 202.50 */
- { (232L << 16) | ((0000L * 65536L) / 10000L), 0x0010AA04 }, /* 232.50 */
-
- /* Precomputed inidces in the hardware */
- { 0x0018EC4D, 0x000F0000 }, /* 24.923052 */
- { 0x00192CCC, 0x00000000 }, /* 25.1750 */
- { 0x001B0000, 0x00300100 }, /* 27.0000 */
- { 0x001F8000, 0x00010000 }, /* 31.5000 */
- { 0x00240000, 0x00020000 }, /* 36.0000 */
- { 0x00280000, 0x00030000 }, /* 40.0000 */
- { 0x00318000, 0x00050000 }, /* 49.5000 */
- { 0x00320000, 0x00040000 }, /* 50.0000 */
- { 0x00384000, 0x00060000 }, /* 56.2500 */
- { 0x00410000, 0x00080000 }, /* 65.0000 */
- { 0x004E8000, 0x000A0000 }, /* 78.5000 */
- { 0x005E8000, 0x000B0000 }, /* 94.5000 */
- { 0x006C0000, 0x000C0000 }, /* 108.0000 */
- { 0x00870000, 0x000D0000 }, /* 135.0000 */
-};
-
-#define NUM_SC1200_FREQUENCIES sizeof(gfx_sc1200_clock_table)/sizeof(SC1200PLL)
-
-/*---------------------------------------------------------------------------
- * gfx_reset_video (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine is used to disable all components of video overlay before
- * performing a mode switch.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_reset_video(void)
-#else
-void gfx_reset_video(void)
-#endif
-{
- int i;
-
- gfx_set_video_enable(0);
-
- /* SET WINDOW 0 AFTER RESET */
-
- for (i = 2; i >= 0; i--)
- {
- gfx_select_alpha_region(i);
- gfx_set_alpha_enable(0);
- gfx_set_alpha_color_enable(0);
- }
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_display_control (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine configures the display output.
- *
- * "sync_polarities" is used to set the polarities of the sync pulses according
- * to the following mask:
- *
- * Bit 0: If set to 1, negative horizontal polarity is programmed,
- * otherwise positive horizontal polarity is programmed.
- * Bit 1: If set to 1, negative vertical polarity is programmed,
- * otherwise positive vertical polarity is programmed.
- *
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_display_control(int sync_polarities)
-#else
-int gfx_set_display_control(int sync_polarities)
-#endif
-{
- unsigned long dcfg;
-
- /* CONFIGURE DISPLAY OUTPUT FROM VIDEO PROCESSOR */
-
- dcfg = READ_VID32(SC1200_DISPLAY_CONFIG);
- dcfg &= ~(SC1200_DCFG_CRT_SYNC_SKW_MASK | SC1200_DCFG_PWR_SEQ_DLY_MASK |
- SC1200_DCFG_CRT_HSYNC_POL | SC1200_DCFG_CRT_VSYNC_POL |
- SC1200_DCFG_FP_PWR_EN | SC1200_DCFG_FP_DATA_EN);
-
- dcfg |= (SC1200_DCFG_CRT_SYNC_SKW_INIT |
- SC1200_DCFG_PWR_SEQ_DLY_INIT |
- SC1200_DCFG_GV_PAL_BYP);
-
- if (PanelEnable)
- dcfg |= SC1200_DCFG_FP_PWR_EN;
-
- /* SET APPROPRIATE SYNC POLARITIES */
-
- if (sync_polarities & 0x1)
- dcfg |= SC1200_DCFG_CRT_HSYNC_POL;
- if (sync_polarities & 0x2)
- dcfg |= SC1200_DCFG_CRT_VSYNC_POL;
-
- WRITE_VID32(SC1200_DISPLAY_CONFIG, dcfg);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_clock_frequency
- *
- * This routine sets the clock frequency, specified as a 16.16 fixed point
- * value (0x00318000 = 49.5 MHz). It will set the closest frequency found
- * in the lookup table.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_set_clock_frequency(unsigned long frequency)
-#else
-void gfx_set_clock_frequency(unsigned long frequency)
-#endif
-{
- int index;
- unsigned long value, pll;
- long min, diff;
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- value = gfx_sc1200_clock_table[0].clock_select;
- min = (long) gfx_sc1200_clock_table[0].frequency - frequency;
- if (min < 0L) min = -min;
- for (index = 1; index < NUM_SC1200_FREQUENCIES; index++)
- {
- diff = (long) gfx_sc1200_clock_table[index].frequency - frequency;
- if (diff < 0L) diff = -diff;
- if (diff < min)
- {
- min = diff;
- value = gfx_sc1200_clock_table[index].clock_select;
- }
- }
-
- /* SET THE DOT CLOCK REGISTER */
-
- pll = READ_VID32(SC1200_VID_MISC);
- WRITE_VID32(SC1200_VID_MISC, pll | SC1200_PLL_POWER_NORMAL);
- WRITE_VID32(SC1200_VID_CLOCK_SELECT, value);
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_screen_enable (PRIVATE ROUTINE - NOT PART OF API)
- *
- * This routine enables or disables the graphics display logic of the video processor.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_screen_enable(int enable)
-#else
-int gfx_set_screen_enable(int enable)
-#endif
-{
- unsigned long config;
- config = READ_VID32(SC1200_DISPLAY_CONFIG);
- if (enable)
- WRITE_VID32(SC1200_DISPLAY_CONFIG, config | SC1200_DCFG_DIS_EN);
- else
- WRITE_VID32(SC1200_DISPLAY_CONFIG, config & ~SC1200_DCFG_DIS_EN);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_crt_enable
- *
- * This routine enables or disables the CRT output from the video processor.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_crt_enable(int enable)
-#else
-int gfx_set_crt_enable(int enable)
-#endif
-{
- unsigned long config, misc;
- config = READ_VID32(SC1200_DISPLAY_CONFIG);
- misc = READ_VID32(SC1200_VID_MISC);
-
- /*
- * IMPORTANT: For all modes do NOT disable the graphics display logic
- * because it might be needed for TV
- */
-
- switch (enable)
- {
- case CRT_DISABLE: /* HSync:Off VSync:Off */
- WRITE_VID32(SC1200_DISPLAY_CONFIG, config & ~(SC1200_DCFG_HSYNC_EN
- | SC1200_DCFG_VSYNC_EN
- | SC1200_DCFG_DAC_BL_EN));
- WRITE_VID32(SC1200_VID_MISC, misc | SC1200_DAC_POWER_DOWN);
- break;
- case CRT_ENABLE: /* Enable CRT display, including display logic */
- WRITE_VID32(SC1200_DISPLAY_CONFIG, config | SC1200_DCFG_HSYNC_EN
- | SC1200_DCFG_VSYNC_EN
- | SC1200_DCFG_DAC_BL_EN);
- WRITE_VID32(SC1200_VID_MISC, misc & ~SC1200_DAC_POWER_DOWN);
-
- /* ENABLE GRAPHICS DISPLAY LOGIC */
- gfx_set_screen_enable(1);
- break;
- case CRT_STANDBY: /* HSync:Off VSync:On */
- WRITE_VID32(SC1200_DISPLAY_CONFIG, (config & ~(SC1200_DCFG_HSYNC_EN
- | SC1200_DCFG_DAC_BL_EN))
- | SC1200_DCFG_VSYNC_EN);
- WRITE_VID32(SC1200_VID_MISC, misc | SC1200_DAC_POWER_DOWN);
- break;
- case CRT_SUSPEND: /* HSync:On VSync:Off */
- WRITE_VID32(SC1200_DISPLAY_CONFIG, (config & ~(SC1200_DCFG_VSYNC_EN
- | SC1200_DCFG_DAC_BL_EN))
- | SC1200_DCFG_HSYNC_EN);
- WRITE_VID32(SC1200_VID_MISC, misc | SC1200_DAC_POWER_DOWN);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_enable
- *
- * This routine enables or disables the video overlay functionality.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_enable(int enable)
-#else
-int gfx_set_video_enable(int enable)
-#endif
-{
- unsigned long vcfg;
-
- /* WAIT FOR VERTICAL BLANK TO START */
- /* Otherwise a glitch can be observed. */
-
- if (gfx_test_timing_active())
- {
- if (!gfx_test_vertical_active())
- {
- while(!gfx_test_vertical_active());
- }
- while(gfx_test_vertical_active());
- }
-
- vcfg = READ_VID32(SC1200_VIDEO_CONFIG);
- if (enable)
- {
- /* ENABLE VIDEO OVERLAY FROM DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_enable(1);
-
- /* ENABLE SC1200 VIDEO OVERLAY */
-
- vcfg |= SC1200_VCFG_VID_EN;
- WRITE_VID32(SC1200_VIDEO_CONFIG, vcfg);
- }
- else
- {
- /* DISABLE SC1200 VIDEO OVERLAY */
-
- vcfg &= ~SC1200_VCFG_VID_EN;
- WRITE_VID32(SC1200_VIDEO_CONFIG, vcfg);
-
- /* DISABLE VIDEO OVERLAY FROM DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_enable(0);
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_format
- *
- * Sets input video format type, to one of the YUV formats or to RGB.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_format(unsigned long format)
-#else
-int gfx_set_video_format(unsigned long format)
-#endif
-{
- unsigned long ctrl, vcfg = 0;
-
- /* SET THE SC1200 VIDEO INPUT FORMAT */
-
- vcfg = READ_VID32(SC1200_VIDEO_CONFIG);
- ctrl = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- ctrl &= ~(SC1200_VIDEO_INPUT_IS_RGB);
- vcfg &= ~(SC1200_VCFG_VID_INP_FORMAT | SC1200_VCFG_4_2_0_MODE);
- switch(format)
- {
- case VIDEO_FORMAT_UYVY:
- vcfg |= SC1200_VCFG_UYVY_FORMAT;
- break;
- case VIDEO_FORMAT_YUYV:
- vcfg |= SC1200_VCFG_YUYV_FORMAT;
- break;
- case VIDEO_FORMAT_Y2YU:
- vcfg |= SC1200_VCFG_Y2YU_FORMAT;
- break;
- case VIDEO_FORMAT_YVYU:
- vcfg |= SC1200_VCFG_YVYU_FORMAT;
- break;
- case VIDEO_FORMAT_Y0Y1Y2Y3:
- vcfg |= SC1200_VCFG_UYVY_FORMAT;
- vcfg |= SC1200_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_Y3Y2Y1Y0:
- vcfg |= SC1200_VCFG_Y2YU_FORMAT;
- vcfg |= SC1200_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_Y1Y0Y3Y2:
- vcfg |= SC1200_VCFG_YUYV_FORMAT;
- vcfg |= SC1200_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_Y1Y2Y3Y0:
- vcfg |= SC1200_VCFG_YVYU_FORMAT;
- vcfg |= SC1200_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_RGB:
- ctrl |= SC1200_VIDEO_INPUT_IS_RGB;
- vcfg |= SC1200_VCFG_UYVY_FORMAT;
- break;
- case VIDEO_FORMAT_P2M_P2L_P1M_P1L:
- ctrl |= SC1200_VIDEO_INPUT_IS_RGB;
- vcfg |= SC1200_VCFG_Y2YU_FORMAT;
- break;
- case VIDEO_FORMAT_P1M_P1L_P2M_P2L:
- ctrl |= SC1200_VIDEO_INPUT_IS_RGB;
- vcfg |= SC1200_VCFG_YUYV_FORMAT;
- break;
- case VIDEO_FORMAT_P1M_P2L_P2M_P1L:
- ctrl |= SC1200_VIDEO_INPUT_IS_RGB;
- vcfg |= SC1200_VCFG_YVYU_FORMAT;
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
-
- /* ALWAYS DISABLE GRAPHICS CSC */
- /* This is enabled in the function gfx_set_color_space_YUV for */
- /* YUV blending on TV. */
-
- ctrl &= ~SC1200_CSC_GFX_RGB_TO_YUV;
-
- if (ctrl & SC1200_VIDEO_INPUT_IS_RGB)
- ctrl &= ~SC1200_CSC_VIDEO_YUV_TO_RGB;
- else
- ctrl |= SC1200_CSC_VIDEO_YUV_TO_RGB;
-
- WRITE_VID32(SC1200_VIDEO_CONFIG, vcfg);
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, ctrl);
-
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_size
- *
- * This routine specifies the size of the source data. It is used only
- * to determine how much data to transfer per frame, and is not used to
- * calculate the scaling value (that is handled by a separate routine).
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_size(unsigned short width, unsigned short height)
-#else
-int gfx_set_video_size(unsigned short width, unsigned short height)
-#endif
-{
- unsigned long size, vcfg;
-
- /* SET THE SC1200 VIDEO LINE SIZE */
-
- vcfg = READ_VID32(SC1200_VIDEO_CONFIG);
- vcfg &= ~(SC1200_VCFG_LINE_SIZE_LOWER_MASK | SC1200_VCFG_LINE_SIZE_UPPER);
- size = (width >> 1);
- vcfg |= (size & 0x00FF) << 8;
- if (size & 0x0100) vcfg |= SC1200_VCFG_LINE_SIZE_UPPER;
- WRITE_VID32(SC1200_VIDEO_CONFIG, vcfg);
-
- /* SET TOTAL VIDEO BUFFER SIZE IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- /* Add 1 line to bypass issue #803 */
- gfx_set_display_video_size(width, (unsigned short)(height + 2));
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_offset
- *
- * This routine sets the starting offset for the video buffer when only
- * one offset needs to be specified.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_offset(unsigned long offset)
-#else
-int gfx_set_video_offset(unsigned long offset)
-#endif
-{
- /* SAVE VALUE FOR FUTURE CLIPPING OF THE TOP OF THE VIDEO WINDOW */
-
- gfx_vid_offset = offset;
-
- /* SET VIDEO BUFFER OFFSET IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_offset(offset);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_upscale
- *
- * This routine sets the scale factor for the video overlay window. The
- * size of the source and destination regions are specified in pixels.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_upscale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#else
-int gfx_set_video_upscale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#endif
-{
- unsigned long xscale, yscale;
-
- /* SAVE PARAMETERS (unless don't-care zero destination arguments are used) */
- /* These are needed for clipping the video window later. */
-
- if (dstw != 0) {
- gfx_vid_srcw = srcw;
- gfx_vid_dstw = dstw;
- }
- if (dsth != 0) {
- gfx_vid_srch = srch;
- gfx_vid_dsth = dsth;
- }
-
- /* CALCULATE SC1200 SCALE FACTORS */
-
- if (dstw == 0) xscale = READ_VID32(SC1200_VIDEO_UPSCALE) & 0xffff; /* keep previous if don't-care argument */
- else if (dstw <= srcw) xscale = 0x2000l; /* horizontal downscaling is currently done in a separate function */
- else if ((srcw == 1) || (dstw == 1)) return GFX_STATUS_BAD_PARAMETER;
- else xscale = (0x2000l * (srcw - 1l)) / (dstw - 1l);
-
- if (dsth == 0) yscale = (READ_VID32(SC1200_VIDEO_UPSCALE) & 0xffff0000) >> 16; /* keep previous if don't-care argument */
- else if (dsth <= srch) yscale = 0x2000l; /* No vertical downscaling in SC1200 so force to 1x if attempted */
- else if ((srch == 1) || (dsth == 1)) return GFX_STATUS_BAD_PARAMETER;
- else yscale = (0x2000l * (srch - 1l)) / (dsth - 1l);
-
- WRITE_VID32(SC1200_VIDEO_UPSCALE, (yscale << 16) | xscale);
-
- /* CALL ROUTINE TO UPDATE WINDOW POSITION */
- /* This is required because the scale values effect the number of */
- /* source data pixels that need to be clipped, as well as the */
- /* amount of data that needs to be transferred. */
-
- gfx_set_video_window(gfx_vid_xpos, gfx_vid_ypos, gfx_vid_width, gfx_vid_height);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_scale
- *
- * This routine sets the scale factor for the video overlay window. The
- * size of the source and destination regions are specified in pixels.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#else
-int gfx_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#endif
-{
- return gfx_set_video_upscale(srcw, srch, dstw, dsth);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_config
- *
- * This routine sets the downscale type and factor for the video overlay window.
- * Note: No downscaling support for RGB565 and YUV420 video formats.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_downscale_config(unsigned short type, unsigned short m)
-#else
-int gfx_set_video_downscale_config(unsigned short type, unsigned short m)
-#endif
-{
- unsigned long downscale;
-
- if ((m < 1) || (m > 16)) return GFX_STATUS_BAD_PARAMETER;
-
- downscale = READ_VID32(SC1200_VIDEO_DOWNSCALER_CONTROL);
- downscale &= ~(SC1200_VIDEO_DOWNSCALE_FACTOR_MASK | SC1200_VIDEO_DOWNSCALE_TYPE_MASK);
- downscale |= ((m - 1l) << SC1200_VIDEO_DOWNSCALE_FACTOR_POS);
- switch(type)
- {
- case VIDEO_DOWNSCALE_KEEP_1_OF:
- downscale |= SC1200_VIDEO_DOWNSCALE_TYPE_A;
- break;
- case VIDEO_DOWNSCALE_DROP_1_OF:
- downscale |= SC1200_VIDEO_DOWNSCALE_TYPE_B;
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- WRITE_VID32(SC1200_VIDEO_DOWNSCALER_CONTROL, downscale);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_coefficients
- *
- * This routine sets the downscale filter coefficients.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_downscale_coefficients(unsigned short coef1, unsigned short coef2,
- unsigned short coef3, unsigned short coef4)
-#else
-int gfx_set_video_downscale_coefficients(unsigned short coef1, unsigned short coef2,
- unsigned short coef3, unsigned short coef4)
-#endif
-{
- if ((coef1 + coef2 + coef3 + coef4) != 16)
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_VID32(SC1200_VIDEO_DOWNSCALER_COEFFICIENTS, ((unsigned long)coef1 << SC1200_VIDEO_DOWNSCALER_COEF1_POS) |
- ((unsigned long)coef2 << SC1200_VIDEO_DOWNSCALER_COEF2_POS) |
- ((unsigned long)coef3 << SC1200_VIDEO_DOWNSCALER_COEF3_POS) |
- ((unsigned long)coef4 << SC1200_VIDEO_DOWNSCALER_COEF4_POS));
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_enable
- *
- * This routine enables or disables downscaling for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_downscale_enable(int enable)
-#else
-int gfx_set_video_downscale_enable(int enable)
-#endif
-{
- unsigned long downscale;
-
- downscale = READ_VID32(SC1200_VIDEO_DOWNSCALER_CONTROL);
- downscale &= ~SC1200_VIDEO_DOWNSCALE_ENABLE;
- if (enable)
- downscale |= SC1200_VIDEO_DOWNSCALE_ENABLE;
- WRITE_VID32(SC1200_VIDEO_DOWNSCALER_CONTROL, downscale);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_window
- *
- * This routine sets the position and size of the video overlay window. The
- * y position is specified in screen relative coordinates, and may be negative.
- * The size of destination region is specified in pixels. The line size
- * indicates the number of bytes of source data per scanline.
- * For the effect of negative x values, call the function
- * gfx_set_video_left_crop().
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_window(short x, short y, unsigned short w, unsigned short h)
-#else
-int gfx_set_video_window(short x, short y, unsigned short w, unsigned short h)
-#endif
-{
- unsigned long control;
- unsigned long hadjust, vadjust;
- unsigned long xstart, ystart, xend, yend;
-
- /* For left cropping call the function gfx_set_video_left_crop() */
-
- if (x < 0)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* SAVE PARAMETERS */
- /* These are needed to call this routine if the scale value changes. */
- /* In the case of SC1200 they are also needed for restoring when video is re-enabled */
-
- gfx_vid_xpos = x;
- gfx_vid_ypos = y;
- gfx_vid_width = w;
- gfx_vid_height = h;
-
- /* GET ADJUSTMENT VALUES */
- /* Use routines to abstract version of display controller. */
-
- hadjust = gfx_get_htotal() - gfx_get_hsync_end() - 14l;
- vadjust = gfx_get_vtotal() - gfx_get_vsync_end() + 1l;
-
- /* HORIZONTAL START */
-
- xstart = (unsigned long)x + hadjust;
-
- /* HORIZONTAL END */
- /* End positions in register are non-inclusive (one more than the actual end) */
-
- if ((x + w) < gfx_get_hactive())
- xend = (unsigned long)x + (unsigned long)w + hadjust;
- else /* right clipping needed */
- xend = (unsigned long)gfx_get_hactive() + hadjust;
-
- /* VERTICAL START */
-
- ystart = (unsigned long)y + vadjust;
-
- /* VERTICAL END */
-
- if ((y + h) < gfx_get_vactive())
- yend = (unsigned long)y + (unsigned long)h + vadjust;
- else /* bottom clipping needed */
- yend = (unsigned long)gfx_get_vactive() + vadjust;
-
- /* SET VIDEO LINE INVERT BIT */
-
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- if (y & 0x1)
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control | SC1200_VIDEO_LINE_OFFSET_ODD);
- else
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control & ~SC1200_VIDEO_LINE_OFFSET_ODD);
-
- /* SET VIDEO POSITION */
-
- WRITE_VID32(SC1200_VIDEO_X_POS, (xend << 16) | xstart);
- WRITE_VID32(SC1200_VIDEO_Y_POS, (yend << 16) | ystart);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_left_crop
- *
- * This routine sets the number of pixels which will be cropped from the
- * beginning of each video line. The video window will begin to display only
- * from the pixel following the cropped pixels, and the cropped pixels
- * will be ignored.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_left_crop(unsigned short x)
-#else
-int gfx_set_video_left_crop(unsigned short x)
-#endif
-{
- unsigned long vcfg, initread;
-
- /* CLIPPING ON LEFT */
- /* Adjust initial read for scale, checking for divide by zero */
-
- if (gfx_vid_dstw)
- initread = (unsigned long)x * gfx_vid_srcw / gfx_vid_dstw;
- else initread = 0l;
-
- /* SET INITIAL READ ADDRESS */
-
- vcfg = READ_VID32(SC1200_VIDEO_CONFIG);
- vcfg &= ~SC1200_VCFG_INIT_READ_MASK;
- vcfg |= (initread << 15) & SC1200_VCFG_INIT_READ_MASK;
- WRITE_VID32(SC1200_VIDEO_CONFIG, vcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_color_key
- *
- * This routine specifies the color key value and mask for the video overlay
- * hardware. To disable color key, the color and mask should both be set to
- * zero. The hardware uses the color key in the following equation:
- *
- * ((source data) & (color key mask)) == ((color key) & (color key mask))
- *
- * If "graphics" is set to TRUE, the source data is graphics, and color key
- * is an RGB value. If "graphics" is set to FALSE, the source data is the video,
- * and color key is a YUV value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-#else
-int gfx_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-#endif
-{
- unsigned long dcfg = 0;
-
- /* SET SC1200 COLOR KEY VALUE */
-
- WRITE_VID32(SC1200_VIDEO_COLOR_KEY, key);
- WRITE_VID32(SC1200_VIDEO_COLOR_MASK, mask);
-
- /* SELECT GRAPHICS OR VIDEO DATA TO COMPARE TO THE COLOR KEY */
-
- dcfg = READ_VID32(SC1200_DISPLAY_CONFIG);
- if (graphics & 0x01) dcfg &= ~SC1200_DCFG_VG_CK;
- else dcfg |= SC1200_DCFG_VG_CK;
- WRITE_VID32(SC1200_DISPLAY_CONFIG, dcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_filter
- *
- * This routine enables or disables the video overlay filters.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_filter(int xfilter, int yfilter)
-#else
-int gfx_set_video_filter(int xfilter, int yfilter)
-#endif
-{
- unsigned long vcfg = 0;
-
- /* ENABLE OR DISABLE SC1200 VIDEO OVERLAY FILTERS */
-
- vcfg = READ_VID32(SC1200_VIDEO_CONFIG);
- vcfg &= ~(SC1200_VCFG_X_FILTER_EN | SC1200_VCFG_Y_FILTER_EN);
- if (xfilter) vcfg |= SC1200_VCFG_X_FILTER_EN;
- if (yfilter) vcfg |= SC1200_VCFG_Y_FILTER_EN;
- WRITE_VID32(SC1200_VIDEO_CONFIG, vcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette
- *
- * This routine loads the video hardware palette. If a NULL pointer is
- * specified, the palette is bypassed (for SC1200, this means loading the
- * palette with identity values).
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_palette(unsigned long *palette)
-#else
-int gfx_set_video_palette(unsigned long *palette)
-#endif
-{
- unsigned long i, entry;
-
- /* WAIT FOR VERTICAL BLANK TO END */
- /* Otherwise palette will not be written properly. */
-
- if (gfx_test_timing_active())
- {
- if (gfx_test_vertical_active())
- {
- while(gfx_test_vertical_active());
- }
- while(!gfx_test_vertical_active());
- }
-
- /* LOAD SC1200 VIDEO PALETTE */
-
- WRITE_VID32(SC1200_PALETTE_ADDRESS, 0);
- for (i = 0; i < 256; i++)
- {
- if (palette) entry = palette[i];
- else entry = (i << 8) | (i << 16) | (i << 24);
- WRITE_VID32(SC1200_PALETTE_DATA, entry);
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette_entry
- *
- * This routine loads a single entry of the video hardware palette.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_palette_entry(unsigned long index, unsigned long palette)
-#else
-int gfx_set_video_palette_entry(unsigned long index, unsigned long palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* WAIT FOR VERTICAL BLANK TO END */
- /* Otherwise palette will not be written properly. */
-
- if (gfx_test_timing_active())
- {
- if (gfx_test_vertical_active())
- {
- while(gfx_test_vertical_active());
- }
- while(!gfx_test_vertical_active());
- }
-
- /* SET A SINGLE ENTRY */
-
- WRITE_VID32(SC1200_PALETTE_ADDRESS, index);
- WRITE_VID32(SC1200_PALETTE_DATA, palette);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_request()
- *
- * This routine sets the horizontal (pixel) and vertical (line) video request
- * values.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_request(short x, short y)
-#else
-int gfx_set_video_request(short x, short y)
-#endif
-{
- /* SET SC1200 VIDEO REQUEST */
-
- x += gfx_get_htotal() - gfx_get_hsync_end() - 2;
- y += gfx_get_vtotal() - gfx_get_vsync_end() + 1;
-
- if ((x < 0) || (x > SC1200_VIDEO_REQUEST_MASK) ||
- (y < 0) || (y > SC1200_VIDEO_REQUEST_MASK))
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_VID32(SC1200_VIDEO_REQUEST, ((unsigned long)x << SC1200_VIDEO_X_REQUEST_POS) |
- ((unsigned long)y << SC1200_VIDEO_Y_REQUEST_POS));
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_source()
- *
- * This routine sets the video source to either memory or Direct VIP.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_source(VideoSourceType source)
-#else
-int gfx_set_video_source(VideoSourceType source)
-#endif
-{
- unsigned long display_mode;
- display_mode = READ_VID32(SC1200_VIDEO_DISPLAY_MODE);
-
- /* SET SC1200 VIDEO SOURCE */
- switch (source)
- {
- case VIDEO_SOURCE_MEMORY:
- WRITE_VID32(SC1200_VIDEO_DISPLAY_MODE, (display_mode & ~SC1200_VIDEO_SOURCE_MASK) | SC1200_VIDEO_SOURCE_GX1);
- break;
- case VIDEO_SOURCE_DVIP:
- WRITE_VID32(SC1200_VIDEO_DISPLAY_MODE, (display_mode & ~SC1200_VIDEO_SOURCE_MASK) | SC1200_VIDEO_SOURCE_DVIP);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vbi_source()
- *
- * This routine sets the vbi source to either memory or Direct VIP.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_vbi_source(VbiSourceType source)
-#else
-int gfx_set_vbi_source(VbiSourceType source)
-#endif
-{
- unsigned long display_mode;
- display_mode = READ_VID32(SC1200_VIDEO_DISPLAY_MODE);
-
- /* SET SC1200 VBI SOURCE */
- switch (source)
- {
- case VBI_SOURCE_MEMORY:
- WRITE_VID32(SC1200_VIDEO_DISPLAY_MODE, (display_mode & ~SC1200_VBI_SOURCE_MASK) | SC1200_VBI_SOURCE_GX1);
- break;
- case VBI_SOURCE_DVIP:
- WRITE_VID32(SC1200_VIDEO_DISPLAY_MODE, (display_mode & ~SC1200_VBI_SOURCE_MASK) | SC1200_VBI_SOURCE_DVIP);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vbi_lines()
- *
- * This routine sets the VBI lines to pass to the TV encoder.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_vbi_lines(unsigned long even, unsigned long odd)
-#else
-int gfx_set_vbi_lines(unsigned long even, unsigned long odd)
-#endif
-{
- /* SET SC1200 VBI LINES */
- WRITE_VID32(SC1200_VIDEO_EVEN_VBI_LINE_ENABLE, even & SC1200_VIDEO_VBI_LINE_ENABLE_MASK);
- WRITE_VID32(SC1200_VIDEO_ODD_VBI_LINE_ENABLE, odd & SC1200_VIDEO_VBI_LINE_ENABLE_MASK);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vbi_total()
- *
- * This routine sets the total number of VBI bytes for each field.
- * The total is needed when both VBI and active video are received from memory.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_vbi_total(unsigned long even, unsigned long odd)
-#else
-int gfx_set_vbi_total(unsigned long even, unsigned long odd)
-#endif
-{
- /* SET SC1200 VBI TOTAL */
- WRITE_VID32(SC1200_VIDEO_EVEN_VBI_TOTAL_COUNT, even & SC1200_VIDEO_VBI_TOTAL_COUNT_MASK);
- WRITE_VID32(SC1200_VIDEO_ODD_VBI_TOTAL_COUNT, odd & SC1200_VIDEO_VBI_TOTAL_COUNT_MASK);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_interlaced()
- *
- * This routine configures the video processor video overlay mode to be
- * interlaced YUV.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_interlaced(int enable)
-#else
-int gfx_set_video_interlaced(int enable)
-#endif
-{
- unsigned long control;
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- /* SET INTERLACED VIDEO */
- if (enable)
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control | SC1200_VIDEO_IS_INTERLACED);
- else
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control & ~SC1200_VIDEO_IS_INTERLACED);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_color_space_YUV()
- *
- * This routine configures the video processor to process graphics and video
- * in either YUV or RGB color space. The mode should be set to tune image
- * quality.
- * Setting "enable" to TRUE improves image quality on TV,
- * but in this mode colors on CRT will not be correct.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_color_space_YUV(int enable)
-#else
-int gfx_set_color_space_YUV(int enable)
-#endif
-{
- unsigned long control;
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
-
- /* SET SC1200 VIDEO COLOR SPACE TO YUV OR RGB */
-
- if (enable)
- {
- /* ENABLE YUV BLENDING */
- /* YUV blending cannot be enabled in RGB video formats */
-
- control |= SC1200_CSC_GFX_RGB_TO_YUV; /* Convert graphics to YUV */
- control &= ~SC1200_CSC_VIDEO_YUV_TO_RGB; /* Leave video in YUV */
-
- if (control & SC1200_VIDEO_INPUT_IS_RGB)
- return(GFX_STATUS_UNSUPPORTED); /* Can't convert video from RGB to YUV */
- }
- else
- {
- /* RGB BLENDING */
-
- control &= ~SC1200_CSC_GFX_RGB_TO_YUV; /* Leave graphics in RGB */
- if (control & SC1200_VIDEO_INPUT_IS_RGB)
- control &= ~SC1200_CSC_VIDEO_YUV_TO_RGB; /* Leave video in RGB */
- else
- control |= SC1200_CSC_VIDEO_YUV_TO_RGB; /* Convert video to RGB */
- }
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_vertical_scaler_offset()
- *
- * This routine sets the value by which the odd frame is shifted with respect
- * to the even frame. This is useful for de-interlacing in Bob method, by
- * setting the shift value to be one line.
- * If offset is 0, no shifting occurs.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_vertical_scaler_offset(char offset)
-#else
-int gfx_set_vertical_scaler_offset(char offset)
-#endif
-{
- unsigned long control;
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- if (offset == 1) {
- control &= ~SC1200_VERTICAL_SCALER_SHIFT_MASK; /* Clear shifting value */
- control |= SC1200_VERTICAL_SCALER_SHIFT_INIT; /* Set shifting value */
- control |= SC1200_VERTICAL_SCALER_SHIFT_EN; /* Enable odd frame shifting */
- } else if (offset == 0) {
- control &= ~SC1200_VERTICAL_SCALER_SHIFT_EN; /* No shifting occurs */
- control &= ~SC1200_VERTICAL_SCALER_SHIFT_MASK; /* Clear shifting value */
- }
- else
- return(GFX_STATUS_BAD_PARAMETER); /* TODO: how to program other values ? */
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_top_line_in_odd()
- *
- * This routine sets the field in which the top line of input video resides.
- * If enable is "0", this is the even field (default). [not to be confused
- * with the odd field being the top field on TV].
- * If enable is "1", this is the odd field.
- * Use enable "1" for input devices whose field indication is reversed from
- * normal, i.e. an indication of "odd" field is given for even field data,
- * and vice versa.
- * This setting affects the video processor only when it is in either interlaced
- * or Bob (scaler offset active) modes.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_top_line_in_odd(int enable)
-#else
-int gfx_set_top_line_in_odd(int enable)
-#endif
-{
- unsigned long control;
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- if (enable)
- control |= SC1200_TOP_LINE_IN_ODD; /* Set shifting value */
- else
- control &= ~SC1200_TOP_LINE_IN_ODD; /* No shifting occurs */
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, control);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_genlock_delay()
- *
- * This routine sets the delay between VIP VSYNC and display controller VSYNC.
- * The delay is in 27 MHz clocks.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_genlock_delay(unsigned long delay)
-#else
-int gfx_set_genlock_delay(unsigned long delay)
-#endif
-{
- /* SET SC1200 GENLOCK DELAY */
- WRITE_VID32(SC1200_GENLOCK_DELAY, delay & SC1200_GENLOCK_DELAY_MASK);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_genlock_enable()
- *
- * This routine sets and configures the genlock according to the flags parameter.
- * Flags value of 0 disables genlock and resets its configuration.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_genlock_enable(int flags)
-#else
-int gfx_set_genlock_enable(int flags)
-#endif
-{
- unsigned long genlock = 0;
-
- if (flags)
- {
- /* SET SC1200 GENLOCK CONFIGURATION */
- if (flags & GENLOCK_SINGLE) genlock |= SC1200_GENLOCK_SINGLE_ENABLE;
- if (flags & GENLOCK_FIELD_SYNC) genlock |= SC1200_GENLOCK_FIELD_SYNC_ENABLE;
- if (flags & GENLOCK_CONTINUOUS) genlock |= SC1200_GENLOCK_CONTINUOUS_ENABLE;
- if (flags & GENLOCK_SYNCED_EDGE_FALLING) genlock |= SC1200_GENLOCK_GX_VSYNC_FALLING_EDGE;
- if (flags & GENLOCK_SYNCING_EDGE_FALLING) genlock |= SC1200_GENLOCK_VIP_VSYNC_FALLING_EDGE;
- if (flags & GENLOCK_TIMEOUT) genlock |= SC1200_GENLOCK_TIMEOUT_ENABLE;
- if (flags & GENLOCK_TVENC_RESET_EVEN_FIELD) genlock |= SC1200_GENLOCK_TVENC_RESET_EVEN_FIELD;
- if (flags & GENLOCK_TVENC_RESET_BEFORE_DELAY) genlock |= SC1200_GENLOCK_TVENC_RESET_BEFORE_DELAY;
- if (flags & GENLOCK_TVENC_RESET) genlock |= SC1200_GENLOCK_TVENC_RESET_ENABLE;
- if (flags & GENLOCK_SYNC_TO_TVENC) genlock |= SC1200_GENLOCK_SYNC_TO_TVENC;
- }
- WRITE_VID32(SC1200_GENLOCK, genlock);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_cursor()
- *
- * This routine configures the video hardware cursor.
- * If the "mask"ed bits in the graphics pixel match "key", then either "color1"
- * or "color2" will be used for this pixel, according to the value of bit
- * number "select_color2" of the graphics pixel.
- *
- * key - 24 bit RGB value
- * mask - 24 bit mask
- * color1, color2 - RGB or YUV, depending on the current color space conversion
- * select_color2 - value between 0 to 23
- *
- * To disable match, a "mask" and "key" value of 0xffffff should be set,
- * because the graphics pixels incoming to the video processor have maximum 16
- * bits set (0xF8FCF8).
- *
- * This feature is useful for disabling alpha blending of the cursor.
- * Otherwise cursor image would be blurred (or completely invisible if video
- * alpha is maximum value).
- * Note: the cursor pixel replacements take place both inside and outside the
- * video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_video_cursor(unsigned long key, unsigned long mask, unsigned short select_color2,
- unsigned long color1, unsigned long color2)
-#else
-int gfx_set_video_cursor(unsigned long key, unsigned long mask, unsigned short select_color2,
- unsigned long color1, unsigned long color2)
-#endif
-{
- if (select_color2 > SC1200_CURSOR_COLOR_BITS) return GFX_STATUS_BAD_PARAMETER;
- key = (key & SC1200_COLOR_MASK) | ((unsigned long)select_color2 << SC1200_CURSOR_COLOR_KEY_OFFSET_POS);
- WRITE_VID32(SC1200_CURSOR_COLOR_KEY, key);
- WRITE_VID32(SC1200_CURSOR_COLOR_MASK, mask);
- WRITE_VID32(SC1200_CURSOR_COLOR_1, color1);
- WRITE_VID32(SC1200_CURSOR_COLOR_2, color2);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_enable
- *
- * This routine enables or disables the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_alpha_enable(int enable)
-#else
-int gfx_set_alpha_enable(int enable)
-#endif
-{
- unsigned long address = 0, value = 0;
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = SC1200_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 4);
- value = READ_VID32(address);
- if (enable) value |= (SC1200_ACTRL_WIN_ENABLE | SC1200_ACTRL_LOAD_ALPHA);
- else value &= ~(SC1200_ACTRL_WIN_ENABLE);
- WRITE_VID32(address, value);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_window
- *
- * This routine sets the size of the currently selected alpha region.
- * Note: "x" and "y" are signed to enable using negative values needed for
- * implementing workarounds of hardware issues.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_alpha_window(short x, short y,
- unsigned short width, unsigned short height)
-#else
-int gfx_set_alpha_window(short x, short y,
- unsigned short width, unsigned short height)
-#endif
-{
- unsigned long address = 0;
-
- /* CHECK FOR CLIPPING */
-
- if ((x + width) > gfx_get_hactive()) width = gfx_get_hactive() - x;
- if ((y + height) > gfx_get_vactive()) height = gfx_get_vactive() - y;
-
- /* ADJUST POSITIONS */
-
- x += gfx_get_htotal() - gfx_get_hsync_end() - 2;
- y += gfx_get_vtotal() - gfx_get_vsync_end() + 1;
-
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = SC1200_ALPHA_XPOS_1 + ((unsigned long)gfx_alpha_select << 4);
-
- /* End positions in register are non-inclusive (one more than the actual end) */
-
- WRITE_VID32(address, (unsigned long) x |
- ((unsigned long) (x + width) << 16));
- WRITE_VID32(address + 4l, (unsigned long) y |
- ((unsigned long) (y + height) << 16));
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_value
- *
- * This routine sets the alpha value for the currently selected alpha
- * region. It also specifies an increment/decrement value for fading.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_alpha_value(unsigned char alpha, char delta)
-#else
-int gfx_set_alpha_value(unsigned char alpha, char delta)
-#endif
-{
- unsigned long address = 0, value = 0;
- unsigned char new_value = 0;
- int loop = 1;
-
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = SC1200_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 4);
- value = READ_VID32(address);
- value &= SC1200_ACTRL_WIN_ENABLE; /* keep only enable bit */
- value |= (unsigned long) alpha;
- value |= (((unsigned long) delta) & 0xff) << 8;
- value |= SC1200_ACTRL_LOAD_ALPHA;
- WRITE_VID32(address, value);
-
- /* WORKAROUND FOR ISSUE #1187 */
- /* Need to verify that the alpha operation succeeded */
-
- while (1)
- {
- /* WAIT FOR VERTICAL BLANK TO END */
- if (gfx_test_timing_active())
- {
- if (gfx_test_vertical_active())
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- }
- new_value = (unsigned char)((READ_VID32(SC1200_ALPHA_WATCH) >> (gfx_alpha_select << 3)) & 0xff);
- if (new_value == alpha)
- return GFX_STATUS_OK;
- if (++loop > 10)
- return GFX_STATUS_ERROR;
- WRITE_VID32(address, value);
- }
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_priority
- *
- * This routine sets the priority of the currently selected alpha region.
- * A higher value indicates a higher priority.
- * Note: Priority of enabled alpha windows must be different.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_alpha_priority(int priority)
-#else
-int gfx_set_alpha_priority(int priority)
-#endif
-{
- unsigned long pos = 0, value = 0;
- if (priority > 3) return(GFX_STATUS_BAD_PARAMETER);
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- value = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- pos = 16 + (gfx_alpha_select << 1);
- value &= ~(0x03l << pos);
- value |= (unsigned long)priority << pos;
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, value);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_color
- *
- * This routine sets the color to be displayed inside the currently selected
- * alpha window when there is a color key match (when the alpha color
- * mechanism is enabled).
- * "color" is a 24 bit RGB value (for RGB blending) or YUV value (for YUV blending).
- * In Interlaced YUV blending mode, Y/2 value should be used.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_alpha_color(unsigned long color)
-#else
-int gfx_set_alpha_color(unsigned long color)
-#endif
-{
- unsigned long address = 0;
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = SC1200_ALPHA_COLOR_1 + ((unsigned long)gfx_alpha_select << 4);
-
- /* ONLY 24 VALID BITS */
- color &= 0xffffffl;
-
- /* KEEP UPPER BYTE UNCHANGED */
- WRITE_VID32(address, (color | (READ_VID32(address) & ~0xffffffl)));
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_color_enable
- *
- * Enable or disable the color mechanism in the alpha window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_alpha_color_enable(int enable)
-#else
-int gfx_set_alpha_color_enable(int enable)
-#endif
-{
- unsigned long color;
- unsigned long address = 0;
-
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = SC1200_ALPHA_COLOR_1 + ((unsigned long)gfx_alpha_select << 4);
- color = READ_VID32(address);
- if (enable)
- color |= SC1200_ALPHA_COLOR_ENABLE;
- else
- color &= ~SC1200_ALPHA_COLOR_ENABLE;
- WRITE_VID32(address, color);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_no_ck_outside_alpha
- *
- * This function affects where inside the video window color key or chroma
- * key comparison is done:
- * If enable is TRUE, color/chroma key comparison is performed only inside
- * the enabled alpha windows. Outside the (enabled) alpha windows, only video
- * is displayed if color key is used, and only graphics is displayed if chroma
- * key is used.
- * If enable is FALSE, color/chroma key comparison is performed in all the
- * video window area.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_no_ck_outside_alpha(int enable)
-#else
-int gfx_set_no_ck_outside_alpha(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- if (enable)
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, value | SC1200_NO_CK_OUTSIDE_ALPHA);
- else
- WRITE_VID32(SC1200_VID_ALPHA_CONTROL, value & ~SC1200_NO_CK_OUTSIDE_ALPHA);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_macrovision_enable
- *
- * This routine enables or disables macrovision on the tv encoder output.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_set_macrovision_enable(int enable)
-#else
-int gfx_set_macrovision_enable(int enable)
-#endif
-{
- if (enable)
- WRITE_VID32(SC1200_TVENC_MV_CONTROL, SC1200_TVENC_MV_ENABLE);
- else
- WRITE_VID32(SC1200_TVENC_MV_CONTROL, 0);
- return(GFX_STATUS_OK);
-}
-
-#define SC1200_VIDEO_PCI_44 0x80009444
-
-/*---------------------------------------------------------------------------
- * gfx_disable_softvga
- *
- * Disables SoftVga. This function is only valid with VSA2, Returns 1 if
- * SoftVga can be disabled; 0 if not.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_disable_softvga(void)
-#else
-int gfx_disable_softvga(void)
-#endif
-{
- unsigned long reg_val;
-
- /* get the current value */
- reg_val = gfx_pci_config_read(SC1200_VIDEO_PCI_44);
- /* setting video PCI register 44 bit 0 to 1 disables SoftVga */
- reg_val |= 0x1;
- gfx_pci_config_write(SC1200_VIDEO_PCI_44, reg_val);
-
- /* see if we set the bit and return the appropriate value */
- reg_val = gfx_pci_config_read(SC1200_VIDEO_PCI_44);
- if((reg_val & 0x1) == 0x1)
- return(1);
- else
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_enable_softvga
- *
- * Enables SoftVga. This function is only valid with VSA2, Returns 1 if
- * SoftVga can be enbled; 0 if not.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_enable_softvga(void)
-#else
-int gfx_enable_softvga(void)
-#endif
-{
- unsigned long reg_val;
-
- /* get the current value */
- reg_val = gfx_pci_config_read(SC1200_VIDEO_PCI_44);
- /* clearing video PCI register 44 bit 0 enables SoftVga */
- gfx_pci_config_write(SC1200_VIDEO_PCI_44, reg_val & 0xfffffffel);
-
- /* see if we cleared the bit and return the appropriate value */
- reg_val = gfx_pci_config_read(SC1200_VIDEO_PCI_44);
- if((reg_val & 0x1) == 0)
- return(1);
- else
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_clock_frequency
- *
- * This routine returns the current clock frequency in 16.16 format.
- * It reads the current register value and finds the match in the table.
- * If no match is found, this routine returns 0.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_clock_frequency(void)
-#else
-unsigned long gfx_get_clock_frequency(void)
-#endif
-{
- int index;
- unsigned long value, mask;
- mask = 0x007FFF0F;
- value = READ_VID32(SC1200_VID_CLOCK_SELECT) & mask;
- for (index = 0; index < NUM_SC1200_FREQUENCIES; index++)
- {
- if ((gfx_sc1200_clock_table[index].clock_select & mask) == value)
- return(gfx_sc1200_clock_table[index].frequency);
- }
- return(0);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsa2_softvga_enable
- *
- * This function returns the enable status of SoftVGA. It is valid
- * only if VSAII is present.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_vsa2_softvga_enable(void)
-#else
-int gfx_get_vsa2_softvga_enable(void)
-#endif
-{
- unsigned long reg_val;
-
- reg_val = gfx_pci_config_read(SC1200_VIDEO_PCI_44);
- if((reg_val & 0x1) == 0)
- return(1);
- else
- return(0);
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_sync_polarities
- *
- * This routine returns the polarities of the sync pulses:
- * Bit 0: Set if negative horizontal polarity.
- * Bit 1: Set if negative vertical polarity.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_sync_polarities(void)
-#else
-int gfx_get_sync_polarities(void)
-#endif
-{
- int polarities = 0;
- if (READ_VID32(SC1200_DISPLAY_CONFIG) & SC1200_DCFG_CRT_HSYNC_POL) polarities |= 1;
- if (READ_VID32(SC1200_DISPLAY_CONFIG) & SC1200_DCFG_CRT_VSYNC_POL) polarities |= 2;
- return(polarities);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_palette_entry
- *
- * This routine returns a single palette entry.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_palette_entry(unsigned long index, unsigned long *palette)
-#else
-int gfx_get_video_palette_entry(unsigned long index, unsigned long *palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* READ A SINGLE ENTRY */
-
- WRITE_VID32 (SC1200_PALETTE_ADDRESS, index);
- *palette = READ_VID32 (SC1200_PALETTE_DATA);
-
- return (GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_enable
- *
- * This routine returns the value "one" if video overlay is currently enabled,
- * otherwise it returns the value "zero".
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_enable(void)
-#else
-int gfx_get_video_enable(void)
-#endif
-{
- if (READ_VID32(SC1200_VIDEO_CONFIG) & SC1200_VCFG_VID_EN) return(1);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_format
- *
- * This routine returns the current video overlay format.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_format(void)
-#else
-int gfx_get_video_format(void)
-#endif
-{
- unsigned long ctrl, vcfg;
-
- ctrl = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- vcfg = READ_VID32(SC1200_VIDEO_CONFIG);
-
- if (ctrl & SC1200_VIDEO_INPUT_IS_RGB)
- {
- switch (vcfg & SC1200_VCFG_VID_INP_FORMAT)
- {
- case SC1200_VCFG_UYVY_FORMAT: return VIDEO_FORMAT_RGB;
- case SC1200_VCFG_Y2YU_FORMAT: return VIDEO_FORMAT_P2M_P2L_P1M_P1L;
- case SC1200_VCFG_YUYV_FORMAT: return VIDEO_FORMAT_P1M_P1L_P2M_P2L;
- case SC1200_VCFG_YVYU_FORMAT: return VIDEO_FORMAT_P1M_P2L_P2M_P1L;
- }
- }
-
- if (vcfg & SC1200_VCFG_4_2_0_MODE)
- {
- switch (vcfg & SC1200_VCFG_VID_INP_FORMAT)
- {
- case SC1200_VCFG_UYVY_FORMAT: return VIDEO_FORMAT_Y0Y1Y2Y3;
- case SC1200_VCFG_Y2YU_FORMAT: return VIDEO_FORMAT_Y3Y2Y1Y0;
- case SC1200_VCFG_YUYV_FORMAT: return VIDEO_FORMAT_Y1Y0Y3Y2;
- case SC1200_VCFG_YVYU_FORMAT: return VIDEO_FORMAT_Y1Y2Y3Y0;
- }
- }
- else
- {
- switch (vcfg & SC1200_VCFG_VID_INP_FORMAT)
- {
- case SC1200_VCFG_UYVY_FORMAT: return VIDEO_FORMAT_UYVY;
- case SC1200_VCFG_Y2YU_FORMAT: return VIDEO_FORMAT_Y2YU;
- case SC1200_VCFG_YUYV_FORMAT: return VIDEO_FORMAT_YUYV;
- case SC1200_VCFG_YVYU_FORMAT: return VIDEO_FORMAT_YVYU;
- }
- }
- return (GFX_STATUS_ERROR);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_src_size
- *
- * This routine returns the size of the source video overlay buffer. The
- * return value is (height << 16) | width.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_src_size(void)
-#else
-unsigned long gfx_get_video_src_size(void)
-#endif
-{
- unsigned long width = 0, height = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE SC1200 VIDEO LINE SIZE */
-
- width = (READ_VID32(SC1200_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(SC1200_VIDEO_CONFIG) & SC1200_VCFG_LINE_SIZE_UPPER)
- width += 512l;
-
- if (width)
- {
- /* DETERMINE HEIGHT BY DIVIDING TOTAL SIZE BY WIDTH */
- /* Get total size from display controller - abtracted. */
-
- height = gfx_get_display_video_size() / (width << 1);
- }
- return((height << 16) | width);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_line_size
- *
- * This routine returns the line size of the source video overlay buffer, in
- * pixels.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_line_size(void)
-#else
-unsigned long gfx_get_video_line_size(void)
-#endif
-{
- unsigned long width = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE SC1200 VIDEO LINE SIZE */
-
- width = (READ_VID32(SC1200_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(SC1200_VIDEO_CONFIG) & SC1200_VCFG_LINE_SIZE_UPPER)
- width += 512l;
- return(width);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_xclip
- *
- * This routine returns the number of bytes clipped on the left side of a
- * video overlay line (skipped at beginning).
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_xclip(void)
-#else
-unsigned long gfx_get_video_xclip(void)
-#endif
-{
- unsigned long clip = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE SC1200 VIDEO LINE SIZE */
-
- clip = (READ_VID32(SC1200_VIDEO_CONFIG) >> 14) & 0x000007FC;
- return(clip);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_offset
- *
- * This routine returns the current offset for the video overlay buffer.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_offset(void)
-#else
-unsigned long gfx_get_video_offset(void)
-#endif
-{
- return(gfx_get_display_video_offset());
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_upscale
- *
- * This routine returns the scale factor for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_upscale(void)
-#else
-unsigned long gfx_get_video_upscale(void)
-#endif
-{
- return(READ_VID32(SC1200_VIDEO_UPSCALE));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_scale
- *
- * This routine returns the scale factor for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_scale(void)
-#else
-unsigned long gfx_get_video_scale(void)
-#endif
-{
- return gfx_get_video_upscale();
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_config
- *
- * This routine returns the current type and value of video downscaling.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_downscale_config(unsigned short *type, unsigned short *m)
-#else
-int gfx_get_video_downscale_config(unsigned short *type, unsigned short *m)
-#endif
-{
- unsigned long downscale;
-
- downscale = READ_VID32(SC1200_VIDEO_DOWNSCALER_CONTROL);
- *m = (unsigned short)((downscale & SC1200_VIDEO_DOWNSCALE_FACTOR_MASK) >> SC1200_VIDEO_DOWNSCALE_FACTOR_POS) + 1;
-
- switch(downscale & SC1200_VIDEO_DOWNSCALE_TYPE_MASK)
- {
- case SC1200_VIDEO_DOWNSCALE_TYPE_A:
- *type = VIDEO_DOWNSCALE_KEEP_1_OF;
- break;
- case SC1200_VIDEO_DOWNSCALE_TYPE_B:
- *type = VIDEO_DOWNSCALE_DROP_1_OF;
- break;
- default:
- return GFX_STATUS_ERROR;
- break;
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_coefficients
- *
- * This routine returns the current video downscaling coefficients.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_video_downscale_coefficients(unsigned short *coef1, unsigned short *coef2,
- unsigned short *coef3, unsigned short *coef4)
-#else
-void gfx_get_video_downscale_coefficients(unsigned short *coef1, unsigned short *coef2,
- unsigned short *coef3, unsigned short *coef4)
-#endif
-{
- unsigned long coef;
-
- coef = READ_VID32(SC1200_VIDEO_DOWNSCALER_COEFFICIENTS);
- *coef1 = (unsigned short)((coef >> SC1200_VIDEO_DOWNSCALER_COEF1_POS) & SC1200_VIDEO_DOWNSCALER_COEF_MASK);
- *coef2 = (unsigned short)((coef >> SC1200_VIDEO_DOWNSCALER_COEF2_POS) & SC1200_VIDEO_DOWNSCALER_COEF_MASK);
- *coef3 = (unsigned short)((coef >> SC1200_VIDEO_DOWNSCALER_COEF3_POS) & SC1200_VIDEO_DOWNSCALER_COEF_MASK);
- *coef4 = (unsigned short)((coef >> SC1200_VIDEO_DOWNSCALER_COEF4_POS) & SC1200_VIDEO_DOWNSCALER_COEF_MASK);
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_enable
- *
- * This routine returns 1 if video downscaling is currently enabled,
- * or 0 if it is currently disabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_video_downscale_enable(int *enable)
-#else
-void gfx_get_video_downscale_enable(int *enable)
-#endif
-{
- if (READ_VID32(SC1200_VIDEO_DOWNSCALER_CONTROL) & SC1200_VIDEO_DOWNSCALE_ENABLE)
- *enable = 1;
- else
- *enable = 0;
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_dst_size
- *
- * This routine returns the size of the displayed video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_dst_size(void)
-#else
-unsigned long gfx_get_video_dst_size(void)
-#endif
-{
- unsigned long xsize, ysize;
-
- xsize = READ_VID32(SC1200_VIDEO_X_POS);
- xsize = ((xsize >> 16) & 0x7FF) - (xsize & 0x7FF);
- ysize = READ_VID32(SC1200_VIDEO_Y_POS);
- ysize = ((ysize >> 16) & 0x7FF) - (ysize & 0x7FF);
- return((ysize << 16) | xsize);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_position
- *
- * This routine returns the position of the video overlay window. The
- * return value is (ypos << 16) | xpos.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_position(void)
-#else
-unsigned long gfx_get_video_position(void)
-#endif
-{
- unsigned long hadjust, vadjust;
- unsigned long xpos, ypos;
-
- /* READ HARDWARE POSITION */
-
- xpos = READ_VID32(SC1200_VIDEO_X_POS) & 0x000007FF;
- ypos = READ_VID32(SC1200_VIDEO_Y_POS) & 0x000007FF;
-
- /* GET ADJUSTMENT VALUES */
- /* Use routines to abstract version of display controller. */
-
- hadjust = (unsigned long)gfx_get_htotal() - (unsigned long)gfx_get_hsync_end() - 14l;
- vadjust = (unsigned long)gfx_get_vtotal() - (unsigned long)gfx_get_vsync_end() + 1l;
- xpos -= hadjust;
- ypos -= vadjust;
- return((ypos << 16) | (xpos & 0x0000FFFF));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key
- *
- * This routine returns the current video color key value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_color_key(void)
-#else
-unsigned long gfx_get_video_color_key(void)
-#endif
-{
- return(READ_VID32(SC1200_VIDEO_COLOR_KEY));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_mask
- *
- * This routine returns the current video color mask value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_video_color_key_mask(void)
-#else
-unsigned long gfx_get_video_color_key_mask(void)
-#endif
-{
- return(READ_VID32(SC1200_VIDEO_COLOR_MASK));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_src
- *
- * This routine returns 0 for video data compare, 1 for graphics data.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_color_key_src(void)
-#else
-int gfx_get_video_color_key_src(void)
-#endif
-{
- if (READ_VID32(SC1200_DISPLAY_CONFIG) & SC1200_DCFG_VG_CK) return(0);
- return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_filter
- *
- * This routine returns if the filters are currently enabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_filter(void)
-#else
-int gfx_get_video_filter(void)
-#endif
-{
- int retval = 0;
- if (READ_VID32(SC1200_VIDEO_CONFIG) & SC1200_VCFG_X_FILTER_EN)
- retval |= 1;
- if (READ_VID32(SC1200_VIDEO_CONFIG) & SC1200_VCFG_Y_FILTER_EN)
- retval |= 2;
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_request
- *
- * This routine returns the horizontal (pixel) and vertical (lines) video
- * request values.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_request(short *x, short *y)
-#else
-int gfx_get_video_request(short *x, short *y)
-#endif
-{
- int request = 0;
- request = (int)(READ_VID32(SC1200_VIDEO_REQUEST));
- *x = (request >> SC1200_VIDEO_X_REQUEST_POS) & SC1200_VIDEO_REQUEST_MASK;
- *y = (request >> SC1200_VIDEO_Y_REQUEST_POS) & SC1200_VIDEO_REQUEST_MASK;
-
- *x -= gfx_get_htotal() - gfx_get_hsync_end() - 2;
- *y -= gfx_get_vtotal() - gfx_get_vsync_end() + 1;
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_source
- *
- * This routine returns the current video source.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_source(VideoSourceType *source)
-#else
-int gfx_get_video_source(VideoSourceType *source)
-#endif
-{
- switch(READ_VID32(SC1200_VIDEO_DISPLAY_MODE) & SC1200_VIDEO_SOURCE_MASK)
- {
- case SC1200_VIDEO_SOURCE_GX1:
- *source = VIDEO_SOURCE_MEMORY;
- break;
- case SC1200_VIDEO_SOURCE_DVIP:
- *source = VIDEO_SOURCE_DVIP;
- break;
- default:
- return GFX_STATUS_ERROR;
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vbi_source
- *
- * This routine returns the current vbi source.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_vbi_source(VbiSourceType *source)
-#else
-int gfx_get_vbi_source(VbiSourceType *source)
-#endif
-{
- switch(READ_VID32(SC1200_VIDEO_DISPLAY_MODE) & SC1200_VBI_SOURCE_MASK)
- {
- case SC1200_VBI_SOURCE_GX1:
- *source = VBI_SOURCE_MEMORY;
- break;
- case SC1200_VBI_SOURCE_DVIP:
- *source = VBI_SOURCE_DVIP;
- break;
- default:
- return GFX_STATUS_ERROR;
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vbi_lines
- *
- * This routine returns the VBI lines which are sent to the TV encoder.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_vbi_lines(int odd)
-#else
-unsigned long gfx_get_vbi_lines(int odd)
-#endif
-{
- if (odd) return(READ_VID32(SC1200_VIDEO_ODD_VBI_LINE_ENABLE) & SC1200_VIDEO_VBI_LINE_ENABLE_MASK);
- return(READ_VID32(SC1200_VIDEO_EVEN_VBI_LINE_ENABLE) & SC1200_VIDEO_VBI_LINE_ENABLE_MASK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vbi_total
- *
- * This routine returns the total number of VBI bytes in the field.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_vbi_total(int odd)
-#else
-unsigned long gfx_get_vbi_total(int odd)
-#endif
-{
- if (odd) return(READ_VID32(SC1200_VIDEO_ODD_VBI_TOTAL_COUNT) & SC1200_VIDEO_VBI_TOTAL_COUNT_MASK);
- return(READ_VID32(SC1200_VIDEO_EVEN_VBI_TOTAL_COUNT) & SC1200_VIDEO_VBI_TOTAL_COUNT_MASK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_interlaced()
- *
- * This routine returns "1" if input video is currently in interlaced mode.
- * "0" otherwise.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_interlaced(void)
-#else
-int gfx_get_video_interlaced(void)
-#endif
-{
- if (READ_VID32(SC1200_VID_ALPHA_CONTROL) & SC1200_VIDEO_IS_INTERLACED)
- return(1);
- else
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_color_space_YUV()
- *
- * This routine returns "1" if video processor color space mode is currently
- * YUV. "0" otherwise.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_color_space_YUV(void)
-#else
-int gfx_get_color_space_YUV(void)
-#endif
-{
- unsigned long control;
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
-
- /* IS SC1200 VIDEO COLOR SPACE RGB OR CONVERTED TO RGB */
- if ((control & SC1200_VIDEO_INPUT_IS_RGB) || (control & SC1200_CSC_VIDEO_YUV_TO_RGB))
- return(0);
- else
- return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_vertical_scaler_offset()
- *
- * This routine sets "offset" to the value by which odd frames are shifted,
- * if insert is enabled, and to 0 if no shifting occurs.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_vertical_scaler_offset(char *offset)
-#else
-int gfx_get_vertical_scaler_offset(char *offset)
-#endif
-{
- unsigned long control;
- control = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- if (control & SC1200_VERTICAL_SCALER_SHIFT_EN) {
- if ((control & SC1200_VERTICAL_SCALER_SHIFT_MASK) == SC1200_VERTICAL_SCALER_SHIFT_INIT)
- *offset = 1;
- else
- return GFX_STATUS_ERROR; /* TODO: find the interpretation of other values */
- } else
- *offset = 0;
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_genlock_delay
- *
- * This routine returns the genlock delay in 27 MHz clocks.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_get_genlock_delay(void)
-#else
-unsigned long gfx_get_genlock_delay(void)
-#endif
-{
- return(READ_VID32(SC1200_GENLOCK_DELAY) & SC1200_GENLOCK_DELAY_MASK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_genlock_enable
- *
- * This routine returns "1" if genlock is currently enabled, "0" otherwise.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_genlock_enable(void)
-#else
-int gfx_get_genlock_enable(void)
-#endif
-{
- if (READ_VID32(SC1200_GENLOCK) &
- (SC1200_GENLOCK_SINGLE_ENABLE | SC1200_GENLOCK_CONTINUOUS_ENABLE))
- return(1);
- else
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_cursor()
- *
- * This routine configures the video hardware cursor.
- * If the "mask"ed bits in the graphics pixel match "key", then either "color1"
- * or "color2" will be used for this pixel, according to the value of the bit
- * in offset "select_color2".
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_video_cursor(unsigned long *key, unsigned long *mask, unsigned short *select_color2,
- unsigned long *color1, unsigned short *color2)
-#else
-int gfx_get_video_cursor(unsigned long *key, unsigned long *mask, unsigned short *select_color2,
- unsigned long *color1, unsigned short *color2)
-#endif
-{
- *select_color2 = (unsigned short)(READ_VID32(SC1200_CURSOR_COLOR_KEY) >> SC1200_CURSOR_COLOR_KEY_OFFSET_POS);
- *key = READ_VID32(SC1200_CURSOR_COLOR_KEY) & SC1200_COLOR_MASK;
- *mask = READ_VID32(SC1200_CURSOR_COLOR_MASK) & SC1200_COLOR_MASK;
- *color1 = READ_VID32(SC1200_CURSOR_COLOR_1) & SC1200_COLOR_MASK;
- *color2 = (unsigned short)(READ_VID32(SC1200_CURSOR_COLOR_2) & SC1200_COLOR_MASK);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_crc
- *
- * This routine returns the hardware CRC value, which is used for automated
- * testing. The value is like a checksum, but will change if pixels move
- * locations.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long sc1200_read_crc(void)
-#else
-unsigned long gfx_read_crc(void)
-#endif
-{
- unsigned long crc = 0xFFFFFFFF;
- if (gfx_test_timing_active())
- {
- /* WAIT UNTIL ACTIVE DISPLAY */
-
- while(!gfx_test_vertical_active());
-
- /* RESET CRC DURING ACTIVE DISPLAY */
-
- WRITE_VID32(SC1200_VID_CRC, 0);
- WRITE_VID32(SC1200_VID_CRC, 1);
-
- /* WAIT UNTIL NOT ACTIVE, THEN ACTIVE, NOT ACTIVE, THEN ACTIVE */
-
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- crc = READ_VID32(SC1200_VID_CRC) >> 8;
- }
- return(crc);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_macrovision_enable
- *
- * This routine returns the value "one" if macrovision currently enabled in the
- * TV encoder, otherwise it returns the value "zero".
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int sc1200_get_macrovision_enable(void)
-#else
-int gfx_get_macrovision_enable(void)
-#endif
-{
- if (READ_VID32(SC1200_TVENC_MV_CONTROL) == SC1200_TVENC_MV_ENABLE) return(1);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_enable
- *
- * This routine returns 1 if the selected alpha window is currently
- * enabled, or 0 if it is currently disabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_alpha_enable(int *enable)
-#else
-void gfx_get_alpha_enable(int *enable)
-#endif
-{
- unsigned long value = 0;
- *enable = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(SC1200_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 4));
- if (value & SC1200_ACTRL_WIN_ENABLE) *enable = 1;
- }
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_size
- *
- * This routine returns the size of the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_alpha_size(unsigned short *x, unsigned short *y,
- unsigned short *width, unsigned short *height)
-#else
-void gfx_get_alpha_size(unsigned short *x, unsigned short *y,
- unsigned short *width, unsigned short *height)
-#endif
-{
- unsigned long value = 0;
- *x = 0;
- *y = 0;
- *width = 0;
- *height = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(SC1200_ALPHA_XPOS_1 + ((unsigned long)gfx_alpha_select << 4));
- *x = (unsigned short) (value & 0x000007FF);
- *width = (unsigned short) ((value >> 16) & 0x000007FF) - *x;
- value = READ_VID32(SC1200_ALPHA_YPOS_1 + ((unsigned long)gfx_alpha_select << 4));
- *y = (unsigned short) (value & 0x000007FF);
- *height = (unsigned short) ((value >> 16) & 0x000007FF) - *y;
- }
- *x -= gfx_get_htotal() - gfx_get_hsync_end() - 2;
- *y -= gfx_get_vtotal() - gfx_get_vsync_end() + 1;
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_value
- *
- * This routine returns the alpha value and increment/decrement value of
- * the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_alpha_value(unsigned char *alpha, char *delta)
-#else
-void gfx_get_alpha_value(unsigned char *alpha, char *delta)
-#endif
-{
- unsigned long value = 0;
- *alpha = 0;
- *delta = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(SC1200_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 4));
- *alpha = (unsigned char) (value & 0x00FF);
- *delta = (char) ((value >> 8) & 0x00FF);
- }
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_priority
- *
- * This routine returns the priority of the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_alpha_priority(int *priority)
-#else
-void gfx_get_alpha_priority(int *priority)
-#endif
-{
- unsigned long pos = 0, value = 0;
- *priority = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(SC1200_VID_ALPHA_CONTROL);
- pos = 16 + (gfx_alpha_select << 1);
- *priority = (int) ((value >> pos) & 3);
- }
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_color
- *
- * This routine returns the color register value for the currently selected
- * alpha region. Bit 24 is set if the color register is enabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void sc1200_get_alpha_color(unsigned long *color)
-#else
-void gfx_get_alpha_color(unsigned long *color)
-#endif
-{
- *color = 0;
- if (gfx_alpha_select <= 2)
- {
- *color = READ_VID32(SC1200_ALPHA_COLOR_1 + ((unsigned long)gfx_alpha_select << 4));
- }
- return;
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_5530.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_5530.c
deleted file mode 100644
index ddc559530..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_5530.c
+++ /dev/null
@@ -1,1241 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_5530.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: vid_5530.c $
- *
- * This file contains routines to control the CS5530 video overlay hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*----------------------------------------------------------------------------
- * CS5530 PLL TABLE
- *----------------------------------------------------------------------------
- */
-typedef struct tagCS5530PLLENTRY
-{
- long frequency; /* 16.16 fixed point frequency */
- unsigned long pll_value; /* associated register value */
-} CS5530PLLENTRY;
-
-CS5530PLLENTRY CS5530_PLLtable[] = {
- { 0x00192CCC, 0x31C45801, }, /* 25.1750 */
- { 0x001C526E, 0x20E36802, }, /* 28.3220 */
- { 0x001F8000, 0x33915801, }, /* 31.5000 */
- { 0x00240000, 0x31EC4801, }, /* 36.0000 */
- { 0x00258000, 0x21E22801, }, /* 37.5000 */
- { 0x00280000, 0x33088801, }, /* 40.0000 */
- { 0x002CE666, 0x33E22801, }, /* 44.9000 */
- { 0x00318000, 0x336C4801, }, /* 49.5000 */
- { 0x00320000, 0x23088801, }, /* 50.0000 */
- { 0x00325999, 0x23088801, }, /* 50.3500 */
- { 0x00360000, 0x3708A801, }, /* 54.0000 */
- { 0x00384000, 0x23E36802, }, /* 56.2500 */
- { 0x0038643F, 0x23E36802, }, /* 56.3916 */
- { 0x0038A4DD, 0x23E36802, }, /* 56.6444 */
- { 0x003B0000, 0x37C45801, }, /* 59.0000 */
- { 0x003F0000, 0x23EC4801, }, /* 63.0000 */
- { 0x00410000, 0x37911801, }, /* 65.0000 */
- { 0x00438000, 0x37963803, }, /* 67.5000 */
- { 0x0046CCCC, 0x37058803, }, /* 70.8000 */
- { 0x00480000, 0x3710C805, }, /* 72.0000 */
- { 0x004B0000, 0x37E22801, }, /* 75.0000 */
- { 0x004EC000, 0x27915801, }, /* 78.7500 */
- { 0x00500000, 0x37D8D802, }, /* 80.0000 */
- { 0x0059CCCC, 0x27588802, }, /* 89.8000 */
- { 0x005E8000, 0x27EC4802, }, /* 94.5000 */
- { 0x00630000, 0x27AC6803, }, /* 99.0000 */
- { 0x00640000, 0x27088801, }, /* 100.0000 */
- { 0x006C0000, 0x2710C805, }, /* 108.0000 */
- { 0x00708000, 0x27E36802, }, /* 112.5000 */
- { 0x00820000, 0x27C58803, }, /* 130.0000 */
- { 0x00870000, 0x27316803, }, /* 135.0000 */
- { 0x009D8000, 0x2F915801, }, /* 157.5000 */
- { 0x00A20000, 0x2F08A801, }, /* 162.0000 */
- { 0x00AF0000, 0x2FB11802, }, /* 175.0000 */
- { 0x00BD0000, 0x2FEC4802, }, /* 189.0000 */
- { 0x00CA0000, 0x2F963803, }, /* 202.0000 */
- { 0x00E80000, 0x2FB1B802, }, /* 232.0000 */
-};
-
-#define NUM_CS5530_FREQUENCIES sizeof(CS5530_PLLtable)/sizeof(CS5530PLLENTRY)
-
-/*---------------------------------------------------------------------------
- * gfx_set_crt_enable
- *
- * This routine enables or disables the CRT output from the video processor.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_crt_enable(int enable)
-#else
-int gfx_set_crt_enable(int enable)
-#endif
-{
- unsigned long config;
- config = READ_VID32(CS5530_DISPLAY_CONFIG);
-
- switch (enable)
- {
- case CRT_DISABLE: /* Disable everything */
-
- WRITE_VID32(CS5530_DISPLAY_CONFIG, config & ~(CS5530_DCFG_DIS_EN | CS5530_DCFG_HSYNC_EN
- | CS5530_DCFG_VSYNC_EN | CS5530_DCFG_DAC_BL_EN
- | CS5530_DCFG_DAC_PWDNX));
- break;
-
- case CRT_ENABLE: /* Enable CRT display, including display logic */
-
- WRITE_VID32(CS5530_DISPLAY_CONFIG, config | CS5530_DCFG_DIS_EN | CS5530_DCFG_HSYNC_EN
- | CS5530_DCFG_VSYNC_EN | CS5530_DCFG_DAC_BL_EN
- | CS5530_DCFG_DAC_PWDNX);
- break;
-
- case CRT_STANDBY: /* HSync:Off VSync:On */
-
- WRITE_VID32(CS5530_DISPLAY_CONFIG, (config & ~(CS5530_DCFG_DIS_EN | CS5530_DCFG_HSYNC_EN
- | CS5530_DCFG_DAC_BL_EN | CS5530_DCFG_DAC_PWDNX))
- | CS5530_DCFG_VSYNC_EN );
- break;
-
- case CRT_SUSPEND: /* HSync:On VSync:Off */
-
- WRITE_VID32(CS5530_DISPLAY_CONFIG, (config & ~(CS5530_DCFG_DIS_EN | CS5530_DCFG_VSYNC_EN
- | CS5530_DCFG_DAC_BL_EN | CS5530_DCFG_DAC_PWDNX))
- | CS5530_DCFG_HSYNC_EN );
- break;
-
- default:
- return (GFX_STATUS_BAD_PARAMETER);
- }
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_reset_video (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine is used to disable all components of video overlay before
- * performing a mode switch.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void cs5530_reset_video(void)
-#else
-void gfx_reset_video(void)
-#endif
-{
- gfx_set_video_enable(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_display_control (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine configures the display output.
- *
- * "sync_polarities" is used to set the polarities of the sync pulses according
- * to the following mask:
- *
- * Bit 0: If set to 1, negative horizontal polarity is programmed,
- * otherwise positive horizontal polarity is programmed.
- * Bit 1: If set to 1, negative vertical polarity is programmed,
- * otherwise positive vertical polarity is programmed.
- *
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_display_control(int sync_polarities)
-#else
-int gfx_set_display_control(int sync_polarities)
-#endif
-{
- unsigned long dcfg;
-
- /* ENABLE DISPLAY OUTPUT FROM CX5530 */
-
- dcfg = READ_VID32(CS5530_DISPLAY_CONFIG);
-
- /* CLEAR RELEVANT FIELDS */
-
- dcfg &= ~(CS5530_DCFG_CRT_SYNC_SKW_MASK | CS5530_DCFG_PWR_SEQ_DLY_MASK |
- CS5530_DCFG_CRT_HSYNC_POL | CS5530_DCFG_CRT_VSYNC_POL |
- CS5530_DCFG_FP_PWR_EN | CS5530_DCFG_FP_DATA_EN);
-
- /* INITIALIZATION */
-
- dcfg |= (CS5530_DCFG_CRT_SYNC_SKW_INIT |
- CS5530_DCFG_PWR_SEQ_DLY_INIT |
- CS5530_DCFG_GV_PAL_BYP);
-
- if (PanelEnable)
- {
- dcfg |= CS5530_DCFG_FP_PWR_EN;
- dcfg |= CS5530_DCFG_FP_DATA_EN;
- }
-
- /* SET APPROPRIATE SYNC POLARITIES */
-
- if (sync_polarities & 1)
- dcfg |= CS5530_DCFG_CRT_HSYNC_POL;
- if (sync_polarities & 2)
- dcfg |= CS5530_DCFG_CRT_VSYNC_POL;
-
- WRITE_VID32(CS5530_DISPLAY_CONFIG, dcfg);
- return (0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_clock_frequency
- *
- * This routine sets the clock frequency, specified as a 16.16 fixed point
- * value (0x00318000 = 49.5 MHz). It will set the closest frequency found
- * in the lookup table.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void cs5530_set_clock_frequency(unsigned long frequency)
-#else
-void gfx_set_clock_frequency(unsigned long frequency)
-#endif
-{
- int index;
- unsigned long value;
- long min, diff;
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- value = CS5530_PLLtable[0].pll_value;
- min = (long) CS5530_PLLtable[0].frequency - frequency;
- if (min < 0L) min = -min;
- for (index = 1; index < NUM_CS5530_FREQUENCIES; index++)
- {
- diff = (long) CS5530_PLLtable[index].frequency - frequency;
- if (diff < 0L) diff = -diff;
- if (diff < min)
- {
- min = diff;
- value = CS5530_PLLtable[index].pll_value;
- }
- }
-
- /* SET THE DOT CLOCK REGISTER */
-
- WRITE_VID32(CS5530_DOT_CLK_CONFIG, value);
- WRITE_VID32(CS5530_DOT_CLK_CONFIG, value | 0x80000100); /* set reset/bypass */
- gfx_delay_milliseconds(1); /* wait for PLL to settle */
- WRITE_VID32(CS5530_DOT_CLK_CONFIG, value & 0x7FFFFFFF); /* clear reset */
- WRITE_VID32(CS5530_DOT_CLK_CONFIG, value & 0x7FFFFEFF); /* clear bypass */
- return;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_enable
- *
- * This routine enables or disables the video overlay functionality.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_enable(int enable)
-#else
-int gfx_set_video_enable(int enable)
-#endif
-{
- unsigned long vcfg;
-
- /* WAIT FOR VERTICAL BLANK TO START */
- /* Otherwise a glitch can be observed. */
-
- if (gfx_test_timing_active())
- {
- if (!gfx_test_vertical_active())
- {
- while(!gfx_test_vertical_active());
- }
- while(gfx_test_vertical_active());
- }
- vcfg = READ_VID32(CS5530_VIDEO_CONFIG);
- if (enable)
- {
- /* ENABLE VIDEO OVERLAY FROM DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_enable(1);
-
- /* SET CS5530 BUS CONTROL PARAMETERS */
- /* Currently always high speed, 8-bit interface. */
-
- vcfg |= CS5530_VCFG_HIGH_SPD_INT;
- vcfg &= ~(CS5530_VCFG_EARLY_VID_RDY | CS5530_VCFG_16_BIT_EN);
-
- /* ENABLE CS5530 VIDEO OVERLAY */
-
- vcfg |= CS5530_VCFG_VID_EN;
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
- }
- else
- {
- /* DISABLE CS5530 VIDEO OVERLAY */
-
- vcfg &= ~CS5530_VCFG_VID_EN;
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
-
- /* DISABLE VIDEO OVERLAY FROM DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_enable(0);
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_format
- *
- * Currently only sets 4:2:0 format, Y1 V Y0 U.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_format(unsigned long format)
-#else
-int gfx_set_video_format(unsigned long format)
-#endif
-{
- unsigned long vcfg = 0;
-
- /* SET THE CS5530 VIDEO INPUT FORMAT */
-
- vcfg = READ_VID32(CS5530_VIDEO_CONFIG);
- vcfg &= ~(CS5530_VCFG_VID_INP_FORMAT | CS5530_VCFG_4_2_0_MODE);
- vcfg &= ~(CS5530_VCFG_CSC_BYPASS);
- vcfg &= ~(CS5530_VCFG_GV_SEL);
-
- if (format < 4)
- vcfg |= (format << 2);
- else
- {
- if (format == VIDEO_FORMAT_Y0Y1Y2Y3)
- {
- vcfg |= CS5530_VCFG_4_2_0_MODE;
- vcfg |= 1 << 2;
- }
- if (format == VIDEO_FORMAT_RGB)
- {
- vcfg |= CS5530_VCFG_CSC_BYPASS;
- vcfg |= CS5530_VCFG_GV_SEL;
- }
- }
-
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_size
- *
- * This routine specifies the size of the source data. It is used only
- * to determine how much data to transfer per frame, and is not used to
- * calculate the scaling value (that is handled by a separate routine).
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_size(unsigned short width, unsigned short height)
-#else
-int gfx_set_video_size(unsigned short width, unsigned short height)
-#endif
-{
- unsigned long size, vcfg;
-
- /* SET THE CS5530 VIDEO LINE SIZE */
-
- vcfg = READ_VID32(CS5530_VIDEO_CONFIG);
- vcfg &= ~(CS5530_VCFG_LINE_SIZE_LOWER_MASK | CS5530_VCFG_LINE_SIZE_UPPER);
- size = (width >> 1);
- vcfg |= (size & 0x00FF) << 8;
- if (size & 0x0100) vcfg |= CS5530_VCFG_LINE_SIZE_UPPER;
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
-
- /* SET TOTAL VIDEO BUFFER SIZE IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_size(width, height);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_offset
- *
- * This routine sets the starting offset for the video buffer when only
- * one offset needs to be specified.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_offset(unsigned long offset)
-#else
-int gfx_set_video_offset(unsigned long offset)
-#endif
-{
- /* SAVE VALUE FOR FUTURE CLIPPING OF THE TOP OF THE VIDEO WINDOW */
-
- gfx_vid_offset = offset;
-
- /* SET VIDEO BUFFER OFFSET IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_offset(offset);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_scale
- *
- * This routine sets the scale factor for the video overlay window. The
- * size of the source and destination regions are specified in pixels.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#else
-int gfx_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#endif
-{
- unsigned long xscale, yscale;
-
- /* SAVE PARAMETERS */
- /* These are needed for clipping the video window later. */
-
- gfx_vid_srcw = srcw;
- gfx_vid_srch = srch;
- gfx_vid_dstw = dstw;
- gfx_vid_dsth = dsth;
-
- /* CALCULATE CS5530 SCALE FACTORS */
- /* No downscaling in CS5530 so force to 1x if attempted. */
-
- if (dstw <= srcw) xscale = 0x1FFF;
- else if (dstw == 1 || srcw == 1) return GFX_STATUS_BAD_PARAMETER;
- else xscale = (0x2000l * (srcw - 1l)) / (dstw - 1l);
- if (dsth <= srch) yscale = 0x1FFF;
- else if (dsth == 1 || srch == 1) return GFX_STATUS_BAD_PARAMETER;
- else yscale = (0x2000l * (srch - 1l)) / (dsth - 1l);
- WRITE_VID32(CS5530_VIDEO_SCALE, (yscale << 16) | xscale);
-
- /* CALL ROUTINE TO UPDATE WINDOW POSITION */
- /* This is required because the scale values effect the number of */
- /* source data pixels that need to be clipped, as well as the */
- /* amount of data that needs to be transferred. */
-
- gfx_set_video_window(gfx_vid_xpos, gfx_vid_ypos, gfx_vid_width,
- gfx_vid_height);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_window
- *
- * This routine sets the position and size of the video overlay window. The
- * position is specified in screen relative coordinates, and may be negative.
- * The size of destination region is specified in pixels. The line size
- * indicates the number of bytes of source data per scanline.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_window(short x, short y, unsigned short w,
- unsigned short h)
-#else
-int gfx_set_video_window(short x, short y, unsigned short w,
- unsigned short h)
-#endif
-{
- unsigned long vcfg = 0;
- unsigned long hadjust, vadjust;
- unsigned long initread;
- unsigned long xstart, ystart, xend, yend;
- unsigned long offset, line_size;
-
- /* SAVE PARAMETERS */
- /* These are needed to call this routine if the scale value changes. */
-
- gfx_vid_xpos = x;
- gfx_vid_ypos = y;
- gfx_vid_width = w;
- gfx_vid_height = h;
-
- /* GET ADJUSTMENT VALUES */
- /* Use routines to abstract version of display controller. */
-
- hadjust = gfx_get_htotal() - gfx_get_hsync_end() - 13l;
- vadjust = gfx_get_vtotal() - gfx_get_vsync_end() + 1l;
-
- if (x > 0)
- {
- /* NO CLIPPING ON LEFT */
-
- xstart = x + hadjust;
- initread = 0;
- }
- else
- {
- /* CLIPPING ON LEFT */
- /* Adjust initial read for scale, checking for divide by zero */
-
- xstart = hadjust;
- if (gfx_vid_dstw)
- initread = ((-x) * gfx_vid_srcw) / gfx_vid_dstw;
- else initread = 0;
- }
-
- /* CLIPPING ON RIGHT */
-
- xend = x + w;
- if (xend > gfx_get_hactive()) xend = gfx_get_hactive();
- xend += hadjust;
-
- /* CLIPPING ON TOP */
-
- offset = gfx_vid_offset;
- if (y >= 0)
- {
- ystart = y + vadjust;
- }
- else
- {
- ystart = vadjust;
- line_size = (READ_VID32(CS5530_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(CS5530_VIDEO_CONFIG) & CS5530_VCFG_LINE_SIZE_UPPER)
- line_size += 512l;
- if (gfx_vid_dsth)
- offset = gfx_vid_offset + (line_size << 1) *
- (((-y) * gfx_vid_srch) / gfx_vid_dsth);
- }
-
- /* CLIPPING ON BOTTOM */
-
- yend = y + h;
- if (yend >= gfx_get_vactive()) yend = gfx_get_vactive();
- yend += vadjust;
-
- /* SET VIDEO BUFFER OFFSET IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_offset(offset);
-
- /* DISABLE REGISTER UPDATES */
-
- vcfg = READ_VID32(CS5530_VIDEO_CONFIG);
- vcfg &= ~CS5530_VCFG_VID_REG_UPDATE;
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
-
- /* SET VIDEO POSITION */
-
- WRITE_VID32(CS5530_VIDEO_X_POS, (xend << 16) | xstart);
- WRITE_VID32(CS5530_VIDEO_Y_POS, (yend << 16) | ystart);
-
- /* SET INITIAL READ ADDRESS AND ENABLE REGISTER UPDATES */
-
- vcfg &= ~CS5530_VCFG_INIT_READ_MASK;
- vcfg |= (initread << 15) & CS5530_VCFG_INIT_READ_MASK;
- vcfg |= CS5530_VCFG_VID_REG_UPDATE;
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_color_key
- *
- * This routine specifies the color key value and mask for the video overlay
- * hardware. To disable color key, the color and mask should both be set to
- * zero. The hardware uses the color key in the following equation:
- *
- * ((source data) & (color key mask)) == ((color key) & (color key mask))
- *
- * The source data can be either graphics data or video data. The bluescreen
- * parameter is set to have the hardware compare video data and clear to
- * comapare graphics data.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-#else
-int gfx_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-#endif
-{
- unsigned long dcfg = 0;
-
- /* SET CS5530 COLOR KEY VALUE */
-
- WRITE_VID32(CS5530_VIDEO_COLOR_KEY, key);
- WRITE_VID32(CS5530_VIDEO_COLOR_MASK, mask);
-
- /* SELECT GRAPHICS OR VIDEO DATA TO COMPARE TO THE COLOR KEY */
-
- dcfg = READ_VID32(CS5530_DISPLAY_CONFIG);
- if (graphics & 0x01) dcfg &= ~CS5530_DCFG_VG_CK;
- else dcfg |= CS5530_DCFG_VG_CK;
- WRITE_VID32(CS5530_DISPLAY_CONFIG, dcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_filter
- *
- * This routine enables or disables the video overlay filters.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_filter(int xfilter, int yfilter)
-#else
-int gfx_set_video_filter(int xfilter, int yfilter)
-#endif
-{
- unsigned long vcfg = 0;
-
- /* ENABLE OR DISABLE CS5530 VIDEO OVERLAY FILTERS */
-
- vcfg = READ_VID32(CS5530_VIDEO_CONFIG);
- vcfg &= ~(CS5530_VCFG_X_FILTER_EN | CS5530_VCFG_Y_FILTER_EN);
- if (xfilter) vcfg |= CS5530_VCFG_X_FILTER_EN;
- if (yfilter) vcfg |= CS5530_VCFG_Y_FILTER_EN;
- WRITE_VID32(CS5530_VIDEO_CONFIG, vcfg);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette
- *
- * This routine loads the video hardware palette. If a NULL pointer is
- * specified, the palette is bypassed (for CS5530, this means loading the
- * palette with identity values).
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_palette(unsigned long *palette)
-#else
-int gfx_set_video_palette(unsigned long *palette)
-#endif
-{
- unsigned long i, entry;
-
- /* LOAD CS5530 VIDEO PALETTE */
-
- WRITE_VID32(CS5530_PALETTE_ADDRESS, 0);
- for (i = 0; i < 256; i++)
- {
- if (palette) entry = palette[i];
- else entry = i | (i << 8) | (i << 16);
- WRITE_VID32(CS5530_PALETTE_DATA, entry);
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette_entry
- *
- * This routine loads a single entry of the video hardware palette.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_set_video_palette_entry(unsigned long index, unsigned long palette)
-#else
-int gfx_set_video_palette_entry(unsigned long index, unsigned long palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* SET A SINGLE ENTRY */
-
- WRITE_VID32(CS5530_PALETTE_ADDRESS, index);
- WRITE_VID32(CS5530_PALETTE_DATA, palette);
-
- return(0);
-}
-
-#define CX55xx_VIDEO_PCI_44 0x80009444
-
-/*---------------------------------------------------------------------------
- * gfx_disable_softvga
- *
- * Disables SoftVga. This function is only valid with VSA2, Returns 1 if
- * SoftVga can be disabled; 0 if not.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_disable_softvga(void)
-#else
-int gfx_disable_softvga(void)
-#endif
-{
- unsigned long reg_val;
-
- /* get the current value */
- reg_val = gfx_pci_config_read(CX55xx_VIDEO_PCI_44);
- /* setting video PCI register 44 bit 0 to 1 disables SoftVga */
- reg_val |= 0x1;
- gfx_pci_config_write(CX55xx_VIDEO_PCI_44, reg_val);
-
- /* see if we set the bit and return the appropriate value */
- reg_val = gfx_pci_config_read(CX55xx_VIDEO_PCI_44);
- if((reg_val & 0x1) == 0x1)
- return(1);
- else
- return(0);
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_enable_softvga
- *
- * Enables SoftVga. This function is only valid with VSA2, Returns 1 if
- * SoftVga can be enbled; 0 if not.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_enable_softvga(void)
-#else
-int gfx_enable_softvga(void)
-#endif
-{
- unsigned long reg_val;
-
- /* get the current value */
- reg_val = gfx_pci_config_read(CX55xx_VIDEO_PCI_44);
- /* clearing video PCI register 44 bit 0 enables SoftVga */
- gfx_pci_config_write(CX55xx_VIDEO_PCI_44, reg_val & 0xfffffffe);
-
- /* see if we cleared the bit and return the appropriate value */
- reg_val = gfx_pci_config_read(CX55xx_VIDEO_PCI_44);
- if((reg_val & 0x1) == 0)
- return(1);
- else
- return(0);
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_clock_frequency
- *
- * This routine returns the current clock frequency in 16.16 format.
- * It reads the current register value and finds the match in the table.
- * If no match is found, this routine returns 0.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_clock_frequency(void)
-#else
-unsigned long gfx_get_clock_frequency(void)
-#endif
-{
- int index;
- unsigned long value, mask;
- mask = 0x7FFFFEDC;
- value = READ_VID32(CS5530_DOT_CLK_CONFIG) & mask;
- for (index = 0; index < NUM_CS5530_FREQUENCIES; index++)
- {
- if ((CS5530_PLLtable[index].pll_value & mask) == value)
- return(CS5530_PLLtable[index].frequency);
- }
- return(0);
-}
-
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*---------------------------------------------------------------------------
- * gfx_get_vsa2_softvga_enable
- *
- * This function returns the enable status of SoftVGA. It is valid
- * only if VSAII is present.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_vsa2_softvga_enable(void)
-#else
-int gfx_get_vsa2_softvga_enable(void)
-#endif
-{
- unsigned long reg_val;
-
- reg_val = gfx_pci_config_read(CX55xx_VIDEO_PCI_44);
- if((reg_val & 0x1) == 0)
- return(1);
- else
- return(0);
-
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_sync_polarities
- *
- * This routine returns the polarities of the sync pulses:
- * Bit 0: Set if negative horizontal polarity.
- * Bit 1: Set if negative vertical polarity.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_sync_polarities(void)
-#else
-int gfx_get_sync_polarities(void)
-#endif
-{
- int polarities = 0;
- if (READ_VID32(CS5530_DISPLAY_CONFIG) & 0x00000100) polarities |= 1;
- if (READ_VID32(CS5530_DISPLAY_CONFIG) & 0x00000200) polarities |= 2;
- return(polarities);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_palette_entry
- *
- * This routine returns a single palette entry.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_video_palette_entry(unsigned long index, unsigned long *palette)
-#else
-int gfx_get_video_palette_entry(unsigned long index, unsigned long *palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* READ A SINGLE ENTRY */
-
- WRITE_VID32 (CS5530_PALETTE_ADDRESS, index);
- *palette = READ_VID32 (CS5530_PALETTE_DATA);
-
- return (GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_enable
- *
- * This routine returns the value "one" if video overlay is currently enabled,
- * otherwise it returns the value "zero".
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_video_enable(void)
-#else
-int gfx_get_video_enable(void)
-#endif
-{
- if (READ_VID32(CS5530_VIDEO_CONFIG) & CS5530_VCFG_VID_EN) return(1);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_format
- *
- * This routine returns the current video overlay format.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_video_format(void)
-#else
-int gfx_get_video_format(void)
-#endif
-{
- unsigned long vcfg;
- vcfg = READ_VID32(CS5530_VIDEO_CONFIG);
- if (vcfg & CS5530_VCFG_CSC_BYPASS) return(VIDEO_FORMAT_RGB);
- if (vcfg & CS5530_VCFG_4_2_0_MODE) return(VIDEO_FORMAT_Y0Y1Y2Y3);
-
- return ((int)((vcfg >> 2) & 3));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_src_size
- *
- * This routine returns the size of the source video overlay buffer. The
- * return value is (height << 16) | width.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_src_size(void)
-#else
-unsigned long gfx_get_video_src_size(void)
-#endif
-{
- unsigned long width = 0, height = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE CS5530 VIDEO LINE SIZE */
-
- width = (READ_VID32(CS5530_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(CS5530_VIDEO_CONFIG) & CS5530_VCFG_LINE_SIZE_UPPER)
- width += 512l;
-
- if (width)
- {
- /* DETERMINE HEIGHT BY DIVIDING TOTAL SIZE BY WIDTH */
- /* Get total size from display controller - abtracted. */
-
- height = gfx_get_display_video_size() / (width << 1);
- }
- return((height << 16) | width);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_line_size
- *
- * This routine returns the line size of the source video overlay buffer, in
- * pixels.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_line_size(void)
-#else
-unsigned long gfx_get_video_line_size(void)
-#endif
-{
- unsigned long width = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE CS5530 VIDEO LINE SIZE */
-
- width = (READ_VID32(CS5530_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(CS5530_VIDEO_CONFIG) & CS5530_VCFG_LINE_SIZE_UPPER)
- width += 512l;
- return(width);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_xclip
- *
- * This routine returns the number of bytes clipped on the left side of a
- * video overlay line (skipped at beginning).
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_xclip(void)
-#else
-unsigned long gfx_get_video_xclip(void)
-#endif
-{
- unsigned long clip = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE CS5530 VIDEO LINE SIZE */
-
- clip = (READ_VID32(CS5530_VIDEO_CONFIG) >> 14) & 0x000007FC;
- return(clip);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_offset
- *
- * This routine returns the current offset for the video overlay buffer.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_offset(void)
-#else
-unsigned long gfx_get_video_offset(void)
-#endif
-{
- return(gfx_get_display_video_offset());
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_scale
- *
- * This routine returns the scale factor for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_scale(void)
-#else
-unsigned long gfx_get_video_scale(void)
-#endif
-{
- return(READ_VID32(CS5530_VIDEO_SCALE));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_dst_size
- *
- * This routine returns the size of the displayed video overlay window.
- * NOTE: This is the displayed window size, which may be different from
- * the real window size if clipped.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_dst_size(void)
-#else
-unsigned long gfx_get_video_dst_size(void)
-#endif
-{
- unsigned long xsize, ysize;
-
- xsize = READ_VID32(CS5530_VIDEO_X_POS);
- xsize = ((xsize >> 16) & 0x7FF) - (xsize & 0x07FF);
- ysize = READ_VID32(CS5530_VIDEO_Y_POS);
- ysize = ((ysize >> 16) & 0x7FF) - (ysize & 0x07FF);
- return((ysize << 16) | xsize);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_position
- *
- * This routine returns the position of the video overlay window. The
- * return value is (ypos << 16) | xpos.
- * NOTE: This is the displayed window position, which may be different from
- * the real window position if clipped.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_position(void)
-#else
-unsigned long gfx_get_video_position(void)
-#endif
-{
- unsigned long hadjust, vadjust;
- unsigned long xpos, ypos;
-
- /* READ HARDWARE POSITION */
-
- xpos = READ_VID32(CS5530_VIDEO_X_POS) & 0x000007FF;
- ypos = READ_VID32(CS5530_VIDEO_Y_POS) & 0x000007FF;
-
- /* GET ADJUSTMENT VALUES */
- /* Use routines to abstract version of display controller. */
-
- hadjust = gfx_get_htotal() - gfx_get_hsync_end() - 13l;
- vadjust = gfx_get_vtotal() - gfx_get_vsync_end() + 1l;
- xpos -= hadjust;
- ypos -= vadjust;
- return((ypos << 16) | (xpos & 0x0000FFFF));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key
- *
- * This routine returns the current video color key value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_color_key(void)
-#else
-unsigned long gfx_get_video_color_key(void)
-#endif
-{
- return(READ_VID32(CS5530_VIDEO_COLOR_KEY));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_mask
- *
- * This routine returns the current video color mask value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_get_video_color_key_mask(void)
-#else
-unsigned long gfx_get_video_color_key_mask(void)
-#endif
-{
- return(READ_VID32(CS5530_VIDEO_COLOR_MASK));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_src
- *
- * This routine returns 0 for video data compare, 1 for graphics data.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_video_color_key_src(void)
-#else
-int gfx_get_video_color_key_src(void)
-#endif
-{
- if (READ_VID32(CS5530_DISPLAY_CONFIG) & CS5530_DCFG_VG_CK) return(0);
- return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_filter
- *
- * This routine returns if the filters are currently enabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int cs5530_get_video_filter(void)
-#else
-int gfx_get_video_filter(void)
-#endif
-{
- int retval = 0;
- if (READ_VID32(CS5530_VIDEO_CONFIG) & CS5530_VCFG_X_FILTER_EN)
- retval |= 1;
- if (READ_VID32(CS5530_VIDEO_CONFIG) & CS5530_VCFG_Y_FILTER_EN)
- retval |= 2;
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_crc
- *
- * This routine returns the hardware CRC value, which is used for automated
- * testing. The value is like a checksum, but will change if pixels move
- * locations.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long cs5530_read_crc(void)
-#else
-unsigned long gfx_read_crc(void)
-#endif
-{
- unsigned long crc = 0xFFFFFFFF;
- if (gfx_test_timing_active())
- {
- /* WAIT UNTIL ACTIVE DISPLAY */
-
- while(!gfx_test_vertical_active());
-
- /* RESET CRC DURING ACTIVE DISPLAY */
-
- WRITE_VID32(CS5530_CRCSIG_TFT_TV, 0);
- WRITE_VID32(CS5530_CRCSIG_TFT_TV, 1);
-
- /* WAIT UNTIL NOT ACTIVE, THEN ACTIVE, NOT ACTIVE, THEN ACTIVE */
-
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- crc = READ_VID32(CS5530_CRCSIG_TFT_TV) >> 8;
- }
- return(crc);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_rdcl.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_rdcl.c
deleted file mode 100644
index c2353e832..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_rdcl.c
+++ /dev/null
@@ -1,2580 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vid_rdcl.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: vid_rdcl.c $
- *
- * This file contains routines to control the Redcloud display filter video overlay hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/* REDCLOUD PLL TABLE */
-
-typedef struct RCDFPLL
-{
- long frequency; /* 16.16 fixed point frequency */
- unsigned long post_div3; /* MCP Frequency dividers and multipliers */
- unsigned long pre_mul2;
- unsigned long pre_div2;
- unsigned long pll_value; /* MCP DotPLL Register Upper 32(0x0015) */
-} RCDFPLLENTRY;
-
-RCDFPLLENTRY RCDF_PLLtable48MHz[] = {
- { 0x00192CCC, 0, 0, 0, 0x00000037 }, /* 25.1750 */
- { 0x001C526E, 1, 1, 0, 0x00000B1A }, /* 28.3220 */
- { 0x001F8000, 1, 0, 0, 0x000002D2 }, /* 31.5000 */
- { 0x00240000, 1, 1, 0, 0x00000FE2 }, /* 36.0000 */
- { 0x00258000, 1, 0, 0, 0x0000057A }, /* 37.5000 */
- { 0x00280000, 1, 0, 0, 0x0000030A }, /* 40.0000 */
- { 0x002CE666, 0, 0, 0, 0x00000063 }, /* 44.9000 */
- { 0x00318000, 0, 0, 0, 0x0000054B }, /* 49.5000 */
- { 0x00320000, 0, 0, 0, 0x0000026E }, /* 50.0000 */
- { 0x00325999, 0, 1, 0, 0x00000037 }, /* 50.3500 */
- { 0x00360000, 1, 1, 0, 0x00000B0D }, /* 54.0000 */
- { 0x00384000, 0, 0, 0, 0x00000577 }, /* 56.2500 */
- { 0x0038643F, 0, 0, 0, 0x000007F7 }, /* 56.3916 */
- { 0x0038A4DD, 0, 0, 0, 0x0000057B }, /* 56.6444 */
- { 0x003B0000, 0, 1, 0, 0x00000707 }, /* 59.0000 */
- { 0x003F0000, 1, 1, 0, 0x00000B39 }, /* 63.0000 */
- { 0x00410000, 1, 1, 0, 0x00000B45 }, /* 65.0000 */
- { 0x00438000, 1, 1, 0, 0x00000FC1 }, /* 67.5000 */
- { 0x0046CCCC, 1, 0, 0, 0x00000561 }, /* 70.8000 */
- { 0x00480000, 1, 0, 0, 0x000007E1 }, /* 72.0000 */
- { 0x004B0000, 0, 0, 0, 0x00000052 }, /* 75.0000 */
- { 0x004EC000, 0, 0, 0, 0x00000056 }, /* 78.7500 */
- { 0x00500000, 1, 1, 0, 0x00000709 }, /* 80.0000 */
- { 0x0059CCCC, 0, 1, 0, 0x00000262 }, /* 89.8000 */
- { 0x005E8000, 0, 0, 0, 0x000002D2 }, /* 94.5000 */
- { 0x00630000, 0, 1, 0, 0x00000B4A }, /* 99.0000 */
- { 0x00640000, 0, 1, 0, 0x00000036 }, /* 100.0000 */
- { 0x006C0000, 0, 0, 0, 0x000007E2 }, /* 108.0000 */
- { 0x00708000, 0, 0, 0, 0x000007F6 }, /* 112.5000 */
- { 0x00820000, 1, 1, 0, 0x00000FB0 }, /* 130.0000 */
- { 0x00870000, 1, 1, 0, 0x00000B50 }, /* 135.0000 */
- { 0x009D8000, 0, 0, 0, 0x00000055 }, /* 157.5000 */
- { 0x00A20000, 0, 0, 0, 0x000009C1 }, /* 162.0000 */
- { 0x00AF8000, 0, 0, 0, 0x000002C1 }, /* 175.5000 */
- { 0x00BD0000, 0, 0, 0, 0x000002D1 }, /* 189.0000 */
- { 0x00CA8000, 0, 0, 0, 0x00000551 }, /* 202.5000 */
- { 0x00E58000, 0, 0, 0, 0x0000057D }, /* 229.5000 */
-};
-
-RCDFPLLENTRY RCDF_PLLtable14MHz[] = {
- { 0x00192CCC, 0, 0, 0, 0x00000037 }, /* 25.1750 */
- { 0x001C526E, 0, 0, 0, 0x00000B7B }, /* 28.3220 */
- { 0x001F8000, 0, 0, 0, 0x000004D3 }, /* 31.5000 */
- { 0x00240000, 0, 0, 0, 0x00000BE3 }, /* 36.0000 */
- { 0x00258000, 0, 0, 0, 0x0000074F }, /* 37.5000 */
- { 0x00280000, 0, 0, 0, 0x0000050B }, /* 40.0000 */
- { 0x002CE666, 0, 0, 0, 0x00000063 }, /* 44.9000 */
- { 0x00318000, 0, 0, 0, 0x0000054B }, /* 49.5000 */
- { 0x00320000, 0, 0, 0, 0x0000026E }, /* 50.0000 */
- { 0x00325999, 0, 0, 0, 0x000007C3 }, /* 50.3500 */
- { 0x00360000, 0, 0, 0, 0x000007E3 }, /* 54.0000 */
- { 0x00384000, 0, 0, 0, 0x00000577 }, /* 56.2500 */
- { 0x0038643F, 0, 0, 0, 0x000002FB }, /* 56.3916 */
- { 0x0038A4DD, 0, 0, 0, 0x0000057B }, /* 56.6444 */
- { 0x003B0000, 0, 0, 0, 0x0000058B }, /* 59.0000 */
- { 0x003F0000, 0, 0, 0, 0x0000095E }, /* 63.0000 */
- { 0x00410000, 0, 0, 0, 0x0000096A }, /* 65.0000 */
- { 0x00438000, 0, 0, 0, 0x00000BC2 }, /* 67.5000 */
- { 0x0046CCCC, 0, 0, 0, 0x0000098A }, /* 70.8000 */
- { 0x00480000, 0, 0, 0, 0x00000BE2 }, /* 72.0000 */
- { 0x004B0000, 0, 0, 0, 0x00000052 }, /* 75.0000 */
- { 0x004EC000, 0, 0, 0, 0x00000056 }, /* 78.7500 */
- { 0x00500000, 0, 0, 0, 0x0000050A }, /* 80.0000 */
- { 0x0059CCCC, 0, 0, 0, 0x0000078E }, /* 89.8000 */
- { 0x005E8000, 0, 0, 0, 0x000002D2 }, /* 94.5000 */
- { 0x00630000, 0, 0, 0, 0x000011F6 }, /* 99.0000 */
- { 0x00640000, 0, 0, 0, 0x0000054E }, /* 100.0000 */
- { 0x006C0000, 0, 0, 0, 0x000007E2 }, /* 108.0000 */
- { 0x00708000, 0, 0, 0, 0x000002FA }, /* 112.5000 */
- { 0x00820000, 0, 0, 0, 0x00000BB1 }, /* 130.0000 */
- { 0x00870000, 0, 0, 0, 0x00000975 }, /* 135.0000 */
- { 0x009D8000, 0, 0, 0, 0x00000055 }, /* 157.5000 */
- { 0x00A20000, 0, 0, 0, 0x000009C1 }, /* 162.0000 */
- { 0x00AF8000, 0, 0, 0, 0x000002C1 }, /* 175.5000 */
- { 0x00BD0000, 0, 0, 0, 0x00000539 }, /* 189.0000 */
- { 0x00CA8000, 0, 0, 0, 0x00000551 }, /* 202.5000 */
- { 0x00E58000, 0, 0, 0, 0x0000057D }, /* 229.5000 */
-};
-
-#define NUM_RCDF_FREQUENCIES sizeof(RCDF_PLLtable14MHz)/sizeof(RCDFPLLENTRY)
-
-
-/*---------------------------------------------------------------------------
- * gfx_reset_video (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine is used to disable all components of video overlay before
- * performing a mode switch.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_reset_video(void)
-#else
-void gfx_reset_video(void)
-#endif
-{
- gfx_set_video_enable(0);
- gfx_select_alpha_region(1);
- gfx_set_alpha_enable(0);
- gfx_select_alpha_region(2);
- gfx_set_alpha_enable(0);
-
- /* SET REGION 0 AFTER RESET */
-
- gfx_select_alpha_region(0);
- gfx_set_alpha_enable(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_display_control (PRIVATE ROUTINE: NOT PART OF DURANGO API)
- *
- * This routine configures the display output.
- *
- * "sync_polarities" is used to set the polarities of the sync pulses according
- * to the following mask:
- *
- * Bit 0: If set to 1, negative horizontal polarity is programmed,
- * otherwise positive horizontal polarity is programmed.
- * Bit 1: If set to 1, negative vertical polarity is programmed,
- * otherwise positive vertical polarity is programmed.
- *
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_display_control(int sync_polarities)
-#else
-int gfx_set_display_control(int sync_polarities)
-#endif
-{
- unsigned long power;
- unsigned long dcfg;
-
- /* CONFIGURE DISPLAY OUTPUT FROM VIDEO PROCESSOR */
-
- dcfg = READ_VID32(RCDF_DISPLAY_CONFIG);
- dcfg &= ~(RCDF_DCFG_CRT_SYNC_SKW_MASK | RCDF_DCFG_PWR_SEQ_DLY_MASK |
- RCDF_DCFG_CRT_HSYNC_POL | RCDF_DCFG_CRT_VSYNC_POL |
- RCDF_DCFG_FP_PWR_EN | RCDF_DCFG_FP_DATA_EN);
-
- dcfg |= (RCDF_DCFG_CRT_SYNC_SKW_INIT |
- RCDF_DCFG_PWR_SEQ_DLY_INIT |
- RCDF_DCFG_GV_PAL_BYP);
-
- if (PanelEnable)
- {
- power = READ_VID32 (RCDF_POWER_MANAGEMENT);
- power |= RCDF_PM_PANEL_POWER_ON;
- WRITE_VID32 (RCDF_POWER_MANAGEMENT, power);
- }
-
- /* SET APPROPRIATE SYNC POLARITIES */
-
- if (sync_polarities & 0x1)
- dcfg |= RCDF_DCFG_CRT_HSYNC_POL;
- if (sync_polarities & 0x2)
- dcfg |= RCDF_DCFG_CRT_VSYNC_POL;
-
- WRITE_VID32 (RCDF_DISPLAY_CONFIG, dcfg);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_clock_frequency
- *
- * This routine sets the clock frequency, specified as a 16.16 fixed point
- * value (0x00318000 = 49.5 MHz). It will set the closest frequency found
- * in the lookup table.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_set_clock_frequency(unsigned long frequency)
-#else
-void gfx_set_clock_frequency(unsigned long frequency)
-#endif
-{
- Q_WORD msr_value;
- int i, index = 0;
- unsigned long value;
- long timeout = 1000;
- long min, diff;
- RCDFPLLENTRY *PllTable;
-
- /* READ PLL REFERENCE FREQUENCY */
- /* The reference frequency of GX2 1.x is different from 2.x and above. */
-
- if ((gfx_cpu_version & 0xFF00) >= 0x0200)
- PllTable = RCDF_PLLtable48MHz;
- else
- PllTable = RCDF_PLLtable14MHz;
-
- /* FIND THE REGISTER VALUES FOR THE DESIRED FREQUENCY */
- /* Search the table for the closest frequency (16.16 format). */
-
- value = PllTable[0].pll_value;
- min = (long) PllTable[0].frequency - frequency;
- if (min < 0L) min = -min;
- for (i = 1; i < NUM_RCDF_FREQUENCIES; i++)
- {
- diff = (long) PllTable[i].frequency - frequency;
- if (diff < 0L) diff = -diff;
- if (diff < min)
- {
- min = diff;
- index = i;
- }
- }
-
- /* PROGRAM THE SETTINGS WITH THE RESET BIT SET */
-
- gfx_msr_read (RC_ID_MCP, MCP_DOTPLL, &msr_value);
- msr_value.high = PllTable[index].pll_value;
- msr_value.low |= 0x00000001;
- gfx_msr_write (RC_ID_MCP, MCP_DOTPLL, &msr_value);
-
- /* PROGRAM THE MCP DIVIDER VALUES */
-
- gfx_msr_read (RC_ID_MCP, MCP_SYS_RSTPLL, &msr_value);
- if (PllTable[index].post_div3) msr_value.low |= MCP_DOTPOSTDIV3;
- else msr_value.low &= ~MCP_DOTPOSTDIV3;
- if (PllTable[index].pre_div2) msr_value.low |= MCP_DOTPREDIV2;
- else msr_value.low &= ~MCP_DOTPREDIV2;
- if (PllTable[index].pre_mul2) msr_value.low |= MCP_DOTPREMULT2;
- else msr_value.low &= ~MCP_DOTPREMULT2;
- gfx_msr_write (RC_ID_MCP, MCP_SYS_RSTPLL, &msr_value);
-
- /* CLEAR THE RESET BIT */
-
- gfx_msr_read (RC_ID_MCP, MCP_DOTPLL, &msr_value);
- msr_value.low &= 0xFFFFFFFE;
- gfx_msr_write (RC_ID_MCP, MCP_DOTPLL, &msr_value);
-
- /* WAIT FOR LOCK BIT */
-
- do
- {
- gfx_msr_read (RC_ID_MCP, MCP_DOTPLL, &msr_value);
- } while (timeout-- && !(msr_value.low & MCP_DOTPLL_LOCK));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_crt_enable
- *
- * This routine enables or disables the CRT output from the video processor.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_crt_enable(int enable)
-#else
-int gfx_set_crt_enable(int enable)
-#endif
-{
- unsigned long config, misc;
- config = READ_VID32(RCDF_DISPLAY_CONFIG);
- misc = READ_VID32(RCDF_VID_MISC);
-
- switch (enable)
- {
- case CRT_DISABLE: /* DISABLE EVERYTHING */
-
- WRITE_VID32(RCDF_DISPLAY_CONFIG, config & ~(RCDF_DCFG_DIS_EN | RCDF_DCFG_HSYNC_EN
- | RCDF_DCFG_VSYNC_EN | RCDF_DCFG_DAC_BL_EN ));
- WRITE_VID32(RCDF_VID_MISC, misc | RCDF_DAC_POWER_DOWN);
- break;
-
- case CRT_ENABLE: /* ENABLE CRT DISPLAY, INCLUDING DISPLAY LOGIC */
-
- WRITE_VID32(RCDF_DISPLAY_CONFIG, config | RCDF_DCFG_DIS_EN | RCDF_DCFG_HSYNC_EN
- | RCDF_DCFG_VSYNC_EN | RCDF_DCFG_DAC_BL_EN);
- WRITE_VID32(RCDF_VID_MISC, misc & ~RCDF_DAC_POWER_DOWN & ~RCDF_ANALOG_POWER_DOWN);
- break;
-
- case CRT_STANDBY: /* HSYNC:OFF VSYNC:ON */
-
- WRITE_VID32(RCDF_DISPLAY_CONFIG, (config & ~(RCDF_DCFG_DIS_EN | RCDF_DCFG_HSYNC_EN
- | RCDF_DCFG_DAC_BL_EN)) |
- RCDF_DCFG_VSYNC_EN );
- WRITE_VID32(RCDF_VID_MISC, misc | RCDF_DAC_POWER_DOWN);
- break;
-
- case CRT_SUSPEND: /* HSYNC:ON VSYNC:OFF */
-
- WRITE_VID32(RCDF_DISPLAY_CONFIG, (config & ~(RCDF_DCFG_DIS_EN | RCDF_DCFG_VSYNC_EN
- | RCDF_DCFG_DAC_BL_EN)) |
- RCDF_DCFG_HSYNC_EN );
- WRITE_VID32(RCDF_VID_MISC, misc | RCDF_DAC_POWER_DOWN);
- break;
-
- default:
- return (GFX_STATUS_BAD_PARAMETER);
- }
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_enable
- *
- * This routine enables or disables the video overlay functionality.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_enable(int enable)
-#else
-int gfx_set_video_enable(int enable)
-#endif
-{
- unsigned long vcfg;
-
- /* WAIT FOR VERTICAL BLANK TO START */
- /* Otherwise a glitch can be observed. */
-
- if (gfx_test_timing_active())
- {
- if (!gfx_test_vertical_active())
- {
- while(!gfx_test_vertical_active());
- }
- while(gfx_test_vertical_active());
- }
-
- vcfg = READ_VID32(RCDF_VIDEO_CONFIG);
- if (enable)
- {
- /* ENABLE VIDEO OVERLAY FROM DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_enable(1);
-
- /* ENABLE DISPLAY FILTER VIDEO OVERLAY */
-
- vcfg |= RCDF_VCFG_VID_EN;
- WRITE_VID32(RCDF_VIDEO_CONFIG, vcfg);
- }
- else
- {
- /* DISABLE DISPLAY FILTER VIDEO OVERLAY */
-
- vcfg &= ~RCDF_VCFG_VID_EN;
- WRITE_VID32(RCDF_VIDEO_CONFIG, vcfg);
-
- /* DISABLE VIDEO OVERLAY FROM DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_enable(0);
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_format
- *
- * Sets input video format type, to one of the YUV formats or to RGB.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_format(unsigned long format)
-#else
-int gfx_set_video_format(unsigned long format)
-#endif
-{
- unsigned long ctrl, vcfg = 0;
-
- /* SET THE DISPLAY FILTER VIDEO INPUT FORMAT */
-
- vcfg = READ_VID32(RCDF_VIDEO_CONFIG);
- ctrl = READ_VID32(RCDF_VID_ALPHA_CONTROL);
- ctrl &= ~(RCDF_VIDEO_INPUT_IS_RGB | RCDF_CSC_VIDEO_YUV_TO_RGB);
- vcfg &= ~(RCDF_VCFG_VID_INP_FORMAT | RCDF_VCFG_4_2_0_MODE);
- switch(format)
- {
- case VIDEO_FORMAT_UYVY:
- vcfg |= RCDF_VCFG_UYVY_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- break;
- case VIDEO_FORMAT_YUYV:
- vcfg |= RCDF_VCFG_YUYV_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- break;
- case VIDEO_FORMAT_Y2YU:
- vcfg |= RCDF_VCFG_Y2YU_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- break;
- case VIDEO_FORMAT_YVYU:
- vcfg |= RCDF_VCFG_YVYU_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- break;
- case VIDEO_FORMAT_Y0Y1Y2Y3:
- vcfg |= RCDF_VCFG_UYVY_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- vcfg |= RCDF_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_Y3Y2Y1Y0:
- vcfg |= RCDF_VCFG_Y2YU_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- vcfg |= RCDF_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_Y1Y0Y3Y2:
- vcfg |= RCDF_VCFG_YUYV_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- vcfg |= RCDF_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_Y1Y2Y3Y0:
- vcfg |= RCDF_VCFG_YVYU_FORMAT;
- ctrl |= RCDF_CSC_VIDEO_YUV_TO_RGB;
- vcfg |= RCDF_VCFG_4_2_0_MODE;
- break;
- case VIDEO_FORMAT_RGB:
- ctrl |= RCDF_VIDEO_INPUT_IS_RGB;
- vcfg |= RCDF_VCFG_UYVY_FORMAT;
- break;
- case VIDEO_FORMAT_P2M_P2L_P1M_P1L:
- ctrl |= RCDF_VIDEO_INPUT_IS_RGB;
- vcfg |= RCDF_VCFG_Y2YU_FORMAT;
- break;
- case VIDEO_FORMAT_P1M_P1L_P2M_P2L:
- ctrl |= RCDF_VIDEO_INPUT_IS_RGB;
- vcfg |= RCDF_VCFG_YUYV_FORMAT;
- break;
- case VIDEO_FORMAT_P1M_P2L_P2M_P1L:
- ctrl |= RCDF_VIDEO_INPUT_IS_RGB;
- vcfg |= RCDF_VCFG_YVYU_FORMAT;
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- WRITE_VID32(RCDF_VIDEO_CONFIG, vcfg);
- WRITE_VID32(RCDF_VID_ALPHA_CONTROL, ctrl);
-
- /* SET THE VIDEO FORMAT IN THE DISPLAY CONTROLLER */
- /* Use private routine to abstract display controller. */
-
- gfx_set_display_video_format (format);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_size
- *
- * This routine specifies the size of the source data. It is used only
- * to determine how much data to transfer per frame, and is not used to
- * calculate the scaling value (that is handled by a separate routine).
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_size(unsigned short width, unsigned short height)
-#else
-int gfx_set_video_size(unsigned short width, unsigned short height)
-#endif
-{
- unsigned long size, vcfg, vid_420, pitch;
-
- /* SET THE DISPLAY FILTER VIDEO LINE SIZE */
- /* Match the DC hardware alignment requirement. The line size must */
- /* always be 32-byte aligned. However, we can manage smaller */
- /* alignments by decreasing the pitch and clipping the video window. */
- /* The VG will fetch extra data for each line, but the decreased */
- /* pitch will ensure that it always begins fetching at the start of */
- /* the video line. */
-
- vcfg = READ_VID32(RCDF_VIDEO_CONFIG);
-
- vid_420 = vcfg & RCDF_VCFG_4_2_0_MODE;
-
- vcfg &= ~(RCDF_VCFG_LINE_SIZE_LOWER_MASK | RCDF_VCFG_LINE_SIZE_UPPER);
-
- size = ((width >> 1) + 7) & 0xFFF8;
- pitch = ((width << 1) + 7) & 0xFFF8;
-
- vcfg |= (size & 0x00FF) << 8;
- if (size & 0x0100) vcfg |= RCDF_VCFG_LINE_SIZE_UPPER;
- WRITE_VID32(RCDF_VIDEO_CONFIG, vcfg);
-
- /* SET VIDEO BUFFER LINE SIZE IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_size (width, height);
-
- /* SET VIDEO PITCH */
- /* Set pitch to line width for GX1 legacy. */
- /* UV Pitch is 2x line width as GX1 required 4:2:0 */
- /* data for every line, while Redcloud reads for */
- /* every other line. */
-
- gfx_set_video_yuv_pitch (pitch, pitch << 1);
-
- /* SET VIDEO OFFSETS */
- /* Set U and V Offsets to match legacy */
-
- if (vid_420)
- gfx_set_video_yuv_offsets (gfx_vid_offset,
- gfx_vid_offset + (pitch >> 1),
- gfx_vid_offset + (pitch >> 1) + (pitch >> 2));
-
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_offset
- *
- * This routine sets the starting offset for the video buffer when only
- * one offset needs to be specified.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_offset(unsigned long offset)
-#else
-int gfx_set_video_offset(unsigned long offset)
-#endif
-{
- /* SAVE VALUE FOR FUTURE CLIPPING OF THE TOP OF THE VIDEO WINDOW */
-
- gfx_vid_offset = offset;
-
- /* SET VIDEO BUFFER OFFSET IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_offset(offset);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_yuv_offsets
- *
- * This routine sets the starting offset for the video buffer when displaying
- * 4:2:0 video.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_yuv_offsets(unsigned long yoffset, unsigned long uoffset, unsigned long voffset)
-#else
-int gfx_set_video_yuv_offsets(unsigned long yoffset, unsigned long uoffset, unsigned long voffset)
-#endif
-{
- /* SAVE VALUE FOR FUTURE CLIPPING OF THE TOP OF THE VIDEO WINDOW */
-
- gfx_vid_offset = yoffset;
- gfx_vid_uoffset = uoffset;
- gfx_vid_voffset = voffset;
-
- /* SET VIDEO BUFFER OFFSET IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_yuv_offsets(yoffset, uoffset, voffset);
-
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_video_yuv_pitch
- *
- * This routine sets the byte offset between consecutive scanlines of YUV video data
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_yuv_pitch(unsigned long ypitch, unsigned long uvpitch)
-#else
-int gfx_set_video_yuv_pitch(unsigned long ypitch, unsigned long uvpitch)
-#endif
-{
- /* SET VIDEO PITCH IN DISPLAY CONTROLLER */
- /* Use private routine to abstract the display controller. */
-
- gfx_set_display_video_yuv_pitch (ypitch, uvpitch);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_scale
- *
- * This routine sets the scale factor for the video overlay window. The
- * size of the source and destination regions are specified in pixels.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#else
-int gfx_set_video_scale(unsigned short srcw, unsigned short srch,
- unsigned short dstw, unsigned short dsth)
-#endif
-{
- unsigned long xscale, yscale;
-
- /* SAVE PARAMETERS (unless don't-care zero destination arguments are used) */
- /* These are needed for clipping the video window later. */
-
- if (dstw != 0) {
- gfx_vid_srcw = srcw;
- gfx_vid_dstw = dstw;
- }
- if (dsth != 0) {
- gfx_vid_srch = srch;
- gfx_vid_dsth = dsth;
- }
-
- /* CALCULATE DISPLAY FILTER SCALE FACTORS */
- /* Zero width and height indicate don't care conditions */
- /* Downscaling is performed in a separate function. */
-
- if (dstw == 0) xscale = READ_VID32(RCDF_VIDEO_SCALE) & 0xffff; /* keep previous if don't-care argument */
- else if (dstw <= srcw) xscale = 0x2000; /* horizontal downscaling is currently done in a separate function */
- else if ((srcw == 1) || (dstw == 1)) return GFX_STATUS_BAD_PARAMETER;
- else xscale = (0x2000l * (srcw - 1l)) / (dstw - 1l);
-
- if (dsth == 0) yscale = (READ_VID32(RCDF_VIDEO_SCALE) & 0xffff0000) >> 16; /* keep previous if don't-care argument */
- else if (dsth <= srch) yscale = 0x2000; /* vertical downscaling is handled in a separate function */
- else if ((srch == 1) || (dsth == 1)) return GFX_STATUS_BAD_PARAMETER;
- else yscale = (0x2000l * (srch - 1l)) / (dsth - 1l);
-
- WRITE_VID32(RCDF_VIDEO_SCALE, (yscale << 16) | xscale);
-
- /* CALL ROUTINE TO UPDATE WINDOW POSITION */
- /* This is required because the scale values affect the number of */
- /* source data pixels that need to be clipped, as well as the */
- /* amount of data that needs to be transferred. */
-
- gfx_set_video_window(gfx_vid_xpos, gfx_vid_ypos, gfx_vid_width, gfx_vid_height);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_vertical_downscale
- *
- * This routine sets the vertical downscale factor for the video overlay window.
- * The height of the source and destination regions are specified in pixels.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_vertical_downscale(unsigned short srch, unsigned short dsth)
-#else
-int gfx_set_video_vertical_downscale(unsigned short srch, unsigned short dsth)
-#endif
-{
- /* SET VIDEO SCALE IN DISPLAY CONTROLLER */
- /* Use private routine to abstract hardware */
-
- gfx_set_display_video_downscale (srch, dsth);
- return 0;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_vertical_downscale_enable
- *
- * This routine sets the vertical downscale enable for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_set_video_vertical_downscale_enable(int enable)
-#else
-void gfx_set_video_vertical_downscale_enable(int enable)
-#endif
-{
- /* SET VIDEO SCALE IN DISPLAY CONTROLLER */
- /* Use private routine to abstract hardware */
-
- gfx_set_display_video_vertical_downscale_enable (enable);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_config
- *
- * This routine sets the downscale type and factor for the video overlay window.
- * Note: No downscaling support for RGB565 and YUV420 video formats.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_downscale_config(unsigned short type, unsigned short m)
-#else
-int gfx_set_video_downscale_config(unsigned short type, unsigned short m)
-#endif
-{
- unsigned long downscale;
-
- if ((m < 1) || (m > 16)) return GFX_STATUS_BAD_PARAMETER;
-
- downscale = READ_VID32(RCDF_VIDEO_DOWNSCALER_CONTROL);
- downscale &= ~(RCDF_VIDEO_DOWNSCALE_FACTOR_MASK | RCDF_VIDEO_DOWNSCALE_TYPE_MASK);
- downscale |= ((unsigned long)(m - 1) << RCDF_VIDEO_DOWNSCALE_FACTOR_POS);
- switch(type)
- {
- case VIDEO_DOWNSCALE_KEEP_1_OF:
- downscale |= RCDF_VIDEO_DOWNSCALE_TYPE_A;
- break;
- case VIDEO_DOWNSCALE_DROP_1_OF:
- downscale |= RCDF_VIDEO_DOWNSCALE_TYPE_B;
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- WRITE_VID32(RCDF_VIDEO_DOWNSCALER_CONTROL, downscale);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_coefficients
- *
- * This routine sets the downscale filter coefficients.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_downscale_coefficients(unsigned short coef1, unsigned short coef2,
- unsigned short coef3, unsigned short coef4)
-#else
-int gfx_set_video_downscale_coefficients(unsigned short coef1, unsigned short coef2,
- unsigned short coef3, unsigned short coef4)
-#endif
-{
- if ((coef1 + coef2 + coef3 + coef4) != 16)
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_VID32(RCDF_VIDEO_DOWNSCALER_COEFFICIENTS,
- ((unsigned long)coef1 << RCDF_VIDEO_DOWNSCALER_COEF1_POS) |
- ((unsigned long)coef2 << RCDF_VIDEO_DOWNSCALER_COEF2_POS) |
- ((unsigned long)coef3 << RCDF_VIDEO_DOWNSCALER_COEF3_POS) |
- ((unsigned long)coef4 << RCDF_VIDEO_DOWNSCALER_COEF4_POS));
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_downscale_enable
- *
- * This routine enables or disables downscaling for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_downscale_enable(int enable)
-#else
-int gfx_set_video_downscale_enable(int enable)
-#endif
-{
- unsigned long downscale;
-
- downscale = READ_VID32(RCDF_VIDEO_DOWNSCALER_CONTROL);
- if (enable)
- downscale |= RCDF_VIDEO_DOWNSCALE_ENABLE;
- else
- downscale &= ~RCDF_VIDEO_DOWNSCALE_ENABLE;
- WRITE_VID32(RCDF_VIDEO_DOWNSCALER_CONTROL, downscale);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_window
- *
- * This routine sets the position and size of the video overlay window. The
- * x and y positions are specified in screen relative coordinates, and may be negative.
- * The size of destination region is specified in pixels. The line size
- * indicates the number of bytes of source data per scanline.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_window(short x, short y, unsigned short w, unsigned short h)
-#else
-int gfx_set_video_window(short x, short y, unsigned short w, unsigned short h)
-#endif
-{
- unsigned long hadjust, vadjust;
- unsigned long xstart, ystart, xend, yend;
-
- /* SAVE PARAMETERS */
- /* These are needed to call this routine if the scale value changes. */
-
- gfx_vid_xpos = x;
- gfx_vid_ypos = y;
- gfx_vid_width = w;
- gfx_vid_height = h;
-
- /* GET ADJUSTMENT VALUES */
- /* Use routines to abstract version of display controller. */
-
- hadjust = gfx_get_htotal() - gfx_get_hsync_end() - 14l;
- vadjust = gfx_get_vtotal() - gfx_get_vsync_end() + 1l;
-
- /* LEFT CLIPPING */
-
- if (x < 0)
- {
- gfx_set_video_left_crop ((unsigned short)(-x));
- xstart = hadjust;
- }
- else
- {
- gfx_set_video_left_crop (0);
- xstart = (unsigned long)x + hadjust;
- }
-
- /* HORIZONTAL END */
- /* End positions in register are non-inclusive (one more than the actual end) */
-
- if ((x + w) < gfx_get_hactive())
- xend = (unsigned long)x + (unsigned long)w + hadjust;
-
- /* RIGHT-CLIPPING */
- else
- xend = (unsigned long)gfx_get_hactive() + hadjust;
-
- /* VERTICAL START */
-
- ystart = (unsigned long)y + vadjust;
-
- /* VERTICAL END */
-
- if ((y + h) < gfx_get_vactive())
- yend = (unsigned long)y + (unsigned long)h + vadjust;
-
- /* BOTTOM-CLIPPING */
- else
- yend = (unsigned long)gfx_get_vactive() + vadjust;
-
- /* SET VIDEO POSITION */
-
- WRITE_VID32(RCDF_VIDEO_X_POS, (xend << 16) | xstart);
- WRITE_VID32(RCDF_VIDEO_Y_POS, (yend << 16) | ystart);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_left_crop
- *
- * This routine sets the number of pixels which will be cropped from the
- * beginning of each video line. The video window will begin to display only
- * from the pixel following the cropped pixels, and the cropped pixels
- * will be ignored.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_left_crop(unsigned short x)
-#else
-int gfx_set_video_left_crop(unsigned short x)
-#endif
-{
- unsigned long vcfg, initread;
-
- /* CLIPPING ON LEFT */
- /* Adjust initial read for scale, checking for divide by zero */
-
- if (gfx_vid_dstw)
- initread = (unsigned long)x * gfx_vid_srcw / gfx_vid_dstw;
- else initread = 0;
-
- /* SET INITIAL READ ADDRESS */
-
- vcfg = READ_VID32(RCDF_VIDEO_CONFIG);
- vcfg &= ~RCDF_VCFG_INIT_READ_MASK;
- vcfg |= (initread << 15) & RCDF_VCFG_INIT_READ_MASK;
- WRITE_VID32(RCDF_VIDEO_CONFIG, vcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_color_key
- *
- * This routine specifies the color key value and mask for the video overlay
- * hardware. To disable color key, the color and mask should both be set to
- * zero. The hardware uses the color key in the following equation:
- *
- * ((source data) & (color key mask)) == ((color key) & (color key mask))
- *
- * If "graphics" is set to TRUE, the source data is graphics, and color key
- * is an RGB value. If "graphics" is set to FALSE, the source data is the video,
- * and color key is a YUV value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-#else
-int gfx_set_video_color_key(unsigned long key, unsigned long mask,
- int graphics)
-#endif
-{
- unsigned long dcfg = 0;
-
- /* SET RCDF COLOR KEY VALUE */
-
- WRITE_VID32(RCDF_VIDEO_COLOR_KEY, key);
- WRITE_VID32(RCDF_VIDEO_COLOR_MASK, mask);
-
- /* SELECT GRAPHICS OR VIDEO DATA TO COMPARE TO THE COLOR KEY */
-
- dcfg = READ_VID32(RCDF_DISPLAY_CONFIG);
- if (graphics & 0x01) dcfg &= ~RCDF_DCFG_VG_CK;
- else dcfg |= RCDF_DCFG_VG_CK;
- WRITE_VID32(RCDF_DISPLAY_CONFIG, dcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_filter
- *
- * This routine enables or disables the video overlay filters.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_filter(int xfilter, int yfilter)
-#else
-int gfx_set_video_filter(int xfilter, int yfilter)
-#endif
-{
- unsigned long vcfg = 0;
-
- /* ENABLE OR DISABLE DISPLAY FILTER VIDEO OVERLAY FILTERS */
-
- vcfg = READ_VID32(RCDF_VIDEO_CONFIG);
- vcfg &= ~(RCDF_VCFG_X_FILTER_EN | RCDF_VCFG_Y_FILTER_EN);
- if (xfilter) vcfg |= RCDF_VCFG_X_FILTER_EN;
- if (yfilter) vcfg |= RCDF_VCFG_Y_FILTER_EN;
- WRITE_VID32(RCDF_VIDEO_CONFIG, vcfg);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette
- *
- * This routine loads the video hardware palette. If a NULL pointer is
- * specified, the palette is bypassed (for Redcloud, this means loading the
- * palette with identity values).
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_palette(unsigned long *palette)
-#else
-int gfx_set_video_palette(unsigned long *palette)
-#endif
-{
- unsigned long i, entry;
-
- /* LOAD REDCLOUD VIDEO PALETTE */
-
- WRITE_VID32(RCDF_PALETTE_ADDRESS, 0);
- for (i = 0; i < 256; i++)
- {
- if (palette) entry = palette[i];
- else entry = i | (i << 8) | (i << 16);
- WRITE_VID32(RCDF_PALETTE_DATA, entry);
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_palette_entry
- *
- * This routine loads a single entry of the video hardware palette.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_palette_entry(unsigned long index, unsigned long palette)
-#else
-int gfx_set_video_palette_entry(unsigned long index, unsigned long palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* SET A SINGLE ENTRY */
-
- WRITE_VID32(RCDF_PALETTE_ADDRESS, index);
- WRITE_VID32(RCDF_PALETTE_DATA, palette);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_request()
- *
- * This routine sets the horizontal (pixel) and vertical (line) video request
- * values.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_request(short x, short y)
-#else
-int gfx_set_video_request(short x, short y)
-#endif
-{
- /* SET DISPLAY FILTER VIDEO REQUEST */
-
- x += gfx_get_htotal() - gfx_get_hsync_end() - 2;
- y += gfx_get_vtotal() - gfx_get_vsync_end() + 1;
-
- if ((x < 0) || (x > RCDF_VIDEO_REQUEST_MASK) ||
- (y < 0) || (y > RCDF_VIDEO_REQUEST_MASK))
- return GFX_STATUS_BAD_PARAMETER;
-
- WRITE_VID32(RCDF_VIDEO_REQUEST, ((unsigned long)x << RCDF_VIDEO_X_REQUEST_POS) |
- ((unsigned long)y << RCDF_VIDEO_Y_REQUEST_POS));
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_cursor()
- *
- * This routine configures the video hardware cursor.
- * If the "mask"ed bits in the graphics pixel match "key", then either "color1"
- * or "color2" will be used for this pixel, according to the value of bit
- * number "select_color2" of the graphics pixel.
- *
- * key - 24 bit RGB value
- * mask - 24 bit mask
- * color1, color2 - RGB or YUV, depending on the current color space conversion
- * select_color2 - value between 0 to 23
- *
- * To disable match, a "mask" and "key" value of 0xffffff should be set,
- * because the graphics pixels incoming to the video processor have maximum 16
- * bits set (0xF8FCF8).
- *
- * This feature is useful for disabling alpha blending of the cursor.
- * Otherwise cursor image would be blurred (or completely invisible if video
- * alpha is maximum value).
- * Note: the cursor pixel replacements take place both inside and outside the
- * video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_cursor(unsigned long key, unsigned long mask, unsigned short select_color2,
- unsigned long color1, unsigned long color2)
-#else
-int gfx_set_video_cursor(unsigned long key, unsigned long mask, unsigned short select_color2,
- unsigned long color1, unsigned long color2)
-#endif
-{
- if (select_color2 > RCDF_CURSOR_COLOR_BITS) return GFX_STATUS_BAD_PARAMETER;
- key = (key & RCDF_COLOR_MASK) | ((unsigned long)select_color2 << RCDF_CURSOR_COLOR_KEY_OFFSET_POS);
- WRITE_VID32(RCDF_CURSOR_COLOR_KEY, key);
- WRITE_VID32(RCDF_CURSOR_COLOR_MASK, mask);
- WRITE_VID32(RCDF_CURSOR_COLOR_1, color1);
- WRITE_VID32(RCDF_CURSOR_COLOR_2, color2);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_video_cursor()
- *
- * This routine configures the video hardware cursor.
- * If the "mask"ed bits in the graphics pixel match "key", then either "color1"
- * or "color2" will be used for this pixel, according to the value of bit
- * number "select_color2" of the graphics pixel.
- *
- * key - 24 bit RGB value
- * mask - 24 bit mask
- * color1, color2 - RGB or YUV, depending on the current color space conversion
- * select_color2 - value between 0 to 23
- *
- * To disable match, a "mask" and "key" value of 0xffffff should be set,
- * because the graphics pixels incoming to the video processor have maximum 16
- * bits set (0xF8FCF8).
- *
- * This feature is useful for disabling alpha blending of the cursor.
- * Otherwise cursor image would be blurred (or completely invisible if video
- * alpha is maximum value).
- * Note: the cursor pixel replacements take place both inside and outside the
- * video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_video_cursor_enable (int enable)
-#else
-int gfx_set_video_cursor_enable (int enable)
-#endif
-{
- unsigned long temp = READ_VID32 (RCDF_CURSOR_COLOR_KEY);
-
- if (enable) temp |= RCDF_CURSOR_COLOR_KEY_ENABLE;
- else temp &= ~RCDF_CURSOR_COLOR_KEY_ENABLE;
-
- WRITE_VID32 (RCDF_CURSOR_COLOR_KEY, temp);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_enable
- *
- * This routine enables or disables the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_alpha_enable(int enable)
-#else
-int gfx_set_alpha_enable(int enable)
-#endif
-{
- unsigned long address = 0, value = 0;
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = RCDF_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 5);
- value = READ_VID32(address);
- if (enable) value |= RCDF_ACTRL_WIN_ENABLE;
- else value &= ~(RCDF_ACTRL_WIN_ENABLE);
- WRITE_VID32(address, value);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_window
- *
- * This routine sets the size of the currently selected alpha region.
- * Note: "x" and "y" are signed to enable using negative values needed for
- * implementing workarounds of hardware issues.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_alpha_window(short x, short y,
- unsigned short width, unsigned short height)
-#else
-int gfx_set_alpha_window(short x, short y,
- unsigned short width, unsigned short height)
-#endif
-{
- unsigned long address = 0;
-
- /* CHECK FOR CLIPPING */
-
- if ((x + width) > gfx_get_hactive()) width = gfx_get_hactive() - x;
- if ((y + height) > gfx_get_vactive()) height = gfx_get_vactive() - y;
-
- /* ADJUST POSITIONS */
-
- x += gfx_get_htotal() - gfx_get_hsync_end() - 2;
- y += gfx_get_vtotal() - gfx_get_vsync_end() + 1;
-
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = RCDF_ALPHA_XPOS_1 + ((unsigned long)gfx_alpha_select << 5);
-
- /* END POSITIONS IN REGISTERS ARE NON-INCLUSIVE (ONE MORE THAN ACTUAL END) */
-
- WRITE_VID32(address, (unsigned long) x |
- ((unsigned long) (x + width) << 16));
- WRITE_VID32(address + 8, (unsigned long) y |
- ((unsigned long) (y + height) << 16));
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_value
- *
- * This routine sets the alpha value for the currently selected alpha
- * region. It also specifies an increment/decrement value for fading.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_alpha_value(unsigned char alpha, char delta)
-#else
-int gfx_set_alpha_value(unsigned char alpha, char delta)
-#endif
-{
- unsigned long address = 0, value = 0;
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = RCDF_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 5);
- value = READ_VID32(address);
- value &= RCDF_ACTRL_WIN_ENABLE; /* keep only enable bit */
- value |= (unsigned long) alpha;
- value |= (((unsigned long) delta) & 0xff) << 8;
- value |= RCDF_ACTRL_LOAD_ALPHA;
- WRITE_VID32(address, value);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_priority
- *
- * This routine sets the priority of the currently selected alpha region.
- * A higher value indicates a higher priority.
- * Note: Priority of enabled alpha windows must be different.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_alpha_priority(int priority)
-#else
-int gfx_set_alpha_priority(int priority)
-#endif
-{
- unsigned long pos = 0, value = 0;
- if (priority > 3) return(GFX_STATUS_BAD_PARAMETER);
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- value = READ_VID32(RCDF_VID_ALPHA_CONTROL);
- pos = 16 + (gfx_alpha_select << 1);
- value &= ~(0x03l << pos);
- value |= (unsigned long)priority << pos;
- WRITE_VID32(RCDF_VID_ALPHA_CONTROL, value);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_color
- *
- * This routine sets the color to be displayed inside the currently selected
- * alpha window when there is a color key match (when the alpha color
- * mechanism is enabled).
- * "color" is an RGB value (for RGB blending) or a YUV value (for YUV blending).
- * In Interlaced YUV blending mode, Y/2 value should be used.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_alpha_color(unsigned long color)
-#else
-int gfx_set_alpha_color(unsigned long color)
-#endif
-{
- unsigned long address = 0;
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = RCDF_ALPHA_COLOR_1 + ((unsigned long)gfx_alpha_select << 5);
- WRITE_VID32(address, color);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_alpha_color_enable
- *
- * Enable or disable the color mechanism in the alpha window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_alpha_color_enable(int enable)
-#else
-int gfx_set_alpha_color_enable(int enable)
-#endif
-{
- unsigned long color;
- unsigned long address = 0;
-
- if (gfx_alpha_select > 2) return(GFX_STATUS_UNSUPPORTED);
- address = RCDF_ALPHA_COLOR_1 + ((unsigned long)gfx_alpha_select << 5);
- color = READ_VID32(address);
- if (enable)
- color |= RCDF_ALPHA_COLOR_ENABLE;
- else
- color &= ~RCDF_ALPHA_COLOR_ENABLE;
- WRITE_VID32(address, color);
- return(GFX_STATUS_OK);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_set_no_ck_outside_alpha
- *
- * This function affects where inside the video window color key or chroma
- * key comparison is done:
- * If enable is TRUE, color/chroma key comparison is performed only inside
- * the enabled alpha windows. Outside the (enabled) alpha windows, only video
- * is displayed if color key is used, and only graphics is displayed if chroma
- * key is used.
- * If enable is FALSE, color/chroma key comparison is performed in all the
- * video window area.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_set_no_ck_outside_alpha(int enable)
-#else
-int gfx_set_no_ck_outside_alpha(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VID32(RCDF_VID_ALPHA_CONTROL);
- if (enable)
- WRITE_VID32(RCDF_VID_ALPHA_CONTROL, value | RCDF_NO_CK_OUTSIDE_ALPHA);
- else
- WRITE_VID32(RCDF_VID_ALPHA_CONTROL, value & ~RCDF_NO_CK_OUTSIDE_ALPHA);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_clock_frequency
- *
- * This routine returns the current clock frequency in 16.16 format.
- * It reads the current register value and finds the match in the table.
- * If no match is found, this routine returns 0.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_clock_frequency(void)
-#else
-unsigned long gfx_get_clock_frequency(void)
-#endif
-{
- Q_WORD msr_value;
- RCDFPLLENTRY *PLLTable;
- int index;
- unsigned long value, mask = 0x00001FFF;
- unsigned long post_div3 = 0, pre_mult2 = 0;
-
- /* READ PLL SETTING */
-
- gfx_msr_read (RC_ID_MCP, MCP_DOTPLL, &msr_value);
- value = msr_value.high & mask;
-
- /* READ DIVISOR SETTINGS */
-
- if ((gfx_cpu_version & 0xFF00) == 0x200)
- {
- PLLTable = RCDF_PLLtable48MHz;
-
- gfx_msr_read (RC_ID_MCP, MCP_SYS_RSTPLL, &msr_value);
- post_div3 = (msr_value.low & MCP_DOTPOSTDIV3) ? 1 : 0;
- pre_mult2 = (msr_value.low & MCP_DOTPREMULT2) ? 1 : 0;
- }
- else
- PLLTable = RCDF_PLLtable14MHz;
-
- /* SEARCH FOR A MATCH */
-
- for (index = 0; index < NUM_RCDF_FREQUENCIES; index++)
- {
- if ((PLLTable[index].pll_value & mask) == value &&
- post_div3 == PLLTable[index].post_div3 &&
- pre_mult2 == PLLTable[index].pre_mul2)
- return(PLLTable[index].frequency);
- }
- return(0);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*---------------------------------------------------------------------------
- * gfx_get_sync_polarities
- *
- * This routine returns the polarities of the sync pulses:
- * Bit 0: Set if negative horizontal polarity.
- * Bit 1: Set if negative vertical polarity.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_sync_polarities(void)
-#else
-int gfx_get_sync_polarities(void)
-#endif
-{
- int polarities = 0;
- if (READ_VID32(RCDF_DISPLAY_CONFIG) & RCDF_DCFG_CRT_HSYNC_POL) polarities |= 1;
- if (READ_VID32(RCDF_DISPLAY_CONFIG) & RCDF_DCFG_CRT_VSYNC_POL) polarities |= 2;
- return(polarities);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_palette_entry
- *
- * This routine returns a single palette entry.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_palette_entry(unsigned long index, unsigned long *palette)
-#else
-int gfx_get_video_palette_entry(unsigned long index, unsigned long *palette)
-#endif
-{
- if (index > 0xFF)
- return GFX_STATUS_BAD_PARAMETER;
-
- /* READ A SINGLE ENTRY */
-
- WRITE_VID32 (RCDF_PALETTE_ADDRESS, index);
- *palette = READ_VID32 (RCDF_PALETTE_DATA);
-
- return (GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_enable
- *
- * This routine returns the value "one" if video overlay is currently enabled,
- * otherwise it returns the value "zero".
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_enable(void)
-#else
-int gfx_get_video_enable(void)
-#endif
-{
- if (READ_VID32(RCDF_VIDEO_CONFIG) & RCDF_VCFG_VID_EN) return(1);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_format
- *
- * This routine returns the current video overlay format.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_format(void)
-#else
-int gfx_get_video_format(void)
-#endif
-{
- unsigned long ctrl, vcfg;
-
- ctrl = READ_VID32(RCDF_VID_ALPHA_CONTROL);
- vcfg = READ_VID32(RCDF_VIDEO_CONFIG);
-
- if (ctrl & RCDF_VIDEO_INPUT_IS_RGB)
- {
- switch (vcfg & RCDF_VCFG_VID_INP_FORMAT)
- {
- case RCDF_VCFG_UYVY_FORMAT: return VIDEO_FORMAT_RGB;
- case RCDF_VCFG_Y2YU_FORMAT: return VIDEO_FORMAT_P2M_P2L_P1M_P1L;
- case RCDF_VCFG_YUYV_FORMAT: return VIDEO_FORMAT_P1M_P1L_P2M_P2L;
- case RCDF_VCFG_YVYU_FORMAT: return VIDEO_FORMAT_P1M_P2L_P2M_P1L;
- }
- }
-
- if (vcfg & RCDF_VCFG_4_2_0_MODE)
- {
- switch (vcfg & RCDF_VCFG_VID_INP_FORMAT)
- {
- case RCDF_VCFG_UYVY_FORMAT: return VIDEO_FORMAT_Y0Y1Y2Y3;
- case RCDF_VCFG_Y2YU_FORMAT: return VIDEO_FORMAT_Y3Y2Y1Y0;
- case RCDF_VCFG_YUYV_FORMAT: return VIDEO_FORMAT_Y1Y0Y3Y2;
- case RCDF_VCFG_YVYU_FORMAT: return VIDEO_FORMAT_Y1Y2Y3Y0;
- }
- }
- else
- {
- switch (vcfg & RCDF_VCFG_VID_INP_FORMAT)
- {
- case RCDF_VCFG_UYVY_FORMAT: return VIDEO_FORMAT_UYVY;
- case RCDF_VCFG_Y2YU_FORMAT: return VIDEO_FORMAT_Y2YU;
- case RCDF_VCFG_YUYV_FORMAT: return VIDEO_FORMAT_YUYV;
- case RCDF_VCFG_YVYU_FORMAT: return VIDEO_FORMAT_YVYU;
- }
- }
- return (GFX_STATUS_ERROR);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_src_size
- *
- * This routine returns the size of the source video overlay buffer. The
- * return value is (height << 16) | width.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_src_size(void)
-#else
-unsigned long gfx_get_video_src_size(void)
-#endif
-{
- unsigned long width, height, scale, delta;
- int down_enable;
-
- /* DETERMINE SOURCE WIDTH FROM THE DISPLAY FILTER VIDEO LINE SIZE */
-
- width = (READ_VID32(RCDF_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(RCDF_VIDEO_CONFIG) & RCDF_VCFG_LINE_SIZE_UPPER)
- width += 512l;
-
- /* DETERMINE SOURCE HEIGHT FROM THE DISPLAY FILTER HEIGHT AND SCALE VALUES */
- /* There is no true "source buffer size" in Redcloud. Instead, the VG module */
- /* provides video data as needed on a per-line basis. The source buffer size */
- /* is always assumed to equal the amount of required video data. The returned */
- /* height is equal to the height of the required video buffer data (before all */
- /* scaling.) */
-
- scale = (READ_VID32 (RCDF_VIDEO_SCALE) >> 16) & 0x3FFF;
- height = ((READ_VID32 (RCDF_VIDEO_Y_POS) >> 16) & 0x7FF) -
- (READ_VID32 (RCDF_VIDEO_Y_POS) & 0x7FF);
- delta = gfx_get_video_downscale_delta();
- down_enable = gfx_get_video_vertical_downscale_enable();
-
- /* REVERSE UPSCALING */
-
- if (height)
- height = ((scale * (height - 1l)) / 0x2000l) + 2l;
-
- /* REVERSE DOWNSCALING */
- /* Original lines = height * (0x3FFF + delta) / 0x3FFF */
- /* As this may cause rounding errors, we add 1 to the */
- /* returned source size. The return value of this */
- /* function could thus be off by 1. */
-
- if (down_enable && height)
- height = ((height * (0x3FFFl + delta)) / 0x3FFFl) + 1;
-
- return((height << 16) | width);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_line_size
- *
- * This routine returns the line size of the source video overlay buffer, in
- * pixels.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_line_size(void)
-#else
-unsigned long gfx_get_video_line_size(void)
-#endif
-{
- unsigned long width = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE RCDF VIDEO LINE SIZE */
-
- width = (READ_VID32(RCDF_VIDEO_CONFIG) >> 7) & 0x000001FE;
- if (READ_VID32(RCDF_VIDEO_CONFIG) & RCDF_VCFG_LINE_SIZE_UPPER)
- width += 512l;
- return(width);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_xclip
- *
- * This routine returns the number of bytes clipped on the left side of a
- * video overlay line (skipped at beginning).
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_xclip(void)
-#else
-unsigned long gfx_get_video_xclip(void)
-#endif
-{
- unsigned long clip = 0;
-
- /* DETERMINE SOURCE WIDTH FROM THE RCDF VIDEO LINE SIZE */
-
- clip = (READ_VID32(RCDF_VIDEO_CONFIG) >> 14) & 0x000007FC;
- return(clip);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_offset
- *
- * This routine returns the current offset for the video overlay buffer.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_offset(void)
-#else
-unsigned long gfx_get_video_offset(void)
-#endif
-{
- return(gfx_get_display_video_offset());
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_yuv_offsets
- *
- * This routine returns the current offsets for the video overlay buffer when in 4:2:0.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_video_yuv_offsets(unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset)
-#else
-void gfx_get_video_yuv_offsets(unsigned long *yoffset, unsigned long *uoffset,
- unsigned long *voffset)
-#endif
-{
- gfx_get_display_video_yuv_offsets(yoffset, uoffset, voffset);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_video_yuv_pitch
- *
- * This routine returns the current pitch values for the video overlay buffer.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
-#else
-void gfx_get_video_yuv_pitch(unsigned long *ypitch, unsigned long *uvpitch)
-#endif
-{
- gfx_get_display_video_yuv_pitch(ypitch, uvpitch);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_scale
- *
- * This routine returns the scale factor for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_scale(void)
-#else
-unsigned long gfx_get_video_scale(void)
-#endif
-{
- return(READ_VID32(RCDF_VIDEO_SCALE));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_delta
- *
- * This routine returns the vertical downscale factor for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_downscale_delta(void)
-#else
-unsigned long gfx_get_video_downscale_delta(void)
-#endif
-{
- /* USE PRIVATE ROUTINE TO ABSTRACT THE DIPSLAY CONTROLLER */
-
- return (gfx_get_display_video_downscale_delta());
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_vertical_downscale_enable
- *
- * This routine returns the vertical downscale enable for the video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_vertical_downscale_enable(void)
-#else
-int gfx_get_video_vertical_downscale_enable(void)
-#endif
-{
- /* USE PRIVATE ROUTINE TO ABSTRACT THE DIPSLAY CONTROLLER */
-
- return (gfx_get_display_video_downscale_enable ());
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_config
- *
- * This routine returns the current type and value of video downscaling.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_downscale_config(unsigned short *type, unsigned short *m)
-#else
-int gfx_get_video_downscale_config(unsigned short *type, unsigned short *m)
-#endif
-{
- unsigned long downscale;
-
- downscale = READ_VID32(RCDF_VIDEO_DOWNSCALER_CONTROL);
- *m = (unsigned short)((downscale & RCDF_VIDEO_DOWNSCALE_FACTOR_MASK) >> RCDF_VIDEO_DOWNSCALE_FACTOR_POS) + 1;
-
- switch(downscale & RCDF_VIDEO_DOWNSCALE_TYPE_MASK)
- {
- case RCDF_VIDEO_DOWNSCALE_TYPE_A:
- *type = VIDEO_DOWNSCALE_KEEP_1_OF;
- break;
- case RCDF_VIDEO_DOWNSCALE_TYPE_B:
- *type = VIDEO_DOWNSCALE_DROP_1_OF;
- break;
- default:
- return GFX_STATUS_ERROR;
- break;
- }
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_coefficients
- *
- * This routine returns the current video downscaling coefficients.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_video_downscale_coefficients(unsigned short *coef1, unsigned short *coef2,
- unsigned short *coef3, unsigned short *coef4)
-#else
-void gfx_get_video_downscale_coefficients(unsigned short *coef1, unsigned short *coef2,
- unsigned short *coef3, unsigned short *coef4)
-#endif
-{
- unsigned long coef;
-
- coef = READ_VID32(RCDF_VIDEO_DOWNSCALER_COEFFICIENTS);
- *coef1 = (unsigned short)((coef >> RCDF_VIDEO_DOWNSCALER_COEF1_POS) & RCDF_VIDEO_DOWNSCALER_COEF_MASK);
- *coef2 = (unsigned short)((coef >> RCDF_VIDEO_DOWNSCALER_COEF2_POS) & RCDF_VIDEO_DOWNSCALER_COEF_MASK);
- *coef3 = (unsigned short)((coef >> RCDF_VIDEO_DOWNSCALER_COEF3_POS) & RCDF_VIDEO_DOWNSCALER_COEF_MASK);
- *coef4 = (unsigned short)((coef >> RCDF_VIDEO_DOWNSCALER_COEF4_POS) & RCDF_VIDEO_DOWNSCALER_COEF_MASK);
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_downscale_enable
- *
- * This routine returns 1 if video downscaling is currently enabled,
- * or 0 if it is currently disabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_video_downscale_enable(int *enable)
-#else
-void gfx_get_video_downscale_enable(int *enable)
-#endif
-{
- if (READ_VID32(RCDF_VIDEO_DOWNSCALER_CONTROL) & RCDF_VIDEO_DOWNSCALE_ENABLE)
- *enable = 1;
- else
- *enable = 0;
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_dst_size
- *
- * This routine returns the size of the displayed video overlay window.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_dst_size(void)
-#else
-unsigned long gfx_get_video_dst_size(void)
-#endif
-{
- unsigned long xsize, ysize;
-
- xsize = READ_VID32(RCDF_VIDEO_X_POS);
- xsize = ((xsize >> 16) & 0x7FF) - (xsize & 0x7FF);
- ysize = READ_VID32(RCDF_VIDEO_Y_POS);
- ysize = ((ysize >> 16) & 0x7FF) - (ysize & 0x7FF);
- return((ysize << 16) | xsize);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_position
- *
- * This routine returns the position of the video overlay window. The
- * return value is (ypos << 16) | xpos.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_position(void)
-#else
-unsigned long gfx_get_video_position(void)
-#endif
-{
- unsigned long hadjust, vadjust;
- unsigned long xpos, ypos;
-
- /* READ HARDWARE POSITION */
-
- xpos = READ_VID32(RCDF_VIDEO_X_POS) & 0x000007FF;
- ypos = READ_VID32(RCDF_VIDEO_Y_POS) & 0x000007FF;
-
- /* GET ADJUSTMENT VALUES */
- /* Use routines to abstract version of display controller. */
-
- hadjust = (unsigned long)gfx_get_htotal() - (unsigned long)gfx_get_hsync_end() - 14l;
- vadjust = (unsigned long)gfx_get_vtotal() - (unsigned long)gfx_get_vsync_end() + 1l;
- xpos -= hadjust;
- ypos -= vadjust;
- return((ypos << 16) | (xpos & 0x0000FFFF));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key
- *
- * This routine returns the current video color key value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_color_key(void)
-#else
-unsigned long gfx_get_video_color_key(void)
-#endif
-{
- return(READ_VID32(RCDF_VIDEO_COLOR_KEY));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_mask
- *
- * This routine returns the current video color mask value.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_get_video_color_key_mask(void)
-#else
-unsigned long gfx_get_video_color_key_mask(void)
-#endif
-{
- return(READ_VID32(RCDF_VIDEO_COLOR_MASK));
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_color_key_src
- *
- * This routine returns 0 for video data compare, 1 for graphics data.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_color_key_src(void)
-#else
-int gfx_get_video_color_key_src(void)
-#endif
-{
- if (READ_VID32(RCDF_DISPLAY_CONFIG) & RCDF_DCFG_VG_CK) return(0);
- return(1);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_filter
- *
- * This routine returns if the filters are currently enabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_filter(void)
-#else
-int gfx_get_video_filter(void)
-#endif
-{
- int retval = 0;
- if (READ_VID32(RCDF_VIDEO_CONFIG) & RCDF_VCFG_X_FILTER_EN)
- retval |= 1;
- if (READ_VID32(RCDF_VIDEO_CONFIG) & RCDF_VCFG_Y_FILTER_EN)
- retval |= 2;
- return(retval);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_request
- *
- * This routine returns the horizontal (pixel) and vertical (lines) video
- * request values.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_request(short *x, short *y)
-#else
-int gfx_get_video_request(short *x, short *y)
-#endif
-{
- unsigned long request = 0;
- request = (READ_VID32(RCDF_VIDEO_REQUEST));
- *x = (short)((request >> RCDF_VIDEO_X_REQUEST_POS) & RCDF_VIDEO_REQUEST_MASK);
- *y = (short)((request >> RCDF_VIDEO_Y_REQUEST_POS) & RCDF_VIDEO_REQUEST_MASK);
-
- *x -= gfx_get_htotal() - gfx_get_hsync_end() - 2;
- *y -= gfx_get_vtotal() - gfx_get_vsync_end() + 1;
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_video_cursor()
- *
- * This routine configures the video hardware cursor.
- * If the "mask"ed bits in the graphics pixel match "key", then either "color1"
- * or "color2" will be used for this pixel, according to the value of the bit
- * in offset "select_color2".
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-int redcloud_get_video_cursor(unsigned long *key, unsigned long *mask, unsigned short *select_color2,
- unsigned long *color1, unsigned short *color2)
-#else
-int gfx_get_video_cursor(unsigned long *key, unsigned long *mask, unsigned short *select_color2,
- unsigned long *color1, unsigned short *color2)
-#endif
-{
- *select_color2 = (unsigned short)(READ_VID32(RCDF_CURSOR_COLOR_KEY) >> RCDF_CURSOR_COLOR_KEY_OFFSET_POS);
- *key = READ_VID32(RCDF_CURSOR_COLOR_KEY) & RCDF_COLOR_MASK;
- *mask = READ_VID32(RCDF_CURSOR_COLOR_MASK) & RCDF_COLOR_MASK;
- *color1 = READ_VID32(RCDF_CURSOR_COLOR_1) & RCDF_COLOR_MASK;
- *color2 = (unsigned short)(READ_VID32(RCDF_CURSOR_COLOR_2) & RCDF_COLOR_MASK);
- return(0);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_crc
- *
- * This routine returns the hardware CRC value, which is used for automated
- * testing. The value is like a checksum, but will change if pixels move
- * locations.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_read_crc(void)
-#else
-unsigned long gfx_read_crc(void)
-#endif
-{
- Q_WORD msr_value;
- unsigned long crc = 0xFFFFFFFF;
-
- /* DISABLE 32-BIT CRCS */
- /* For GX1.x, this is a reserved bit, and is assumed to be a benign access */
-
- gfx_msr_read (RC_ID_DF, RCDF_MBD_MSR_DIAG_DF, &msr_value);
- msr_value.low &= ~RCDF_DIAG_32BIT_CRC;
- gfx_msr_write (RC_ID_DF, RCDF_MBD_MSR_DIAG_DF, &msr_value);
-
- if (gfx_test_timing_active())
- {
- /* WAIT UNTIL ACTIVE DISPLAY */
-
- while(!gfx_test_vertical_active());
-
- /* RESET CRC DURING ACTIVE DISPLAY */
-
- WRITE_VID32(RCDF_VID_CRC, 0);
- WRITE_VID32(RCDF_VID_CRC, 1);
-
- /* WAIT UNTIL NOT ACTIVE, THEN ACTIVE, NOT ACTIVE, THEN ACTIVE */
-
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- crc = READ_VID32(RCDF_VID_CRC) >> 8;
- }
- return(crc);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_crc32
- *
- * This routine returns the 32-bit hardware CRC value, which is used for automated
- * testing. The value is like a checksum, but will change if pixels move
- * locations.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_read_crc32(void)
-#else
-unsigned long gfx_read_crc32(void)
-#endif
-{
- Q_WORD msr_value;
- unsigned long crc = 0xFFFFFFFF;
-
- /* ENABLE 32-BIT CRCS */
- /* For GX1.x, this is a reserved bit, and is assumed to be a benign access */
-
- gfx_msr_read (RC_ID_DF, RCDF_MBD_MSR_DIAG_DF, &msr_value);
- msr_value.low |= RCDF_DIAG_32BIT_CRC;
- gfx_msr_write (RC_ID_DF, RCDF_MBD_MSR_DIAG_DF, &msr_value);
-
- if (gfx_test_timing_active())
- {
- /* WAIT UNTIL ACTIVE DISPLAY */
-
- while(!gfx_test_vertical_active());
-
- /* RESET CRC DURING ACTIVE DISPLAY */
-
- WRITE_VID32(RCDF_VID_CRC, 0);
- WRITE_VID32(RCDF_VID_CRC, 1);
-
- /* WAIT UNTIL NOT ACTIVE, THEN ACTIVE, NOT ACTIVE, THEN ACTIVE */
-
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- crc = READ_VID32(RCDF_VID_CRC32);
- }
- return(crc);
-}
-
-/*---------------------------------------------------------------------------
- * gfx_read_window_crc
- *
- * This routine returns the hardware CRC value for a subsection of the display.
- * This value is used to debug whole-screen CRC failures.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-unsigned long redcloud_read_window_crc(int source, unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, int crc32)
-#else
-unsigned long gfx_read_window_crc(int source, unsigned short x, unsigned short y,
- unsigned short width, unsigned short height, int crc32)
-#endif
-{
- Q_WORD msr_value;
- unsigned long xpos, ypos, crc = 0;
- unsigned long old_fmt = 0;
- unsigned int vsync_active_base, vsync_inactive_base, hsync_active_base;
- unsigned int vsync_active_shift, vsync_inactive_shift, hsync_active_shift;
- unsigned int vsync_bit, hsync_bit, sync_polarities = 0;
-
- /* CONFIGURE DISPLAY FILTER TO LOAD DATA ONTO LOWER 32-BITS */
-
- msr_value.high = 0;
- msr_value.low = (source == CRC_SOURCE_GFX_DATA) ? (RCDF_MBD_DIAG_EN0 | 0x0000000F) :
- (RCDF_MBD_DIAG_EN0 | 0x0000000B);
- gfx_msr_write (RC_ID_DF, MBD_MSR_DIAG, &msr_value);
-
- /* CONFIGURE DISPLAY FILTER FOR APPROPRIATE OUTPUT */
-
- if (source != CRC_SOURCE_GFX_DATA)
- {
- gfx_msr_read (RC_ID_DF, MBD_MSR_CONFIG, &msr_value);
- old_fmt = msr_value.low;
- msr_value.low &= ~(RCDF_CONFIG_FMT_MASK);
- msr_value.low |= ((source == CRC_SOURCE_FP_DATA) ? RCDF_CONFIG_FMT_FP :
- RCDF_CONFIG_FMT_CRT);
- gfx_msr_write (RC_ID_DF, MBD_MSR_CONFIG, &msr_value);
- }
-
- /* CONFIGURE MCP TO LOAD REGB DATA ONTO UPPER 32-BITS */
-
- msr_value.low = MCP_MBD_DIAG_EN1 | 0x00050000;
- gfx_msr_write (RC_ID_MCP, MBD_MSR_DIAG, &msr_value);
-
- /* ENABLE HW CLOCK GATING AND SET MCP CLOCK TO DOT CLOCK */
-
- msr_value.low = 1l;
- gfx_msr_write (RC_ID_MCP, MBD_MSR_PM, &msr_value);
- msr_value.low = 0;
- gfx_msr_write (RC_ID_MCP, MCP_DBGCLKCTL, &msr_value);
- msr_value.low = 3;
- gfx_msr_write (RC_ID_MCP, MCP_DBGCLKCTL, &msr_value);
-
- /* DISABLE MCP ACTIONS */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x00000000;
- gfx_msr_write (RC_ID_MCP, MCP_DIAGCTL, &msr_value);
-
- /* SET APPROPRIATE BASE ADDRESS */
- /* M-Sets use normal diag bits, while N-Sets use inverted diag bits */
- /* We thus use the M-sets when polling for a high signal and the N */
- /* sets when polling for a low signal. */
-
- if (source != CRC_SOURCE_GFX_DATA)
- {
- sync_polarities = gfx_get_sync_polarities ();
- vsync_bit = 29;
- hsync_bit = 30;
- }
- else
- {
- vsync_bit = 25;
- hsync_bit = 26;
- }
-
- if (sync_polarities & 1)
- {
- hsync_active_base = MCP_SETM0CTL;
- hsync_active_shift = 2;
- }
- else
- {
- hsync_active_base = MCP_SETN0CTL;
- hsync_active_shift = 1;
- }
- if (sync_polarities & 2)
- {
- vsync_active_base = MCP_SETM0CTL;
- vsync_inactive_base = MCP_SETN0CTL;
- vsync_active_shift = 2;
- vsync_inactive_shift = 1;
- }
- else
- {
- vsync_active_base = MCP_SETN0CTL;
- vsync_inactive_base = MCP_SETM0CTL;
- vsync_active_shift = 1;
- vsync_inactive_shift = 2;
- }
-
- /* SET STATE TRANSITIONS */
-
- /* STATE 0-1 TRANSITION (SET 0) */
- /* XState = 00 and VSync Inactive */
- /* Note: DF VSync = Diag Bus Bit 29 */
- /* VG VSync = Diag Bus Bit 25 */
-
- msr_value.low = 0x000000A0;
- msr_value.high = 0x00008000 | ((unsigned long)vsync_bit << 16) |
- ((unsigned long)vsync_bit << 21) |
- ((unsigned long)vsync_bit << 26);
- gfx_msr_write (RC_ID_MCP, vsync_inactive_base, &msr_value);
-
- /* STATE 1-2 TRANSITION (SET 4) */
- /* XState = 01 and VSync Active */
-
- msr_value.low = 0x000000C0;
- gfx_msr_write (RC_ID_MCP, vsync_active_base + 4, &msr_value);
-
- /* STATE 2-3 TRANSITION (SET 1) */
- /* XState = 10 and VSync Inactive */
-
- msr_value.low = 0x00000120;
- gfx_msr_write (RC_ID_MCP, vsync_inactive_base + 1, &msr_value);
-
- /* HORIZONTAL COUNTER (SET 5) */
- /* XState = 10 and HSync Active */
- /* Notes: DF HSync = Diag Bus Bit 30 */
- /* VG HSync = Diag Bus Bit 26 */
-
- msr_value.high = 0x00008000 | ((unsigned long)hsync_bit << 16) |
- ((unsigned long)hsync_bit << 21) |
- ((unsigned long)hsync_bit << 26);
- msr_value.low = 0x00000120;
- gfx_msr_write (RC_ID_MCP, hsync_active_base + 5, &msr_value);
-
- /* HORIZONTAL COUNTER RESET (SET 4) */
- /* XState = 10 and H. Counter = limit */
- /* Note: H. Counter is lower 16-bits of */
- /* RegB. */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x00000128;
- gfx_msr_write (RC_ID_MCP, vsync_inactive_base + 4, &msr_value);
-
- /* CRC TRIGGER (SET 0) */
- /* Cmp0 <= xpos < Cmp1 */
- /* Cmp2 <= ypos < Cmp2 */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x10C20120;
- gfx_msr_write (RC_ID_MCP, vsync_active_base, &msr_value);
-
- /* SET COMPARATOR VALUES */
- /* Note: The VG data outputs from the DF are delayed by one pixel clock. */
- /* In this mode, we thus add one to horizontal comparator limits. */
-
- /* COMPARATOR 0 */
- /* Lower limit = xpos + (h_blank_pixels - 1) - 3 */
- /* Notes: */
- /* 1. 3 is the pipeline delay for MCP register */
- /* data to access the diag bus */
- /* 2. h_blank_pixels = HTOTAL - HSYNC_END */
-
- xpos = (unsigned long)x + ((unsigned long)gfx_get_htotal() -
- (unsigned long)gfx_get_hsync_end() - 1l) - 3l;
- if (source == CRC_SOURCE_GFX_DATA) xpos++;
- msr_value.high = 0x00000000;
- msr_value.low = xpos;
- gfx_msr_write (RC_ID_MCP, MCP_CMPVAL0, &msr_value);
-
- /* COMPARATOR 1 */
- /* Upper limit = xpos + width + (h_blank_pixels - 1) - 3 */
-
- msr_value.low = xpos + (unsigned long)width;
- gfx_msr_write (RC_ID_MCP, MCP_CMPVAL0 + 2, &msr_value);
-
- /* COMPARATOR 2 */
- /* Lower limit = ypos + v_blank_pixels */
- /* Notes: */
- /* 1. v_blank_pixels = VTOTAL - VSYNC_END */
-
- ypos = (unsigned long)y + (unsigned long)gfx_get_vtotal() - (unsigned long)gfx_get_vsync_end();
- msr_value.low = ypos << 16;
- gfx_msr_write (RC_ID_MCP, MCP_CMPVAL0 + 4, &msr_value);
-
- /* COMPARATOR 3 */
- /* Upper limit = ypos + height + v_blank_pixels */
-
- msr_value.low = (ypos + (unsigned long)height) << 16;
- gfx_msr_write (RC_ID_MCP, MCP_CMPVAL0 + 6, &msr_value);
-
- /* SET COMPARATOR MASKS */
-
- /* COMPARATORS 0 AND 1 REFER TO LOWER 16 BITS OF REGB */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x0000FFFF;
- gfx_msr_write (RC_ID_MCP, MCP_CMPMASK0, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_CMPMASK0 + 2, &msr_value);
-
- /* COMPARATORS 2 AND 3 REFER TO UPPER 16 BITS OF REGB */
-
- msr_value.low = 0xFFFF0000;
- gfx_msr_write (RC_ID_MCP, MCP_CMPMASK0 + 4, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_CMPMASK0 + 6, &msr_value);
-
- /* SET REGA MASK TO CRC ONLY 24 BITS OF DATA */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x00FFFFFF;
- gfx_msr_write (RC_ID_MCP, MCP_REGAMASK, &msr_value);
-
- /* SET REGB VALUE */
- /* Lower 16 bits use HTOTAL - SYNC TIME - 1 to set the counter rollover limit. */
- /* Upper 16 bits use 0xFFFF to remove auto-clear behavior. */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0xFFFF0000 |
- ((gfx_get_htotal() - (gfx_get_hsync_end() - gfx_get_hsync_start()) - 1) & 0xFFFF);
- gfx_msr_write (RC_ID_MCP, MCP_REGBVAL, &msr_value);
-
- /* PROGRAM ACTIONS */
-
- /* GOTO STATE 01 */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x00000008 | (1l << vsync_inactive_shift);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 14, &msr_value);
-
- /* GOTO STATE 10 */
-
- msr_value.low = 0x00080000 | (1l << (vsync_active_shift + 16));
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 15, &msr_value);
-
- /* GOTO STATE 11 */
-
- msr_value.low = 0x00000080 | (1l << (vsync_inactive_shift + 4));
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 16, &msr_value);
-
- /* CLEAR REGB (COUNTERS) */
- /* RegB is cleared upon transitioning to state 10 */
- /* RegA is not cleared as the initial value must be 0x00000001 */
-
- msr_value.low = 0x00080000 | (1l << (vsync_active_shift + 16));
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0, &msr_value);
-
- /* CRC INTO REGA */
- /* INCREMENT H. COUNTER */
- /* cmp0 <= xpos < cmp1 */
- /* cmp2 <= ypos < cmp3 */
- /* XState = 10 */
-
- msr_value.low = 0x00000008 | (1l << vsync_active_shift) |
- 0x00800000 | (1l << (hsync_active_shift + 20));
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 1, &msr_value);
-
- /* INCREMENT V. COUNTER */
- /* V. Counter is incremented when the H. Counter */
- /* rolls over. */
-
- msr_value.low = 0x00080000 | (1l << (vsync_inactive_shift + 16));
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 2, &msr_value);
-
- /* CLEAR ALL OTHER ACTIONS */
- /* This prevents side-effects from previous accesses to the MCP */
- /* debug logic. */
- msr_value.low = 0x00000000;
- msr_value.high = 0x00000000;
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 3, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 4, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 5, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 6, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 7, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 8, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 9, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 10, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 11, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 12, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 13, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 17, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 18, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 19, &msr_value);
- gfx_msr_write (RC_ID_MCP, MCP_ACTION0 + 20, &msr_value);
-
- /* SET REGA CRC VALUE TO 1 OR 0 */
-
- if (!crc32)
- msr_value.low = 0x00000001;
- gfx_msr_write (RC_ID_MCP, MCP_REGA, &msr_value);
-
- /* SET XSTATE TO 0 */
-
- msr_value.low = 0;
- msr_value.high = 0;
- gfx_msr_write (RC_ID_MCP, MCP_XSTATE, &msr_value);
-
- /* CONFIGURE DIAG CONTROL */
- /* Set all four comparators to watch the upper diag bus. */
- /* Set REGA action1 to legacy CRC or 32-bit CRC. */
- /* Set REGB action1 to increment lower 16 bits and clear at limit. */
- /* Set REGB action2 to increment upper 16 bits. */
- /* Enable all actions. */
-
- if (crc32)
- msr_value.low = 0x9A820055;
- else
- msr_value.low = 0x9A840055;
- msr_value.high = 0x00000000;
- gfx_msr_write (RC_ID_MCP, MCP_DIAGCTL, &msr_value);
-
- /* DELAY TWO FRAMES */
-
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
- while(gfx_test_vertical_active());
- while(!gfx_test_vertical_active());
-
- /* VERIFY THAT XSTATE = 11 */
-
- gfx_msr_read (RC_ID_MCP, MCP_XSTATE, &msr_value);
- if ((msr_value.low & 3) == 3)
- {
- gfx_msr_read (RC_ID_MCP, MCP_REGA, &msr_value);
-
- crc = msr_value.low;
- if (!crc32)
- crc &= 0xFFFFFF;
- }
-
- /* DISABLE MCP AND DF DIAG BUS OUTPUTS */
-
- msr_value.low = 0x00000000;
- msr_value.high = 0x00000000;
- gfx_msr_write (RC_ID_DF, MBD_MSR_DIAG, &msr_value);
- gfx_msr_write (RC_ID_MCP, MBD_MSR_DIAG, &msr_value);
-
- /* DISABLE MCP ACTIONS */
-
- msr_value.high = 0x00000000;
- msr_value.low = 0x00000000;
- gfx_msr_write (RC_ID_MCP, MCP_DIAGCTL, &msr_value);
-
- /* RESTORE PREVIOUS OUTPUT FORMAT */
-
- if (source != CRC_SOURCE_GFX_DATA)
- {
- gfx_msr_read (RC_ID_DF, MBD_MSR_CONFIG, &msr_value);
- msr_value.low = old_fmt;
- gfx_msr_write (RC_ID_DF, MBD_MSR_CONFIG, &msr_value);
- }
- return crc;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_enable
- *
- * This routine returns 1 if the selected alpha window is currently
- * enabled, or 0 if it is currently disabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_alpha_enable(int *enable)
-#else
-void gfx_get_alpha_enable(int *enable)
-#endif
-{
- unsigned long value = 0;
- *enable = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(RCDF_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 5));
- if (value & RCDF_ACTRL_WIN_ENABLE) *enable = 1;
- }
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_size
- *
- * This routine returns the size of the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_alpha_size(unsigned short *x, unsigned short *y,
- unsigned short *width, unsigned short *height)
-#else
-void gfx_get_alpha_size(unsigned short *x, unsigned short *y,
- unsigned short *width, unsigned short *height)
-#endif
-{
- unsigned long value = 0;
- *x = 0;
- *y = 0;
- *width = 0;
- *height = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(RCDF_ALPHA_XPOS_1 + ((unsigned long)gfx_alpha_select << 5));
- *x = (unsigned short) (value & 0x000007FF);
- *width = (unsigned short) ((value >> 16) & 0x000007FF) - *x;
- value = READ_VID32(RCDF_ALPHA_YPOS_1 + ((unsigned long)gfx_alpha_select << 5));
- *y = (unsigned short) (value & 0x000007FF);
- *height = (unsigned short) ((value >> 16) & 0x000007FF) - *y;
- }
- *x -= gfx_get_htotal() - gfx_get_hsync_end() - 2;
- *y -= gfx_get_vtotal() - gfx_get_vsync_end() + 1;
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_value
- *
- * This routine returns the alpha value and increment/decrement value of
- * the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_alpha_value(unsigned char *alpha, char *delta)
-#else
-void gfx_get_alpha_value(unsigned char *alpha, char *delta)
-#endif
-{
- unsigned long value = 0;
- *alpha = 0;
- *delta = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(RCDF_ALPHA_CONTROL_1 + ((unsigned long)gfx_alpha_select << 5));
- *alpha = (unsigned char) (value & 0x00FF);
- *delta = (char) ((value >> 8) & 0x00FF);
- }
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_priority
- *
- * This routine returns the priority of the currently selected alpha region.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_alpha_priority(int *priority)
-#else
-void gfx_get_alpha_priority(int *priority)
-#endif
-{
- unsigned long pos = 0, value = 0;
- *priority = 0;
- if (gfx_alpha_select <= 2)
- {
- value = READ_VID32(RCDF_VID_ALPHA_CONTROL);
- pos = 16 + (gfx_alpha_select << 1);
- *priority = (int) ((value >> pos) & 3);
- }
- return;
-}
-
-/*---------------------------------------------------------------------------
- * gfx_get_alpha_color
- *
- * This routine returns the color register value for the currently selected
- * alpha region. Bit 24 is set if the color register is enabled.
- *---------------------------------------------------------------------------
- */
-#if GFX_VIDEO_DYNAMIC
-void redcloud_get_alpha_color(unsigned long *color)
-#else
-void gfx_get_alpha_color(unsigned long *color)
-#endif
-{
- *color = 0;
- if (gfx_alpha_select <= 2)
- {
- *color = READ_VID32(RCDF_ALPHA_COLOR_1 + ((unsigned long)gfx_alpha_select << 5));
- }
- return;
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vip_1200.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vip_1200.c
deleted file mode 100644
index 819592bc3..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vip_1200.c
+++ /dev/null
@@ -1,673 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/gfx/vip_1200.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: vip_1200.c $
- *
- * This file contains routines to control the SC1200 video input port (VIP) hardware.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_enable
- *
- * This routine enables or disables the writes to memory from the video port.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_enable(int enable)
-#else
-int gfx_set_vip_enable(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VIP32(SC1200_VIP_CONTROL);
- if (enable)
- value |= SC1200_VIP_DATA_CAPTURE_EN;
- else
- value &= ~SC1200_VIP_DATA_CAPTURE_EN;
- WRITE_VIP32(SC1200_VIP_CONTROL, value);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_capture_run_mode
- *
- * This routine selects VIP capture run mode.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_capture_run_mode(int mode)
-#else
-int gfx_set_vip_capture_run_mode(int mode)
-#endif
-{
- unsigned long value;
- value = READ_VIP32(SC1200_VIP_CONTROL);
- value &= ~SC1200_CAPTURE_RUN_MODE_MASK;
- switch(mode)
- {
- case VIP_CAPTURE_STOP_LINE:
- value |= SC1200_CAPTURE_RUN_MODE_STOP_LINE;
- break;
- case VIP_CAPTURE_STOP_FIELD:
- value |= SC1200_CAPTURE_RUN_MODE_STOP_FIELD;
- break;
- case VIP_CAPTURE_START_FIELD:
- value |= SC1200_CAPTURE_RUN_MODE_START;
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- WRITE_VIP32(SC1200_VIP_CONTROL, value);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_base
- *
- * This routine sets the odd and even base address values for the VIP memory
- * buffer.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_base(unsigned long even, unsigned long odd)
-#else
-int gfx_set_vip_base(unsigned long even, unsigned long odd)
-#endif
-{
- /* TRUE OFFSET IS SPECIFIED, NEED TO SET BIT 23 FOR HARDWARE */
-
- if (even) WRITE_VIP32(SC1200_VIP_EVEN_BASE, even + (unsigned long)gfx_phys_fbptr);
- if (odd) WRITE_VIP32(SC1200_VIP_ODD_BASE, odd + (unsigned long)gfx_phys_fbptr);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_pitch
- *
- * This routine sets the number of bytes between scanlines for the VIP data.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_pitch(unsigned long pitch)
-#else
-int gfx_set_vip_pitch(unsigned long pitch)
-#endif
-{
- WRITE_VIP32(SC1200_VIP_PITCH, pitch & SC1200_VIP_PITCH_MASK);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_mode
- *
- * This routine sets the VIP operating mode.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_mode(int mode)
-#else
-int gfx_set_vip_mode(int mode)
-#endif
-{
- unsigned long config;
-
- config = READ_VIP32(SC1200_VIP_CONFIG);
- config &= ~SC1200_VIP_MODE_MASK;
- switch(mode)
- {
- case VIP_MODE_C:
- WRITE_VIP32(SC1200_VIP_CONFIG, config | SC1200_VIP_MODE_C);
- break;
- default:
- return GFX_STATUS_BAD_PARAMETER;
- }
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_enable
- *
- * This routine enables or disables the VBI data capture.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vbi_enable(int enable)
-#else
-int gfx_set_vbi_enable(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VIP32(SC1200_VIP_CONTROL);
- if (enable) value |= SC1200_VIP_VBI_CAPTURE_EN;
- else value &= ~SC1200_VIP_VBI_CAPTURE_EN;
- WRITE_VIP32(SC1200_VIP_CONTROL, value);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_mode
- *
- * This routine sets the VBI data types captured to memory.
- * It receives a mask of all enabled types.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vbi_mode(int mode)
-#else
-int gfx_set_vbi_mode(int mode)
-#endif
-{
- unsigned long config;
-
- config = READ_VIP32(SC1200_VIP_CONFIG);
- config &= ~(SC1200_VBI_ANCILLARY_TO_MEMORY | SC1200_VBI_TASK_A_TO_MEMORY | SC1200_VBI_TASK_B_TO_MEMORY);
-
- if (mode & VBI_ANCILLARY) config |= SC1200_VBI_ANCILLARY_TO_MEMORY;
- if (mode & VBI_TASK_A) config |= SC1200_VBI_TASK_A_TO_MEMORY;
- if (mode & VBI_TASK_B) config |= SC1200_VBI_TASK_B_TO_MEMORY;
- WRITE_VIP32(SC1200_VIP_CONFIG, config);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_base
- *
- * This routine sets the odd and even base address values for VBI capture.
- *
- * "even" and "odd" should contain 16-byte aligned physical addresses.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vbi_base(unsigned long even, unsigned long odd)
-#else
-int gfx_set_vbi_base(unsigned long even, unsigned long odd)
-#endif
-{
- /* VIP HW REQUIRES THAT BASE ADDRESSES BE 16-BYTE ALIGNED */
-
- if (even) WRITE_VIP32(SC1200_VBI_EVEN_BASE, even & ~0xf);
- if (odd) WRITE_VIP32(SC1200_VBI_ODD_BASE, odd & ~0xf);
-
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_pitch
- *
- * This routine sets the number of bytes between scanlines for VBI capture.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vbi_pitch(unsigned long pitch)
-#else
-int gfx_set_vbi_pitch(unsigned long pitch)
-#endif
-{
- WRITE_VIP32(SC1200_VBI_PITCH, pitch & SC1200_VBI_PITCH_MASK);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_direct
- *
- * This routine sets the VBI lines to be passed to the Direct VIP.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vbi_direct(unsigned long even_lines, unsigned long odd_lines)
-#else
-int gfx_set_vbi_direct(unsigned long even_lines, unsigned long odd_lines)
-#endif
-{
- WRITE_VIP32(SC1200_EVEN_DIRECT_VBI_LINE_ENABLE, even_lines & SC1200_DIRECT_VBI_LINE_ENABLE_MASK);
- WRITE_VIP32(SC1200_ODD_DIRECT_VBI_LINE_ENABLE, odd_lines & SC1200_DIRECT_VBI_LINE_ENABLE_MASK);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vbi_interrupt
- *
- * This routine enables or disables the VBI field interrupt.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vbi_interrupt(int enable)
-#else
-int gfx_set_vbi_interrupt(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VIP32(SC1200_VIP_CONTROL);
- if (enable)
- value |= SC1200_VIP_VBI_FIELD_INTERRUPT_EN;
- else
- value &= ~SC1200_VIP_VBI_FIELD_INTERRUPT_EN;
- WRITE_VIP32(SC1200_VIP_CONTROL, value);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_bus_request_threshold_high
- *
- * This routine sets the VIP FIFO bus request threshold.
- * If enable is TRUE, VIP FIFO will be set to issue a bus request when it filled with 64 bytes.
- * If enable is FALSE, VIP FIFO will be set to issue a bus request when it filled with 32 bytes.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_bus_request_threshold_high(int enable)
-#else
-int gfx_set_vip_bus_request_threshold_high(int enable)
-#endif
-{
- unsigned long value;
- value = READ_VIP32(SC1200_VIP_CONFIG);
- if (enable)
- value &= ~SC1200_VIP_BUS_REQUEST_THRESHOLD;
- else
- value |= SC1200_VIP_BUS_REQUEST_THRESHOLD;
- WRITE_VIP32(SC1200_VIP_CONFIG, value);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_set_vip_last_line
- *
- * This routine sets the maximum number of lines captured in each field.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_set_vip_last_line(int last_line)
-#else
-int gfx_set_vip_last_line(int last_line)
-#endif
-{
- unsigned long value;
-
- /* This feature is implemented in Rev C1 */
- if (gfx_chip_revision < SC1200_REV_C1) return(GFX_STATUS_OK);
-
- value = READ_VIP32(SC1200_VIP_LINE_TARGET);
- value &= ~SC1200_VIP_LAST_LINE_MASK;
- value |= ((last_line & 0x3FF) << 16);
- WRITE_VIP32(SC1200_VIP_LINE_TARGET, value);
- return(GFX_STATUS_OK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_test_vip_odd_field
- *
- * This routine returns 1 if the current VIP field is odd. Otherwise returns 0.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_test_vip_odd_field(void)
-#else
-int gfx_test_vip_odd_field(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_STATUS) & SC1200_VIP_CURRENT_FIELD_ODD)
- return(1);
- else
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_test_vip_bases_updated
- *
- * This routine returns 1 if all of the VIP base registers have been updated,
- * i.e. there is no base register which has been written with a new address,
- * that VIP has not already captured or started capturing into the new address.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_test_vip_bases_updated(void)
-#else
-int gfx_test_vip_bases_updated(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_STATUS) & SC1200_VIP_BASE_NOT_UPDATED)
- return(0);
- else
- return(1);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_test_vip_fifo_overflow
- *
- * This routine returns 1 if an overflow occurred on the FIFO between the VIP
- * and the fast X-bus, 0 otherwise.
- * If an overflow occurred, the overflow status indication is reset.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_test_vip_fifo_overflow(void)
-#else
-int gfx_test_vip_fifo_overflow(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_STATUS) & SC1200_VIP_FIFO_OVERFLOW) {
- /* Bits in vip status register are either read only or reset by writing 1 */
- WRITE_VIP32(SC1200_VIP_STATUS, SC1200_VIP_FIFO_OVERFLOW);
- return(1);
- } else {
- return(0);
- }
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_line
- *
- * This routine returns the number of the current video line being
- * received by the VIP interface.
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vip_line(void)
-#else
-int gfx_get_vip_line(void)
-#endif
-{
- return (int)(READ_VIP32(SC1200_VIP_CURRENT_LINE) & SC1200_VIP_CURRENT_LINE_MASK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_base
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-unsigned long sc1200_get_vip_base(int odd)
-#else
-unsigned long gfx_get_vip_base(int odd)
-#endif
-{
- /* MASK BIT 23 AND ABOVE TO MAKE IT A TRUE OFFSET */
-
- if (odd) return(READ_VIP32(SC1200_VIP_ODD_BASE));
- return(READ_VIP32(SC1200_VIP_EVEN_BASE));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_pitch
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-unsigned long sc1200_get_vbi_pitch(void)
-#else
-unsigned long gfx_get_vbi_pitch(void)
-#endif
-{
- return(READ_VIP32(SC1200_VBI_PITCH) & SC1200_VBI_PITCH_MASK);
-}
-
-/*************************************************************/
-/* READ ROUTINES | INCLUDED FOR DIAGNOSTIC PURPOSES ONLY */
-/*************************************************************/
-
-#if GFX_READ_ROUTINES
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vip_enable(void)
-#else
-int gfx_get_vip_enable(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_CONTROL) & SC1200_VIP_DATA_CAPTURE_EN) return(1);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_pitch
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-unsigned long sc1200_get_vip_pitch(void)
-#else
-unsigned long gfx_get_vip_pitch(void)
-#endif
-{
- return(READ_VIP32(SC1200_VIP_PITCH) & SC1200_VIP_PITCH_MASK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_mode
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vip_mode(void)
-#else
-int gfx_get_vip_mode(void)
-#endif
-{
- switch(READ_VIP32(SC1200_VIP_CONFIG) & SC1200_VIP_MODE_MASK)
- {
- case SC1200_VIP_MODE_C: return VIP_MODE_C;
- default: return(0);
- }
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_enable
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vbi_enable(void)
-#else
-int gfx_get_vbi_enable(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_CONTROL) & SC1200_VIP_VBI_CAPTURE_EN) return(1);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_mode
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vbi_mode(void)
-#else
-int gfx_get_vbi_mode(void)
-#endif
-{
- int config;
- int mode = 0;
- config = (int)(READ_VIP32(SC1200_VIP_CONFIG) & (SC1200_VBI_ANCILLARY_TO_MEMORY | SC1200_VBI_TASK_A_TO_MEMORY |
- SC1200_VBI_TASK_B_TO_MEMORY));
- if (config & SC1200_VBI_ANCILLARY_TO_MEMORY) mode |= VBI_ANCILLARY;
- if (config & SC1200_VBI_TASK_A_TO_MEMORY) mode |= VBI_TASK_A;
- if (config & SC1200_VBI_TASK_B_TO_MEMORY) mode |= VBI_TASK_B;
- return mode;
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_base
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-unsigned long sc1200_get_vbi_base(int odd)
-#else
-unsigned long gfx_get_vbi_base(int odd)
-#endif
-{
- /* MASK BIT 23 AND ABOVE TO MAKE IT A TRUE OFFSET */
-
- if (odd) return(READ_VIP32(SC1200_VBI_ODD_BASE));
- return(READ_VIP32(SC1200_VBI_EVEN_BASE));
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_direct
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-unsigned long sc1200_get_vbi_direct(int odd)
-#else
-unsigned long gfx_get_vbi_direct(int odd)
-#endif
-{
- /* MASK BIT 23 AND ABOVE TO MAKE IT A TRUE OFFSET */
-
- if (odd) return(READ_VIP32(SC1200_ODD_DIRECT_VBI_LINE_ENABLE) & SC1200_DIRECT_VBI_LINE_ENABLE_MASK);
- return(READ_VIP32(SC1200_EVEN_DIRECT_VBI_LINE_ENABLE) & SC1200_DIRECT_VBI_LINE_ENABLE_MASK);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vbi_interrupt
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vbi_interrupt(void)
-#else
-int gfx_get_vbi_interrupt(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_CONTROL) & SC1200_VIP_VBI_FIELD_INTERRUPT_EN) return(1);
- return(0);
-}
-
-/*-----------------------------------------------------------------------------
- * gfx_get_vip_bus_request_threshold_high
- *-----------------------------------------------------------------------------
- */
-#if GFX_VIP_DYNAMIC
-int sc1200_get_vip_bus_request_threshold_high(void)
-#else
-int gfx_get_vip_bus_request_threshold_high(void)
-#endif
-{
- if (READ_VIP32(SC1200_VIP_CONFIG) & SC1200_VIP_BUS_REQUEST_THRESHOLD) return(1);
- return(0);
-}
-
-#endif /* GFX_READ_ROUTINES */
-
-/* END OF FILE */
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel.c
deleted file mode 100644
index 29d4025d6..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel.c,v 1.2 2002/10/18 20:02:39 tsi Exp $ */
-/*
- * $Workfile: panel.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contailns the panel include files and
- * external pointer to the hardware.
- *
- * Project: Geode Xfree Frame buffer device driver.
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#if defined(linux) /* Linux */
-
-#ifdef __KERNEL__
-
-#include <linux/string.h>
-#include <asm/io.h>
-
-#else
-
-#include <linux/fs.h>
-#include <asm/mman.h>
-
-#endif /* __KERNEL__ */
-#elif defined(_WIN32) /* windows */
-
-#include <windows.h>
-
-#endif
-
-#include "panel.h"
-#include "gfx_defs.h"
-extern unsigned char *gfx_virt_regptr;
-extern unsigned char *gfx_virt_fbptr;
-extern unsigned char *gfx_virt_vidptr;
-extern unsigned char *gfx_virt_vipptr;
-extern unsigned long gfx_detect_video(void);
-
-#define PLATFORM_DYNAMIC 1 /* runtime selection */
-#define PLATFORM_DRACO 0 /* Draco + 9210 */
-#define PLATFORM_CENTAURUS 1 /* Centaurus + 9211 RevA */
-#define PLATFORM_DORADO 1 /* Dorado + 9211 RevC */
-#define PLATFORM_GX2BASED 0 /* ??? */
-
-unsigned char *XpressROMPtr;
-
-#include "pnl_init.c"
-#include "pnl_bios.c"
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/92xx.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/92xx.h
deleted file mode 100644
index 7282ecb50..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/92xx.h
+++ /dev/null
@@ -1,466 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/92xx.h,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: 92xx.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This header file defines the Durango routines and
- * variables used to access the memory mapped regions.
- *
- * SubModule: Geode FlatPanel library
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#ifndef _92XX_h
-#define _92XX_h
-
-typedef unsigned long ULONG;
-typedef unsigned char UCHAR;
-
-#define FALSE 0
-#define TRUE 1
-#define NUM_92XX_MODES 13
-#define ONE_BYTE 1
-#define TWO_BYTES 2
-#define FOUR_BYTES 4
-
-/* LCD Registers
- * The LCD memory area is shared by both TV and LCD.
- * This offset is for LCD access.
- */
-
-#define CS92xx_LCD_OFFSET 0x00000400
-
-/* LCD CONTROL REGISTERS */
-
-#define CS92xx_LCD_PAN_TIMING1 CS92xx_LCD_OFFSET + 0x00
-
-/* flat panel(FP) timings */
-#define CS92xx_LCD_PAN_TIMING2 CS92xx_LCD_OFFSET + 0x04
-
-/* FP panel timings */
-#define CS92xx_LCD_PWR_MAN CS92xx_LCD_OFFSET + 0x08
-
-/* FP power management */
-#define CS92xx_LCD_DITH_FR_CNTRL CS92xx_LCD_OFFSET + 0x0C
-
-/* FP dither and frame rate
- * these defines are in revisions prior to C
- */
-#define CS92xx_LCD_BLOCK_SEL1 CS92xx_LCD_OFFSET + 0x10
-
-/* FRM register */
-#define CS92xx_LCD_BLOCK_SEL2 CS92xx_LCD_OFFSET + 0x14
-
-/* FRM register */
-#define CS92xx_LCD_DISPER1 CS92xx_LCD_OFFSET + 0x18
-
-/* FRM register */
-#define CS92xx_LCD_DISPER2 CS92xx_LCD_OFFSET + 0x1C
-
-/* FRM register
- * these defines are revision C
- */
-#define CS92xx_BLUE_LSFR_SEED CS92xx_LCD_OFFSET + 0x10
-
-/* FRM register */
-#define CS92xx_RED_GREEN_LSFR_SEED CS92xx_LCD_OFFSET + 0x14
-
-/* FRM register */
-#define CS92xx_FRM_MEMORY_INDEX CS92xx_LCD_OFFSET + 0x18
-
-/* FRM register */
-#define CS92xx_FRM_MEMORY_DATA CS92xx_LCD_OFFSET + 0x1C
-
-/* FRM register */
-#define CS92xx_LCD_MEM_CNTRL CS92xx_LCD_OFFSET + 0x20
-
-/* memory PLL register */
-#define CS92xx_LCD_RAM_CNTRL CS92xx_LCD_OFFSET + 0x24
-
-/* ram control */
-
-#define CS92xx_LCD_RAM_DATA CS92xx_LCD_OFFSET + 0x28 /* ram data */
-
-#define CS92xx_LCD_PAN_CRC_SIG CS92xx_LCD_OFFSET + 0x2C
-
-/* FP CRC signature */
-#define CS92xx_DEV_REV_ID CS92xx_LCD_OFFSET + 0x30
-
-/* Device and revision id */
-#define CS92xx_LCD_GPIO_DATA CS92xx_LCD_OFFSET + 0x34 /* GPIO Data */
-
-#define CS92xx_LCD_GPIO_CNTRL CS92xx_LCD_OFFSET + 0x38
-
-/* GPIO Control */
-int Pnl_Rev_ID;
-
-typedef struct
-{
- /* DISPLAY MODE PARAMETERS */
- int xres;
- int yres;
- int bpp;
- int panel_type;
- int color_type;
- /* VALUES USED TO SET THE FLAT PANEL DISPLAY CONTROLLER */
- unsigned long panel_timing1;
- unsigned long panel_timing2;
- unsigned long power_management;
- /* the following 5 registers are prior to revision C */
- unsigned long pre_C_dither_frc;
- unsigned long block_select1;
- unsigned long block_select2;
- unsigned long dispersion1;
- unsigned long dispersion2;
- /* the following 4 registers are revision C only */
- unsigned long rev_C_dither_frc;
- unsigned long blue_lsfr_seed;
- unsigned long red_green_lsfr_seed;
- unsigned long frm_memory_index;
- unsigned long frm_memory_data;
- unsigned long memory_control;
-
-} CS92xx_MODE;
-
-/* VALUES USED TO SAVE AND RESTORE 9211 REGISTERS. */
-typedef struct
-{
- unsigned long panel_state;
- /* VALUES USED TO SET THE FLAT PANEL DISPLAY CONTROLLER */
- unsigned long panel_timing1;
- unsigned long panel_timing2;
- unsigned long power_management;
- unsigned long dither_frc_ctrl;
- unsigned long blue_lsfr_seed;
- unsigned long red_green_lsfr_seed;
- unsigned long frm_memory_index;
- unsigned long frm_memory_data;
- unsigned long memory_control;
-} CS92xx_REGS;
-
-CS92xx_REGS cs9211_regs;
-/*
- *------------------------------------------------------------------------
- * PANEL MODE TABLES:
- * GLOBAL ARRAY OF FLAT PANEL MODE STRUCTURES
- *------------------------------------------------------------------------
- */
-CS92xx_MODE FPModeParams[] = {
-
-{ 640, 480, 8, PNL_SSTN, PNL_COLOR_PANEL, /* display parameters */
- 0x01e00000, 0x00034000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x25cf3096, 0xad47b81e, /* block select 1, block select 2 */
- 0x21446450, 0x21446450, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000000, /* memory control */
-},
-
-{ 640, 480, 12, PNL_TFT, PNL_COLOR_PANEL, /* display parameters */
- 0x01e00000, 0x0f100000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* block select 1, block select 2 */
- 0x00000000, 0x00000000, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000000, /* memory control */
-},
-
-{ 640, 480, 18, PNL_TFT, PNL_COLOR_PANEL, /* display parameters */
- 0x01e00000, 0x0f100000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* block select 1, block select 2 */
- 0x00000000, 0x00000000, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000000, /* memory control */
-},
-
-{ 640, 480, 16, PNL_DSTN, PNL_COLOR_PANEL, /* display parameters */
- 0x01e00000, 0x00014000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x048c26ae, 0x048c26ae, /* block select 1, block select 2 */
- 0x02468ace, 0x13579bdf, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x0000004b, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000007, /* memory control */
-},
-
-{ 640, 480, 8, PNL_DSTN, PNL_MONO_PANEL, /* display parameters */
- 0x01e00000, 0x00084000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x0000004b, /* dither and frame rate control */
- 0x25cf3096, 0xad47b81e, /* block select 1, block select 2 */
- 0x21446450, 0x21446450, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000007, /* memory control */
-},
-
-{ 640, 480, 16, PNL_DSTN, PNL_MONO_PANEL, /* display parameters */
- 0x01e00000, 0x00094000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x25cf3096, 0xad47b81e, /* block select 1, block select 2 */
- 0x81a5d470, 0x29cfb63e, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000007, /* memory control */
-},
-
-{ 800, 600, 12, PNL_TFT, PNL_COLOR_PANEL, /* display parameters */
- 0x02580000, 0x0f100000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* block select 1, block select 2 */
- 0x00000000, 0x00000000, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000000, /* memory control */
-},
-
-{ 800, 600, 18, PNL_TFT, PNL_COLOR_PANEL, /* display parameters */
- 0x02580000, 0x0f100000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* block select 1, block select 2 */
- 0x00000000, 0x00000000, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000000, /* memory control */
-},
-
-{ 800, 600, 16, PNL_DSTN, PNL_COLOR_PANEL, /* display parameters */
- 0x02580000, 0x00014000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x048c26ae, 0x048c26ae, /* block select 1, block select 2 */
- 0x02468ace, 0x13579bdf, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x0000004b, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000007, /* memory control */
-},
-
-{ 800, 600, 8, PNL_DSTN, PNL_MONO_PANEL, /* display parameters */
- 0x02580000, 0x00084000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x25cf3096, 0xad47b81e, /* block select 1, block select 2 */
- 0x21446450, 0x21446450, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x0000004b, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000007, /* memory control */
-},
-
-{ 800, 600, 16, PNL_DSTN, PNL_MONO_PANEL, /* display parameters */
- 0x02580000, 0x00094000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /* The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x25cf3096, 0xad47b81e, /* block select 1, block select 2 */
- 0x81a5d470, 0x29cfb63e, /* dispersion 1, dispersion 2 */
- /* The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000007, /* memory control */
-},
-
-{ 1024, 768, 18, PNL_TFT, PNL_COLOR_PANEL, /* display parameters */
- 0x03000000, 0x0f100000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /*The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* block select 1, block select 2 */
- 0x00000000, 0x00000000, /* dispersion 1, dispersion 2 */
- /*The next 5 values are for revision C */
- 0x00000050, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000000, /* memory control */
-},
-
-{ 1024, 768, 24, PNL_DSTN, PNL_COLOR_PANEL, /* display parameters */
- 0x03000000, 0x80024000, /* panel timing reg 1, panel timing reg 2 */
- 0x01000000, /* power management */
- /*The next 5 values are prior to revision C */
- 0x00000050, /* dither and frame rate control */
- 0x048c26ae, 0x048c26ae, /* block select 1, block select 2 */
- 0x02468ace, 0x13579bdf, /* dispersion 1, dispersion 2 */
- /*The next 5 values are for revision C */
- 0x0000004b, /* dither and frame rate control */
- 0x00000000, 0x00000000, /* blue LSFR, red and green LSFR */
- 0x00000000, 0x00000000, /* FRM memory index, FRM memory data */
- 0x00000005, /* memory control */
-}
-};
-
-#endif /* !_92XX_h */
-
-/* END OF FILE */
-
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.c
deleted file mode 100644
index 3101b967a..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.c
+++ /dev/null
@@ -1,967 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.c,v 1.1 2002/10/11 14:33:01 alanh Exp $ */
-/*
- * $Workfile: cen9211.c $
- *
- * File Contents: This file contains panel functions to interface with
- * the centaraus platform.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode graphics driver for panel support
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-
-#include "cen9211.h"
-
-static unsigned char sioc2_orig_val;
-static unsigned char must_restore_97317 = FALSE;
-
-/********************************************************************
- *
- * PASS_FAIL init_GPIO(void);
- * Initializes the GPIO pins in the Cx5530 or the National PC97317
- * for use with a 9211 on a Marmot or Centaurus board. Uses
- * the global variables RdPCIVal and sioc2_orig_val.
- *
- *********************************************************************/
-
-unsigned char init_Centaurus_GPIO(void)
-{
- unsigned char reg_val;
- static unsigned char first_time = TRUE;
-
- /* The Centaurus board uses ports 1 and 2 of the 97317 for GPIO.
- * These ports require bank 0 to be active. The first thing we will
- * do is verify that bank 0 is active and set it if it is not.
- */
-
- /* set the index for access to the configuration register */
- gfx_outb(CENT_CONFIG_INDEX, CENT_SIOC2);
- reg_val = gfx_inb(CENT_CONFIG_DATA);
-
- /* set to bank 0 */
- if (reg_val & CENT_GPIO_BANK_SELECT) {
- gfx_outb(CENT_CONFIG_DATA,
- (unsigned char) (reg_val & ~CENT_GPIO_BANK_SELECT));
- }
-
- /* If this is the first time we have modified sioc2, we must
- * save the current value (set by the BIOS) for restoration by
- * the calling program, set the global flag must_restore_97317, and set
- * first_time to FALSE.
- */
-
- if (first_time == TRUE) {
- sioc2_orig_val = reg_val;
- must_restore_97317 = TRUE;
- first_time = FALSE;
- }
-
- /* set port 1 direction */
- reg_val = gfx_inb(CENT_PORT1_DIRECTION);
-
- /* make GPIO 14 and 17 outputs */
- reg_val |= CENT_97317_CLOCK_MASK | CENT_97317_DATA_OUT_MASK;
- gfx_outb(CENT_PORT1_DIRECTION, reg_val);
-
- /* set port 2 direction */
- reg_val = gfx_inb(CENT_PORT2_DIRECTION);
-
- /* make GPIO 20 an output */
-
- reg_val |= CENT_97317_CHIP_SEL_MASK;
-
- /* make GPIO 21 an input */
-
- reg_val &= ~CENT_97317_DATA_IN_MASK;
- gfx_outb(CENT_PORT2_DIRECTION, reg_val);
-
- /* make GPIO 14 and 17 push-pull */
-
- reg_val = gfx_inb(CENT_PORT1_OUTPUT_TYPE);
- reg_val |= CENT_97317_CLOCK_MASK | CENT_97317_DATA_OUT_MASK;
- gfx_outb(CENT_PORT1_OUTPUT_TYPE, reg_val);
-
- /* make GPIO 20 and 21 push-pull */
- reg_val = gfx_inb(CENT_PORT2_OUTPUT_TYPE);
- reg_val |= CENT_97317_CHIP_SEL_MASK | CENT_97317_DATA_IN_MASK;
- gfx_outb(CENT_PORT2_OUTPUT_TYPE, reg_val);
- return CENT_PASS;
-
-} /* end init_GPIO() */
-
-/*********************************************************************
- *
- * PASS_FAIL init_9211(void);
- * Initializes (sets to 0) the clock, chip select, and data pins
- * of the Cx9211 on a Marmot or Centaurus board.
- *
- **********************************************************************/
-
-unsigned char init_Centaurus_9211(void)
-{
- unsigned char ReadData;
- /* Uses the 97317 for GPIO.
- * we will use the clock port define for port 1
- */
- ReadData = gfx_inb(CENT_97317_CLOCK_PORT);
- ReadData &= ~CENT_97317_CLOCK_MASK & ~CENT_97317_DATA_OUT_MASK;
- gfx_outb(CENT_97317_CLOCK_PORT, ReadData);
- /* we will use the chip select port define for port 2 */
- ReadData = gfx_inb(CENT_97317_CHIP_SELECT);
- ReadData &= ~CENT_97317_CHIP_SEL_MASK & ~CENT_97317_DATA_IN_MASK;
- gfx_outb(CENT_97317_CHIP_SELECT, ReadData);
- return(CENT_PASS);
-
-} /*end init_9211() */
-
-/******************************************************************
- *
- * PASS_FAIL restore_97317_SIOC2(void);
- * Restores the original value to the 97317 SIOC2 register using
- * the global variable sioc2_orig_val. Returns PASS if the value
- * was written, FAIL if not.
- *
- *******************************************************************/
-
-unsigned char restore_Centaurus_97317_SIOC2(void)
-{
- /* set the global flag */
- if (must_restore_97317 == TRUE) {
- unsigned char cfg;
-
- /* set the index for access to the configuration register */
- gfx_outb(CENT_CONFIG_INDEX, CENT_SIOC2);
-
- /* restore the value */
- gfx_outb(CENT_CONFIG_DATA, sioc2_orig_val);
-
- /* now read and verify */
- cfg = gfx_inb(CENT_CONFIG_DATA);
- if (cfg == sioc2_orig_val)
- return(CENT_PASS);
- else
- return(CENT_FAIL);
-
- } /* end if() */
- return(CENT_FAIL);
-
-} /* end restore_97317_SIOC2bank() */
-
-/* -----------------------------------------------------------------------
- *
- * SET_FLAT_PANEL_MODE
- *
- * This routine sets the specified flat panel moden parameters in
- * the 9211.
- * Returns PASS if successful, FAIL if the mode parameters could
- * not be set.
- *
- *------------------------------------------------------------------------*/
-
-unsigned char set_Centaurus_92xx_mode(Pnl_PanelStat *pstat)
-{
- int mode;
-
- /* LOOP THROUGH THE AVAILABLE MODES TO FIND A MATCH */
-
- for (mode = 0; mode < NUM_92XX_MODES; mode++) {
- if ((FPModeParams[mode].xres == pstat->XRes) &&
- (FPModeParams[mode].yres == pstat->YRes) &&
- (FPModeParams[mode].bpp == pstat->Depth) &&
- (FPModeParams[mode].panel_type == pstat->Type) &&
- (FPModeParams[mode].color_type == pstat->MonoColor)) {
-
- /* SET THE 92xx FOR THE SELECTED MODE */
- set_Centaurus_92xx_mode_params(mode);
- return(CENT_PASS);
- } /* end if() */
- } /* end for() */
- return(CENT_FAIL);
-
-} /* end set_Centaurus_92xx_mode() */
-
-/*-------------------------------------------------------------------
- *
- * SET_92XX_MODE_PARAMS
- * This routine sets the 9211 mode parameters.
- *
- *-------------------------------------------------------------------*/
-
-void set_Centaurus_92xx_mode_params(int mode)
-{
- CS92xx_MODE *pMode = &FPModeParams[mode];
- unsigned long off_data = 0;
-
- /* Turn the 92xx power off before setting any new parameters.
- * Since we are going to reset all the power bit positions, we will
- * force the power register to 0.
- */
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PWR_MAN, off_data);
-
- /* set 9211 registers using the desired panel settings */
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_PAN_TIMING1,
- pMode->panel_timing1);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_PAN_TIMING2,
- pMode->panel_timing2);
-
- if (Pnl_Rev_ID == PNL_9211_C) {
-
- /* load the LSFR seeds */
- Centaurus_write_gpio( FOUR_BYTES,
- CS92xx_LCD_DITH_FR_CNTRL,
- pMode->rev_C_dither_frc);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_BLUE_LSFR_SEED,
- pMode->blue_lsfr_seed);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_RED_GREEN_LSFR_SEED,
- pMode->red_green_lsfr_seed);
- } else {
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_DITH_FR_CNTRL,
- pMode->pre_C_dither_frc);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_BLOCK_SEL1,
- pMode->block_select1);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_BLOCK_SEL2,
- pMode->block_select2);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_DISPER1,
- pMode->dispersion1);
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_DISPER2,
- pMode->dispersion2);
-
- CentaurusProgramFRMload();
- }
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_MEM_CNTRL,
- pMode->memory_control);
-
- /* Set the power register last. This will turn the panel on at the 9211.*/
-
- Centaurus_write_gpio(FOUR_BYTES,
- CS92xx_LCD_PWR_MAN,
- pMode->power_management);
-
-} /* end set_Centaurus_92xx_mode_params() */
-
-
-void Centaurus_write_gpio(int width, ULONG address, unsigned long data)
-{
- int num_clock_toggles;
- int count;
- unsigned long Addr = address;
- enable_Centaurus_9211_chip_select();
-
- /* Write 1 Clock period of no valid transfer */
- write_Centaurus_CX9211_GPIO(CENT_NO_DATA);
-
- /* Write 1 control bit (the data book calls this the control bar write) */
- write_Centaurus_CX9211_GPIO(0x1);
-
- /* Write the 12-bit address */
- for (count = 0; count < 12; count++) {
- write_Centaurus_CX9211_GPIO((unsigned char)(Addr & 0x01));
- /*the 9211 expects data LSB->MSB */
- Addr = Addr >> 1;
- }
-
- /* write */
- write_Centaurus_CX9211_DWdata(data);
-
- /* a write will require four toggles after disabling CS */
- num_clock_toggles = CENT_NUM_WRITE_CLOCK_TOGGLES;
- disable_Centaurus_9211_chip_select();
-
- /* now toggle the clock */
- for (count = 0; count < num_clock_toggles; count++) {
- toggle_Centaurus_9211_clock();
- }
- return;
-
-} /* end Centaurus_write_gpio() */
-
-unsigned long Centaurus_read_gpio(int width, unsigned long address)
-{
- int num_clock_toggles;
- int count;
- unsigned long Addr = address;
- unsigned long data;
-
- enable_Centaurus_9211_chip_select();
-
- /* Write 1 Clock period of no valid transfer */
- write_Centaurus_CX9211_GPIO(CENT_NO_DATA);
-
- /* Write 1 control bit (the data book calls this the control bar write) */
- write_Centaurus_CX9211_GPIO(0x1);
-
- /* Write the 12-bit address */
- for (count = 0; count < 12; count++) {
- write_Centaurus_CX9211_GPIO((unsigned char)(Addr & 0x01));
-
- /*the 9211 expects data LSB->MSB */
- Addr = Addr >> 1;
- }
-
- data = read_Centaurus_CX9211_DWdata();
-
- /* a read will require one toggle after disabling CS */
- num_clock_toggles = CENT_NUM_READ_CLOCK_TOGGLES;
- disable_Centaurus_9211_chip_select();
-
- /* now toggle the clock */
- for (count = 0; count < num_clock_toggles; count++) {
- toggle_Centaurus_9211_clock();
- }
- return data;
-
-} /* end Centaurus_read_gpio() */
-
-/*******************************************************************
- *
- * void enable_Centaurus_9211_chip_select(void);
- * Enables the chip select of the CX9211 using the National 97317
- * on a Centaurus board.
- *
- *******************************************************************/
-
-void enable_Centaurus_9211_chip_select(void)
-{
- unsigned char cs_port_val;
-
- /* Set the chip select (GPIO20) high */
- cs_port_val = gfx_inb(CENT_97317_CHIP_SELECT);
- gfx_outb(CENT_97317_CHIP_SELECT,
- (unsigned char) (cs_port_val | CENT_97317_CHIP_SEL_MASK));
- return;
-
-} /* end enable_Centaurus_9211_chip_select() */
-
-
-/********************************************************************
- *
- * void disable_Centaurus_9211_chip_select(void);
- * Disables the chip select of the CX9211 using the National 97317
- * on a Centaurus board.
- *
- *******************************************************************/
-
-void disable_Centaurus_9211_chip_select(void)
-{
- unsigned char cs_port_val;
-
- /* Set the chip select (GPIO20) low */
- cs_port_val = gfx_inb(CENT_97317_CHIP_SELECT);
- gfx_outb(CENT_97317_CHIP_SELECT,
- (unsigned char) (cs_port_val & ~CENT_97317_CHIP_SEL_MASK));
- return;
-
-} /* end disable_Centaurus_9211_chip_select() */
-
-
-
-/**********************************************************************
- *
- * void toggle_Centaurus_9211_clock(void);
- * Toggles the clock bit of the CX9211 using the National 97317 on a
- * Centaurus board. Assumes the 9211 clock bit has previously been
- * initialized to 0 (this way we do not have to waste GPIO cycles
- * windowing the clock pulse).
- *
- **********************************************************************/
-
-void toggle_Centaurus_9211_clock(void)
-{
- unsigned char port_val;
- /* get the 97317 GPIO port contents for the 9211 clock */
-
- port_val = gfx_inb(CENT_97317_CLOCK_PORT);
- /* set the clock bit high */
- gfx_outb(CENT_97317_CLOCK_PORT,
- (unsigned char) (port_val | CENT_97317_CLOCK_MASK));
-
- /* set the clock bit low */
- gfx_outb(CENT_97317_CLOCK_PORT,
- (unsigned char) (port_val & ~CENT_97317_CLOCK_MASK));
-
-} /* end toggle_Centaurus_9211_clock() */
-
-
-/********************************************************************
- *
- * void write_Centaurus_CX9211_GPIO(unsigned char databit);
- * Writes the value in bit 0 of the value passed in databit to
- * the 9211 through the GPIO interface of the National 97317 on a
- * Centaurus board.
- * NOTE: This function does not set or reset the chip select line!
- *
- *******************************************************************/
-
-void write_Centaurus_CX9211_GPIO(unsigned char databit)
-{
- unsigned char data_port_val;
- /* Set the data bit for (GPIO17) */
- databit <<= 7;
-
- /* read the value of the other bits in the 97317 data port */
- data_port_val = gfx_inb(CENT_97317_DATA_OUTPORT);
-
- /* set the bit accordingly */
- data_port_val &= ~CENT_97317_DATA_OUT_MASK;
- data_port_val |= databit;
- gfx_outb(CENT_97317_DATA_OUTPORT, data_port_val);
-
- /* clock the data */
- toggle_Centaurus_9211_clock();
- return;
-
-} /* end write_Centaurus_CX9211_GPIO() */
-
-
-/*****************************************************************
- *
- * void write_Centaurus_CX9211_DWdata(unsigned long data);
- * Writes the doubleword value passed in data to the CX9211
- * using GPIO Pins of the National 97317 on a Centaurus board.
- * This function assumes the Direction register of the 97317
- * and the address register of the CX9211 have been previously set.
- * Uses the global variable count.
- * NOTE: This function does not set or reset the chip select line!
- *
- ******************************************************************/
-
-void write_Centaurus_CX9211_DWdata(unsigned long data)
-{
- int count;
- /* Send the read/write command to the 9211 first. */
-
- write_Centaurus_CX9211_GPIO(CENT_WRITE);
-
- /* Now write the 32-bit Data */
- for (count = 0; count < 32; count++) {
- write_Centaurus_CX9211_GPIO((unsigned char)(data & 0x01));
-
- /* the 9211 expects the data LSB->MSB */
- data >>= 1;
- }
- return;
-
-} /* end write_Centaurus_CX9211_DWdata() */
-
-
-/*********************************************************************
- *
- * unsigned char read_Centaurus_CX9211_GPIO(void);
- * Returns the current value of the databit of the 9211 in bit 0
- * using the GPIO interface of the National 97317 on a Centaurus board.
- * NOTE: This function does not set or reset the chip select line!
- *
- *********************************************************************/
-
-unsigned char read_Centaurus_CX9211_GPIO(void)
-{
- unsigned char data_port_val;
-
- toggle_Centaurus_9211_clock();
-
- /* read the data */
- data_port_val = gfx_inb(CENT_97317_DATA_INPORT);
-
- /* Save the data from (GPIO21) as bit 0 */
- data_port_val >>= 1;
- return(data_port_val & 0x1);
-
-} /* end read_Centaurus_CX9211_GPIO() */
-
-
-
-/**********************************************************************
- *
- * void read_Centaurus_CX9211_DWdata(unsigned long *data);
- * Reads a doubleword value from the CX9211 using GPIO Pins of
- * the National 97317 on a Centaurus board.
- * This function assumes the Direction register of the 97317 and
- * the address register of the CX9211 have been previously set.
- * NOTE: This function does not set or reset the chip select line!
- *
- ***********************************************************************/
-
-unsigned long read_Centaurus_CX9211_DWdata(void)
-{
- unsigned char ReadData;
- int count;
- unsigned long Data;
-
- /* Send read/write command word to the 9211 first. */
- write_Centaurus_CX9211_GPIO(CENT_READ);
-
- /* The data book (revision 0.1) states 8 clock periods of no valid data.
- * However, the data becomes valid on the eighth clock, making the eighth
- * clock valid. Since read_Centaurus_GPIO() toggles the clock before
- * reading, we will only toggle the clock 7 times here.
- */
- for (count = 0; count < 7; count++) /* works */
- toggle_Centaurus_9211_clock();
-
- /* Now read the 32-bit Data, bit by bit in a single loop. */
- Data = 0;
- for (count = 0; count < 32; count++) {
- ReadData = read_Centaurus_CX9211_GPIO();
- /* 9211 sends data LSB->MSB */
- Data = Data | (((unsigned long)ReadData) << count);
- } /* end for() */
-
- return Data;
-
-} /* end read_Centaurus_CX9211_DWdata() */
-
-void Centaurus_Get_9211_Details(unsigned long flags, PPnl_PanelParams pParam)
-{
- unsigned long PanelType;
- int i;
-
- for(i= 0; i < 0x7fff; i++){
- }
-
- init_Centaurus_GPIO();
-
- for(i=0; i<5; i++)
- toggle_Centaurus_9211_clock();
-
- if(flags & PNL_PANELCHIP) {
-
- PanelType = Centaurus_read_gpio(FOUR_BYTES, 0x430);
- PanelType = Centaurus_read_gpio(FOUR_BYTES, 0x430);
- if((PanelType & 0xFFFF0000) == 0x92110000) {
-
- /* found 9211 */
- /* check the values for revision ID */
- if (PanelType >= 0x92110301)
- pParam->PanelChip = PNL_9211_C;
- else if ((PanelType >= 0x92110101) && (PanelType < 0x92110301))
- pParam->PanelChip = PNL_9211_A;
- else
- pParam->PanelChip = PNL_UNKNOWN_CHIP;
- } else { /* no 9211 present */
- pParam->PanelChip = PNL_UNKNOWN_CHIP;
- }
- Pnl_Rev_ID = pParam->PanelChip;
- } /* if end */
-
- if ((pParam->PanelChip != PNL_UNKNOWN_CHIP) && (flags & PNL_PANELSTAT))
- {
- PanelType = Centaurus_read_gpio(FOUR_BYTES, 0x438);
- PanelType &= 0x00f8f8f8;
- PanelType |= 0x00070000;
- Centaurus_write_gpio(FOUR_BYTES, 0x438, PanelType);
- PanelType = 0;
- PanelType = Centaurus_read_gpio(FOUR_BYTES, 0x434);
- PanelType = (PanelType >> 8);
- PanelType &= 0x7;
-
- switch (PanelType) {
- case 0:
- pParam->PanelStat.XRes = 800;
- pParam->PanelStat.YRes = 600;
- pParam->PanelStat.Depth = 18;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_TFT;
- break;
- case 1:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 8;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_SSTN;
- break;
- case 2:
- pParam->PanelStat.XRes = 1024;
- pParam->PanelStat.YRes = 768;
- pParam->PanelStat.Depth = 18;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_TFT;
- break;
- case 3:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 16;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- case 4:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 18;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_TFT;
- break;
- case 5:
- pParam->PanelStat.XRes = 1024;
- pParam->PanelStat.YRes = 768;
- pParam->PanelStat.Depth = 24;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- case 6:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 8;
- pParam->PanelStat.MonoColor = PNL_MONO_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- case 7:
- pParam->PanelStat.XRes = 800;
- pParam->PanelStat.YRes = 600;
- pParam->PanelStat.Depth = 16;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- default:
- break;
- }
- }
-
-}
-
-void CentaurusProgramFRMload(void)
-{
- unsigned long CentaurusFRMtable[] = {
- 0x00000000,
- 0x00000000,
- 0x01000100,
- 0x01000100,
- 0x01010101,
- 0x01010101,
- 0x02081041,
- 0x02081041,
- 0x10111111,
- 0x11111101,
- 0x49249241,
- 0x12412492,
- 0x92244891,
- 0x92244891,
- 0x22252525,
- 0x22252525,
- 0x528294a5,
- 0x2528494a,
- 0x294a5295,
- 0x294a5295,
- 0x54a54a95,
- 0x2952a52a,
- 0x2a552a55,
- 0x2a552a55,
- 0x554aa955,
- 0x2a9552aa,
- 0x2aaa5555,
- 0x2aaa5555,
- 0x55555555,
- 0x2aaaaaaa,
- 0x55555555,
- 0x55555555,
- 0xaaaaaaab,
- 0x55555555,
- 0x5555aaab,
- 0x5555aaab,
- 0xaab556ab,
- 0x556aad55,
- 0x55ab55ab,
- 0x55ab55ab,
- 0xab5ab56b,
- 0x56ad5ad5,
- 0x56b5ad6b,
- 0x56b5ad6b,
- 0xad6d6b5b,
- 0x5ad6b6b6,
- 0x5b5b5b5b,
- 0x5b5b5b5b,
- 0x5F6db6db,
- 0x5F6db6db,
- 0xF776F776,
- 0xF776F776,
- 0xFBDEFBDE,
- 0xFBDEFBDE,
- 0x7eFFBFF7,
- 0x7eFFBFF7,
- 0xFF7FF7F7,
- 0xFF7FF7F7,
- 0xFF7FFF7F,
- 0xFF7FFF7F,
- 0xFFF7FFFF,
- 0xFFF7FFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
- };
-
- unsigned char i;
- unsigned short index;
- unsigned long data;
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_FRM_MEMORY_INDEX, 0);
- index = CS92xx_FRM_MEMORY_DATA;
- for (i = 0; i < 64; i+=2) {
- data = CentaurusFRMtable[i];
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_FRM_MEMORY_DATA, data);
- data = CentaurusFRMtable[i+1];
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_FRM_MEMORY_DATA, data);
- }
-
- /*
- * The first FRM location (64 bits) does not program correctly.
- * This location always reads back with the last value programmed.
- * ie. If 32 64-bit values are programmed, location 0 reads
- * back as the 32nd If 30 locations are programmed, location 0
- * reads back as the 30th, etc.
- * Fix this by re-writing location 0 after programming all 64 in
- * the writeFRM loop in RevCFrmload() in CS9211.
- */
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_FRM_MEMORY_INDEX, 0);
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_FRM_MEMORY_DATA, 0);
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_FRM_MEMORY_DATA, 0);
-}
-
-/********************************************************************
- *
- * void Centaurus_Enable_Power((void);
- * Enables the power of the CX9211 using the National 97317 on
- * a Centaurus board.
- *
- ********************************************************************/
-
-void Centaurus_Power_Up(void)
-{
- unsigned long off_data = 0x01000000;
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PWR_MAN, off_data);
- return;
-
-} /* Centaurus_Disable_Power */
-
-/***********************************************************************
- *
- * void Centaurus_Disable_Power((void);
- * Disables the power of the CX9211 using the National 97317
- * on a Centaurus board.
- *
- **********************************************************************/
-
-void Centaurus_Power_Down(void)
-{
- unsigned long off_data = 0;
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PWR_MAN, off_data);
- return;
-
-} /* Centaurus_Disable_Power */
-
-void Centaurus_9211init(Pnl_PanelStat *pstat)
-{
- init_Centaurus_GPIO();
- init_Centaurus_9211();
- set_Centaurus_92xx_mode(pstat);
- restore_Centaurus_97317_SIOC2();
-}
-
-
-void Centaurus_Save_Panel_State(void)
-{
- /* set 9211 registers using the desired panel settings */
-
- cs9211_regs.panel_timing1 =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_LCD_PAN_TIMING1);
- cs9211_regs.panel_timing2 =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_LCD_PAN_TIMING2);
- cs9211_regs.dither_frc_ctrl =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_LCD_DITH_FR_CNTRL);
- cs9211_regs.blue_lsfr_seed =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_BLUE_LSFR_SEED);
-
- cs9211_regs.red_green_lsfr_seed =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_RED_GREEN_LSFR_SEED);
- /* CentaurusProgramFRMload(); */
-
- cs9211_regs.memory_control =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_LCD_MEM_CNTRL);
-
- /* Set the power register last.
- * This will turn the panel on at the 9211.
- */
- cs9211_regs.power_management =
- Centaurus_read_gpio(FOUR_BYTES, CS92xx_LCD_PWR_MAN);
-}
-
-
-void Centaurus_Restore_Panel_State(void)
-{
-
- unsigned long off_data = 0;
-
- /* Before restoring the 9211 registers, power off the 9211. */
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PWR_MAN, off_data);
-
- /* set 9211 registers using the desired panel settings */
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PAN_TIMING1,
- cs9211_regs.panel_timing1);
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PAN_TIMING2,
- cs9211_regs.panel_timing2);
-
- /* load the LSFR seeds */
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_DITH_FR_CNTRL,
- cs9211_regs.dither_frc_ctrl);
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_BLUE_LSFR_SEED,
- cs9211_regs.blue_lsfr_seed);
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_RED_GREEN_LSFR_SEED,
- cs9211_regs.red_green_lsfr_seed);
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_MEM_CNTRL,
- cs9211_regs.memory_control);
-
- /* Set the power register last. This will turn the panel on at the 9211.*/
-
- Centaurus_write_gpio(FOUR_BYTES, CS92xx_LCD_PWR_MAN,
- cs9211_regs.power_management);
-
-}
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.h
deleted file mode 100644
index ca84067f8..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.h
+++ /dev/null
@@ -1,210 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/cen9211.h,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: cen9211.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This header file defines the Durango routines and
- * variables used to access the memory mapped regions.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#include "92xx.h"
-#include "panel.h"
-
-#ifndef _CEN9211_h
-#define _CEN9211_h
-
-/* Centaurus/97317 GPIO PORT defines */
-
-#define CENT_97317_CLOCK_PORT 0xE0
-#define CENT_97317_DATA_OUTPORT 0xE0
-#define CENT_97317_CHIP_SELECT 0xE4
-#define CENT_97317_DATA_INPORT 0xE4
-#define CENT_PORT1_DIRECTION 0xE1
-#define CENT_PORT2_DIRECTION 0xE5
-#define CENT_PORT1_OUTPUT_TYPE 0xE2
-#define CENT_PORT2_OUTPUT_TYPE 0xE6
-
-/*
- * Centaurus/97317 GPIO bit masks.
- * In and out are with respect to the 97317.
- */
-
-#define CENT_97317_CLOCK_MASK 0x10
-#define CENT_97317_CHIP_SEL_MASK 0x01
-#define CENT_97317_DATA_IN_MASK 0x02
-#define CENT_97317_DATA_OUT_MASK 0x80
-
-#define CENT_PASS 1
-#define CENT_FAIL 0
-#define CENT_READ 0x0000
-#define CENT_WRITE 0x0001
-#define CENT_NO_DATA 0
-
-#define CENT_CONFIG_INDEX 0x2E
-#define CENT_SIOC2 0x22
-#define CENT_CONFIG_DATA 0x2F
-#define CENT_GPIO_BANK_SELECT 0x80
-
-#define CENT_NUM_READ_CLOCK_TOGGLES 1
-#define CENT_NUM_WRITE_CLOCK_TOGGLES 4
-
-/* local functions */
-void set_Centaurus_92xx_mode_params(int mode);
-void enable_Centaurus_9211_chip_select(void);
-void disable_Centaurus_9211_chip_select(void);
-void toggle_Centaurus_9211_clock(void);
-void write_Centaurus_CX9211_GPIO(unsigned char databit);
-void write_Centaurus_CX9211_DWdata(unsigned long data);
-void Centaurus_write_gpio(int width, unsigned long address, unsigned long data);
-void Centaurus_Power_Up(void);
-void Centaurus_Power_Down(void);
-unsigned long Centaurus_read_gpio(int width, unsigned long address);
-unsigned char read_Centaurus_CX9211_GPIO(void);
-unsigned long read_Centaurus_CX9211_DWdata(void);
-unsigned char restore_Centaurus_97317_SIOC2(void);
-unsigned char init_Centaurus_GPIO(void);
-unsigned char init_Centaurus_9211(void);
-unsigned char set_Centaurus_92xx_mode(Pnl_PanelStat *pstat);
-void CentaurusProgramFRMload(void);
-void Centaurus_Get_9211_Details(unsigned long flags, PPnl_PanelParams pParam);
-void Centaurus_Save_Panel_State(void);
-void Centaurus_Restore_Panel_State(void);
-
-#endif /* !_CEN9211_h */
-
-/* END OF FILE */
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.c
deleted file mode 100644
index 717b2e674..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.c
+++ /dev/null
@@ -1,694 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.c,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: dora9211.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the panel functions to interface
- * the dorado platform.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-
-
-#include "dora9211.h"
-
-void Dorado_Get_9211_Details(unsigned long flags, PPnl_PanelParams pParam)
-{
- unsigned long DPanelType;
- int i;
-
- for(i = 0; i < 0x7fff; i++){
- }
-
- Dorado9211GpioInit();
-
- for(i =0; i<5; i++)
- toggle_Centaurus_9211_clock();
-
- if(flags & PNL_PANELCHIP) {
- DPanelType = Dorado9211ReadReg(0x430);
-
- if((DPanelType & 0xFFFF0000) == 0x92110000) { /* found 9211 */
- /* check the values for revision ID */
- if (DPanelType >= 0x92110301)
- pParam->PanelChip = PNL_9211_C;
- else if ((DPanelType >= 0x92110101) && (DPanelType < 0x92110301))
- pParam->PanelChip = PNL_9211_A;
- else
- pParam->PanelChip = PNL_UNKNOWN_CHIP;
- } else { /* no 9211 present */
- pParam->PanelChip = PNL_UNKNOWN_CHIP;
- }
- }
-
- if((pParam->PanelChip != PNL_UNKNOWN_CHIP) && (flags & PNL_PANELSTAT)) {
- unsigned long PanelTypeOrg;
- unsigned char Panel_2Byte;
-
- DPanelType = Dorado9211ReadReg(0x438);
- DPanelType &= 0x00e8e8e8;
- DPanelType |= 0x00170000;
- Dorado9211WriteReg(0x438, DPanelType);
- DPanelType = 0;
-
- DPanelType = Dorado9211ReadReg(0x434);
- DPanelType = (DPanelType >> (DRD_LCDRESGPIO1 + 1));
- PanelTypeOrg = DPanelType >> 8;
- Panel_2Byte = (unsigned char)PanelTypeOrg;
- Panel_2Byte = (Panel_2Byte >> (DRD_LCDRESGPIO2 - DRD_LCDRESGPIO1 - 1)); DPanelType = (DPanelType | ((unsigned int)Panel_2Byte << 8));
- DPanelType = DPanelType >> 1;
- PanelTypeOrg = DPanelType >> 8;
- Panel_2Byte = (unsigned char)PanelTypeOrg;
- Panel_2Byte = (Panel_2Byte >> (DRD_LCDRESGPIO3 - DRD_LCDRESGPIO2 - 1));
- DPanelType = (DPanelType | ((unsigned int)Panel_2Byte << 8));
- DPanelType = DPanelType >> 1;
- PanelTypeOrg = DPanelType >> 8;
- Panel_2Byte = (unsigned char)PanelTypeOrg;
- Panel_2Byte = (Panel_2Byte >> (DRD_LCDRESGPIO4 - DRD_LCDRESGPIO3 - 1));
- DPanelType = (DPanelType | ((unsigned int)Panel_2Byte << 8));
- DPanelType = DPanelType >> 5;
- DPanelType &= 0xf;
-
- switch (DPanelType) {
- case 8:
- pParam->PanelStat.XRes = 800;
- pParam->PanelStat.YRes = 600;
- pParam->PanelStat.Depth = 18;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_TFT;
- break;
-
- case 9:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 8;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_SSTN;
- break;
-
- case 10:
- pParam->PanelStat.XRes = 1024;
- pParam->PanelStat.YRes = 768;
- pParam->PanelStat.Depth = 18;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_TFT;
- break;
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 11:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 16;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- case 12:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 18;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_TFT;
- break;
- case 13:
- pParam->PanelStat.XRes = 1024;
- pParam->PanelStat.YRes = 768;
- pParam->PanelStat.Depth = 24;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- case 14:
- pParam->PanelStat.XRes = 640;
- pParam->PanelStat.YRes = 480;
- pParam->PanelStat.Depth = 8;
- pParam->PanelStat.MonoColor = PNL_MONO_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- case 15:
- pParam->PanelStat.XRes = 800;
- pParam->PanelStat.YRes = 600;
- pParam->PanelStat.Depth = 16;
- pParam->PanelStat.MonoColor = PNL_COLOR_PANEL;
- pParam->PanelStat.Type = PNL_DSTN;
- break;
- default:
- break;
- }
- } /* if block end */
-
-}
-
-void Dorado9211Init(Pnl_PanelStat *pstat)
-{
- int mode;
- unsigned long orig_value,pm_value;
-
- gfx_delay_milliseconds(100);
- Dorado9211GpioInit();
-
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
-
- gfx_delay_milliseconds(100);
-
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
-
- Dorado9211WriteReg(CS92xx_LCD_PWR_MAN,0x0);
-
- gfx_delay_milliseconds(100);
- gfx_delay_milliseconds(100);
-
- /* LOOP THROUGH THE AVAILABLE MODES TO FIND A MATCH */
- for (mode = 0; mode < NUM_92XX_MODES; mode++) {
- if ((FPModeParams[mode].xres == pstat->XRes) &&
- (FPModeParams[mode].yres == pstat->YRes) &&
- (FPModeParams[mode].bpp == pstat->Depth) &&
- (FPModeParams[mode].panel_type == pstat->Type) &&
- (FPModeParams[mode].color_type == pstat->MonoColor)) {
-
- /* SET THE 92xx FOR THE SELECTED MODE */
- CS92xx_MODE *pMode = &FPModeParams[mode];
-
- Dorado9211WriteReg(CS92xx_LCD_PAN_TIMING1,pMode->panel_timing1);
- Dorado9211WriteReg(CS92xx_LCD_PAN_TIMING2,pMode->panel_timing2);
- Dorado9211WriteReg(CS92xx_LCD_DITH_FR_CNTRL,
- pMode->rev_C_dither_frc);
- Dorado9211WriteReg(CS92xx_BLUE_LSFR_SEED,pMode->blue_lsfr_seed);
- Dorado9211WriteReg(CS92xx_RED_GREEN_LSFR_SEED,
- pMode->red_green_lsfr_seed);
- DoradoProgramFRMload();
- Dorado9211WriteReg(CS92xx_LCD_MEM_CNTRL,pMode->memory_control);
- Dorado9211WriteReg(CS92xx_LCD_PWR_MAN,pMode->power_management);
- gfx_delay_milliseconds(100);
- gfx_delay_milliseconds(100);
- Dorado9211ClearCS();
-
- /* This code is added to take care of Panel initialization.
- * Irrespective of Xpressrom is enabling the panel or not.
- */
- orig_value = READ_VID32(0X04);
- WRITE_VID32(0x04, 0x00200141);
- gfx_delay_milliseconds(21);
- pm_value = gfx_ind(0x9030);
-
- pm_value |= 0x400;
- gfx_outd(0x9030, pm_value);
- gfx_delay_milliseconds(4);
- orig_value &= 0xfff1ffff;
- WRITE_VID32(0X4, orig_value);
- return;
- } /*end if() */
- } /*end for() */
-
-}
-
-void Dorado9211SetCS(void)
-{
- unsigned long value;
- value = gfx_ind(DRD_CSP9211IN);
- gfx_outd(DRD_CSP9211OUT, value | DRD_CS9211);
-}
-
-void Dorado9211ClearCS(void)
-{
- unsigned long value;
- value = gfx_ind(DRD_CSP9211IN);
- gfx_outd(DRD_CSP9211OUT, value & (~DRD_CS9211));
-}
-
-void Dorado9211SetDataOut(void)
-{
- unsigned long value;
- value = gfx_ind(DRD_DATAOUTP9211IN);
- gfx_outd(DRD_DATAOUTP9211OUT, value | DRD_DATAIN9211);
-}
-
-
-void Dorado9211ClearDataOut(void)
-{
- unsigned long value;
- value = gfx_ind(DRD_DATAOUTP9211IN);
- gfx_outd(DRD_DATAOUTP9211OUT, value & (~DRD_DATAIN9211));
-}
-
-
-unsigned char Dorado9211ReadDataIn(void)
-{
- unsigned char readdata=0;
- unsigned long value;
- /* why to read 4 times ???*/
- value = gfx_ind(DRD_DATAINP9211IN);
- value = gfx_ind(DRD_DATAINP9211IN);
- value = gfx_ind(DRD_DATAINP9211IN);
- value = gfx_ind(DRD_DATAINP9211IN);
- if(value & DRD_DATAOUT9211)
- readdata=1;
- return (readdata);
-}
-
-
-void Dorado9211ToggleClock(void)
-{
- Dorado9211SetClock();
- Dorado9211ClearClock();
-}
-
-
-void Dorado9211SetClock(void)
-{
- unsigned long value;
- value = gfx_ind(DRD_CLOCKP9211IN);
- gfx_outd(DRD_CLOCKP9211OUT, value | DRD_CLOCK9211);
-}
-
-
-void Dorado9211ClearClock(void)
-{
- unsigned long value;
- value = gfx_ind(DRD_CLOCKP9211IN);
- gfx_outd(DRD_CLOCKP9211OUT, value & (~DRD_CLOCK9211));
-}
-
-void Dorado9211GpioInit(void)
-{
- unsigned long value;
-
- /* set output enable on gpio 7, 9, 11 */
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_SEL), DRD_CLOCK9211CFG);
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_CFG), 3);
- /* set output enable on gpio 7, 9, 11 */
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_SEL), DRD_CS9211CFG);
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_CFG), 3);
- /* set output enable on gpio 7, 9, 18 */
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_SEL), DRD_DATAIN9211CFG);
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_CFG), 3);
- /* disable on gpio 11 - This is the output from the 9211 */
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_SEL), DRD_DATAOUT9211CFG);
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPPIN_CFG), 0);
- /* Set all PINS low */
- value = gfx_ind(DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDI0);
- value &= ~(DRD_CS9211 | DRD_CLOCK9211 | DRD_DATAIN9211);
- gfx_outd((DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDO0), value);
-}
-
-unsigned long Dorado9211ReadReg(unsigned short index)
-{
-
- unsigned char i, readbit;
- unsigned long data;
-
- Dorado9211ClearDataOut();
-
- Dorado9211SetCS();
- Dorado9211ToggleClock();
-
- Dorado9211SetDataOut();
- Dorado9211ToggleClock();
-
- for (i=0; i < 12; i++) {
- if (index & 0x1) {
- Dorado9211SetDataOut();
- } else {
- Dorado9211ClearDataOut();
- }
- Dorado9211ToggleClock();
- index >>= 1;
- }
-
- Dorado9211ClearDataOut();
- Dorado9211ToggleClock();
-
- /* Idle clock, 7 clocks, no data set */
-
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
-
- data = 0;
- for ( i = 0; i < 32; i++) {
- Dorado9211ToggleClock();
- readbit = Dorado9211ReadDataIn();
- data |= (((unsigned long)readbit) << i);
- }
-
- Dorado9211ClearCS();
- Dorado9211ToggleClock();
- return(data);
-
-}
-
-void Dorado9211WriteReg(unsigned short index, unsigned long data)
-{
-
- unsigned char i;
-
- Dorado9211ClearDataOut();
- Dorado9211SetDataOut();
- Dorado9211SetCS();
- Dorado9211ToggleClock();
- Dorado9211SetDataOut();
- Dorado9211ToggleClock();
-
- for (i=0; i < 12; i++) {
- if (index & 0x1) {
- Dorado9211SetDataOut();
- } else {
- Dorado9211ClearDataOut();
- }
- Dorado9211ToggleClock();
- index >>= 1;
- }
-
- Dorado9211SetDataOut();
- Dorado9211ToggleClock();
-
- for (i=0; i<32; i++) {
- if (data & 0x1) {
- Dorado9211SetDataOut();
- } else {
- Dorado9211ClearDataOut();
- }
- Dorado9211ToggleClock();
- data >>= 1;
- }
-
- Dorado9211ClearCS();
-
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
- Dorado9211ToggleClock();
-}
-
-void DoradoProgramFRMload(void)
-{
- unsigned long DoradoFRMtable[] = {
-
- 0x00000000,
- 0x00000000,
- 0x01000100,
- 0x01000100,
- 0x01010101,
- 0x01010101,
- 0x02081041,
- 0x02081041,
- 0x10111111,
- 0x11111101,
- 0x49249241,
- 0x12412492,
- 0x92244891,
- 0x92244891,
- 0x22252525,
- 0x22252525,
- 0x528294a5,
- 0x2528494a,
- 0x294a5295,
- 0x294a5295,
- 0x54a54a95,
- 0x2952a52a,
- 0x2a552a55,
- 0x2a552a55,
- 0x554aa955,
- 0x2a9552aa,
- 0x2aaa5555,
- 0x2aaa5555,
- 0x55555555,
- 0x2aaaaaaa,
- 0x55555555,
- 0x55555555,
- 0xaaaaaaab,
- 0x55555555,
- 0x5555aaab,
- 0x5555aaab,
- 0xaab556ab,
- 0x556aad55,
- 0x55ab55ab,
- 0x55ab55ab,
- 0xab5ab56b,
- 0x56ad5ad5,
- 0x56b5ad6b,
- 0x56b5ad6b,
- 0xad6d6b5b,
- 0x5ad6b6b6,
- 0x5b5b5b5b,
- 0x5b5b5b5b,
- 0x5F6db6db,
- 0x5F6db6db,
- 0xF776F776,
- 0xF776F776,
- 0xFBDEFBDE,
- 0xFBDEFBDE,
- 0x7eFFBFF7,
- 0x7eFFBFF7,
- 0xFF7FF7F7,
- 0xFF7FF7F7,
- 0xFF7FFF7F,
- 0xFF7FFF7F,
- 0xFFF7FFFF,
- 0xFFF7FFFF,
- 0xFFFFFFFF,
- 0xFFFFFFFF,
-};
-
- unsigned char i;
- unsigned short index;
- unsigned long data;
-
- Dorado9211WriteReg(CS92xx_FRM_MEMORY_INDEX,0);
- index = CS92xx_FRM_MEMORY_DATA;
- for (i = 0; i < 64; i+=2) {
- data = DoradoFRMtable[i];
- Dorado9211WriteReg(index,data);
- data = DoradoFRMtable[i+1];
- Dorado9211WriteReg(index,data);
- }
-
-/*
- * The first FRM location (64 bits) does not program correctly.
- * This location always reads back with the last value programmed.
- * ie. If 32 64-bit values are programmed, location 0 reads back as the 32nd
- * If 30 locations are programmed, location 0 reads back as the 30th, etc.
- * Fix this by re-writing location 0 after programming all 64 in the writeFRM
- * loop in RevCFrmload() in CS9211.
- */
-
- Dorado9211WriteReg(CS92xx_FRM_MEMORY_INDEX,0);
- Dorado9211WriteReg(CS92xx_FRM_MEMORY_DATA,0);
- Dorado9211WriteReg(CS92xx_FRM_MEMORY_DATA,0);
-
-}
-
-/******************************************************************************
- * void Dorado_Enable_Power((void);
- * Enables the power of the CX9211 on Dorado board.
- ******************************************************************************
- */
-
-void Dorado_Power_Up(void)
-{
- Dorado9211WriteReg(CS92xx_LCD_PWR_MAN,0x01000000);
- return;
-
-} /* disable_Centaurus_Power */
-
-/******************************************************************************
- * void Dorado_Disable_Power((void);
- * Disables the power of the CX9211 on Dorado board.
- *****************************************************************************
- */
-
-void Dorado_Power_Down(void)
-{
- Dorado9211WriteReg(CS92xx_LCD_PWR_MAN,0x0);
- return;
-
-} /* disable_Centaurus_Power */
-
-
-void Dorado_Save_Panel_State(void)
-{
-
- /* set 9211 registers using the desired panel settings */
- cs9211_regs.panel_timing1=Dorado9211ReadReg(CS92xx_LCD_PAN_TIMING1);
- cs9211_regs.panel_timing2=Dorado9211ReadReg(CS92xx_LCD_PAN_TIMING2);
-
- cs9211_regs.dither_frc_ctrl=Dorado9211ReadReg(CS92xx_LCD_DITH_FR_CNTRL);
- cs9211_regs.blue_lsfr_seed=Dorado9211ReadReg(CS92xx_BLUE_LSFR_SEED);
- cs9211_regs.red_green_lsfr_seed=Dorado9211ReadReg(CS92xx_RED_GREEN_LSFR_SEED);
-
- /* CentaurusProgramFRMload(); */
- cs9211_regs.memory_control=Dorado9211ReadReg(CS92xx_LCD_MEM_CNTRL);
-
- /* Set the power register last. This will turn the panel on at the 9211.*/
- cs9211_regs.power_management=Dorado9211ReadReg(CS92xx_LCD_PWR_MAN);
- cs9211_regs.panel_state = cs9211_regs.power_management;
-}
-void Dorado_Restore_Panel_State(void)
-{
- unsigned long off_data = 0;
-
- /* Before restoring the 9211 registers, power off the 9211. */
-
- Dorado9211WriteReg(CS92xx_LCD_PWR_MAN, off_data);
-
- /* set 9211 registers using the desired panel settings */
- Dorado9211WriteReg(CS92xx_LCD_PAN_TIMING1, cs9211_regs.panel_timing1);
- Dorado9211WriteReg(CS92xx_LCD_PAN_TIMING2, cs9211_regs.panel_timing2);
- /* load the LSFR seeds */
- Dorado9211WriteReg(CS92xx_LCD_DITH_FR_CNTRL, cs9211_regs.dither_frc_ctrl);
- Dorado9211WriteReg(CS92xx_BLUE_LSFR_SEED, cs9211_regs.blue_lsfr_seed);
- Dorado9211WriteReg(CS92xx_RED_GREEN_LSFR_SEED,
- cs9211_regs.red_green_lsfr_seed);
-
- Dorado9211WriteReg(CS92xx_LCD_MEM_CNTRL, cs9211_regs.memory_control);
- /* Set the power register last. This will turn the panel on at the 9211.*/
- Dorado9211WriteReg(CS92xx_LCD_PWR_MAN, cs9211_regs.power_management);
-}
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.h
deleted file mode 100644
index 29e4b1cc8..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/dora9211.h,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: dora9211.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This header file defines the Durango routines and
- * variables used to access the memory mapped regions.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode graphics driver for panel support
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#include "panel.h"
-#include "92xx.h"
-
-#ifndef _DORA9211_h
-#define _DORA9211_h
-
-/* 9211 Rev.C3 Dorado */
-
-/* GPIO Pin Configuration Registers */
-
-#define DRD_GEODE_GPPIN_SEL 0x20 /* GPIO Pin Configuration Select */
-#define DRD_GEODE_GPPIN_CFG 0x24 /* GPIO Pin Configuration Access */
-#define DRD_GEODE_GPPIN_RESET 0x28 /* GPIO Pin Reset */
-
-#define DRD_GEODE_GPIO_BASE 0x6400 /* F0 GPIO, IO mapped */
-#define DRD_GEODE_GPDI0 0x04 /* GPIO Data In 0 */
-#define DRD_GEODE_GPDO0 0x00 /* GPIO Data Out 0 */
-
-/* Data Ports in */
-#define DRD_CLOCKP9211IN DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDI0
-#define DRD_DATAINP9211IN DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDI0
-#define DRD_DATAOUTP9211IN DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDI0
-#define DRD_CSP9211IN DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDI0
-
-/* Data Ports out */
-#define DRD_CLOCKP9211OUT DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDO0
-#define DRD_DATAINP9211OUT DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDO0
-#define DRD_DATAOUTP9211OUT DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDO0
-#define DRD_CSP9211OUT DRD_GEODE_GPIO_BASE + DRD_GEODE_GPDO0
-
-/* Pin MASKS */
-#define DRD_CLOCK9211 0x00000080 /*;gpio 7, clock output to 9211 */
-#define DRD_DATAIN9211 0x00040000 /*;gpio 18, data output to 9211 */
-#define DRD_DATAOUT9211 0x00000800 /*;gpio 11, data input from 9211 */
-#define DRD_CS9211 0x00000200 /*;gpio 9, chip select output to 9211 */
-
-/* Gpio CFG values to select in */
-#define DRD_CLOCK9211CFG 0x00000007 /* ;gpio 7 */
-#define DRD_DATAIN9211CFG 0x00000012 /* ;gpio 18 */
-#define DRD_DATAOUT9211CFG 0x0000000B /* ;gpio 11 */
-#define DRD_CS9211CFG 0x00000009 /* ;gpio 9 */
-
-#define DRD_LCDRESGPIO1 0x00
-#define DRD_LCDRESGPIO2 0x01
-#define DRD_LCDRESGPIO3 0x02
-#define DRD_LCDRESGPIO4 0x04
-
-void Dorado9211SetCS(void);
-void Dorado9211ClearCS(void);
-void Dorado9211SetDataOut(void);
-void Dorado9211ClearDataOut(void);
-unsigned char Dorado9211ReadDataIn(void);
-void Dorado9211ToggleClock(void);
-void Dorado9211SetClock(void);
-void Dorado9211ClearClock(void);
-void Dorado9211GpioInit(void);
-unsigned long Dorado9211ReadReg(unsigned short index);
-void Dorado9211WriteReg(unsigned short index, unsigned long data);
-void DoradoProgramFRMload(void);
-void Dorado_Get_9211_Details(unsigned long flags, PPnl_PanelParams pParam);
-void Dorado_Power_Up(void);
-void Dorado_Power_Down(void);
-void Dorado_Save_Panel_State(void);
-void Dorado_Restore_Panel_State(void);
-
-#endif /* !_DORA9211_h */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.c
deleted file mode 100644
index 06a321049..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.c
+++ /dev/null
@@ -1,775 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.c,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: drac9210.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the panel library files to the
- * platforms with 9210, and 9211 support.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-
-
-#include "drac9210.h"
-
-#define CS9210 0x40 /* Chip select pin */
-
-/* 9210 on Draco */
-#define CLOCK9210 0x04 /* Clock pin */
-#define DATAIN9210 0x20 /* Data from 9210 */
-#define DATAOUT9210 0x80 /* Data to 9210 */
-
-static void DracoWriteData(unsigned char data);
-static void DracoReadData(unsigned char *data);
-static void Draco9210GpioInit();
-static void Draco9210SetCS(void);
-static unsigned char Draco9210ReadReg(unsigned char index);
-static void Draco9210WriteReg(unsigned char index, unsigned char data);
-static void Draco9210ClearCS(void);
-static void Draco9210SetDataOut(void);
-static void Draco9210ClearDataOut(void);
-static unsigned char Draco9210ReadDataIn(void);
-static void Draco9210ToggleClock(void);
-
-void Draco9210Init(Pnl_PanelStat *pstat)
-{
- unsigned char panelvalues[] = {
- 0x2,0x80,
- 0x2, 0x24,
- 0x03, 0x00,
- 0xc0, 0x00,
- 0xc1, 0x00,
- 0xc2, 0x00,
- 0xc3, 0x00,
- 0xc4, 0x00,
- 0xc5, 0x01,
- 0xc6, 0xff,
- 0xc7, 0xff,
- 0xc8, 0x3,
- 0xc9, 0xfe,
- 0xca, 0x0,
- 0xcb, 0x3f,
- 0xcc, 0xc,
- 0xcd, 0x1,
- 0xce, 0xff,
- 0xcf, 0xc1,
- 0xd0, 0x0,
- 0xd1, 0x7e,
- 0xd2, 0x3,
- 0xd3, 0xfe,
- 0xd4, 0x3,
- 0xd5, 0x81,
- 0xd6, 0xfc,
- 0xd7, 0x3f,
- 0xd8, 0x14,
- 0xd9, 0x1e,
- 0xda, 0x0f,
- 0xdb, 0xc7,
- 0xdc, 0x29,
- 0xdd, 0xe1,
- 0xde, 0xf1,
- 0xdf, 0xf9,
- 0xe0, 0x2,
- 0xe1, 0xe,
- 0xe2, 0x1e,
- 0xe3, 0x3e,
- 0xe4, 0x04,
- 0xe5, 0x71,
- 0xe6, 0xe3,
- 0xe7, 0xcf,
- 0xe8, 0x1,
- 0xe9, 0x86,
- 0xea, 0x3c,
- 0xeb, 0xf3,
- 0xec, 0xa,
- 0xed, 0x39,
- 0xee, 0xc7,
- 0xef, 0x3d,
-
- 0xf0, 0x14,
- 0xf1, 0xc6,
- 0xf2, 0x39,
- 0xf3, 0xce,
- 0xf4, 0x3,
- 0xf5, 0x19,
- 0xf6, 0xce,
- 0xf7, 0x77,
- 0xf8, 0x0,
- 0xf9, 0x66,
- 0xfa, 0x33,
- 0xfb, 0xbb,
- 0xfc, 0x2d,
- 0xfd, 0x99,
- 0xfe, 0xdd,
- 0xff, 0xdd,
-
- 0x3, 0x1,
- 0xc0, 0x2,
- 0xc1, 0x22,
- 0xc2, 0x66,
- 0xc3, 0x66,
- 0xc4, 0x0,
- 0xc5, 0xcd,
- 0xc6, 0x99,
- 0xc7, 0xbb,
- 0xc8, 0x5,
- 0xc9, 0x32,
- 0xca, 0x66,
- 0xcb, 0xdd,
- 0xcc, 0x1a,
- 0xcd, 0x4d,
- 0xce, 0x9b,
- 0xcf, 0x6f,
- 0xd0, 0x0,
- 0xd1, 0x92,
- 0xd2, 0x6d,
- 0xd3, 0xb6,
- 0xd4, 0x5,
- 0xd5, 0x25,
- 0xd6, 0xb6,
- 0xd7, 0xdb,
- 0xd8, 0x2,
- 0xd9, 0x5a,
- 0xda, 0x4b,
- 0xdb, 0x6d,
- 0xdc, 0x29,
- 0xdd, 0xa5,
- 0xde, 0xb5,
- 0xdf, 0xb7,
- 0xe0, 0x4,
- 0xe1, 0x4a,
- 0xe2, 0x5a,
- 0xe3, 0xda,
- 0xe4, 0x12,
- 0xe5, 0x95,
- 0xe6, 0xad,
- 0xe7, 0x6f,
- 0xe8, 0x1,
- 0xe9, 0x2a,
- 0xea, 0x56,
- 0xeb, 0xb5,
- 0xec, 0xe,
- 0xed, 0x55,
- 0xee, 0xab,
- 0xef, 0x5f,
- 0xf0, 0x0,
- 0xf1, 0xaa,
- 0xf2, 0x55,
- 0xf3, 0xea,
- 0xf4, 0x1,
- 0xf5, 0x55,
- 0xf6, 0xaa,
- 0xf7, 0xbf,
- 0xf8, 0x6,
- 0xf9, 0xaa,
- 0xfa, 0x55,
- 0xfb, 0x55,
- 0xfc, 0x39,
- 0xfd, 0x55,
- 0xfe, 0xff,
- 0xff, 0xff,
-
- 0x3, 0x2,
- 0xc0, 0x0,
- 0xc1, 0x0,
- 0xc2, 0xaa,
- 0xc3, 0xaa,
- 0xc4, 0x6,
- 0xc5, 0xab,
- 0xc6, 0x55,
- 0xc7, 0x55,
- 0xc8, 0x01,
- 0xc9, 0x54,
- 0xca, 0xaa,
- 0xcb, 0xbf,
- 0xcc, 0x8,
- 0xcd, 0xab,
- 0xce, 0x55,
- 0xcf, 0xeb,
- 0xd0, 0x6,
- 0xd1, 0x54,
- 0xd2, 0xab,
- 0xd3, 0x5e,
- 0xd4, 0x1,
- 0xd5, 0x2b,
- 0xd6, 0x56,
- 0xd7, 0xb5,
- 0xd8, 0x12,
- 0xd9, 0x94,
- 0xda, 0xad,
- 0xdb, 0x6f,
- 0xdc, 0x2d,
- 0xdd, 0x4b,
- 0xde, 0x5b,
- 0xdf, 0xdb,
- 0xe0, 0x0,
- 0xe1, 0xa4,
- 0xe2, 0xb4,
- 0xe3, 0xb6,
- 0xe4, 0x2,
- 0xe5, 0x5b,
- 0xe6, 0x4b,
- 0xe7, 0x6d,
- 0xe8, 0x5,
- 0xe9, 0x24,
- 0xea, 0xb6,
- 0xeb, 0xdb,
- 0xec, 0x8,
- 0xed, 0x93,
- 0xee, 0x6d,
- 0xef, 0xb7,
- 0xf0, 0x12,
- 0xf1, 0x4c,
- 0xf2, 0x9b,
- 0xf3, 0x6e,
- 0xf4, 0x5,
- 0xf5, 0x33,
- 0xf6, 0x66,
- 0xf7, 0xdd,
- 0xf8, 0x0,
- 0xf9, 0xcc,
- 0xfa, 0x99,
- 0xfb, 0xbb,
- 0xfc, 0x2b,
- 0xfd, 0x33,
- 0xfe, 0x77,
- 0xff, 0x77,
-
- 0x3, 0x3,
- 0xc0, 0x4,
- 0xc1, 0x88,
- 0xc2, 0xcc,
- 0xc3, 0xcc,
- 0xc4, 0x0,
- 0xc5, 0x67,
- 0xc6, 0x33,
- 0xc7, 0xbb,
- 0xc8, 0x3,
- 0xc9, 0x18,
- 0xca, 0xce,
- 0xcb, 0x77,
- 0xcc, 0x1c,
- 0xcd, 0xc7,
- 0xce, 0x39,
- 0xcf, 0xcf,
-
- 0xd0, 0x2,
- 0xd1, 0x38,
- 0xd2, 0xc7,
- 0xd3, 0x3c,
- 0xd4, 0x1,
- 0xd5, 0x87,
- 0xd6, 0x3c,
- 0xd7, 0xf3,
- 0xd8, 0x4,
- 0xd9, 0x70,
- 0xda, 0xe3,
- 0xdb, 0xcf,
- 0xdc, 0x2b,
- 0xdd, 0xf,
- 0xde, 0x1f,
- 0xdf, 0x3f,
- 0xe0, 0x00,
- 0xe1, 0xe0,
- 0xe2, 0xf0,
- 0xe3, 0xf8,
- 0xe4, 0x14,
- 0xe5, 0x1f,
- 0xe6, 0xf,
- 0xe7, 0xc7,
- 0xe8, 0x3,
- 0xe9, 0x80,
- 0xea, 0xfc,
- 0xeb, 0x3f,
- 0xec, 0x8,
- 0xed, 0x7f,
- 0xee, 0x3,
- 0xef, 0xff,
- 0xf0, 0x4,
- 0xf1, 0x0,
- 0xf2, 0xff,
- 0xf3, 0xc0,
- 0xf4, 0x3,
- 0xf5, 0xff,
- 0xf6, 0x0,
- 0xf7, 0x3f,
- 0xf8, 0x0,
- 0xf9, 0x0,
- 0xfa, 0xff,
- 0xfb, 0xff,
- 0xfc, 0x3f,
- 0xfd, 0xff,
- 0xfe, 0xff,
- 0xff, 0xff,
- 0x3, 0x4,
-
- /* Setup the Diter to Pattern33 */
- 0x80, 0xdd,
- 0x81, 0xdd,
- 0x82, 0x33,
- 0x83, 0x33,
- 0x84, 0xdd,
- 0x85, 0xdd,
- 0x86, 0x33,
- 0x87, 0x33,
- 0x88, 0x33,
- 0x89, 0x33,
- 0x8a, 0x77,
- 0x8b, 0x77,
- 0x8c, 0x33,
- 0x8d, 0x33,
- 0x8e, 0x77,
- 0x8f, 0x77,
- 0x90, 0xdd,
- 0x91, 0xdd,
- 0x92, 0x33,
- 0x93, 0x33,
- 0x94, 0xdd,
- 0x95, 0xdd,
- 0x96, 0x33,
- 0x97, 0x33,
- 0x98, 0x33,
- 0x99, 0x33,
- 0x9a, 0x77,
- 0x9b, 0x77,
- 0x9c, 0x33,
- 0x9d, 0x33,
- 0x9e, 0x77,
- 0x9f, 0x77,
-
- 0x4, 0x20,
- 0x5, 0x3,
- 0x6, 0x56,
- 0x7, 0x2,
- 0x8, 0x1c,
- 0x9, 0x0,
- 0xa, 0x26,
- 0xb, 0x0,
- 0xc, 0x15,
- 0xd, 0x4,
- 0xe, 0x50,
- 0xf, 0x4,
- 0x10, 0xfa,
- 0x11, 0x0,
- 0x12, 0xc8,
- 0x13, 0x0,
- 0x14, 0x31,
- 0x15, 0x23,
- 0x16, 0x0,
-
- /* Enable DSTN panel */
- 0x2,0x64
- };
- unsigned char index,data;
- int i;
-
- gfx_delay_milliseconds(100);
- Draco9210GpioInit();
- Draco9210SetCS();
- Draco9210ToggleClock();
- Draco9210ToggleClock();
- Draco9210ToggleClock();
- Draco9210ToggleClock();
- Draco9210ClearCS();
-
-#if defined(_WIN32) /* For Windows */
- for(i=0;i<10;i++) {
- _asm {
- out 0EDh, al
- }
- }
-
-#elif defined(linux) /* Linux */
-
-#endif
-
- for (i=0; i < 630 ; i+=2) {
- index = panelvalues[i];
- data = panelvalues[i+1];
- Draco9210WriteReg(index,data);
- }
-
-}
-
-static void DracoWriteData(unsigned char data)
-{
- int i;
- unsigned char mask = 0x80, databit;
-
- for (i=0;i <8; i++) {
-
- databit = data & mask;
- if(data & mask) {
- Draco9210SetDataOut();
- } else {
- Draco9210ClearDataOut();
- }
- mask >>= 1;
- Draco9210ToggleClock();
- }
-}
-
-static void DracoReadData(unsigned char *data)
-{
- int i;
- unsigned char tmp=0, readbit;
-
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
- for (i=0;i<7;i++) {
- readbit = Draco9210ReadDataIn();
- tmp |= (readbit & 0x1);
- tmp <<= 1;
- Draco9210ToggleClock();
- }
- readbit = Draco9210ReadDataIn();
- tmp |= (readbit & 0x1);
- *data = tmp;
-}
-
-#if defined(_WIN32) /* For Windows */
-
-void Draco9210GpioInit()
-{
- _asm {
- pushf
- cli
- mov dx, 0CF8h
- mov eax, CX55x0_ID+090h
- out dx, eax
- mov dx, 0CFCh
- mov al, 0CFh
- mov ah, 00h
- out dx, ax
- popf
- }
-}
-
-void Draco9210SetCS()
-{
- _asm {
- pushf
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
-
- in ax, dx
- and ah, 30h
- mov ah, c92DataReg
- or ah, CS9210
- mov c92DataReg, ah
- out dx, ax
- popf
- }
-}
-
-void Draco9210ClearCS()
-{
- _asm {
- pushf
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
-
- ; Set CS LOW
- in ax, dx
- mov ah, c92DataReg
- and ah, NOT CS9210
- mov c92DataReg, ah
- out dx, ax
- popf
- }
-}
-
-void Draco9210SetDataOut()
-{
- _asm {
- pushf
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
- ; Set DATA HIGH
- in ax, dx
- mov ah, c92DataReg
- or ah, DATAOUT9210
- mov c92DataReg, ah
- out dx, ax
- popf
- }
-}
-
-void Draco9210ClearDataOut()
-{
- _asm{
- pushf
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
- ; Set Data LOW
- in ax, dx
- mov ah, c92DataReg
- and ah, NOT DATAOUT9210
- mov c92DataReg, ah
- out dx, ax
- popf
- }
-}
-
-unsigned char Draco9210ReadDataIn()
-{
- unsigned char readdata;
- _asm{
- pushf
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
-
- in ax, dx
- and ah, DATAIN9210 ; Preserve just Data IN bit
- mov al, ah
- cmp al, 0 ; Is it LOW?
- je readDataLow
- mov al, 1 ; must be HIGH
-
- readDataLow:
- mov readdata,al
- popf
- }
- return (readdata);
-}
-
-
-void Draco9210ToggleClock()
-{
- _asm{
- pushf
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
-
- ; SET CLOCK
- in ax, dx
- mov ah, c92DataReg
- or ah, CLOCK9210
- mov c92DataReg, ah
- out dx, ax
- out 0EDh, al /* IOPAUSE */
-
- mov dx, 0CF8h ; Point to PCI address register
- mov eax, CX55x0_ID+090h ; 55XX GPIO data register
- out dx, eax
- mov dx, 0CFCh ; Point to PCI data register (CFCh)
-
- ; CLEAR CLOCK
- in ax, dx
- mov ah, c92DataReg
- and ah, NOT CLOCK9210
- mov c92DataReg, ah
- out dx, ax
- popf
- }
-}
-
-#elif defined(linux) /* Linux */
-
- void Draco9210GpioInit(){}
- void Draco9210SetCS(){}
- void Draco9210ClearCS(){}
- void Draco9210SetDataOut(){}
- void Draco9210ClearDataOut(){}
- unsigned char Draco9210ReadDataIn(){}
- void Draco9210ToggleClock(){}
-
-#endif
-
-unsigned char Draco9210ReadReg(unsigned char index)
-{
- unsigned char data;
-
- Draco9210SetCS();
- Draco9210ToggleClock();
- Draco9210SetDataOut();
- Draco9210ToggleClock();
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
-
- DracoWriteData(index);
- DracoReadData(&data);
-
- return (data);
-}
-
-void Draco9210WriteReg(unsigned char index, unsigned char data)
-{
-
- Draco9210SetCS();
- Draco9210ToggleClock();
-
- Draco9210SetDataOut();
- Draco9210ToggleClock();
-
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
-
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
-
- Draco9210SetDataOut();
- Draco9210ToggleClock();
-
- DracoWriteData(index);
- DracoWriteData(data);
-
-
- Draco9210ClearDataOut();
- Draco9210ToggleClock();
-
- Draco9210ClearCS();
- Draco9210ToggleClock();
- Draco9210ToggleClock();
-
-}
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.h
deleted file mode 100644
index 9558c98ed..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/drac9210.h,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: drac9210.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the panel header file and definition
- * for the platform with 9210 support.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Geode graphics driver for panel support
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#include "panel.h"
-
-#ifndef _DRAC9210_h
-#define _DRAC9210_h
-#define CX55x0_ID 0x80009000
-static unsigned char c92DataReg=0;
-#endif /* !_DRAC9210_h */
-
-/* END OF FILE */
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.c
deleted file mode 100644
index 0846be4ff..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.c,v 1.2 2002/10/18 20:02:41 tsi Exp $ */
-/*
- * $Workfile: panel.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the file inclusions, macro definitions
- * for the panel.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#if defined(linux) /* Linux */
-
-#ifdef __KERNEL__
-
-#include <linux/string.h>
-#include <asm/io.h>
-
-#else
-
-#include <linux/fs.h>
-#include <asm/mman.h>
-
-#endif /* __KERNEL__ */
-#elif defined(_WIN32) /* windows */
-
-#include <windows.h>
-
-#endif
-
-#include "panel.h"
-#include "gfx_defs.h"
-extern unsigned char *gfx_virt_regptr;
-extern unsigned char *gfx_virt_fbptr;
-extern unsigned char *gfx_virt_vidptr;
-extern unsigned char *gfx_virt_vipptr;
-extern unsigned long gfx_detect_video(void);
-
-#define PLATFORM_DYNAMIC 1 /* runtime selection */
-#define PLATFORM_DRACO 1 /* Draco + 9210 */
-#define PLATFORM_CENTAURUS 1 /* Centaurus + 9211 RevA */
-#define PLATFORM_DORADO 1 /* Dorado + 9211 RevC */
-#define PLATFORM_REDCLOUD 1 /* GX2 */
-#define PLATFORM_GX2BASED 0 /* ??? */
-
-unsigned char *XpressROMPtr;
-
-#include "pnl_init.c"
-#include "pnl_bios.c"
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.h
deleted file mode 100644
index a8cb92cd1..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/panel.h,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: panel.h $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the Geode frame buffer panel
- * functions prototypes and it includes panel
- * definitions header file.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/* COMPILER OPTION FOR C++ PROGRAMS */
-
-#ifndef _panel_h
-#define _panel_h
-
-#include "pnl_defs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* CLOSE BRACKET FOR C++ COMPLILATION */
-
-void Pnl_SetPlatform(int platform);
-int Pnl_GetPlatform(void);
-int Pnl_IsPanelPresent(void);
-void Pnl_SetPanelPresent(int present);
-void Pnl_SetPanelChip(int panelChip);
-int Pnl_GetPanelChip(void);
-void Pnl_SetPanelParam(PPnl_PanelParams pParam);
-void Pnl_GetPanelParam(PPnl_PanelParams pParam);
-int Pnl_InitPanel(PPnl_PanelParams pParam);
-int Detect_Platform(void);
-void Pnl_SavePanelState(void);
-void Pnl_RestorePanelState(void);
-void Pnl_PowerUp(void);
-void Pnl_PowerDown(void);
-
-int Pnl_IsPanelEnabledInBIOS(void);
-void Pnl_GetPanelInfoFromBIOS(int *xres, int *yres, int *bpp, int *hz);
-/* from durango */
-
-extern void gfx_delay_milliseconds(unsigned long milliseconds);
-extern unsigned long gfx_ind(unsigned short port);
-extern void gfx_outd(unsigned short port, unsigned long data);
-extern unsigned char gfx_inb(unsigned short port);
-extern void gfx_outb(unsigned short port, unsigned char data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_panel_h */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/platform.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/platform.c
deleted file mode 100644
index 33e4c6cf1..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/platform.c
+++ /dev/null
@@ -1,742 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/platform.c,v 1.2 2002/10/18 20:02:41 tsi Exp $ */
-/*
- * $Workfile: platform.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains platform dependent functions
- * which provide interface to that platform.
- *
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#define LINUX_ROM_SEGMENT 0x000F
-#define SEGMENT_LENGTH 0xFFFF
-#define PAGE_LENGTH 0x1000
-#define SYS_BOARD_NAME_LEN 24
-
-#define PLT_READ 0
-#define PLT_WRITE 1
-#define PLT_WRITE_BYTES 2
-#define PLT_READ_BYTES 3
-#define PLT_WRITE_WORDS 4
-#define PLT_READ_WORDS 5
-#define PLT_WRITE_DWORDS 6
-#define PLT_READ_DWORDS 7
-#define PLT_UNKNOWN 0xFFFF
-
-typedef struct {
- char sys_board_name[SYS_BOARD_NAME_LEN];
- SYS_BOARD sys_board;
-} SYS_BOARD_INFO;
-
-static SYS_BOARD_INFO Sys_info;
-
-/*
- * The names in the sys_board_name string must exactly match the names in the
- * BIOS header. These names are used by FindStringInSeg() to find the names
- * in the BIOS header space. The BIOS does not use OTHER; it is a dummy value
- * for program useonly.
- *
- */
-
- SYS_BOARD_INFO Sys_board_info_array[] = {
- {"Marmot", MARMOT_PLATFORM },
- {"Unicorn", UNICORN_PLATFORM },
- {"Centaurus", CENTAURUS_PLATFORM },
- {"Aries", ARIES_PLATFORM },
- {"Carmel", CARMEL_PLATFORM },
- {"Hyrda", HYDRA_PLATFORM },
- {"Dorado", DORADO_PLATFORM },
- {"Redcloud", REDCLOUD_PLATFORM },
- {"Other", OTHER_PLATFORM}
-};
-
-#define NUM_SYS_BOARD_TYPES sizeof(Sys_board_info_array)/sizeof(SYS_BOARD_INFO)
-
-static int Num_sys_board_type = NUM_SYS_BOARD_TYPES;
-SYS_BOARD_INFO *Sys_board_array_base = Sys_board_info_array;
-int FindStringInSeg(unsigned int, char *);
-static unsigned char get_sys_board_type(SYS_BOARD_INFO *, SYS_BOARD_INFO *);
-
-#if defined(linux) && !defined(__KERNEL__)
-#if defined(XFree86Server) && !defined(IN_MODULE)
-static void protected_mode_access(unsigned int, unsigned int,
- unsigned long, unsigned char* );
-static void setup_pma();
-static void close_pma();
-static int fd;
-#endif /* IN_MODULE */
-#endif /* __KERNEL__ */
-
-
-/* Detect the Platform */
-int Detect_Platform(void)
-{
-#if defined(linux) && !defined(__KERNEL__)
-#if defined(XFree86Server) && !defined(IN_MODULE)
- setup_pma();
-
-#endif /* IN_MODULE */
-
-#endif /* __KERNEL__ */
-
- /* See if we can find the board name using Xpressrom */
- if (get_sys_board_type(&Sys_info, Sys_board_array_base) == TRUE ) {
-#if 0
- if( Sys_info.sys_board == CENTAURUS_PLATFORM) {
- printk("CENTAURUS Platform Found\n");
- }
- else
- if (Sys_info.sys_board == DORADO_PLATFORM) {
- printk("DORADO Platform Found \n");
- }
- else {
- printk("UNKNOWN Platform Found \n");
- }
-#endif
-}
-
-#if defined(linux) && !defined(__KERNEL__)
-#if defined(XFree86Server) && !defined(IN_MODULE)
- close_pma();
-#endif /* IN_MODULE */
-#endif /* __KERNEL__ */
-
-return (Sys_info.sys_board);
-}
-
-static int Strncmp(char *str1, char *str2, int len )
-{
- int i;
- if((str1 == 0x0) || (str2 == 0x0) || (len == 0))
- return (1);
- for(i = 0; i < len; i++) {
- if(*(str1+i) > *(str2+i)) {
- return 1;
- }
- else
- if(*(str1+i) < *(str2+i)) {
- return -1;
- }
- }
- return 0;
-}
-
-static char *Strcpy(char *dst, char *src)
-{
- int i;
- if((dst == 0x0) || (src == 0x0))
- return (0);
- for(i = 0; src[i] != 0x0; i++)
- {
- dst[i] = src[i];
- }
- dst[i] = 0x0; /* NULL termination */
- return dst;
-}
-
-static int Strlen(char *str)
-{
- int i;
- if(str == 0x0)
- return 0;
- for(i = 0; str[i] != 0x0; i++);
- return i;
-}
-
-/***********************************************************************/
-
-/* Platform Detection Code */
-
-/***********************************************************************/
-
-/************************************************************************
- * int FindStringInSeg( unsigned int segment_address, char *string_ptr )
- * Returns the offset where the NULL terminated string pointed to by
- * string_ptr is located in the segment passed in segment_address.
- * Segment_address must be of the form 0xXXXX (i.e 0xf000 for segment f).
- * Returns NULL if the string is not found.
- ************************************************************************
- */
-int FindStringInSeg( unsigned int segment_address, char *string_ptr )
-{
- int string_length = Strlen( string_ptr );
- char *psegment_buf;
- unsigned long mem_ptr = (unsigned long)segment_address << 16;
- unsigned char segment_buffer[SEGMENT_LENGTH + 1 ];
- int i, cursor;
-
- /* silence compiler */
- (void) cursor;
- (void) mem_ptr;
- (void) segment_buffer;
-
-#if defined(linux)
-#if defined(__KERNEL__)
- XpressROMPtr = (unsigned char *)ioremap(mem_ptr, SEGMENT_LENGTH+1);
- psegment_buf = (char *)XpressROMPtr;
-#else
-#if defined(XFree86Server) && defined(IN_MODULE)
- psegment_buf = (char *)XpressROMPtr;
-#else
- /* Fill the segment_buffer with 16 page accesses */
-
- for(cursor = 0; (cursor * PAGE_LENGTH) < SEGMENT_LENGTH; cursor++) {
- protected_mode_access(PLT_READ_BYTES, PAGE_LENGTH, mem_ptr +
- (cursor * PAGE_LENGTH ),
- &(segment_buffer[( cursor * PAGE_LENGTH )]) );
- }
- psegment_buf = segment_buffer;
-#endif /* defined(XFree86Server) && defined(IN_MODULE) */
-#endif /* __KERNEL__ */
-
-#elif defined(_WIN32) /* Windows */
- psegment_buf = XpressROMPtr;
-#endif
- /* Now search for the first character of the string_ptr */
- for(i = 0; i < SEGMENT_LENGTH + 1 ; i++) {
- if(*(psegment_buf + i) == *string_ptr) {
-
- /* If we match the first character, do a
- * string compare.
- */
-
- if(!Strncmp(string_ptr, (psegment_buf + i),
- string_length )) {
- /* They match! */
- return(1);
- }
- }
- }
- /* if we got this far we didn't find anything. Return NULL. */
- return(0);
-
-} /* end FindStringInSeg() */
-
-
-/**********************************************************************
-
- * TRUE_FALSE get_sys_board_type( SYS_BOARD_INFO *sys_info,
- * SYS_BOARD_INFO *sys_board_array_base) Checks the system
- * BIOS area for Xpressrom information. If found, searches the BIOS
- * area for one of names in the array pointed to by sys_board_array_ptr.
- * If a match is found, sets the SYS_INFO system_board_name string
- * and the system_board variable to the board name and returns TRUE.
- * If Xpressrom or a board is not found, sets the variables to
- * their default values and returns FALSE.
- * Uses the global string pointer *xpress_rom_string_ptr.
- *
- ***********************************************************************
- */
-
-static unsigned char get_sys_board_type( SYS_BOARD_INFO *sys_info,
- SYS_BOARD_INFO *sys_board_array_base )
-{
- int index;
- char *xpress_rom_string_ptr = "XpressStart";
- unsigned int segment = LINUX_ROM_SEGMENT;
-
- /* See if XpressStart is present in the BIOS area.
- * If it is, search for a board string. If not, Xpressrom is
- * not present, set system_board information to UNKNOWN and
- * return FALSE.
- */
-
- if (!FindStringInSeg(segment, xpress_rom_string_ptr )) {
- sys_info->sys_board = PLT_UNKNOWN;
- Strcpy( sys_info->sys_board_name, "Unknown" );
- return( FALSE );
- }
- else {
-
- /* we have Xpressrom, so look for a board */
- for(index = 0; index < Num_sys_board_type; index++) {
- if (!FindStringInSeg(segment, (sys_board_array_base +
- index)->sys_board_name )) {
- continue;
- }
- else {
-
- /* a match!! */
- sys_info->sys_board =
- ( sys_board_array_base + index )->sys_board;
- Strcpy(sys_info->sys_board_name,
- (sys_board_array_base+index )->sys_board_name );
- return( TRUE );
- }
- } /* end for() */
- } /* end else */
-
- /* if we are here we have failed */
- sys_info->sys_board = PLT_UNKNOWN;
- Strcpy( sys_info->sys_board_name, "Unknown" );
- return( FALSE );
-} /* end get_sys_board_type() */
-
-#if defined(linux) && !defined(__KERNEL__)
-#if defined(XFree86Server) && !defined(IN_MODULE)
-
-/******************************************************************
- *
- * protected_mode_access( unsigned int mode, unsigned int width,
- * unsigned long addr, unsigned char* pdata )
- * This function provides access to physical memory
- * at the requested address.
- * mode is: PLT_READ or PLT_WRITE (accesses a single byte, word
- * or double word depending on the value of "width".
- * Only 1, 2 or 4 supported).
- * PLT_READ_BYTES, PLT_WRITE_BYTES accesses "width" number
- * of bytes (8 bits)
- * PLT_READ_WORDS, PLT_WRITE_WORDS accesses "width" number
- * of words (16 bits) PLT_READ_DWORDS, PLT_WRITE_DWORDS accesses
- * "width" number of dwords (32 bits)
- * width is: The size of the access.
- * For PLT_READ or PLT_WRITE, only 1, 2 and 4 are
- * supported. For other modes, width is not limited but
- * will cause paging if the block traverses page boundaries.
- * addr is: The physical address being accessed
- * pdata is: A pointer to the data to be read or written into.
- * NOTE! WORD or DWORD accesses can only be made on
- * WORD or DWORD boundaries!
- *
- ******************************************************************
- */
-
-static void protected_mode_access( unsigned int mode, unsigned int width,
- unsigned long addr, unsigned char* pdata )
-{
-
-#define PMTRASH 0x12345678L
-
- unsigned long base; /* The physical page address */
- int length = 0x1000; /* the page size is 4k */
- unsigned int offset = 0; /* The physical addr offset into page */
- unsigned int index = 0; /* Used to read/write from/to a block */
- unsigned int chunk = 0; /* The amount to read/wr from THIS block */
- unsigned int size = 0; /* Data size shift value (to avoid math) */
- static void *ptr; /* pointer to real memory location. */
-
- static unsigned long lastbase = PMTRASH;
-
- /* temp storage of previous base used. */
- /* type specific buffer pointers */
- unsigned char* byte_data = (unsigned char*)pdata;
- unsigned int* word_data = (unsigned int*)pdata;
- unsigned long* dword_data = (unsigned long*)pdata;
-
- switch( mode ) {
-
- case PLT_READ_WORDS:
- case PLT_WRITE_WORDS:
-
- size = 1;
- break;
-
- case PLT_READ_DWORDS:
- case PLT_WRITE_DWORDS:
-
- size = 2;
- }
-
- /* Check if we're in the user accessable range */
- if (addr < 0xFF000000L ) {
-
- /* We get physical memory in "pages", defined by the
- * following "base" address and the "offset" into it.
- * "base" will be used with mmap to get "ptr", which
- * points to the memory mapped actual physical memory at
- * the address pointed-to by "base".
- * "width" and "chunk" are in units of whatever data
- * type we're reading.
- * "length" and "offset" are in units of bytes.
- * "width" and "chunk" must be adjusted with "<<size"
- * to use with "length" or "offset". Similarly, the
- * result must be adjusted with ">>size" to make into the
- * proper type units when done.
- */
- base = addr & 0xFFFFF000L;
- offset = addr & 0x00000FFFL;
- do {
- if (( offset + ( width << size )) > length ) {
-
- /* Block being read extends beyond the
- * page boundary. Adjust things.
- */
- chunk = (length - offset) >> size;
-
- /* Figure the chunk size */
- width -= chunk;
-
- /* Reduce width by the current chunk */
- }
- else {
-
- /* Block being read is within the
- * page boundary.
- */
- chunk = width;
- width = 0;
-
- /* set to zero so we'll exit at the end */
-
- }
- /* We keep the page around in case we need to
- * access it again.
- * This saves us some time if we have consecutive
- * accesses.
- */
-
- if (base != lastbase) {
-
- /* we haven't mmap'd this address
- * Have to get a new page. Free the
- * previous page, if it's valid (ie, not
- * PMTRASH). If not, unmap it and get the
- * new page.
- */
- if (lastbase != PMTRASH)
- munmap(ptr, length);
- ptr = mmap(NULL, length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, base);
- if ( (int) ptr == -1 ) {
- lastbase = PMTRASH;
- return; /* error */
- }
- }
-
- /* Now we're ready to get the data.
- * It's pure memory access now, no funny
- * function calls, however we do cast things to get
- * the right size data.
- */
-
- /* Scale the offset for the data type size */
- index = offset >> size;
-
- /* Note that the above line and below lines,
- * which shift "offset", discard address information
- * if you happen to be trying to write, for example,
- * dwords on non-dword boundaries.
- */
- /* Note that cases PLT_READ and PLT_WRITE don't
- * use "index". They shift "offset" on their own.
- * This is because in PLT_READ and PLT_WRITE modes,
- * the information on the size of the data
- * transaction is in the "width" variable not "size".
- * We also need separate cases to cast the values
- * right.
- */
- switch( mode ) {
-
- case PLT_READ: {
-
- switch( chunk ) {
-
- case FOUR_BYTES:
-
- *(dword_data) =
- (unsigned long)
- (*(((unsigned long*)ptr) +
- (offset>>2)));
- break;
-
- case TWO_BYTES:
-
- *(word_data) =
- (unsigned int)
- (*(((unsigned int *)ptr) +
- (offset>>1)));
- break;
-
- default:
-
- *(byte_data) =
- (unsigned char)
- (*(((unsigned char *)ptr) +
- ( offset )));
- break;
-
- } /* end switch() */
- break;
-
- } /* end case PLT_READ */
-
- case PLT_WRITE: {
-
- switch( chunk ) {
-
- case FOUR_BYTES:
-
- *(((unsigned long*)ptr) +
- (offset>>2)) = *dword_data;
- break;
-
- case TWO_BYTES:
-
- *(((unsigned int *)ptr) +
- (offset>>1)) = *word_data;
- break;
-
- default:
-
- *(((unsigned char *)ptr) +
- ( offset )) = *byte_data;
- break;
- } /* end switch() */
- break;
-
- } /* end case PLT_WRITE */
-
- case PLT_READ_BYTES: {
-
- for( ; chunk > 0; chunk-- ) {
-
- *(byte_data++) = (unsigned char) (*(((unsigned char*)ptr) +
- (index++)));
- }
- break;
- } /* end case PLT_READ_BYTES */
-
- case PLT_WRITE_BYTES: {
-
- for( ; chunk > 0; chunk-- ) {
- *(((unsigned char*)ptr)+(index++)) =
- *(byte_data++);
- }
- break;
-
- } /* end case PLT_WRITE_BYTES */
-
- case PLT_READ_WORDS: {
-
- for( ; chunk > 0; chunk-- ) {
-
- *(word_data++) = (unsigned int)
- (*(((unsigned int*)ptr)+ (index++)));
- }
- break;
-
- } /* end case PLT_READ_WORDS */
-
- case PLT_WRITE_WORDS: {
-
- for( ; chunk > 0; chunk-- ) {
-
- *(((unsigned int*)ptr)+(index++)) =
- *(word_data++);
- }
- break;
-
- } /* end case PLT_WRITE_WORDS */
-
- case PLT_READ_DWORDS: {
-
- for( ; chunk > 0; chunk-- ) {
-
- *(dword_data++) =
- (*(((unsigned long*)ptr)+(index++)));
- }
- break;
-
- } /* end case PLT_READ_DWORDS */
-
- case PLT_WRITE_DWORDS: {
-
- for( ; chunk > 0; chunk-- ) {
-
- *(((unsigned long*)ptr)+(index++))
- = *(dword_data++);
- }
- break;
-
- } /* end case PLT_WRITE_DWORDS */
-
- } /* end switch(mode) */
-
- lastbase = base;
-
- /* Save the page we've just processed. */
-
- if( width ) {
-
- /* If there's still width left to get. */
-
- base += length;
- /* Increment to the next page. */
-
- offset = 0;
- /* Set the offset to zero. */
- }
-
- } while( width ); /* While there's still data to get. */
- return;
-
- } /* end for if addr */
- else {
-
- printf( "PMA error: Unable to read ROM address space\n" );
- exit( 1 );
- }
- return;
-}
-
-/************************************************************************
- * setup_pma() loads the ROM memory access module and initializes
- * memory access file descriptor (access is handled through a file-like
- * interface).
- ************************************************************************
- */
-static void setup_pma()
-{
- fd = open( "/dev/mem", 2); /* O_RDWR */
- if (fd == -1 ) {
-
- printf( "Error: Unable to open /dev/mem !\a\n" );
- exit( 1 );
- }
- return;
-}
-
-/**********************************************************************
- * close_pma() cleans up the open memory access devices and file
- * descriptors.
- **********************************************************************
- */
-static void close_pma()
-{
- close( fd );
- return;
-}
-#endif /* IN_MODULE */
-#endif /* linux && !__KERNEL__ */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_bios.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_bios.c
deleted file mode 100644
index 5a9fb194b..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_bios.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_bios.c,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: pnl_bios.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file panel functions which query for the BIOS for current FP
- * Paramters.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#include "panel.h"
-
-extern unsigned long gfx_cpu_version;
-extern void gfx_outw(unsigned short port, unsigned short data);
-extern unsigned short gfx_inw(unsigned short port);
-
-
-#define SOFTVGA_DISPLAY_ENABLE 0x50
-#define SOFTVGA_FPRESOLUTION 0x52
-#define SOFTVGA_FPCLOCKFREQUENCY 0x54
-
-/* SOFTVG VIRTUAL REGISTER DEFINITIONS */
-
-#define VR_INDEX 0xAC1C
-#define VR_DATA 0xAC1E
-#define VR_UNLOCK 0xFC53
-#define VRC_VG 0x0002 /* SoftVG Virtual Register Class */
-#define VG_MEM_SIZE 0x0000 /* MemSize Virtual Register */
-#define FP_DETECT_MASK 0x8000
-
-#define VG_FP_TYPE 0x0002 /* Flat Panel Info Virtual Register */
-
-#define FP_DEV_MASK 0x0003 /* Flat Panel type */
-#define FP_TYPE_SSTN 0x0000 /* SSTN panel type value */
-#define FP_TYPE_DSTN 0x0001 /* DSTN panel type value */
-#define FP_TYPE_TFT 0x0002 /* TFT panel type value */
-#define FP_TYPE_LVDS 0x0003 /* LVDS panel type value */
-
-#define FP_RESOLUTION_MASK 0x0038
-#define FP_RES_6X4 0x0000 /* 640x480 resolution value */
-#define FP_RES_8X6 0x0008 /* 800x600 resolution value */
-#define FP_RES_10X7 0x0010 /* 1024x768 resolution value */
-#define FP_RES_12X10 0x0018 /* 1280x1024 resolution value */
-#define FP_RES_16X12 0x0020 /* 1600x1200 resolution value */
-
-#define FP_WIDTH_MASK 0x01C0
-#define FP_WIDTH_8 0x0000 /* 8 bit data bus width */
-#define FP_WIDTH_9 0x0040 /* 9 bit data bus width */
-#define FP_WIDTH_12 0x0080 /* 12 bit data bus width */
-#define FP_WIDTH_18 0x00C0 /* 18 bit data bus width */
-#define FP_WIDTH_24 0x0100 /* 24 bit data bus width */
-#define FP_WIDTH_16 0x0140 /* 16 bit data bus width - 16 bit Mono DSTN only */
-
-#define FP_COLOR_MASK 0x0200
-#define FP_COLOR_COLOR 0x0000 /* Color panel */
-#define FP_COLOR_MONO 0x0200 /* Mono Panel */
-
-#define FP_PPC_MASK 0x0400
-#define FP_PPC_1PPC 0x0000 /* One pixel per clock */
-#define FP_PPC_2PPC 0x0400 /* Two pixels per clock */
-
-#define FP_HPOL_MASK 0x0800
-#define FP_H_POL_LGH 0x0000 /* HSync at panel, normally low, active high */
-#define FP_H_POL_HGL 0x0800 /* HSync at panel, normally high, active low */
-
-#define FP_VPOL_MASK 0x1000
-#define FP_V_POL_LGH 0x0000 /* VSync at panel, normally low, active high */
-#define FP_V_POL_HGL 0x1000 /* VSync at panel, normally high, active low */
-
-#define FP_REF_MASK 0xD000
-#define FP_REF_60 0x0000 /* 60Hz refresh rate */
-#define FP_REF_65 0x2000 /* 65Hz refresh rate */
-#define FP_REF_70 0x4000 /* 70Hz refresh rate */
-#define FP_REF_72 0x6000 /* 72Hz refresh rate */
-#define FP_REF_75 0x8000 /* 75Hz refresh rate */
-#define FP_REF_85 0xA000 /* 85Hz refresh rate */
-
-
-/*-----------------------------------------------------------------
- * Pnl_IsPanelEnabledInBIOS
- *
- * Description: This function specifies whether the panel is enabled
- * by the BIOS or not.
- * parameters: none.
- * return: 1 - Enabled, 0 - Disabled
- *-----------------------------------------------------------------*/
-int Pnl_IsPanelEnabledInBIOS(void)
-{
- unsigned char ret=0;
-
- if ((gfx_cpu_version & 0xFF) == GFX_CPU_REDCLOUD)
- {
- unsigned short data;
- gfx_outw(VR_INDEX, VR_UNLOCK);
- gfx_outw(VR_INDEX, (VRC_VG << 8) | VG_MEM_SIZE);
- data = gfx_inw(VR_DATA);
- if(data & FP_DETECT_MASK)
- ret = 1;
- } else
- {
- unsigned short crtcindex, crtcdata;
- crtcindex = (gfx_inb(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- /* CHECK DisplayEnable Reg in SoftVGA */
-
- gfx_outb(crtcindex, (unsigned char) SOFTVGA_DISPLAY_ENABLE);
- ret = gfx_inb(crtcdata);
- }
-
- return(ret & 0x1);
-}
-
-/*-----------------------------------------------------------------
- * Pnl_GetPanelInfoFromBIOS
- *
- * Description: This function queries the panel information from
- * the BIOS.
- * parameters:
- * xres: width of the panel configured
- * yres: height of the panel configured
- * bpp: depth of the panel configured
- * hz: vertical frequency of the panel configured
- * return: none
- *-----------------------------------------------------------------*/
-void Pnl_GetPanelInfoFromBIOS(int *xres, int *yres, int *bpp, int *hz)
-{
- unsigned short crtcindex, crtcdata;
- unsigned short ret;
-
- if ((gfx_cpu_version & 0xFF) == GFX_CPU_REDCLOUD)
- {
- gfx_outw(VR_INDEX, VR_UNLOCK);
- gfx_outw(VR_INDEX, (VRC_VG << 8) | VG_FP_TYPE);
- ret = gfx_inw(VR_DATA);
- switch(ret & FP_RESOLUTION_MASK)
- {
- case FP_RES_6X4:
- *xres = 640;
- *yres = 480;
- break;
- case FP_RES_8X6:
- *xres = 800;
- *yres = 600;
- break;
- case FP_RES_10X7:
- *xres = 1024;
- *yres = 768;
- break;
- case FP_RES_12X10:
- *xres = 1280;
- *yres = 1024;
- break;
- case FP_RES_16X12:
- *xres = 1600;
- *yres = 1200;
- break;
- }
-
- switch(ret & FP_WIDTH_MASK)
- {
- case FP_WIDTH_8:
- *bpp = 8;
- break;
- case FP_WIDTH_9:
- *bpp = 9;
- break;
- case FP_WIDTH_12:
- *bpp = 12;
- break;
- case FP_WIDTH_18:
- *bpp = 18;
- break;
- case FP_WIDTH_24:
- *bpp = 24;
- break;
- case FP_WIDTH_16:
- *bpp = 16;
- break;
- }
-
- switch(ret & FP_REF_MASK)
- {
- case FP_REF_60:
- *hz = 60;
- break;
- case FP_REF_65:
- *hz = 65;
- break;
- case FP_REF_70:
- *hz = 70;
- break;
- case FP_REF_72:
- *hz = 72;
- break;
- case FP_REF_75:
- *hz = 75;
- break;
- case FP_REF_85:
- *hz = 85;
- break;
- }
-
-
- } else
- {
- crtcindex = (gfx_inb(0x3CC) & 0x01) ? 0x3D4 : 0x3B4;
- crtcdata = crtcindex + 1;
-
- /* CHECK FPResolution Reg in SoftVGA */
-
- gfx_outb(crtcindex, (unsigned char) SOFTVGA_FPRESOLUTION);
- ret = gfx_inb(crtcdata);
-
- switch (ret & 0x3) {
- case 0:
- *xres = 640;
- *yres = 480;
- break;
- case 1:
- *xres = 800;
- *yres = 600;
- break;
- case 2:
- *xres = 1024;
- *yres = 768;
- break;
- }
-
- switch ((ret >> 4) & 0x3) {
- case 0:
- *bpp = 12;
- break;
- case 1:
- *bpp = 18;
- break;
- case 2:
- *bpp = 16;
- break;
- case 3:
- *bpp = 8;
- break;
- }
-
- /* CHECK FPClockFrequency Reg in SoftVGA */
-
- gfx_outb(crtcindex, (unsigned char) SOFTVGA_FPCLOCKFREQUENCY);
- *hz = gfx_inb(crtcdata);
- }
-}
-
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_defs.h b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_defs.h
deleted file mode 100644
index 4ea750452..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_defs.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_defs.h,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: pnl_defs.h $
- *
- * File Contents: This file contains definitions of the Geode
- * frame buffer panel data structures.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-#ifndef _pnl_defs_h
-#define _pnl_defs_h
-
-typedef enum {
- MARMOT_PLATFORM=0,
- UNICORN_PLATFORM,
- CENTAURUS_PLATFORM,
- ARIES_PLATFORM,
- CARMEL_PLATFORM,
- HYDRA_PLATFORM,
- DORADO_PLATFORM,
- DRACO_PLATFORM,
- REDCLOUD_PLATFORM,
- OTHER_PLATFORM
-} SYS_BOARD;
-
-#define PNL_9210 0x01
-#define PNL_9211_A 0x02
-#define PNL_9211_C 0x04
-#define PNL_UNKNOWN_CHIP 0x08
-
-#define PNL_TFT 0x01
-#define PNL_SSTN 0x02
-#define PNL_DSTN 0x04
-#define PNL_TWOP 0x08
-#define PNL_UNKNOWN_PANEL 0x10
-
-#define PNL_MONO_PANEL 0x01
-#define PNL_COLOR_PANEL 0x02
-#define PNL_UNKNOWN_COLOR 0x08
-
-#define PNL_PANELPRESENT 0x01
-#define PNL_PLATFORM 0x02
-#define PNL_PANELCHIP 0x04
-#define PNL_PANELSTAT 0x08
-#define PNL_OVERRIDE_STAT 0x10
-#define PNL_OVERRIDE_ALL 0x1F
-
-typedef struct _Pnl_PanelStat_
-{
- int Type;
- int XRes;
- int YRes;
- int Depth;
- int MonoColor;
-} Pnl_PanelStat;
-
-typedef struct _Pnl_Params_
-{
- unsigned long Flags;
- int PanelPresent;
- int Platform;
- int PanelChip;
- Pnl_PanelStat PanelStat;
-} Pnl_PanelParams, *PPnl_PanelParams;
-
-#endif /* _pnl_defs_h */
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_init.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_init.c
deleted file mode 100644
index 8f3da2625..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_init.c
+++ /dev/null
@@ -1,613 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/pnl_init.c,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-/*
- * $Workfile: pnl_init.c $
- * $Revision: 1.2.8.2 $
- *
- * File Contents: This file contains the Geode frame buffer panel
- * intialization functions.
- *
- * SubModule: Geode FlatPanel library
- *
- */
-
-/*
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Panel Library
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for
- *
- * Panel Library
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for
- *
- * Panel Library
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-
-#include "panel.h"
-#include "gfx_regs.h"
-#include "gfx_type.h"
-
-/* defaults
-Panel : Enabled
-Platform : Centaurus
-92xx Chip : 9211 Rev. A
-PanelType : DSTN
-XResxYRes : 800x600
-Depth : 16
-Mono_Color : Color
-*/
-static Pnl_PanelParams sPanelParam={
- 0, 1, CENTAURUS_PLATFORM, PNL_9211_A,
- { PNL_DSTN, 800, 600, 16, PNL_COLOR_PANEL}
-};
-
-#if PLATFORM_DRACO
-#include "drac9210.c"
-#endif
-
-#if PLATFORM_CENTAURUS
-#include "cen9211.c"
-#endif
-
-#if PLATFORM_DORADO
-#include "dora9211.c"
-#endif
-
-#if PLATFORM_GX2BASED
-#include "gx2_9211.c"
-#endif
-#include "platform.c"
-
-/*
- * return -1 - UnKnown
- * 0 - Draco has 9210
- * 1 - Centaurus has 9211 Rev. A
- * 2 - Dorado has 9211 Rev. C
- */
-
-
-/*-----------------------------------------------------------------
- * Pnl_SetPlatform
- *
- * Description: This function sets the panel with hardware platform.
- * parameters:
- * platform: It specify the platform.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_SetPlatform(int platform)
-{
- /* To Be Implemented */
- sPanelParam.Platform = platform;
-
-}
-
-/*-----------------------------------------------------------------
- * Pnl_GetPlatform
- *
- * Description: This function returns the panel platform.
- * parameters: none.
- * return: On success it returns the panel platform.
- *-----------------------------------------------------------------*/
-int Pnl_GetPlatform(void)
-{
- sPanelParam.Platform = Detect_Platform();
-
- return sPanelParam.Platform;
-
-}
-
-/*-----------------------------------------------------------------
- * Pnl_IsPanelPresent
- *
- * Description: This function specifies whether the panel is prsent
- * or not.
- * parameters: none.
- * return: On success it returns an integer panel present value.
- *-----------------------------------------------------------------*/
-int Pnl_IsPanelPresent(void)
-{
- /* To Be Implemented */
- return sPanelParam.PanelPresent;
-}
-
-/*-----------------------------------------------------------------
- * Pnl_SetPanelPresent
- *
- * Description: This function sets the panel_present parameter.
- * parameters:
- * present: It specifies the panel present value.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_SetPanelPresent(int present)
-{
- /* To Be Implemented */
- sPanelParam.PanelPresent = present;
-}
-
-/*-----------------------------------------------------------------
- * Pnl_SetPanelParam
- *
- * Description: This function sets the panel parameters
- * parameters:
- * pParam: It specifies the elements of the panel parameter
- * structure.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_SetPanelParam(PPnl_PanelParams pParam)
-{
- if (pParam->Flags & PNL_PANELPRESENT) {
- Pnl_SetPanelPresent(pParam->PanelPresent);
- }
- if (pParam->Flags & PNL_PLATFORM) {
- Pnl_SetPlatform(pParam->Platform);
- }
- if (pParam->Flags & PNL_PANELCHIP) {
- Pnl_SetPanelChip(pParam->PanelChip);
- }
- if(pParam->Flags & PNL_PANELSTAT) {
- sPanelParam.PanelStat.XRes = pParam->PanelStat.XRes;
- sPanelParam.PanelStat.YRes = pParam->PanelStat.YRes;
- sPanelParam.PanelStat.Depth = pParam->PanelStat.Depth;
- sPanelParam.PanelStat.MonoColor = pParam->PanelStat.MonoColor;
- sPanelParam.PanelStat.Type = pParam->PanelStat.Type;
- }
-}
-
-/*-----------------------------------------------------------------
- * Pnl_PowerUp
- *
- * Description: This function sets the power based on the
- * hardware platforms dorado or centaraus.
- * parameters: none.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_PowerUp(void)
-{
- int Platform;
- unsigned long dcfg, hw_video;
-
- Platform = Pnl_GetPlatform();
-
-#if PLATFORM_CENTAURUS
- if (Platform == CENTAURUS_PLATFORM) {
- Centaurus_Power_Up();
- return;
- }
-#endif
-
-#if PLATFORM_DORADO
- if (Platform == DORADO_PLATFORM) {
- Dorado_Power_Up();
- return;
- }
-#endif
-
-#if PLATFORM_GX2BASED
- if(Platform == REDCLOUD_PLATFORM) {
- }
-#endif
-
- hw_video = gfx_detect_video();
-
- if(hw_video == GFX_VID_CS5530)
- {
- /* READ DISPLAY CONFIG FROM CX5530 */
- dcfg = READ_VID32(CS5530_DISPLAY_CONFIG);
-
- /* SET RELEVANT FIELDS */
- dcfg |= (CS5530_DCFG_FP_PWR_EN | CS5530_DCFG_FP_DATA_EN);
- /* Enable the flatpanel power and data */
- WRITE_VID32(CS5530_DISPLAY_CONFIG, dcfg);
- }
- else if(hw_video == GFX_VID_SC1200)
- {
- /* READ DISPLAY CONFIG FROM SC1200 */
- dcfg = READ_VID32(SC1200_DISPLAY_CONFIG);
-
- /* SET RELEVANT FIELDS */
- dcfg |= (SC1200_DCFG_FP_PWR_EN | SC1200_DCFG_FP_DATA_EN);
- /* Enable the flatpanel power and data */
- WRITE_VID32(SC1200_DISPLAY_CONFIG, dcfg);
- }
- else if(hw_video == GFX_VID_REDCLOUD)
- {
- /* READ DISPLAY CONFIG FROM REDCLOUD */
- dcfg = READ_VID32(RCDF_DISPLAY_CONFIG);
-
- /* SET RELEVANT FIELDS */
- dcfg |= (RCDF_DCFG_FP_PWR_EN | RCDF_DCFG_FP_DATA_EN);
- /* Enable the flatpanel power and data */
- WRITE_VID32(RCDF_DISPLAY_CONFIG, dcfg);
- }
-
-}
-
-/*-----------------------------------------------------------------
- * Pnl_PowerDown
- *
- * Description: This function make power down based on the
- * hardware platforms dorado or centaraus.
- * parameters: none.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_PowerDown(void)
-{
- int Platform;
- unsigned long dcfg, hw_video;
-
- Platform = Pnl_GetPlatform();
-
-#if PLATFORM_CENTAURUS
- if (Platform == CENTAURUS_PLATFORM) {
- Centaurus_Power_Down();
- return;
- }
-#endif
-#if PLATFORM_DORADO
- if (Platform == DORADO_PLATFORM) {
- Dorado_Power_Down();
- return;
- }
-#endif
-
-#if PLATFORM_GX2BASED
- if(Platform == REDCLOUD_PLATFORM) {
- }
-#endif
-
- hw_video = gfx_detect_video();
-
- if(hw_video == GFX_VID_CS5530)
- {
- /* READ DISPLAY CONFIG FROM CX5530 */
- dcfg = READ_VID32(CS5530_DISPLAY_CONFIG);
-
- /* CLEAR RELEVANT FIELDS */
- dcfg &= ~(CS5530_DCFG_FP_PWR_EN | CS5530_DCFG_FP_DATA_EN);
- /* Disable the flatpanel power and data */
- WRITE_VID32(CS5530_DISPLAY_CONFIG, dcfg);
- }
- else if(hw_video == GFX_VID_SC1200)
- {
- /* READ DISPLAY CONFIG FROM SC1200 */
- dcfg = READ_VID32(SC1200_DISPLAY_CONFIG);
-
- /* CLEAR RELEVANT FIELDS */
- dcfg &= ~(SC1200_DCFG_FP_PWR_EN | SC1200_DCFG_FP_DATA_EN);
- /* Disable the flatpanel power and data */
- WRITE_VID32(SC1200_DISPLAY_CONFIG, dcfg);
- }
- else if(hw_video == GFX_VID_REDCLOUD)
- {
- /* READ DISPLAY CONFIG FROM REDCLOUD */
- dcfg = READ_VID32(RCDF_DISPLAY_CONFIG);
-
- /* CLEAR RELEVANT FIELDS */
- dcfg &= ~(RCDF_DCFG_FP_PWR_EN | RCDF_DCFG_FP_DATA_EN);
- /* Disable the flatpanel power and data */
- WRITE_VID32(RCDF_DISPLAY_CONFIG, dcfg);
- }
-}
-
-/*-----------------------------------------------------------------
- * Pnl_SavePanelState
- *
- * Description: This function saves the panel state based on the
- * hardware platforms dorado or centaraus.
- * parameters: none.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_SavePanelState(void)
-{
- int Platform;
- Platform = Pnl_GetPlatform();
-
-#if PLATFORM_CENTAURUS
- if (Platform == CENTAURUS_PLATFORM) {
- Centaurus_Save_Panel_State();
- return;
- }
-#endif
-
-#if PLATFORM_DORADO
- if (Platform == DORADO_PLATFORM) {
- Dorado_Save_Panel_State();
- return;
- }
-#endif
-
-#if PLATFORM_GX2BASED
- if(Platform == REDCLOUD_PLATFORM) {
- }
-#endif
-}
-
-/*-----------------------------------------------------------------
- * Pnl_RestorePanelState
- *
- * Description: This function restore the panel state based on the
- * hardware platforms dorado or centaraus.
- * parameters: none.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_RestorePanelState(void)
-{
- int Platform;
- Platform = Pnl_GetPlatform();
-#if PLATFORM_CENTAURUS
- if (Platform == CENTAURUS_PLATFORM) {
- Centaurus_Restore_Panel_State();
- return;
- }
-#endif
-
-#if PLATFORM_DORADO
- if (Platform == DORADO_PLATFORM) {
- Dorado_Restore_Panel_State();
- return;
- }
-#endif
-
-#if PLATFORM_GX2BASED
- if(Platform == REDCLOUD_PLATFORM) {
- }
-#endif
-}
-
-/*-----------------------------------------------------------------
- * Pnl_GetPanelParam
- *
- * Description: This function gets the panel parameters from the
- * hardware platforms dorado or centaraus.
- * parameters:
- * pParam: It specifies the elements of the panel parameter
- * structure.
- * return: none.
- *-----------------------------------------------------------------*/
-void Pnl_GetPanelParam(PPnl_PanelParams pParam)
-{
- if (pParam->Flags & PNL_PANELPRESENT) {
- pParam->PanelPresent = Pnl_IsPanelPresent();
- }
- if (pParam->Flags & PNL_PLATFORM) {
- pParam->Platform = Pnl_GetPlatform();
- }
- if ((pParam->Flags & PNL_PANELCHIP) ||
- (pParam->Flags & PNL_PANELSTAT)) {
-#if PLATFORM_CENTAURUS
- if (pParam->Platform == CENTAURUS_PLATFORM) {
- Centaurus_Get_9211_Details(pParam->Flags, pParam);
- return;
- }
-#endif
-
-#if PLATFORM_DORADO
- if(pParam->Platform == DORADO_PLATFORM) {
- Dorado_Get_9211_Details(pParam->Flags, pParam);
- return;
- }
-#endif
-
-#if PLATFORM_GX2BASED
- if(pParam->Platform == REDCLOUD_PLATFORM) {
- }
-#endif
-
- /* if unknown platform put unknown */
- if (pParam->Flags & PNL_PANELCHIP)
- pParam->PanelChip = PNL_UNKNOWN_CHIP;
-
- if (pParam->Flags & PNL_PANELSTAT) {
- pParam->PanelStat.XRes = 0;
- pParam->PanelStat.YRes = 0;
- pParam->PanelStat.Depth = 0;
- pParam->PanelStat.MonoColor = PNL_UNKNOWN_COLOR;
- pParam->PanelStat.Type = PNL_UNKNOWN_PANEL;
- }
- }
-}
-
-/*-----------------------------------------------------------------
- * Pnl_SetPanelChip
- *
- * Description: This function sets the panelchip parameter of panel
- * structure.
- * parameters:
- * panelChip: It specifies the panelChip value.
- * return: none.
- *-----------------------------------------------------------------*/
-
-void Pnl_SetPanelChip(int panelChip)
-{
- /* To Be Implemented */
- sPanelParam.PanelChip = panelChip;
-
-}
-
-/*-----------------------------------------------------------------
- * Pnl_GetPanelChip
- *
- * Description: This function gets the panelchip parameter of panel
- * structure.
- * parameters:
- * return: On success it returns the panelchip.
- *-----------------------------------------------------------------*/
-int Pnl_GetPanelChip(void)
-{
- /* To Be Implemented */
- return sPanelParam.PanelChip;
-}
-
-/*-----------------------------------------------------------------
- * Pnl_InitPanel
- *
- * Description: This function initializes the panel with
- * hardware platforms dorado or centaraus.
- * parameters:
- * pParam: It specifies the elements of the panel parameter
- * structure.
- * return: none.
- *-----------------------------------------------------------------*/
-int Pnl_InitPanel(PPnl_PanelParams pParam)
-{
- PPnl_PanelParams pPtr;
- if (pParam == 0x0) /* NULL use the static table */
- pPtr = &sPanelParam;
- else
- pPtr = pParam;
-
- if(!pPtr->PanelPresent) {
- return -1; /* error */
- }
- else {
- if((pPtr->PanelChip < 0) || (pPtr->Platform < 0))
- return -1; /* error */
-
-#if PLATFORM_DRACO
- /* check we are init. the right one */
- if((pPtr->Platform == DRACO_PLATFORM) &&
- (pPtr->PanelChip == PNL_9210)){
- Draco9210Init(&(pPtr->PanelStat));
- }
-#endif
-
-#if PLATFORM_CENTAURUS
- /* check we are init. the right one */
- if (pPtr->Platform == CENTAURUS_PLATFORM) {
- Centaurus_9211init(&(pPtr->PanelStat));
- }
-#endif
-
-#if PLATFORM_DORADO
- /* check we are init. the right one */
- if((pPtr->Platform == DORADO_PLATFORM) &&
- (pPtr->PanelChip == PNL_9211_C)){
- Dorado9211Init(&(pPtr->PanelStat));
- }
-#endif
-#if PLATFORM_GX2BASED
- if(pPtr->Platform == REDCLOUD_PLATFORM) {
- Redcloud_9211init(&(pPtr->PanelStat));
- }
-#endif
- } /* else end */
- return 1;
-}
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/readme.txt b/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/readme.txt
deleted file mode 100644
index 6fcdcb7f9..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/panel/readme.txt
+++ /dev/null
@@ -1,301 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/panel/readme.txt,v 1.1 2002/10/11 14:33:02 alanh Exp $ */
-Panel Library
-Release 1.2.9
-OS - Can be used in all OS's.
-July 31, 2002
-Developer - Sarma Kolluru
-
------------------------------------------------------------------------------
-PRODUCT INFORMATION
------------------------------------------------------------------------------
-Panel library is set of functions enabling the driver to give panel support.
-The panel library is supported on Centaurus and Dorado.
-The panel library can detect the panel support by the jumper settings
-selected on the board. The platform can be detected too.
-
- \readme.txt This file
-
------------------------------------------------------------------------------
-BUILD INSTRUCTIONS
------------------------------------------------------------------------------
-Panel library is a set of files which has support for flatpanel. The panel
-subdirectory needs to be copied in the driver directory.
------------------------------------------------------------------------------
-INSTALLATION INSTRUCTIONS
------------------------------------------------------------------------------
-These is no instalation and to be treaded as a driver source code extension.
-- Run "/root/crlf/crlf -a" in Linux OS.
------------------------------------------------------------------------------
-UNIT TEST
-Panel library when compiled is a part of the driver and cannot be unit tested.
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
-REVISION HISTORY
------------------------------------------------------------------------------
-Version changes v1.2.9 7/31/02
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1o
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added FP setup from user input.
-Added Redcloud Panel initialization.
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- pnl_init.c
- panel.c
- platform.c
- gx2_9211.c
- gx2_9211.h
------------------------------------------------------------------------------
-Version changes v1.2.8 5/16/02
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1o
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added FP detection with BIOS for GX2.
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- pnl_bios.c
------------------------------------------------------------------------------
-Version changes v1.2.7 1/20/02
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1o
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added the protoype for gfx_detect_video.
-Durango dependency removed.
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel.c
------------------------------------------------------------------------------
-Version changes v1.2.6 12/1/01
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1o
- - Durango 2.35.01
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Toggle 5530/scx200/RC FlatPanel Power and Data accordingly during
-power up/down.
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- pnl_init.c
------------------------------------------------------------------------------
-Version changes v1.2.5 11/1/01
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1o
- - Durango 2.35.01
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Re-Enabled the Draco platform support.
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel_defs.h
- pnl_init.c
------------------------------------------------------------------------------
-Version changes v1.2.4 08/12/01
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1
- - Durango 2.33.01
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added 2 functions to get the FP setting details from BIOS.
-
-int Pnl_IsPanelEnabledInBIOS(void);
-void Pnl_GetPanelInfoFromBIOS(int *xres, int *yres, int *bpp, int *hz);
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel.h
- pnl_bios.c
------------------------------------------------------------------------------
-Version changes v1.2.3 06/05/01
------------------------------------------------------------------------------
-Dependencies:
- - crlf v1.0.1
- - Durango 2.31.00
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Code cleanup and documentation.
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel.h
- cen9211.c
- cen9211.h
- dora9211.c
- dora9211.h
- panel.h
- pnl_init.c
------------------------------------------------------------------------------
-Version changes v1.2.2 04/11/01
------------------------------------------------------------------------------
-Dependencies:
- - Durango 2.27.00
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added Pnl_PowerUp and Pnl_PowerDown Functions.
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel.h
- cen9211.c
- cen9211.h
- dora9211.c
- dora9211.h
- panel.h
- pnl_init.c
------------------------------------------------------------------------------
-Version changes v1.2.1 03/29/01
------------------------------------------------------------------------------
-Dependencies:
- - Durango 2.25
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added Pnl_SavePanelState and Pnl_RestorePanelState Functions.
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel.h
- 92xx.h
- cen9211.c
- cen9211.h
- dora9211.c
- dora9211.h
- platform.c
- pnl_init.c
------------------------------------------------------------------------------
-Version changes v1.2.0 03/04/01
------------------------------------------------------------------------------
-Dependencies:
- - Durango 2.23
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Use inb/out routines from durango directly.
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- panel.h -inb/outb deleted.
-=============================================================================
-Version changes v1.0.1 02/02/01
------------------------------------------------------------------------------
-Dependencies:
- - Durango 2.19
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Added 9211 Rev. C on Centaurus platform.
-
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- 92xx.h -9211 Rev.C.
- cen9211.c - centaurus 9211_C support file.
- cen9211.h - centaurus 9211_C support file.
- platform.c - Support for detection of platform in which driver runs.
-=============================================================================
-Version changes v1.0.0 01/21/01
------------------------------------------------------------------------------
-Dependencies:
- - Durango 2.16
-
------------------------------------------------------------------------------
-FUNCTIONAL CHANGES
------------------------------------------------------------------------------
-Detection of platform
-Detection of 92x chip with version and the panel sected by jumper settings.
-initialization of the h/w.
------------------------------------------------------------------------------
-DEFECTS CORRECTED
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-FILE CHANGES
- 92xx.h -common file with all 9211/9210 definitions.
- cen9211.c - centaurus 9211_A support file.
- cen9211.h - centaurus 9211_A support file.
- dora9211.c - dorado 9211_A support file.
- dora9211.h - dorado 9211_C support file.
- drac9210.c - draco 9210 support file.
- drac9210.h - draco 9210 support file.
- panel.c - This is the confiuration file to enable support for platforms.
- panel.h - centaurus 9211_A support file.
- platform.c - Support for detection of platform in which driver runs.
- pnl_defs.h - common definitions for panel.
- pnl_init.c - configurationto call appropriate platform calls.
- readme.txt - this file.
------------------------------------------------------------------------------
------------------------------------------------------------------------------
-KNOWN ERRATA
------------------------------------------------------------------------------
-- None listed
------------------------------------------------------------------------------
-
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/geode/regacc.c b/xc/programs/Xserver/hw/xfree86/drivers/geode/regacc.c
deleted file mode 100644
index 2bfb7e8b2..000000000
--- a/xc/programs/Xserver/hw/xfree86/drivers/geode/regacc.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/geode/regacc.c,v 1.1 2002/10/11 14:32:59 alanh Exp $ */
-/*
- * $Workfile: regacc.c $
- *
- * This is the main file used to add Durango graphics support to a software
- * project. The main reason to have a single file include the other files
- * is that it centralizes the location of the compiler options. This file
- * should be tuned for a specific implementation, and then modified as needed
- * for new Durango releases. The releases.txt file indicates any updates to
- * this main file, such as a new definition for a new hardware platform.
- *
- * In other words, this file should be copied from the Durango source files
- * once when a software project starts, and then maintained as necessary.
- * It should not be recopied with new versions of Durango unless the
- * developer is willing to tune the file again for the specific project.
- *
- * NSC_LIC_ALTERNATIVE_PREAMBLE
- *
- * Revision 1.0
- *
- * National Semiconductor Alternative GPL-BSD License
- *
- * National Semiconductor Corporation licenses this software
- * ("Software"):
- *
- * Durango
- *
- * under one of the two following licenses, depending on how the
- * Software is received by the Licensee.
- *
- * If this Software is received as part of the Linux Framebuffer or
- * other GPL licensed software, then the GPL license designated
- * NSC_LIC_GPL applies to this Software; in all other circumstances
- * then the BSD-style license designated NSC_LIC_BSD shall apply.
- *
- * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
-
-/* NSC_LIC_BSD
- *
- * National Semiconductor Corporation Open Source License for Durango
- *
- * (BSD License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * * Neither the name of the National Semiconductor Corporation nor
- * the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * END_NSC_LIC_BSD */
-
-/* NSC_LIC_GPL
- *
- * National Semiconductor Corporation Gnu General Public License for Durango
- *
- * (GPL License with Export Notice)
- *
- * Copyright (c) 1999-2001
- * National Semiconductor Corporation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted under the terms of the GNU General
- * Public License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version
- *
- * In addition to the terms of the GNU General Public License, neither
- * the name of the National Semiconductor Corporation nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
- * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE. See the GNU General Public License for more details.
- *
- * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
- * YOUR JURISDICTION. It is licensee's responsibility to comply with
- * any export regulations applicable in licensee's jurisdiction. Under
- * CURRENT (2001) U.S. export regulations this software
- * is eligible for export from the U.S. and can be downloaded by or
- * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
- * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
- * Syria, Sudan, Afghanistan and any other country to which the U.S.
- * has embargoed goods and services.
- *
- * You should have received a copy of the GNU General Public License
- * along with this file; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * END_NSC_LIC_GPL */
-
-/* ROUTINES added accessing hardware reg */
-void
-gfx_write_reg_8(unsigned long offset, unsigned char value)
-{
- WRITE_REG8(offset, value);
-}
-
-void
-gfx_write_reg_16(unsigned long offset, unsigned short value)
-{
- WRITE_REG16(offset, value);
-}
-
-void
-gfx_write_reg_32(unsigned long offset, unsigned long value)
-{
- WRITE_REG32(offset, value);
-}
-unsigned short
-gfx_read_reg_16(unsigned long offset)
-{
- unsigned short value;
-
- value = READ_REG16(offset);
- return value;
-}
-unsigned long
-gfx_read_reg_32(unsigned long offset)
-{
- unsigned long value;
-
- value = READ_REG32(offset);
- return value;
-}
-
-void
-gfx_write_vid_32(unsigned long offset, unsigned long value)
-{
- WRITE_VID32(offset, value);
-}
-unsigned long
-gfx_read_vid_32(unsigned long offset)
-{
- unsigned long value;
-
- value = READ_VID32(offset);
- return value;
-}
-
-/*Addition for the VIP code */
-unsigned long
-gfx_read_vip_32(unsigned long offset)
-{
- unsigned long value;
-
- value = READ_VIP32(offset);
- return value;
-}
-
-void
-gfx_write_vip_32(unsigned long offset, unsigned long value)
-{
- WRITE_VIP32(offset, value);
-}
-
-unsigned int
-GetVideoMemSize()
-{
- unsigned int graphicsMemBaseAddr;
- unsigned int totalMem = 0;
- int i;
- unsigned int graphicsMemMask, graphicsMemShift;
-
- /* Read graphics base address. */
-
- graphicsMemBaseAddr = gfx_read_reg_32(0x8414);
-
- if (1) {
- unsigned int mcBankCfg = gfx_read_reg_32(0x8408);
- unsigned int dimmShift = 4;
-
- graphicsMemMask = 0x7FF;
- graphicsMemShift = 19;
-
- /* Calculate total memory size for GXm. */
-
- for (i = 0; i < 2; i++) {
- if (((mcBankCfg >> dimmShift) & 0x7) != 0x7) {
- switch ((mcBankCfg >> (dimmShift + 4)) & 0x7) {
- case 0:
- totalMem += 0x400000;
- break;
- case 1:
- totalMem += 0x800000;
- break;
- case 2:
- totalMem += 0x1000000;
- break;
- case 3:
- totalMem += 0x2000000;
- break;
- case 4:
- totalMem += 0x4000000;
- break;
- case 5:
- totalMem += 0x8000000;
- break;
- case 6:
- totalMem += 0x10000000;
- break;
- case 7:
- totalMem += 0x20000000;
- break;
- default:
- break;
- }
- }
- dimmShift += 16;
- }
- } else {
- unsigned int mcMemCntrl1 = gfx_read_reg_32(0x8400);
- unsigned int bankSizeShift = 12;
-
- graphicsMemMask = 0x3FF;
- graphicsMemShift = 17;
-
- /* Calculate total memory size for GX. */
-
- for (i = 0; i < 4; i++) {
- switch ((mcMemCntrl1 >> bankSizeShift) & 0x7) {
- case 1:
- totalMem += 0x200000;
- break;
- case 2:
- totalMem += 0x400000;
- break;
- case 3:
- totalMem += 0x800000;
- break;
- case 4:
- totalMem += 0x1000000;
- break;
- case 5:
- totalMem += 0x2000000;
- break;
- default:
- break;
- }
- bankSizeShift += 3;
- }
- }
-
- /* Calculate graphics memory base address */
-
- graphicsMemBaseAddr &= graphicsMemMask;
- graphicsMemBaseAddr <<= graphicsMemShift;
-
- return (totalMem - graphicsMemBaseAddr);
-}
-
-/* END OF FILE */
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c
index 37d3a9a6f..85a7f8dcb 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c
@@ -1359,6 +1359,7 @@ void MGADRICloseScreen( ScreenPtr pScreen )
if (pMga->irq) {
drmCtlUninstHandler(pMga->drmFD);
pMga->irq = 0;
+ pMga->reg_ien = 0;
}
/* Cleanup DMA */
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_proc.h b/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_proc.h
index 510df6722..8524d2048 100644
--- a/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_proc.h
+++ b/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_proc.h
@@ -169,9 +169,9 @@ static int DRM(_vm_info)(char *buf, char **start, off_t offset, int request,
struct list_head *list;
/* Hardcoded from _DRM_FRAME_BUFFER,
- _DRM_REGISTERS, _DRM_SHM, and
- _DRM_AGP. */
- const char *types[] = { "FB", "REG", "SHM", "AGP" };
+ _DRM_REGISTERS, _DRM_SHM, _DRM_AGP, and
+ _DRM_SCATTER_GATHER. */
+ const char *types[] = { "FB", "REG", "SHM", "AGP", "SG" };
const char *type;
int i;
@@ -190,7 +190,7 @@ static int DRM(_vm_info)(char *buf, char **start, off_t offset, int request,
r_list = (drm_map_list_t *)list;
map = r_list->map;
if(!map) continue;
- if (map->type < 0 || map->type > 3) type = "??";
+ if (map->type < 0 || map->type > 4) type = "??";
else type = types[map->type];
DRM_PROC_PRINT("%4d 0x%08lx 0x%08lx %4.4s 0x%02x 0x%08lx ",
i,
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/vbe/Imakefile b/xc/programs/Xserver/hw/xfree86/os-support/vbe/Imakefile
deleted file mode 100644
index 96bf4a80a..000000000
--- a/xc/programs/Xserver/hw/xfree86/os-support/vbe/Imakefile
+++ /dev/null
@@ -1,44 +0,0 @@
-XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/Imakefile,v 1.11 2002/08/06 13:46:27 dawes Exp $
-
-
-/*
- * This directory should probably be moved up one level -- to xfree86/vbe.
- */
-
-#define IHaveModules
-#include <Server.tmpl>
-
-#if DoLoadableServer
-MODSRC = vbe_module.c
-MODOBJ = vbe_module.o
-#endif
-
-SRCS = vbe.c vbeModes.c $(MODSRC)
-OBJS = vbe.o vbeModes.o $(MODOBJ)
-
-INCLUDES = -I. -I$(XF86COMSRC) -I$(SERVERSRC)/mi \
- -I$(SERVERSRC)/include -I$(XINCLUDESRC) \
- -I$(XF86SRC)/int10 -I$(XF86SRC)/ddc \
- -I$(XF86SRC)/i2c
-
-DEFINES =
-
-ModuleObjectRule()
-
-#if DoLoadableServer
-
-LibraryModuleTarget(vbe, $(OBJS))
-InstallLibraryModule(vbe,$(MODULEDIR),.)
-
-#else
-
-SubdirLibraryRule($(OBJS))
-
-#endif
-
-DependTarget()
-
-InstallDriverSDKLibraryModule(vbe,$(DRIVERSDKMODULEDIR),.)
-
-InstallDriverSDKNonExecFile(vbe.h,$(DRIVERSDKINCLUDEDIR))
-
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.c b/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.c
deleted file mode 100644
index cc9336ed0..000000000
--- a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.c
+++ /dev/null
@@ -1,1066 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.c,v 1.22 2002/09/16 18:06:15 eich Exp $ */
-
-/*
- * XFree86 vbe module
- * Copyright 2000 Egbert Eich
- *
- * The mode query/save/set/restore functions from the vesa driver
- * have been moved here.
- * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
- * Authors: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
- */
-
-#include "xf86.h"
-#include "xf86_ansic.h"
-#include "vbe.h"
-#include "Xarch.h"
-#define DPMS_SERVER
-#include "extensions/dpms.h"
-
-#define VERSION(x) VBE_VERSION_MAJOR(x),VBE_VERSION_MINOR(x)
-
-#if X_BYTE_ORDER == X_LITTLE_ENDIAN
-#define B_O16(x) (x)
-#define B_O32(x) (x)
-#else
-#define B_O16(x) ((((x) & 0xff) << 8) | (((x) & 0xff) >> 8))
-#define B_O32(x) ((((x) & 0xff) << 24) | (((x) & 0xff00) << 8) \
- | (((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24))
-#endif
-#define L_ADD(x) (B_O32(x) & 0xffff) + ((B_O32(x) >> 12) & 0xffff00)
-
-#define FARP(p) (((unsigned)(p & 0xffff0000) >> 12) | (p & 0xffff))
-
-static unsigned char * vbeReadEDID(vbeInfoPtr pVbe);
-static Bool vbeProbeDDC(vbeInfoPtr pVbe);
-
-const char *vbe_ddcSymbols[] = {
- "xf86InterpretEDID",
- NULL
-};
-
-vbeInfoPtr
-VBEInit(xf86Int10InfoPtr pInt, int entityIndex)
-{
- return VBEExtendedInit(pInt, entityIndex, 0);
-}
-
-vbeInfoPtr
-VBEExtendedInit(xf86Int10InfoPtr pInt, int entityIndex, int Flags)
-{
- int RealOff;
- pointer page = NULL;
- ScrnInfoPtr pScrn = xf86FindScreenForEntity(entityIndex);
- vbeControllerInfoPtr vbe = NULL;
- char vbeVersionString[] = "VBE2";
- Bool init_int10 = FALSE;
- vbeInfoPtr vip = NULL;
- int screen = pScrn->scrnIndex;
-
- if (!pInt) {
- if (!xf86LoadSubModule(pScrn, "int10"))
- goto error;
-
- xf86DrvMsg(screen,X_INFO,"initializing int10\n");
- pInt = xf86ExtendedInitInt10(entityIndex, Flags);
- if (!pInt)
- goto error;
- init_int10 = TRUE;
- }
-
- page = xf86Int10AllocPages(pInt,1,&RealOff);
- if (!page) goto error;
- vbe = (vbeControllerInfoPtr) page;
- memcpy(vbe->VbeSignature,vbeVersionString,4);
-
- pInt->ax = 0x4F00;
- pInt->es = SEG_ADDR(RealOff);
- pInt->di = SEG_OFF(RealOff);
- pInt->num = 0x10;
-
- xf86ExecX86int10(pInt);
-
- if ((pInt->ax & 0xff) != 0x4f) {
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA BIOS not detected\n");
- goto error;
- }
-
- switch (pInt->ax & 0xff00) {
- case 0:
- xf86DrvMsg(screen,X_INFO,"VESA BIOS detected\n");
- break;
- case 0x100:
- xf86DrvMsg(screen,X_INFO,"VESA BIOS function failed\n");
- goto error;
- case 0x200:
- xf86DrvMsg(screen,X_INFO,"VESA BIOS not supported\n");
- goto error;
- case 0x300:
- xf86DrvMsg(screen,X_INFO,"VESA BIOS not supported in current mode\n");
- goto error;
- default:
- xf86DrvMsg(screen,X_INFO,"Invalid\n");
- goto error;
- }
-
- xf86DrvMsgVerb(screen, X_INFO, 4,
- "VbeVersion is %d, OemStringPtr is 0x%08x,\n"
- "\tOemVendorNamePtr is 0x%08x, OemProductNamePtr is 0x%08x,\n"
- "\tOemProductRevPtr is 0x%08x\n",
- vbe->VbeVersion, vbe->OemStringPtr, vbe->OemVendorNamePtr,
- vbe->OemProductNamePtr, vbe->OemProductRevPtr);
-
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE Version %i.%i\n",
- VERSION(vbe->VbeVersion));
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE Total Mem: %i kB\n",
- vbe->TotalMem * 64);
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM: %s\n",
- (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemStringPtr)));
-
- if (B_O16(vbe->VbeVersion) >= 0x200) {
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Software Rev: %i.%i\n",
- VERSION(vbe->OemSoftwareRev));
- if (vbe->OemVendorNamePtr)
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Vendor: %s\n",
- (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemVendorNamePtr)));
- if (vbe->OemProductNamePtr)
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Product: %s\n",
- (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemProductNamePtr)));
- if (vbe->OemProductRevPtr)
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE OEM Product Rev: %s\n",
- (CARD8*)xf86int10Addr(pInt,L_ADD(vbe->OemProductRevPtr)));
- }
- vip = (vbeInfoPtr)xnfalloc(sizeof(vbeInfoRec));
- vip->version = B_O16(vbe->VbeVersion);
- vip->pInt10 = pInt;
- vip->ddc = DDC_UNCHECKED;
- vip->memory = page;
- vip->real_mode_base = RealOff;
- vip->num_pages = 1;
- vip->init_int10 = init_int10;
-
- return vip;
-
- error:
- if (page)
- xf86Int10FreePages(pInt, page, 1);
- if (init_int10)
- xf86FreeInt10(pInt);
- return NULL;
-}
-
-void
-vbeFree(vbeInfoPtr pVbe)
-{
- if (!pVbe)
- return;
-
- xf86Int10FreePages(pVbe->pInt10,pVbe->memory,pVbe->num_pages);
- /* If we have initalized int10 we ought to free it, too */
- if (pVbe->init_int10)
- xf86FreeInt10(pVbe->pInt10);
- xfree(pVbe);
- return;
-}
-
-static Bool
-vbeProbeDDC(vbeInfoPtr pVbe)
-{
- char *ddc_level;
- int screen = pVbe->pInt10->scrnIndex;
-
- if (!pVbe || (pVbe->ddc == DDC_NONE))
- return FALSE;
- if (pVbe->ddc != DDC_UNCHECKED)
- return TRUE;
-
- pVbe->pInt10->ax = 0x4F15;
- pVbe->pInt10->bx = 0;
- pVbe->pInt10->cx = 0;
- pVbe->pInt10->es = 0;
- pVbe->pInt10->di = 0;
- pVbe->pInt10->num = 0x10;
-
- xf86ExecX86int10(pVbe->pInt10);
-
- if ((pVbe->pInt10->ax & 0xff) != 0x4f) {
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC not supported\n");
- pVbe->ddc = DDC_NONE;
- return FALSE;
- }
-
- switch ((pVbe->pInt10->ax >> 8) & 0xff) {
- case 0:
- xf86DrvMsg(screen,X_INFO,"VESA VBE DDC supported\n");
- switch (pVbe->pInt10->bx & 0x3) {
- case 0:
- ddc_level = " none";
- pVbe->ddc = DDC_NONE;
- break;
- case 1:
- ddc_level = " 1";
- pVbe->ddc = DDC_1;
- break;
- case 2:
- ddc_level = " 2";
- pVbe->ddc = DDC_2;
- break;
- case 3:
- ddc_level = " 1 + 2";
- pVbe->ddc = DDC_1_2;
- break;
- default:
- ddc_level = "";
- pVbe->ddc = DDC_NONE;
- break;
- }
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC Level%s\n",ddc_level);
- if (pVbe->pInt10->bx & 0x4) {
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC Screen blanked"
- "for data transfer\n");
- pVbe->ddc_blank = TRUE;
- } else
- pVbe->ddc_blank = FALSE;
-
- xf86DrvMsgVerb(screen,X_INFO,3,
- "VESA VBE DDC transfer in appr. %x sec.\n",
- (pVbe->pInt10->bx >> 8) & 0xff);
- }
-
- return TRUE;
-}
-
-typedef enum {
- VBEOPT_NOVBE,
- VBEOPT_NODDC
-} VBEOpts;
-
-static const OptionInfoRec VBEOptions[] = {
- { VBEOPT_NOVBE, "NoVBE", OPTV_BOOLEAN, {0}, FALSE },
- { VBEOPT_NODDC, "NoDDC", OPTV_BOOLEAN, {0}, FALSE },
- { -1, NULL, OPTV_NONE, {0}, FALSE },
-};
-
-static unsigned char *
-vbeReadEDID(vbeInfoPtr pVbe)
-{
- int RealOff = pVbe->real_mode_base;
- pointer page = pVbe->memory;
- unsigned char *tmp = NULL;
- Bool novbe = FALSE;
- Bool noddc = FALSE;
- int screen = pVbe->pInt10->scrnIndex;
- OptionInfoPtr options;
-
- if (!page) return NULL;
-
- options = xnfalloc(sizeof(VBEOptions));
- (void)memcpy(options, VBEOptions, sizeof(VBEOptions));
- xf86ProcessOptions(screen, xf86Screens[screen]->options, options);
- xf86GetOptValBool(options, VBEOPT_NOVBE, &novbe);
- xf86GetOptValBool(options, VBEOPT_NODDC, &noddc);
- xfree(options);
- if (novbe || noddc) return NULL;
-
- if (!vbeProbeDDC(pVbe)) goto error;
-
- pVbe->pInt10->ax = 0x4F15;
- pVbe->pInt10->bx = 0x01;
- pVbe->pInt10->cx = 0;
- pVbe->pInt10->es = SEG_ADDR(RealOff);
- pVbe->pInt10->di = SEG_OFF(RealOff);
- pVbe->pInt10->num = 0x10;
-
- xf86ExecX86int10(pVbe->pInt10);
-
- if ((pVbe->pInt10->ax & 0xff) != 0x4f) {
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC invalid\n");
- goto error;
- }
- switch (pVbe->pInt10->ax & 0xff00) {
- case 0x0:
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC read successfully\n");
- tmp = (unsigned char *)xnfalloc(128);
- memcpy(tmp,page,128);
- break;
- case 0x100:
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC read failed\n");
- break;
- default:
- xf86DrvMsgVerb(screen,X_INFO,3,"VESA VBE DDC unkown failure %i\n",
- pVbe->pInt10->ax & 0xff00);
- break;
- }
-
- error:
- return tmp;
-}
-
-xf86MonPtr
-vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
-{
- xf86MonPtr pMonitor;
- pointer pModule;
- unsigned char *DDC_data = NULL;
-
- if (!pVbe) return NULL;
- if (pVbe->version < 0x200)
- return NULL;
-
- if (!(pModule = pDDCModule)) {
- pModule =
- xf86LoadSubModule(xf86Screens[pVbe->pInt10->scrnIndex], "ddc");
- if (!pModule)
- return NULL;
-
- xf86LoaderReqSymLists(vbe_ddcSymbols, NULL);
- }
-
- DDC_data = vbeReadEDID(pVbe);
-
- if (!DDC_data)
- return NULL;
-
- pMonitor = xf86InterpretEDID(pVbe->pInt10->scrnIndex, DDC_data);
-
- if (!pDDCModule)
- xf86UnloadSubModule(pModule);
- return pMonitor;
-}
-
-
-VbeInfoBlock *
-VBEGetVBEInfo(vbeInfoPtr pVbe)
-{
- VbeInfoBlock *block = NULL;
- int i, pStr, pModes;
- char *str;
- CARD16 major, minor, *modes;
-
- bzero(pVbe->memory, sizeof(VbeInfoBlock));
-
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 00h Return Super VGA information
- ES:DI := Pointer to buffer
-
- Output:
- AX := status
- (All other registers are preserved)
- */
-
- ((char*)pVbe->memory)[0] = 'V';
- ((char*)pVbe->memory)[1] = 'B';
- ((char*)pVbe->memory)[2] = 'E';
- ((char*)pVbe->memory)[3] = '2';
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f00;
- pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
- pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (NULL);
-
- block = xcalloc(sizeof(VbeInfoBlock), 1);
- block->VESASignature[0] = ((char*)pVbe->memory)[0];
- block->VESASignature[1] = ((char*)pVbe->memory)[1];
- block->VESASignature[2] = ((char*)pVbe->memory)[2];
- block->VESASignature[3] = ((char*)pVbe->memory)[3];
-
- block->VESAVersion = *(CARD16*)(((char*)pVbe->memory) + 4);
- major = (unsigned)block->VESAVersion >> 8;
- minor = block->VESAVersion & 0xff;
-
- pStr = *(CARD32*)(((char*)pVbe->memory) + 6);
- str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
- block->OEMStringPtr = strdup(str);
-
- block->Capabilities[0] = ((char*)pVbe->memory)[10];
- block->Capabilities[1] = ((char*)pVbe->memory)[11];
- block->Capabilities[2] = ((char*)pVbe->memory)[12];
- block->Capabilities[3] = ((char*)pVbe->memory)[13];
-
- pModes = *(CARD32*)(((char*)pVbe->memory) + 14);
- modes = xf86int10Addr(pVbe->pInt10, FARP(pModes));
- i = 0;
- while (modes[i] != 0xffff)
- i++;
- block->VideoModePtr = xalloc(sizeof(CARD16) * i + 1);
- memcpy(block->VideoModePtr, modes, sizeof(CARD16) * i);
- block->VideoModePtr[i] = 0xffff;
-
- block->TotalMemory = *(CARD16*)(((char*)pVbe->memory) + 18);
-
- if (major < 2)
- memcpy(&block->OemSoftwareRev, ((char*)pVbe->memory) + 20, 236);
- else {
- block->OemSoftwareRev = *(CARD16*)(((char*)pVbe->memory) + 20);
- pStr = *(CARD32*)(((char*)pVbe->memory) + 22);
- str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
- block->OemVendorNamePtr = strdup(str);
- pStr = *(CARD32*)(((char*)pVbe->memory) + 26);
- str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
- block->OemProductNamePtr = strdup(str);
- pStr = *(CARD32*)(((char*)pVbe->memory) + 30);
- str = xf86int10Addr(pVbe->pInt10, FARP(pStr));
- block->OemProductRevPtr = strdup(str);
- memcpy(&block->Reserved, ((char*)pVbe->memory) + 34, 222);
- memcpy(&block->OemData, ((char*)pVbe->memory) + 256, 256);
- }
-
- return (block);
-}
-
-void
-VBEFreeVBEInfo(VbeInfoBlock *block)
-{
- xfree(block->OEMStringPtr);
- xfree(block->VideoModePtr);
- if (((unsigned)block->VESAVersion >> 8) >= 2) {
- xfree(block->OemVendorNamePtr);
- xfree(block->OemProductNamePtr);
- xfree(block->OemProductRevPtr);
- }
- xfree(block);
-}
-
-Bool
-VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *block)
-{
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 02h Set Super VGA video mode
- BX := Video mode
- D0-D8 := Mode number
- D9-D10 := Reserved (must be 0)
- D11 := 0 Use current default refresh rate
- := 1 Use user specified CRTC values for refresh rate
- D12-13 Reserved for VBE/AF (must be 0)
- D14 := 0 Use windowed frame buffer model
- := 1 Use linear/flat frame buffer model
- D15 := 0 Clear video memory
- := 1 Don't clear video memory
- ES:DI := Pointer to VbeCRTCInfoBlock structure
-
- Output: AX = Status
- (All other registers are preserved)
- */
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f02;
- pVbe->pInt10->bx = mode;
- if (block) {
- pVbe->pInt10->bx |= 1 << 11;
- memcpy(pVbe->memory, block, sizeof(VbeCRTCInfoBlock));
- pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
- pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
- }
-
- xf86ExecX86int10(pVbe->pInt10);
-
- return (pVbe->pInt10->ax == 0x4f);
-}
-
-Bool
-VBEGetVBEMode(vbeInfoPtr pVbe, int *mode)
-{
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 03h Return current video mode
-
- Output:
- AX := Status
- BX := Current video mode
- (All other registers are preserved)
- */
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f03;
-
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax == 0x4f) {
- *mode = pVbe->pInt10->bx;
-
- return (TRUE);
- }
-
- return (FALSE);
-}
-
-VbeModeInfoBlock *
-VBEGetModeInfo(vbeInfoPtr pVbe, int mode)
-{
- VbeModeInfoBlock *block = NULL;
-
- bzero(pVbe->memory, sizeof(VbeModeInfoBlock));
-
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 01h Return Super VGA mode information
- CX := Super VGA video mode
- (mode number must be one of those returned by Function 0)
- ES:DI := Pointer to buffer
-
- Output:
- AX := status
- (All other registers are preserved)
- */
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f01;
- pVbe->pInt10->cx = mode;
- pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
- pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
- xf86ExecX86int10(pVbe->pInt10);
- if (pVbe->pInt10->ax != 0x4f)
- return (NULL);
-
- block = xcalloc(sizeof(VbeModeInfoBlock), 1);
-
- block->ModeAttributes = *(CARD16*)pVbe->memory;
- block->WinAAttributes = ((char*)pVbe->memory)[2];
- block->WinBAttributes = ((char*)pVbe->memory)[3];
- block->WinGranularity = *(CARD16*)(((char*)pVbe->memory) + 4);
- block->WinSize = *(CARD16*)(((char*)pVbe->memory) + 6);
- block->WinASegment = *(CARD16*)(((char*)pVbe->memory) + 8);
- block->WinBSegment = *(CARD16*)(((char*)pVbe->memory) + 10);
- block->WinFuncPtr = *(CARD32*)(((char*)pVbe->memory) + 12);
- block->BytesPerScanline = *(CARD16*)(((char*)pVbe->memory) + 16);
-
- /* mandatory information for VBE 1.2 and above */
- block->XResolution = *(CARD16*)(((char*)pVbe->memory) + 18);
- block->YResolution = *(CARD16*)(((char*)pVbe->memory) + 20);
- block->XCharSize = ((char*)pVbe->memory)[22];
- block->YCharSize = ((char*)pVbe->memory)[23];
- block->NumberOfPlanes = ((char*)pVbe->memory)[24];
- block->BitsPerPixel = ((char*)pVbe->memory)[25];
- block->NumberOfBanks = ((char*)pVbe->memory)[26];
- block->MemoryModel = ((char*)pVbe->memory)[27];
- block->BankSize = ((char*)pVbe->memory)[28];
- block->NumberOfImages = ((char*)pVbe->memory)[29];
- block->Reserved = ((char*)pVbe->memory)[30];
-
- /* Direct color fields (required for direct/6 and YUV/7 memory models) */
- block->RedMaskSize = ((char*)pVbe->memory)[31];
- block->RedFieldPosition = ((char*)pVbe->memory)[32];
- block->GreenMaskSize = ((char*)pVbe->memory)[33];
- block->GreenFieldPosition = ((char*)pVbe->memory)[34];
- block->BlueMaskSize = ((char*)pVbe->memory)[35];
- block->BlueFieldPosition = ((char*)pVbe->memory)[36];
- block->RsvdMaskSize = ((char*)pVbe->memory)[37];
- block->RsvdFieldPosition = ((char*)pVbe->memory)[38];
- block->DirectColorModeInfo = ((char*)pVbe->memory)[39];
-
- /* Mandatory information for VBE 2.0 and above */
- if (pVbe->version >= 0x200) {
- block->PhysBasePtr = *(CARD32*)(((char*)pVbe->memory) + 40);
- block->Reserved32 = *(CARD32*)(((char*)pVbe->memory) + 44);
- block->Reserved16 = *(CARD16*)(((char*)pVbe->memory) + 48);
-
- /* Mandatory information for VBE 3.0 and above */
- if (pVbe->version >= 0x300) {
- block->LinBytesPerScanLine = *(CARD16*)(((char*)pVbe->memory) + 50);
- block->BnkNumberOfImagePages = ((char*)pVbe->memory)[52];
- block->LinNumberOfImagePages = ((char*)pVbe->memory)[53];
- block->LinRedMaskSize = ((char*)pVbe->memory)[54];
- block->LinRedFieldPosition = ((char*)pVbe->memory)[55];
- block->LinGreenMaskSize = ((char*)pVbe->memory)[56];
- block->LinGreenFieldPosition = ((char*)pVbe->memory)[57];
- block->LinBlueMaskSize = ((char*)pVbe->memory)[58];
- block->LinBlueFieldPosition = ((char*)pVbe->memory)[59];
- block->LinRsvdMaskSize = ((char*)pVbe->memory)[60];
- block->LinRsvdFieldPosition = ((char*)pVbe->memory)[61];
- block->MaxPixelClock = *(CARD32*)(((char*)pVbe->memory) + 62);
- memcpy(&block->Reserved2, ((char*)pVbe->memory) + 66, 188);
- }
- else
- memcpy(&block->LinBytesPerScanLine, ((char*)pVbe->memory) + 50, 206);
- }
- else
- memcpy(&block->PhysBasePtr, ((char*)pVbe->memory) + 40, 216);
-
- return (block);
-}
-
-void
-VBEFreeModeInfo(VbeModeInfoBlock *block)
-{
- xfree(block);
-}
-
-Bool
-VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function,
- pointer *memory, int *size, int *real_mode_pages)
-{
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 04h Save/restore Super VGA video state
- DL := 00h Return save/restore state buffer size
- CX := Requested states
- D0 = Save/restore video hardware state
- D1 = Save/restore video BIOS data state
- D2 = Save/restore video DAC state
- D3 = Save/restore Super VGA state
-
- Output:
- AX = Status
- BX = Number of 64-byte blocks to hold the state buffer
- (All other registers are preserved)
-
-
- Input:
- AH := 4Fh Super VGA support
- AL := 04h Save/restore Super VGA video state
- DL := 01h Save Super VGA video state
- CX := Requested states (see above)
- ES:BX := Pointer to buffer
-
- Output:
- AX := Status
- (All other registers are preserved)
-
-
- Input:
- AH := 4Fh Super VGA support
- AL := 04h Save/restore Super VGA video state
- DL := 02h Restore Super VGA video state
- CX := Requested states (see above)
- ES:BX := Pointer to buffer
-
- Output:
- AX := Status
- (All other registers are preserved)
- */
-
- if ((pVbe->version & 0xff00) > 0x100) {
- int screen = pVbe->pInt10->scrnIndex;
- if (function == MODE_QUERY ||
- (function == MODE_SAVE && !*memory)) {
- /* Query amount of memory to save state */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f04;
- pVbe->pInt10->dx = 0;
- pVbe->pInt10->cx = 0x000f;
- xf86ExecX86int10(pVbe->pInt10);
- if (pVbe->pInt10->ax != 0x4f)
- return (FALSE);
-
- if (function == MODE_SAVE) {
- int npages = (pVbe->pInt10->bx * 64) / 4096 + 1;
- if ((*memory = xf86Int10AllocPages(pVbe->pInt10, npages,
- real_mode_pages)) == NULL) {
- xf86DrvMsg(screen, X_ERROR,
- "Cannot allocate memory to save SVGA state.\n");
- return (FALSE);
- }
- }
- *size = pVbe->pInt10->bx * 64;
- }
-
- /* Save/Restore Super VGA state */
- if (function != MODE_QUERY) {
-
- if (!*memory) return FALSE;
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f04;
- switch (function) {
- case MODE_SAVE:
- pVbe->pInt10->dx = 1;
- break;
- case MODE_RESTORE:
- pVbe->pInt10->dx = 2;
- break;
- case MODE_QUERY:
- return FALSE;
- }
- pVbe->pInt10->cx = 0x000f;
-
- pVbe->pInt10->es = SEG_ADDR(*real_mode_pages);
- pVbe->pInt10->bx = SEG_OFF(*real_mode_pages);
- xf86ExecX86int10(pVbe->pInt10);
- return (pVbe->pInt10->ax == 0x4f);
-
- }
- }
- return TRUE;
-}
-
-Bool
-VBEBankSwitch(vbeInfoPtr pVbe, unsigned int iBank, int window)
-{
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 05h
-
- Output:
- */
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f05;
- pVbe->pInt10->bx = window;
- pVbe->pInt10->dx = iBank;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (FALSE);
-
- return (TRUE);
-}
-
-Bool
-VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe, vbeScanwidthCommand command,
- int width, int *pixels, int *bytes, int *max)
-{
- if (command < SCANWID_SET || command > SCANWID_GET_MAX)
- return (FALSE);
-
- /*
- Input:
- AX := 4F06h VBE Set/Get Logical Scan Line Length
- BL := 00h Set Scan Line Length in Pixels
- := 01h Get Scan Line Length
- := 02h Set Scan Line Length in Bytes
- := 03h Get Maximum Scan Line Length
- CX := If BL=00h Desired Width in Pixels
- If BL=02h Desired Width in Bytes
- (Ignored for Get Functions)
-
- Output:
- AX := VBE Return Status
- BX := Bytes Per Scan Line
- CX := Actual Pixels Per Scan Line
- (truncated to nearest complete pixel)
- DX := Maximum Number of Scan Lines
- */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f06;
- pVbe->pInt10->bx = command;
- if (command == SCANWID_SET || command == SCANWID_SET_BYTES)
- pVbe->pInt10->cx = width;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (FALSE);
-
- if (command == SCANWID_GET || command == SCANWID_GET_MAX) {
- if (pixels)
- *pixels = pVbe->pInt10->cx;
- if (bytes)
- *bytes = pVbe->pInt10->bx;
- if (max)
- *max = pVbe->pInt10->dx;
- }
-
- return (TRUE);
-}
-
-Bool
-VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace)
-{
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f07;
- pVbe->pInt10->bx = wait_retrace ? 0x80 : 0x00;
- pVbe->pInt10->cx = x;
- pVbe->pInt10->dx = y;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (FALSE);
-
- return (TRUE);
-}
-
-Bool
-VBEGetDisplayStart(vbeInfoPtr pVbe, int *x, int *y)
-{
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f07;
- pVbe->pInt10->bx = 0x01;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (FALSE);
-
- *x = pVbe->pInt10->cx;
- *y = pVbe->pInt10->dx;
-
- return (TRUE);
-}
-
-int
-VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits)
-{
- /*
- Input:
- AX := 4F08h VBE Set/Get Palette Format
- BL := 00h Set DAC Palette Format
- := 01h Get DAC Palette Format
- BH := Desired bits of color per primary
- (Set DAC Palette Format only)
-
- Output:
- AX := VBE Return Status
- BH := Current number of bits of color per primary
- */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f08;
- if (!bits)
- pVbe->pInt10->bx = 0x01;
- else
- pVbe->pInt10->bx = (bits & 0x00ff) << 8;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (0);
-
- return (bits != 0 ? bits : (pVbe->pInt10->bx >> 8) & 0x00ff);
-}
-
-CARD32 *
-VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num,
- CARD32 *data, Bool secondary, Bool wait_retrace)
-{
- /*
- Input:
- (16-bit)
- AX := 4F09h VBE Load/Unload Palette Data
- BL := 00h Set Palette Data
- := 01h Get Palette Data
- := 02h Set Secondary Palette Data
- := 03h Get Secondary Palette Data
- := 80h Set Palette Data during Vertical Retrace
- CX := Number of palette registers to update (to a maximum of 256)
- DX := First of the palette registers to update (start)
- ES:DI := Table of palette values (see below for format)
-
- Output:
- AX := VBE Return Status
-
-
- Input:
- (32-bit)
- BL := 00h Set Palette Data
- := 80h Set Palette Data during Vertical Retrace
- CX := Number of palette registers to update (to a maximum of 256)
- DX := First of the palette registers to update (start)
- ES:EDI := Table of palette values (see below for format)
- DS := Selector for memory mapped registers
- */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f09;
- if (!secondary)
- pVbe->pInt10->bx = set && wait_retrace ? 0x80 : set ? 0 : 1;
- else
- pVbe->pInt10->bx = set ? 2 : 3;
- pVbe->pInt10->cx = num;
- pVbe->pInt10->dx = first;
- pVbe->pInt10->es = SEG_ADDR(pVbe->real_mode_base);
- pVbe->pInt10->di = SEG_OFF(pVbe->real_mode_base);
- if (set)
- memcpy(pVbe->memory, data, num * sizeof(CARD32));
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (NULL);
-
- if (set)
- return (data);
-
- data = xalloc(num * sizeof(CARD32));
- memcpy(data, pVbe->memory, num * sizeof(CARD32));
-
- return (data);
-}
-
-VBEpmi *
-VBEGetVBEpmi(vbeInfoPtr pVbe)
-{
- VBEpmi *pmi;
-
- /*
- Input:
- AH := 4Fh Super VGA support
- AL := 0Ah Protected Mode Interface
- BL := 00h Return Protected Mode Table
-
- Output:
- AX := Status
- ES := Real Mode Segment of Table
- DI := Offset of Table
- CX := Lenght of Table including protected mode code in bytes (for copying purposes)
- (All other registers are preserved)
- */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f0a;
- pVbe->pInt10->bx = 0;
- pVbe->pInt10->di = 0;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (NULL);
-
- pmi = xalloc(sizeof(VBEpmi));
- pmi->seg_tbl = pVbe->pInt10->es;
- pmi->tbl_off = pVbe->pInt10->di;
- pmi->tbl_len = pVbe->pInt10->cx;
-
- return (pmi);
-}
-
-#if 0
-vbeModeInfoPtr
-VBEBuildVbeModeList(vbeInfoPtr pVbe, VbeInfoBlock *vbe)
-{
- vbeModeInfoPtr ModeList = NULL;
-
- int i = 0;
- while (vbe->VideoModePtr[i] != 0xffff) {
- vbeModeInfoPtr m;
- VbeModeInfoBlock *mode;
- int id = vbe->VideoModePtr[i++];
- int bpp;
-
- if ((mode = VBEGetModeInfo(pVbe, id)) == NULL)
- continue;
-
- bpp = mode->BitsPerPixel;
-
- m = xnfcalloc(sizeof(vbeModeInfoRec),1);
- m->width = mode->XResolution;
- m->height = mode->YResolution;
- m->bpp = bpp;
- m->n = id;
- m->next = ModeList;
-
- xf86DrvMsgVerb(pVbe->pInt10->scrnIndex, X_PROBED, 3,
- "BIOS reported VESA mode 0x%x: x:%i y:%i bpp:%i\n",
- m->n, m->width, m->height, m->bpp);
-
- ModeList = m;
-
- VBEFreeModeInfo(mode);
- }
- return ModeList;
-}
-
-unsigned short
-VBECalcVbeModeIndex(vbeModeInfoPtr m, DisplayModePtr mode, int bpp)
-{
- while (m) {
- if (bpp == m->bpp
- && mode->HDisplay == m->width
- && mode->VDisplay == m->height)
- return m->n;
- m = m->next;
- }
- return 0;
-}
-#endif
-
-void
-VBEVesaSaveRestore(vbeInfoPtr pVbe, vbeSaveRestorePtr vbe_sr,
- vbeSaveRestoreFunction function)
-{
- Bool SaveSucc = FALSE;
-
- if (VBE_VERSION_MAJOR(pVbe->version) > 1
- && (function == MODE_SAVE || vbe_sr->pstate)) {
- if (function == MODE_RESTORE)
- memcpy(vbe_sr->state, vbe_sr->pstate, vbe_sr->stateSize);
- ErrorF("VBESaveRestore\n");
- if ((VBESaveRestore(pVbe,function,
- (pointer)&vbe_sr->state,
- &vbe_sr->stateSize,&vbe_sr->statePage))) {
- if (function == MODE_SAVE) {
- SaveSucc = TRUE;
- vbe_sr->stateMode = -1; /* invalidate */
- /* don't rely on the memory not being touched */
- if (vbe_sr->pstate == NULL)
- vbe_sr->pstate = xalloc(vbe_sr->stateSize);
- memcpy(vbe_sr->pstate, vbe_sr->state, vbe_sr->stateSize);
- }
- ErrorF("VBESaveRestore done with success\n");
- return;
- }
- ErrorF("VBESaveRestore done\n");
- }
-
- if (function == MODE_SAVE && !SaveSucc)
- (void)VBEGetVBEMode(pVbe, &vbe_sr->stateMode);
-
- if (function == MODE_RESTORE && vbe_sr->stateMode != -1)
- VBESetVBEMode(pVbe, vbe_sr->stateMode, NULL);
-
-}
-
-int
-VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int clock)
-{
- /*
- Input:
- AX := 4F0Bh VBE Get Pixel Clock
- BL := 01h Get Pixel Clock
- ECX := pixel clock in units of Hz
- DX := mode number
-
- Output:
- AX := VBE Return Status
- ECX := Closest pixel clock
- */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f0b;
- pVbe->pInt10->bx = 0x01;
- pVbe->pInt10->cx = clock;
- pVbe->pInt10->dx = mode;
- xf86ExecX86int10(pVbe->pInt10);
-
- if (pVbe->pInt10->ax != 0x4f)
- return (0);
-
- return (pVbe->pInt10->cx);
-}
-
-Bool
-VBEDPMSSet(vbeInfoPtr pVbe, int mode)
-{
- /*
- Input:
- AX := 4F10h DPMS
- BL := 01h Set Display Power State
- BH := requested power state
-
- Output:
- AX := VBE Return Status
- */
-
- pVbe->pInt10->num = 0x10;
- pVbe->pInt10->ax = 0x4f10;
- pVbe->pInt10->bx = 0x01;
- switch (mode) {
- case DPMSModeOn:
- break;
- case DPMSModeStandby:
- pVbe->pInt10->bx |= 0x100;
- break;
- case DPMSModeSuspend:
- pVbe->pInt10->bx |= 0x200;
- break;
- case DPMSModeOff:
- pVbe->pInt10->bx |= 0x400;
- break;
- }
- xf86ExecX86int10(pVbe->pInt10);
- return (pVbe->pInt10->ax == 0x4f);
-}
-
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.h b/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.h
deleted file mode 100644
index 75758990b..000000000
--- a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.h
+++ /dev/null
@@ -1,328 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe.h,v 1.10 2002/09/17 23:25:46 dawes Exp $ */
-
-/*
- * XFree86 vbe module
- * Copyright 2000 Egbert Eich
- *
- * The mode query/save/set/restore functions from the vesa driver
- * have been moved here.
- * Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
- * Authors: Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
- */
-
-#ifndef _VBE_H
-#define _VBE_H
-#include "xf86int10.h"
-#include "xf86DDC.h"
-
-typedef enum {
- DDC_UNCHECKED,
- DDC_NONE,
- DDC_1,
- DDC_2,
- DDC_1_2
-}
-ddc_lvl;
-
-typedef struct {
- xf86Int10InfoPtr pInt10;
- int version;
- pointer memory;
- int real_mode_base;
- int num_pages;
- Bool init_int10;
- ddc_lvl ddc;
- Bool ddc_blank;
-} vbeInfoRec, *vbeInfoPtr;
-
-#define VBE_VERSION_MAJOR(x) *((CARD8*)(&x) + 1)
-#define VBE_VERSION_MINOR(x) (CARD8)(x)
-
-vbeInfoPtr VBEInit(xf86Int10InfoPtr pInt, int entityIndex);
-vbeInfoPtr VBEExtendedInit(xf86Int10InfoPtr pInt, int entityIndex, int Flags);
-void vbeFree(vbeInfoPtr pVbe);
-xf86MonPtr vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule);
-
-#pragma pack(1)
-
-typedef struct vbeControllerInfoBlock {
- CARD8 VbeSignature[4];
- CARD16 VbeVersion;
- CARD32 OemStringPtr;
- CARD8 Capabilities[4];
- CARD32 VideoModePtr;
- CARD16 TotalMem;
- CARD16 OemSoftwareRev;
- CARD32 OemVendorNamePtr;
- CARD32 OemProductNamePtr;
- CARD32 OemProductRevPtr;
- CARD8 Scratch[222];
- CARD8 OemData[256];
-} vbeControllerInfoRec, *vbeControllerInfoPtr;
-
-#pragma pack()
-
-#ifndef __GNUC__
-#define __attribute__(a)
-#endif
-
-typedef struct _VbeInfoBlock VbeInfoBlock;
-typedef struct _VbeModeInfoBlock VbeModeInfoBlock;
-typedef struct _VbeCRTCInfoBlock VbeCRTCInfoBlock;
-
-/*
- * INT 0
- */
-
-struct _VbeInfoBlock {
- /* VESA 1.2 fields */
- CARD8 VESASignature[4]; /* VESA */
- CARD16 VESAVersion; /* Higher byte major, lower byte minor */
- /*CARD32*/char *OEMStringPtr; /* Pointer to OEM string */
- CARD8 Capabilities[4]; /* Capabilities of the video environment */
-
- /*CARD32*/CARD16 *VideoModePtr; /* pointer to supported Super VGA modes */
-
- CARD16 TotalMemory; /* Number of 64kb memory blocks on board */
- /* if not VESA 2, 236 scratch bytes follow (256 bytes total size) */
-
- /* VESA 2 fields */
- CARD16 OemSoftwareRev; /* VBE implementation Software revision */
- /*CARD32*/char *OemVendorNamePtr; /* Pointer to Vendor Name String */
- /*CARD32*/char *OemProductNamePtr; /* Pointer to Product Name String */
- /*CARD32*/char *OemProductRevPtr; /* Pointer to Product Revision String */
- CARD8 Reserved[222]; /* Reserved for VBE implementation */
- CARD8 OemData[256]; /* Data Area for OEM Strings */
-} __attribute__((packed));
-
-/* Return Super VGA Information */
-VbeInfoBlock *VBEGetVBEInfo(vbeInfoPtr pVbe);
-void VBEFreeVBEInfo(VbeInfoBlock *block);
-
-/*
- * INT 1
- */
-
-struct _VbeModeInfoBlock {
- CARD16 ModeAttributes; /* mode attributes */
- CARD8 WinAAttributes; /* window A attributes */
- CARD8 WinBAttributes; /* window B attributes */
- CARD16 WinGranularity; /* window granularity */
- CARD16 WinSize; /* window size */
- CARD16 WinASegment; /* window A start segment */
- CARD16 WinBSegment; /* window B start segment */
- CARD32 WinFuncPtr; /* real mode pointer to window function */
- CARD16 BytesPerScanline; /* bytes per scanline */
-
- /* Mandatory information for VBE 1.2 and above */
- CARD16 XResolution; /* horizontal resolution in pixels or characters */
- CARD16 YResolution; /* vertical resolution in pixels or characters */
- CARD8 XCharSize; /* character cell width in pixels */
- CARD8 YCharSize; /* character cell height in pixels */
- CARD8 NumberOfPlanes; /* number of memory planes */
- CARD8 BitsPerPixel; /* bits per pixel */
- CARD8 NumberOfBanks; /* number of banks */
- CARD8 MemoryModel; /* memory model type */
- CARD8 BankSize; /* bank size in KB */
- CARD8 NumberOfImages; /* number of images */
- CARD8 Reserved; /* 1 */ /* reserved for page function */
-
- /* Direct color fields (required for direct/6 and YUV/7 memory models) */
- CARD8 RedMaskSize; /* size of direct color red mask in bits */
- CARD8 RedFieldPosition; /* bit position of lsb of red mask */
- CARD8 GreenMaskSize; /* size of direct color green mask in bits */
- CARD8 GreenFieldPosition; /* bit position of lsb of green mask */
- CARD8 BlueMaskSize; /* size of direct color blue mask in bits */
- CARD8 BlueFieldPosition; /* bit position of lsb of blue mask */
- CARD8 RsvdMaskSize; /* size of direct color reserved mask in bits */
- CARD8 RsvdFieldPosition; /* bit position of lsb of reserved mask */
- CARD8 DirectColorModeInfo; /* direct color mode attributes */
-
- /* Mandatory information for VBE 2.0 and above */
- CARD32 PhysBasePtr; /* physical address for flat memory frame buffer */
- CARD32 Reserved32; /* 0 */ /* Reserved - always set to 0 */
- CARD16 Reserved16; /* 0 */ /* Reserved - always set to 0 */
-
- /* Mandatory information for VBE 3.0 and above */
- CARD16 LinBytesPerScanLine; /* bytes per scan line for linear modes */
- CARD8 BnkNumberOfImagePages; /* number of images for banked modes */
- CARD8 LinNumberOfImagePages; /* number of images for linear modes */
- CARD8 LinRedMaskSize; /* size of direct color red mask (linear modes) */
- CARD8 LinRedFieldPosition; /* bit position of lsb of red mask (linear modes) */
- CARD8 LinGreenMaskSize; /* size of direct color green mask (linear modes) */
- CARD8 LinGreenFieldPosition; /* bit position of lsb of green mask (linear modes) */
- CARD8 LinBlueMaskSize; /* size of direct color blue mask (linear modes) */
- CARD8 LinBlueFieldPosition; /* bit position of lsb of blue mask (linear modes) */
- CARD8 LinRsvdMaskSize; /* size of direct color reserved mask (linear modes) */
- CARD8 LinRsvdFieldPosition; /* bit position of lsb of reserved mask (linear modes) */
- CARD32 MaxPixelClock; /* maximum pixel clock (in Hz) for graphics mode */
- CARD8 Reserved2[189]; /* remainder of VbeModeInfoBlock */
-} __attribute__((packed));
-
-/* Return VBE Mode Information */
-VbeModeInfoBlock *VBEGetModeInfo(vbeInfoPtr pVbe, int mode);
-void VBEFreeModeInfo(VbeModeInfoBlock *block);
-
-/*
- * INT2
- */
-
-#define CRTC_DBLSCAN (1<<0)
-#define CRTC_INTERLACE (1<<1)
-#define CRTC_NHSYNC (1<<2)
-#define CRTC_NVSYNC (1<<3)
-
-struct _VbeCRTCInfoBlock {
- CARD16 HorizontalTotal; /* Horizontal total in pixels */
- CARD16 HorizontalSyncStart; /* Horizontal sync start in pixels */
- CARD16 HorizontalSyncEnd; /* Horizontal sync end in pixels */
- CARD16 VerticalTotal; /* Vertical total in lines */
- CARD16 VerticalSyncStart; /* Vertical sync start in lines */
- CARD16 VerticalSyncEnd; /* Vertical sync end in lines */
- CARD8 Flags; /* Flags (Interlaced, Double Scan etc) */
- CARD32 PixelClock; /* Pixel clock in units of Hz */
- CARD16 RefreshRate; /* Refresh rate in units of 0.01 Hz */
- CARD8 Reserved[40]; /* remainder of ModeInfoBlock */
-} __attribute__((packed));
-/* VbeCRTCInfoBlock is in the VESA 3.0 specs */
-
-Bool VBESetVBEMode(vbeInfoPtr pVbe, int mode, VbeCRTCInfoBlock *crtc);
-
-/*
- * INT 3
- */
-
-Bool VBEGetVBEMode(vbeInfoPtr pVbe, int *mode);
-
-/*
- * INT 4
- */
-
-/* Save/Restore Super VGA video state */
-/* function values are (values stored in VESAPtr):
- * 0 := query & allocate amount of memory to save state
- * 1 := save state
- * 2 := restore state
- *
- * function 0 called automatically if function 1 called without
- * a previous call to function 0.
- */
-
-typedef enum {
- MODE_QUERY,
- MODE_SAVE,
- MODE_RESTORE
-} vbeSaveRestoreFunction;
-
-Bool
-VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction fuction,
- pointer *memory, int *size, int *real_mode_pages);
-
-/*
- * INT 5
- */
-
-Bool
-VBEBankSwitch(vbeInfoPtr pVbe, unsigned int iBank, int window);
-
-/*
- * INT 6
- */
-
-typedef enum {
- SCANWID_SET,
- SCANWID_GET,
- SCANWID_SET_BYTES,
- SCANWID_GET_MAX
-} vbeScanwidthCommand;
-
-#define VBESetLogicalScanline(pVbe, width) \
- VBESetGetLogicalScanlineLength(pVbe, SCANWID_SET, \
- width, NULL, NULL, NULL)
-#define VBESetLogicalScanlineBytes(pVbe, width) \
- VBESetGetLogicalScanlineLength(pVbe, SCANWID_SET_BYTES, width, \
- NULL, NULL, NULL)
-#define VBEGetLogicalScanline(pVbe, pixels, bytes, max) \
- VBESetGetLogicalScanlineLength(pVbe, SCANWID_GET, 0, \
- pixels, bytes, max)
-#define VBEGetMaxLogicalScanline(pVbe, pixels, bytes, max) \
- VBESetGetLogicalScanlineLength(pVbe, SCANWID_GET_MAX, \
- NULL, pixels, bytes, max)
-Bool VBESetGetLogicalScanlineLength(vbeInfoPtr pVbe,
- vbeScanwidthCommand command, int width,
- int *pixels, int *bytes, int *max);
-
-/*
- * INT 7
- */
-
-/* 16 bit code */
-Bool VBESetDisplayStart(vbeInfoPtr pVbe, int x, int y, Bool wait_retrace);
-Bool VBEGetDisplayStart(vbeInfoPtr pVbe, int *x, int *y);
-
-/*
- * INT 8
- */
-
-/* if bits is 0, then it is a GET */
-int VBESetGetDACPaletteFormat(vbeInfoPtr pVbe, int bits);
-
-/*
- * INT 9
- */
-
-/*
- * If getting a palette, the data argument is not used. It will return
- * the data.
- * If setting a palette, it will return the pointer received on success,
- * NULL on failure.
- */
-CARD32 *VBESetGetPaletteData(vbeInfoPtr pVbe, Bool set, int first, int num,
- CARD32 *data, Bool secondary, Bool wait_retrace);
-#define VBEFreePaletteData(data) xfree(data)
-
-/*
- * INT A
- */
-
-typedef struct _VBEpmi {
- int seg_tbl;
- int tbl_off;
- int tbl_len;
-} VBEpmi;
-
-VBEpmi *VBEGetVBEpmi(vbeInfoPtr pVbe);
-#define VESAFreeVBEpmi(pmi) xfree(pmi)
-
-/* high level helper functions */
-
-typedef struct _vbeModeInfoRec {
- int width;
- int height;
- int bpp;
- int n;
- struct _vbeModeInfoRec *next;
-} vbeModeInfoRec, *vbeModeInfoPtr;
-
-vbeModeInfoPtr VBEBuildVbeModeList(vbeInfoPtr pVbe,
- VbeInfoBlock *vbe);
-
-unsigned short VBECalcVbeModeIndex(vbeModeInfoPtr m,
- DisplayModePtr mode, int bpp);
-
-typedef struct {
- CARD8 *state;
- CARD8 *pstate;
- int statePage;
- int stateSize;
- int stateMode;
-} vbeSaveRestoreRec, *vbeSaveRestorePtr;
-
-void
-VBEVesaSaveRestore(vbeInfoPtr pVbe, vbeSaveRestorePtr vbe_sr,
- vbeSaveRestoreFunction function);
-
-int VBEGetPixelClock(vbeInfoPtr pVbe, int mode, int Clock);
-Bool VBEDPMSSet(vbeInfoPtr pVbe, int mode);
-
-#endif
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.c b/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.c
deleted file mode 100644
index 9cb247ab9..000000000
--- a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.c
+++ /dev/null
@@ -1,439 +0,0 @@
-#define DEBUG_VERB 2
-/*
- * Copyright © 2002 David Dawes
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of the author(s) shall
- * not be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from
- * the author(s).
- *
- * Authors: David Dawes <dawes@xfree86.org>
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.c,v 1.4 2002/10/16 17:51:01 dawes Exp $
- */
-
-#include "xf86.h"
-#include "xf86_ansic.h"
-#include "vbe.h"
-#include "vbeModes.h"
-
-static int
-GetDepthFlag(vbeInfoPtr pVbe, int id)
-{
- VbeModeInfoBlock *mode;
- int bpp;
-
- if ((mode = VBEGetModeInfo(pVbe, id)) == NULL)
- return 0;
-
- if (VBE_MODE_USABLE(mode, 0)) {
- int depth;
-
- if (VBE_MODE_COLOR(mode)) {
- depth = mode->RedMaskSize + mode->GreenMaskSize +
- mode->BlueMaskSize;
- } else {
- depth = 1;
- }
- bpp = mode->BitsPerPixel;
- VBEFreeModeInfo(mode);
- mode = NULL;
- switch (depth) {
- case 1:
- return V_DEPTH_1;
- case 4:
- return V_DEPTH_4;
- case 8:
- return V_DEPTH_8;
- case 15:
- return V_DEPTH_15;
- case 16:
- return V_DEPTH_16;
- case 24:
- switch (bpp) {
- case 24:
- return V_DEPTH_24_24;
- case 32:
- return V_DEPTH_24_32;
- }
- }
- }
- if (mode)
- VBEFreeModeInfo(mode);
- return 0;
-}
-
-/*
- * Find supported mode depths.
- */
-int
-VBEFindSupportedDepths(vbeInfoPtr pVbe, VbeInfoBlock *vbe, int *flags24,
- int modeTypes)
-{
- int i = 0;
- int depths = 0;
-
- if (modeTypes & V_MODETYPE_VBE) {
- while (vbe->VideoModePtr[i] != 0xffff) {
- depths |= GetDepthFlag(pVbe, vbe->VideoModePtr[i++]);
- }
- }
-
- /*
- * XXX This possibly only works with VBE 3.0 and later.
- */
- if (modeTypes & V_MODETYPE_VGA) {
- for (i = 0; i < 0x7F; i++) {
- depths |= GetDepthFlag(pVbe, i);
- }
- }
-
- if (flags24) {
- if (depths & V_DEPTH_24_24)
- *flags24 |= Support24bppFb;
- if (depths & V_DEPTH_24_32)
- *flags24 |= Support32bppFb;
- }
-
- return depths;
-}
-
-static DisplayModePtr
-CheckMode(ScrnInfoPtr pScrn, vbeInfoPtr pVbe, VbeInfoBlock *vbe, int id,
- int flags)
-{
- CARD16 major, minor;
- VbeModeInfoBlock *mode;
- DisplayModePtr pMode, p;
- VbeModeInfoData *data;
- Bool modeOK = FALSE;
- ModeStatus status = MODE_OK;
-
- major = (unsigned)(vbe->VESAVersion >> 8);
- minor = vbe->VESAVersion & 0xff;
-
- if ((mode = VBEGetModeInfo(pVbe, id)) == NULL)
- return NULL;
-
- /* Does the mode match the depth/bpp? */
- if (VBE_MODE_USABLE(mode, flags) &&
- ((pScrn->bitsPerPixel == 1 && !VBE_MODE_COLOR(mode)) ||
- (mode->BitsPerPixel > 8 &&
- (mode->RedMaskSize + mode->GreenMaskSize +
- mode->BlueMaskSize) == pScrn->depth &&
- mode->BitsPerPixel == pScrn->bitsPerPixel) ||
- (mode->BitsPerPixel <= 8 &&
- mode->BitsPerPixel == pScrn->bitsPerPixel))) {
- modeOK = TRUE;
- xf86ErrorFVerb(DEBUG_VERB, "*");
- }
-
- /*
- * Check if there's a valid monitor mode that this one can be matched
- * up with. The actual matching is done later.
- */
- if (modeOK) {
- Bool sizeMatch = FALSE;
- modeOK = FALSE;
- for (p = pScrn->monitor->Modes; p != NULL; p = p->next) {
- if ((p->HDisplay != mode->XResolution) ||
- (p->VDisplay != mode->YResolution) ||
- (p->Flags & (V_INTERLACE | V_DBLSCAN | V_CLKDIV2)))
- continue;
- sizeMatch = TRUE;
- /* XXX could support the various V_ flags */
- status = xf86CheckModeForMonitor(p, pScrn->monitor);
- if (status == MODE_OK) {
- modeOK = TRUE;
- break;
- }
- }
- if (sizeMatch && !modeOK) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Not using built-in mode \"%dx%d\" (%s)\n",
- mode->XResolution, mode->YResolution,
- xf86ModeStatusToString(status));
- }
- }
-
- xf86ErrorFVerb(DEBUG_VERB,
- "Mode: %x (%dx%d)\n", id, mode->XResolution, mode->YResolution);
- xf86ErrorFVerb(DEBUG_VERB,
- " ModeAttributes: 0x%x\n", mode->ModeAttributes);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinAAttributes: 0x%x\n", mode->WinAAttributes);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinBAttributes: 0x%x\n", mode->WinBAttributes);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinGranularity: %d\n", mode->WinGranularity);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinSize: %d\n", mode->WinSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinASegment: 0x%x\n", mode->WinASegment);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinBSegment: 0x%x\n", mode->WinBSegment);
- xf86ErrorFVerb(DEBUG_VERB,
- " WinFuncPtr: 0x%x\n", mode->WinFuncPtr);
- xf86ErrorFVerb(DEBUG_VERB,
- " BytesPerScanline: %d\n", mode->BytesPerScanline);
- xf86ErrorFVerb(DEBUG_VERB,
- " XResolution: %d\n", mode->XResolution);
- xf86ErrorFVerb(DEBUG_VERB,
- " YResolution: %d\n", mode->YResolution);
- xf86ErrorFVerb(DEBUG_VERB,
- " XCharSize: %d\n", mode->XCharSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " YCharSize: %d\n", mode->YCharSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " NumberOfPlanes: %d\n", mode->NumberOfPlanes);
- xf86ErrorFVerb(DEBUG_VERB,
- " BitsPerPixel: %d\n", mode->BitsPerPixel);
- xf86ErrorFVerb(DEBUG_VERB,
- " NumberOfBanks: %d\n", mode->NumberOfBanks);
- xf86ErrorFVerb(DEBUG_VERB,
- " MemoryModel: %d\n", mode->MemoryModel);
- xf86ErrorFVerb(DEBUG_VERB,
- " BankSize: %d\n", mode->BankSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " NumberOfImages: %d\n", mode->NumberOfImages);
- xf86ErrorFVerb(DEBUG_VERB,
- " RedMaskSize: %d\n", mode->RedMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " RedFieldPosition: %d\n", mode->RedFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " GreenMaskSize: %d\n", mode->GreenMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " GreenFieldPosition: %d\n", mode->GreenFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " BlueMaskSize: %d\n", mode->BlueMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " BlueFieldPosition: %d\n", mode->BlueFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " RsvdMaskSize: %d\n", mode->RsvdMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " RsvdFieldPosition: %d\n", mode->RsvdFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " DirectColorModeInfo: %d\n", mode->DirectColorModeInfo);
- if (major >= 2) {
- xf86ErrorFVerb(DEBUG_VERB,
- " PhysBasePtr: 0x%x\n", mode->PhysBasePtr);
- if (major >= 3) {
- xf86ErrorFVerb(DEBUG_VERB,
- " LinBytesPerScanLine: %d\n", mode->LinBytesPerScanLine);
- xf86ErrorFVerb(DEBUG_VERB,
- " BnkNumberOfImagePages: %d\n", mode->BnkNumberOfImagePages);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinNumberOfImagePages: %d\n", mode->LinNumberOfImagePages);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinRedMaskSize: %d\n", mode->LinRedMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinRedFieldPosition: %d\n", mode->LinRedFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinGreenMaskSize: %d\n", mode->LinGreenMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinGreenFieldPosition: %d\n", mode->LinGreenFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinBlueMaskSize: %d\n", mode->LinBlueMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinBlueFieldPosition: %d\n", mode->LinBlueFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinRsvdMaskSize: %d\n", mode->LinRsvdMaskSize);
- xf86ErrorFVerb(DEBUG_VERB,
- " LinRsvdFieldPosition: %d\n", mode->LinRsvdFieldPosition);
- xf86ErrorFVerb(DEBUG_VERB,
- " MaxPixelClock: %d\n", mode->MaxPixelClock);
- }
- }
-
- if (!modeOK) {
- VBEFreeModeInfo(mode);
- return NULL;
- }
- pMode = xnfcalloc(sizeof(DisplayModeRec), 1);
-
- pMode->status = MODE_OK;
- pMode->type = M_T_BUILTIN;
-
- /* for adjust frame */
- pMode->HDisplay = mode->XResolution;
- pMode->VDisplay = mode->YResolution;
-
- data = xnfcalloc(sizeof(VbeModeInfoData), 1);
- data->mode = id;
- data->data = mode;
- pMode->PrivSize = sizeof(VbeModeInfoData);
- pMode->Private = (INT32*)data;
- pMode->next = NULL;
- return pMode;
-}
-
-/*
- * Check the available BIOS modes, and extract those that match the
- * requirements into the modePool. Note: modePool is a NULL-terminated
- * list.
- */
-
-DisplayModePtr
-VBEGetModePool(ScrnInfoPtr pScrn, vbeInfoPtr pVbe, VbeInfoBlock *vbe,
- int modeTypes)
-{
- DisplayModePtr pMode, p = NULL, modePool = NULL;
- int i = 0;
-
- if (modeTypes & V_MODETYPE_VBE) {
- while (vbe->VideoModePtr[i] != 0xffff) {
- int id = vbe->VideoModePtr[i++];
-
- if ((pMode = CheckMode(pScrn, pVbe, vbe, id, modeTypes)) != NULL) {
- if (p == NULL) {
- modePool = pMode;
- } else {
- p->next = pMode;
- }
- pMode->prev = NULL;
- p = pMode;
- }
- }
- }
- if (modeTypes & V_MODETYPE_VGA) {
- for (i = 0; i < 0x7F; i++) {
- if ((pMode = CheckMode(pScrn, pVbe, vbe, i, modeTypes)) != NULL) {
- if (p == NULL) {
- modePool = pMode;
- } else {
- p->next = pMode;
- }
- pMode->prev = NULL;
- p = pMode;
- }
- }
- }
- return modePool;
-}
-
-void
-VBESetModeNames(DisplayModePtr pMode)
-{
- if (!pMode)
- return;
-
- do {
- if (!pMode->name) {
- /* Catch "bad" modes. */
- if (pMode->HDisplay > 10000 || pMode->HDisplay < 0 ||
- pMode->VDisplay > 10000 || pMode->VDisplay < 0) {
- pMode->name = strdup("BADMODE");
- } else {
- pMode->name = xnfalloc(4 + 1 + 4 + 1);
- sprintf(pMode->name, "%dx%d", pMode->HDisplay, pMode->VDisplay);
- }
- }
- pMode = pMode->next;
- } while (pMode);
-}
-
-/*
- * Go through the monitor modes and selecting the best set of
- * parameters for each BIOS mode. Note: This is only supported in
- * VBE version 3.0 or later.
- */
-void
-VBESetModeParameters(ScrnInfoPtr pScrn, vbeInfoPtr pVbe)
-{
- DisplayModePtr pMode;
- VbeModeInfoData *data;
-
- pMode = pScrn->modes;
- do {
- DisplayModePtr p, best = NULL;
- ModeStatus status;
-
- for (p = pScrn->monitor->Modes; p != NULL; p = p->next) {
- if ((p->HDisplay != pMode->HDisplay) ||
- (p->VDisplay != pMode->VDisplay) ||
- (p->Flags & (V_INTERLACE | V_DBLSCAN | V_CLKDIV2)))
- continue;
- /* XXX could support the various V_ flags */
- status = xf86CheckModeForMonitor(p, pScrn->monitor);
- if (status != MODE_OK)
- continue;
- if (!best || (p->Clock > best->Clock))
- best = p;
- }
-
- if (best) {
- int clock;
-
- data = (VbeModeInfoData*)pMode->Private;
- pMode->HSync = (float)best->Clock * 1000.0 / best->HTotal + 0.5;
- pMode->VRefresh = pMode->HSync / best->VTotal + 0.5;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Attempting to use %dHz refresh for mode \"%s\" (%x)\n",
- (int)pMode->VRefresh, pMode->name, data->mode);
- data->block = xcalloc(sizeof(VbeCRTCInfoBlock), 1);
- data->block->HorizontalTotal = best->HTotal;
- data->block->HorizontalSyncStart = best->HSyncStart;
- data->block->HorizontalSyncEnd = best->HSyncEnd;
- data->block->VerticalTotal = best->VTotal;
- data->block->VerticalSyncStart = best->VSyncStart;
- data->block->VerticalSyncEnd = best->VSyncEnd;
- data->block->Flags = ((best->Flags & V_NHSYNC) ? CRTC_NHSYNC : 0) |
- ((best->Flags & V_NVSYNC) ? CRTC_NVSYNC : 0);
- data->block->PixelClock = best->Clock * 1000;
- /* XXX May not have this. */
- clock = VBEGetPixelClock(pVbe, data->mode, data->block->PixelClock);
-#ifdef DEBUG
- ErrorF("Setting clock %.2fMHz, closest is %.2fMHz\n",
- (double)data->block->PixelClock / 1000000.0,
- (double)clock / 1000000.0);
-#endif
- if (clock)
- data->block->PixelClock = clock;
- data->mode |= (1 << 11);
- data->block->RefreshRate = ((double)(data->block->PixelClock) /
- (double)(best->HTotal * best->VTotal)) * 100;
- }
- pMode = pMode->next;
- } while (pMode != pScrn->modes);
-}
-
-/*
- * These wrappers are to allow (temporary) funtionality divergences.
- */
-int
-VBEValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
- char **modeNames, ClockRangePtr clockRanges,
- int *linePitches, int minPitch, int maxPitch, int pitchInc,
- int minHeight, int maxHeight, int virtualX, int virtualY,
- int apertureSize, LookupModeFlags strategy)
-{
- return xf86ValidateModes(scrp, availModes, modeNames, clockRanges,
- linePitches, minPitch, maxPitch, pitchInc,
- minHeight, maxHeight, virtualX, virtualY,
- apertureSize, strategy);
-}
-
-void
-VBEPrintModes(ScrnInfoPtr scrp)
-{
- xf86PrintModes(scrp);
-}
-
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.h b/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.h
deleted file mode 100644
index c37cbd8bf..000000000
--- a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright © 2002 David Dawes
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of the author(s) shall
- * not be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from
- * the author(s).
- *
- * Authors: David Dawes <dawes@xfree86.org>
- *
- * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.h,v 1.1 2002/08/06 13:46:28 dawes Exp $
- */
-
-#ifndef _VBE_MODES_H
-
-/*
- * This is intended to be stored in the DisplayModeRec's private area.
- * It includes all the information necessary to VBE information.
- */
-typedef struct _VbeModeInfoData {
- int mode;
- VbeModeInfoBlock *data;
- VbeCRTCInfoBlock *block;
-} VbeModeInfoData;
-
-#define V_DEPTH_1 0x001
-#define V_DEPTH_4 0x002
-#define V_DEPTH_8 0x004
-#define V_DEPTH_15 0x008
-#define V_DEPTH_16 0x010
-#define V_DEPTH_24_24 0x020
-#define V_DEPTH_24_32 0x040
-#define V_DEPTH_24 (V_DEPTH_24_24 | V_DEPTH_24_32)
-#define V_DEPTH_30 0x080
-#define V_DEPTH_32 0x100
-
-#define VBE_MODE_SUPPORTED(m) (((m)->ModeAttributes & 0x01) != 0)
-#define VBE_MODE_COLOR(m) (((m)->ModeAttributes & 0x08) != 0)
-#define VBE_MODE_GRAPHICS(m) (((m)->ModeAttributes & 0x10) != 0)
-#define VBE_MODE_VGA(m) (((m)->ModeAttributes & 0x40) == 0)
-#define VBE_MODE_LINEAR(m) (((m)->ModeAttributes & 0x80) != 0 && \
- ((m)->PhysBasePtr != 0))
-
-#define VBE_MODE_USABLE(m, f) (VBE_MODE_SUPPORTED(m) || \
- (f & V_MODETYPE_BAD)) && \
- VBE_MODE_GRAPHICS(m) && \
- (VBE_MODE_VGA(m) || VBE_MODE_LINEAR(m))
-
-#define V_MODETYPE_VBE 0x01
-#define V_MODETYPE_VGA 0x02
-#define V_MODETYPE_BAD 0x04
-
-extern int VBEFindSupportedDepths(vbeInfoPtr pVbe, VbeInfoBlock *vbe,
- int *flags24, int modeTypes);
-extern DisplayModePtr VBEGetModePool(ScrnInfoPtr pScrn, vbeInfoPtr pVbe,
- VbeInfoBlock *vbe, int modeTypes);
-extern void VBESetModeNames(DisplayModePtr pMode);
-extern void VBESetModeParameters(ScrnInfoPtr pScrn, vbeInfoPtr pVbe);
-
-
-/*
- * Note: These are alternatives to the standard helpers. They should
- * usually just wrap the standard helpers.
- */
-extern int VBEValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
- char **modeNames, ClockRangePtr clockRanges,
- int *linePitches, int minPitch, int maxPitch,
- int pitchInc, int minHeight, int maxHeight,
- int virtualX, int virtualY, int apertureSize,
- LookupModeFlags strategy);
-extern void VBEPrintModes(ScrnInfoPtr scrp);
-
-#endif /* VBE_MODES_H */
diff --git a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe_module.c b/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe_module.c
deleted file mode 100644
index 0347f7fb7..000000000
--- a/xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe_module.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbe_module.c,v 1.4 2002/09/16 18:06:15 eich Exp $ */
-
-#include "xf86.h"
-#include "xf86str.h"
-#include "vbe.h"
-
-extern const char *vbe_ddcSymbols[];
-
-#ifdef XFree86LOADER
-
-static MODULESETUPPROTO(vbeSetup);
-
-static XF86ModuleVersionInfo vbeVersRec =
-{
- "vbe",
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XF86_VERSION_CURRENT,
- 1, 1, 0,
- ABI_CLASS_VIDEODRV, /* needs the video driver ABI */
- ABI_VIDEODRV_VERSION,
- MOD_CLASS_NONE,
- {0,0,0,0}
-};
-
-XF86ModuleData vbeModuleData = { &vbeVersRec, vbeSetup, NULL };
-
-static pointer
-vbeSetup(pointer module, pointer opts, int *errmaj, int *errmin)
-{
- static Bool setupDone = FALSE;
-
- if (!setupDone) {
- setupDone = TRUE;
- LoaderRefSymLists(vbe_ddcSymbols,NULL);
- /*
- * Tell the loader about symbols from other modules that this module
- * might refer to.
- */
- }
- /*
- * The return value must be non-NULL on success even though there
- * is no TearDownProc.
- */
- return (pointer)1;
-}
-
-#endif
-