home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / video / pm3fb.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  54.0 KB  |  1,236 lines

  1. /*
  2.  *  linux/drivers/video/pm3fb.h -- 3DLabs Permedia3 frame buffer device
  3.  *  
  4.  *  Copyright (C) 2001 Romain Dolbeau <dolbeau@irisa.fr>
  5.  *  Copyright (C) 2001 Sven Luther, <luther@dpt-info.u-strasbg.fr>
  6.  *
  7.  *  This file is subject to the terms and conditions of the GNU General Public
  8.  *  License. See the file COPYING in the main directory of this archive for
  9.  *  more details.
  10.  *
  11.  *  $Header: /cvsroot/linux/drivers/video/pm3fb.h,v 1.1 2002/02/25 19:11:06 marcelo Exp $
  12.  *
  13.  */
  14.  
  15. #ifndef PM3FB_H
  16. #define PM3FB_H
  17.  
  18. /**********************************************
  19. *  GLINT Permedia3 Control Status registers   *
  20. ***********************************************/
  21. /* Control Status Registers */
  22. #define PM3ResetStatus                        0x0000
  23. #define PM3IntEnable                        0x0008
  24. #define PM3IntFlags                        0x0010
  25. #define PM3InFIFOSpace                        0x0018
  26. #define PM3OutFIFOWords                        0x0020
  27. #define PM3DMAAddress                        0x0028
  28. #define PM3DMACount                        0x0030
  29. #define PM3ErrorFlags                        0x0038
  30. #define PM3VClkCtl                        0x0040
  31. #define PM3TestRegister                        0x0048
  32. #define PM3Aperture0                        0x0050
  33. #define PM3Aperture1                        0x0058
  34. #define PM3DMAControl                        0x0060
  35. #define PM3FIFODis                        0x0068
  36. #define PM3ChipConfig                        0x0070
  37. #define PM3AGPControl                        0x0078
  38.  
  39. #define PM3GPOutDMAAddress                    0x0080
  40. #define PM3PCIFeedbackCount                    0x0088
  41. #define PM3PCIAbortStatus                    0x0090
  42. #define PM3PCIAbortAddress                    0x0098
  43.  
  44. #define PM3PCIPLLStatus                        0x00f0
  45.  
  46. #define PM3HostTextureAddress                    0x0100
  47. #define PM3TextureDownloadControl                0x0108
  48. #define PM3TextureOperation                    0x0110
  49. #define PM3LogicalTexturePage                    0x0118
  50. #define PM3TexDMAAddress                    0x0120
  51. #define PM3TexFIFOSpace                        0x0128
  52.  
  53. /**********************************************
  54. *  GLINT Permedia3 Region 0 Bypass Controls   *
  55. ***********************************************/
  56. #define PM3ByAperture1Mode                    0x0300
  57.     #define PM3ByApertureMode_BYTESWAP_ABCD            (0<<0)
  58.     #define PM3ByApertureMode_BYTESWAP_BADC            (1<<0)
  59.     #define PM3ByApertureMode_BYTESWAP_CDAB            (2<<0)
  60.     #define PM3ByApertureMode_BYTESWAP_DCBA            (3<<0)
  61.     #define PM3ByApertureMode_PATCH_DISABLE            (0<<2)
  62.     #define PM3ByApertureMode_PATCH_ENABLE            (1<<2)
  63.     #define PM3ByApertureMode_FORMAT_RAW            (0<<3)
  64.     #define PM3ByApertureMode_FORMAT_YUYV            (1<<3)
  65.     #define PM3ByApertureMode_FORMAT_UYVY            (2<<3)
  66.     #define PM3ByApertureMode_PIXELSIZE_8BIT        (0<<5)
  67.     #define PM3ByApertureMode_PIXELSIZE_16BIT        (1<<5)
  68.     #define PM3ByApertureMode_PIXELSIZE_32BIT        (2<<5)
  69.                 #define PM3ByApertureMode_PIXELSIZE_MASK        (3<<5)
  70.     #define PM3ByApertureMode_EFFECTIVE_STRIDE_1024        (0<<7)
  71.     #define PM3ByApertureMode_EFFECTIVE_STRIDE_2048        (1<<7)
  72.     #define PM3ByApertureMode_EFFECTIVE_STRIDE_4096        (2<<7)
  73.     #define PM3ByApertureMode_EFFECTIVE_STRIDE_8192        (3<<7)
  74.     #define PM3ByApertureMode_PATCH_OFFSET_X(off)    (((off)&7f)<<9)
  75.     #define PM3ByApertureMode_PATCH_OFFSET_Y(off)    (((off)&7f)<<16)
  76.     #define PM3ByApertureMode_FRAMEBUFFER            (0<<21)
  77.     #define PM3ByApertureMode_LOCALBUFFER            (1<<21)
  78.     #define PM3ByApertureMode_DOUBLE_WRITE_OFF        (0<<22)
  79.     #define PM3ByApertureMode_DOUBLE_WRITE_1MB        (1<<22)
  80.     #define PM3ByApertureMode_DOUBLE_WRITE_2MB        (2<<22)
  81.     #define PM3ByApertureMode_DOUBLE_WRITE_4MB        (3<<22)
  82.     #define PM3ByApertureMode_DOUBLE_WRITE_8MB        (4<<22)
  83.     #define PM3ByApertureMode_DOUBLE_WRITE_16MB        (5<<22)
  84.     #define PM3ByApertureMode_DOUBLE_WRITE_32MB        (6<<22)
  85.  
  86. #define PM3ByAperture2Mode                    0x0328
  87.     
  88. /**********************************************
  89. *  GLINT Permedia3 Memory Control (0x1000)    *
  90. ***********************************************/
  91. #define PM3MemCounter                        0x1000
  92. #define PM3MemBypassWriteMask                    0x1008
  93. #define PM3MemScratch                        0x1010
  94. #define PM3LocalMemCaps                        0x1018
  95.         #define PM3LocalMemCaps_NoWriteMask                     (1 << 28)
  96. #define PM3LocalMemTimings                    0x1020
  97. #define PM3LocalMemControl                    0x1028
  98. #define PM3LocalMemRefresh                    0x1030
  99. #define PM3LocalMemPowerDown                    0x1038
  100. #define PM3RemoteMemControl                    0x1100
  101.  
  102. /**********************************************
  103. *  GLINT Permedia3 Video Control (0x3000)     *
  104. ***********************************************/
  105.  
  106. #define PM3ScreenBase                        0x3000
  107. #define PM3ScreenStride                        0x3008
  108. #define PM3HTotal                        0x3010
  109. #define PM3HgEnd                        0x3018
  110. #define PM3HbEnd                        0x3020
  111. #define PM3HsStart                        0x3028
  112. #define PM3HsEnd                        0x3030
  113. #define PM3VTotal                        0x3038
  114. #define PM3VbEnd                        0x3040
  115. #define PM3VsStart                        0x3048
  116. #define PM3VsEnd                        0x3050
  117. #define PM3VideoControl                        0x3058
  118.     #define PM3VideoControl_DISABLE                (0<<0)
  119.     #define PM3VideoControl_ENABLE                (1<<0)
  120.     #define PM3VideoControl_BLANK_ACTIVE_HIGH        (0<<1)
  121.     #define PM3VideoControl_BLANK_ACTIVE_LOW        (1<<1)
  122.     #define PM3VideoControl_LINE_DOUBLE_OFF            (0<<2)
  123.     #define PM3VideoControl_LINE_DOUBLE_ON            (1<<2)
  124.     #define PM3VideoControl_HSYNC_FORCE_HIGH        (0<<3)
  125.     #define PM3VideoControl_HSYNC_ACTIVE_HIGH        (1<<3)
  126.     #define PM3VideoControl_HSYNC_FORCE_LOW            (2<<3)
  127.     #define PM3VideoControl_HSYNC_ACTIVE_LOW        (3<<3)
  128.         #define PM3VideoControl_HSYNC_MASK          (3<<3)
  129.     #define PM3VideoControl_VSYNC_FORCE_HIGH        (0<<5)
  130.     #define PM3VideoControl_VSYNC_ACTIVE_HIGH        (1<<5)
  131.     #define PM3VideoControl_VSYNC_FORCE_LOW            (2<<5)
  132.     #define PM3VideoControl_VSYNC_ACTIVE_LOW        (3<<5)
  133.         #define PM3VideoControl_VSYNC_MASK          (3<<5)
  134.     #define PM3VideoControl_BYTE_DOUBLE_OFF            (0<<7)
  135.     #define PM3VideoControl_BYTE_DOUBLE_ON            (1<<7)
  136.     #define PM3VideoControl_BUFFER_SWAP_SYNCON_FRAMEBLANK    (0<<9)
  137.     #define PM3VideoControl_BUFFER_SWAP_FREE_RUNNING    (1<<9)
  138.     #define PM3VideoControl_BUFFER_SWAP_LIMITETO_FRAMERATE    (2<<9)
  139.     #define PM3VideoControl_STEREO_DISABLE            (0<<11)
  140.     #define PM3VideoControl_STEREO_ENABLE            (1<<11)
  141.     #define PM3VideoControl_RIGHT_EYE_ACTIVE_HIGH        (0<<12)
  142.     #define PM3VideoControl_RIGHT_EYE_ACTIVE_LOW        (1<<12)
  143.     #define PM3VideoControl_VIDEO_EXT_LOW            (0<<14)
  144.     #define PM3VideoControl_VIDEO_EXT_HIGH            (1<<14)
  145.     #define PM3VideoControl_SYNC_MODE_INDEPENDENT        (0<<16)
  146.     #define PM3VideoControl_SYNC_MODE_SYNCTO_VSA        (1<<16)
  147.     #define PM3VideoControl_SYNC_MODE_SYNCTO_VSB        (2<<16)
  148.     #define PM3VideoControl_PATCH_DISABLE            (0<<18)
  149.     #define PM3VideoControl_PATCH_ENABLE            (1<<18)
  150.     #define PM3VideoControl_PIXELSIZE_8BIT            (0<<19)
  151.     #define PM3VideoControl_PIXELSIZE_16BIT            (1<<19)
  152.     #define PM3VideoControl_PIXELSIZE_32BIT            (2<<19)
  153.     #define PM3VideoControl_DISPLAY_DISABLE            (0<<21)
  154.     #define PM3VideoControl_DISPLAY_ENABLE            (1<<21)
  155.     #define PM3VideoControl_PATCH_OFFSET_X(off)    (((off)&0x3f)<<22)
  156.     #define PM3VideoControl_PATCH_OFFSET_Y(off)    (((off)&0x3f)<<28)
  157. #define PM3InterruptLine                    0x3060
  158. #define PM3DisplayData                        0x3068
  159. #define PM3VerticalLineCount                    0x3070
  160. #define PM3FifoControl                        0x3078
  161. #define PM3ScreenBaseRight                    0x3080
  162. #define PM3MiscControl                        0x3088
  163.  
  164. #define PM3VideoOverlayUpdate                    0x3100
  165.         #define PM3VideoOverlayUpdate_DISABLE                   (0<<0)
  166.         #define PM3VideoOverlayUpdate_ENABLE                    (1<<0)
  167. #define PM3VideoOverlayMode                    0x3108
  168.     #define PM3VideoOverlayMode_DISABLE            (0<<0)
  169.     #define PM3VideoOverlayMode_ENABLE            (1<<0)
  170.         #define PM3VideoOverlayMode_BUFFERSYNC_MANUAL           (0<<1)
  171.         #define PM3VideoOverlayMode_BUFFERSYNC_VIDEOSTREAMA     (1<<1)
  172.         #define PM3VideoOverlayMode_BUFFERSYNC_VIDEOSTREAMB     (2<<1)
  173.         #define PM3VideoOverlayMode_FIELDPOLARITY_NORMAL        (0<<4)
  174.         #define PM3VideoOverlayMode_FIELDPOLARITY_INVERT        (1<<4)
  175.         #define PM3VideoOverlayMode_PIXELSIZE_8BIT              (0<<5)
  176.         #define PM3VideoOverlayMode_PIXELSIZE_16BIT             (1<<5)
  177.         #define PM3VideoOverlayMode_PIXELSIZE_32BIT             (2<<5)
  178.         #define PM3VideoOverlayMode_COLORFORMAT_RGB8888 ((0<<7)|(1<<12)|(2<<5))
  179.         #define PM3VideoOverlayMode_COLORFORMAT_RGB4444 ((1<<7)|(1<<12)|(1<<5))
  180.         #define PM3VideoOverlayMode_COLORFORMAT_RGB5551 ((2<<7)|(1<<12)|(1<<5))
  181.         #define PM3VideoOverlayMode_COLORFORMAT_RGB565  ((3<<7)|(1<<12)|(1<<5))
  182.         #define PM3VideoOverlayMode_COLORFORMAT_RGB332  ((4<<7)|(1<<12)|(0<<5))
  183.         #define PM3VideoOverlayMode_COLORFORMAT_BGR8888 ((0<<7)|(2<<5))
  184.         #define PM3VideoOverlayMode_COLORFORMAT_BGR4444 ((1<<7)|(1<<5))
  185.         #define PM3VideoOverlayMode_COLORFORMAT_BGR5551 ((2<<7)|(1<<5))
  186.         #define PM3VideoOverlayMode_COLORFORMAT_BGR565  ((3<<7)|(1<<5))
  187.         #define PM3VideoOverlayMode_COLORFORMAT_BGR332  ((4<<7)|(0<<5))
  188.         #define PM3VideoOverlayMode_COLORFORMAT_CI8     ((5<<7)|(1<<12)|(0<<5))
  189.         #define PM3VideoOverlayMode_COLORFORMAT_VUY444  ((2<<10)|(1<<12)|(2<<5))
  190.         #define PM3VideoOverlayMode_COLORFORMAT_YUV444  ((2<<10)|(2<<5))
  191.         #define PM3VideoOverlayMode_COLORFORMAT_VUY422  ((1<<10)|(1<<12)|(1<<5))
  192.         #define PM3VideoOverlayMode_COLORFORMAT_YUV422  ((1<<10)|(1<<5))
  193.         #define PM3VideoOverlayMode_COLORORDER_BGR              (0<<12)
  194.         #define PM3VideoOverlayMode_COLORORDER_RGB              (1<<12)
  195.         #define PM3VideoOverlayMode_LINEARCOLOREXT_OFF          (0<<13)
  196.         #define PM3VideoOverlayMode_LINEARCOLOREXT_ON           (1<<13)
  197.         #define PM3VideoOverlayMode_FILTER_MASK                 (3<<14)
  198.         #define PM3VideoOverlayMode_FILTER_OFF                  (0<<14)
  199.         #define PM3VideoOverlayMode_FILTER_FULL                 (1<<14)
  200.         #define PM3VideoOverlayMode_FILTER_PARTIAL              (2<<14)
  201.         #define PM3VideoOverlayMode_DEINTERLACE_OFF             (0<<16)
  202.         #define PM3VideoOverlayMode_DEINTERLACE_BOB             (1<<16)
  203.         #define PM3VideoOverlayMode_PATCHMODE_OFF               (0<<18)
  204.         #define PM3VideoOverlayMode_PATCHMODE_ON                (1<<18)
  205.         #define PM3VideoOverlayMode_FLIP_VIDEO                  (0<<20)
  206.         #define PM3VideoOverlayMode_FLIP_VIDEOSTREAMA           (1<<20)
  207.         #define PM3VideoOverlayMode_FLIP_VIDEOSTREAMB           (2<<20)
  208.         #define PM3VideoOverlayMode_MIRROR_MASK                 (3<<23)
  209.         #define PM3VideoOverlayMode_MIRRORX_OFF                 (0<<23)
  210.         #define PM3VideoOverlayMode_MIRRORX_ON                  (1<<23)
  211.         #define PM3VideoOverlayMode_MIRRORY_OFF                 (0<<24)
  212.         #define PM3VideoOverlayMode_MIRRORY_ON                  (1<<24)
  213. #define PM3VideoOverlayFifoControl                0x3110
  214. #define PM3VideoOverlayIndex                    0x3118
  215. #define PM3VideoOverlayBase0                    0x3120
  216. #define PM3VideoOverlayBase1                    0x3128
  217. #define PM3VideoOverlayBase2                    0x3130
  218. #define PM3VideoOverlayStride                    0x3138
  219.         #define PM3VideoOverlayStride_STRIDE(s)         (((s)&0xfff)<<0)
  220. #define PM3VideoOverlayWidth                                    0x3140
  221.         #define PM3VideoOverlayWidth_WIDTH(w)           (((w)&0xfff)<<0)
  222. #define PM3VideoOverlayHeight                                   0x3148
  223.         #define PM3VideoOverlayHeight_HEIGHT(h)         (((h)&0xfff)<<0)
  224. #define PM3VideoOverlayOrigin                                   0x3150
  225.         #define PM3VideoOverlayOrigin_XORIGIN(x)        (((x)&0xfff)<<0)
  226.         #define PM3VideoOverlayOrigin_YORIGIN(y)        (((y)&0xfff)<<16)
  227. #define PM3VideoOverlayShrinkXDelta                             0x3158
  228.         #define PM3VideoOverlayShrinkXDelta_NONE                (1<<16)
  229.         #define PM3VideoOverlayShrinkXDelta_DELTA(s,d)          \
  230.                 ((((s)<<16)/(d))&0x0ffffff0)
  231. #define PM3VideoOverlayZoomXDelta                               0x3160
  232.         #define PM3VideoOverlayZoomXDelta_NONE                  (1<<16)
  233.         #define PM3VideoOverlayZoomXDelta_DELTA(s,d)            \
  234.                 ((((s)<<16)/(d))&0x0001fff0)
  235. #define PM3VideoOverlayYDelta                                   0x3168
  236.         #define PM3VideoOverlayYDelta_NONE                      (1<<16)
  237.         #define PM3VideoOverlayYDelta_DELTA(s,d)                        \
  238.                 ((((s)<<16)/(d))&0x0ffffff0)
  239. #define PM3VideoOverlayFieldOffset                0x3170
  240. #define PM3VideoOverlayStatus                    0x3178
  241.  
  242. /**********************************************
  243. *  GLINT Permedia3 RAMDAC Registers (0x4000)  *
  244. ***********************************************/
  245. /* Direct Registers */
  246. #define PM3RD_PaletteWriteAddress                0x4000
  247. #define PM3RD_PaletteData                    0x4008
  248. #define PM3RD_PixelMask                        0x4010
  249. #define PM3RD_PaletteReadAddress                0x4018
  250.  
  251. #define PM3RD_IndexLow                        0x4020
  252. #define PM3RD_IndexHigh                        0x4028
  253. #define PM3RD_IndexedData                    0x4030
  254. #define PM3RD_IndexControl                    0x4038
  255.     #define PM3RD_IndexControl_AUTOINCREMENT_ENABLE        (1<<0)
  256.     #define PM3RD_IndexControl_AUTOINCREMENT_DISABLE    (0<<0)
  257.  
  258. /* Indirect Registers */
  259. #define PM3RD_MiscControl                    0x000
  260.     #define PM3RD_MiscControl_HIGHCOLOR_RES_DISABLE        (0<<0)
  261.     #define PM3RD_MiscControl_HIGHCOLOR_RES_ENABLE        (1<<0)
  262.     #define PM3RD_MiscControl_PIXELDOUBLE_DISABLE        (0<<1)
  263.     #define PM3RD_MiscControl_PIXELDOUBLE_ENABLE        (1<<1)
  264.     #define PM3RD_MiscControl_LASTREAD_ADDR_DISABLE        (0<<2)
  265.     #define PM3RD_MiscControl_LASTREAD_ADDR_ENABLE        (1<<2)
  266.     #define PM3RD_MiscControl_DIRECTCOLOR_DISABLE        (0<<3)
  267.     #define PM3RD_MiscControl_DIRECTCOLOR_ENABLE        (1<<3)
  268.     #define PM3RD_MiscControl_OVERLAY_DISABLE        (0<<4)
  269.     #define PM3RD_MiscControl_OVERLAY_ENABLE        (1<<4)
  270.     #define PM3RD_MiscControl_PIXELDOUBLE_BUFFER_DISABLE    (0<<5)
  271.     #define PM3RD_MiscControl_PIXELDOUBLE_BUFFER_ENABLE    (1<<5)
  272.     #define PM3RD_MiscControl_VSB_OUTPUT_DISABLE        (0<<6)
  273.     #define PM3RD_MiscControl_VSB_OUTPUT_ENABLE        (1<<6)
  274.     #define PM3RD_MiscControl_STEREODOUBLE_BUFFER_DISABLE    (0<<7)
  275.     #define PM3RD_MiscControl_STEREODOUBLE_BUFFER_ENABLE    (1<<7)
  276. #define PM3RD_SyncControl                    0x001
  277.     #define PM3RD_SyncControl_HSYNC_ACTIVE_LOW        (0<<0)
  278.     #define PM3RD_SyncControl_HSYNC_ACTIVE_HIGH        (1<<0)
  279.     #define PM3RD_SyncControl_HSYNC_FORCE_ACTIVE        (3<<0)
  280.     #define PM3RD_SyncControl_HSYNC_FORCE_INACTIVE        (4<<0)
  281.     #define PM3RD_SyncControl_HSYNC_TRI_STATE        (2<<0)
  282.     #define PM3RD_SyncControl_VSYNC_ACTIVE_LOW        (0<<3)
  283.     #define PM3RD_SyncControl_VSYNC_ACTIVE_HIGH        (1<<3)
  284.     #define PM3RD_SyncControl_VSYNC_TRI_STATE        (2<<3)
  285.     #define PM3RD_SyncControl_VSYNC_FORCE_ACTIVE        (3<<3)
  286.     #define PM3RD_SyncControl_VSYNC_FORCE_INACTIVE        (4<<3)
  287.     #define PM3RD_SyncControl_HSYNC_OVERRIDE_SETBY_HSYNC    (0<<6)
  288.     #define PM3RD_SyncControl_HSYNC_OVERRIDE_FORCE_HIGH    (1<<6)
  289.     #define PM3RD_SyncControl_VSYNC_OVERRIDE_SETBY_VSYNC    (0<<7)
  290.     #define PM3RD_SyncControl_VSYNC_OVERRIDE_FORCE_HIGH    (1<<7)
  291. #define PM3RD_DACControl                    0x002
  292.     #define PM3RD_DACControl_DAC_POWER_ON            (0<<0)
  293.     #define PM3RD_DACControl_DAC_POWER_OFF            (1<<0)
  294.     #define PM3RD_DACControl_SYNC_ON_GREEN_DISABLE        (0<<3)
  295.     #define PM3RD_DACControl_SYNC_ON_GREEN_ENABLE        (1<<3)
  296.     #define PM3RD_DACControl_BLANK_RED_DAC_DISABLE        (0<<4)
  297.     #define PM3RD_DACControl_BLANK_RED_DAC_ENABLE        (1<<4)
  298.     #define PM3RD_DACControl_BLANK_GREEN_DAC_DISABLE    (0<<5)
  299.     #define PM3RD_DACControl_BLANK_GREEN_DAC_ENABLE        (1<<5)
  300.     #define PM3RD_DACControl_BLANK_BLUE_DAC_DISABLE        (0<<6)
  301.     #define PM3RD_DACControl_BLANK_BLUE_DAC_ENABLE        (1<<6)
  302.     #define PM3RD_DACControl_BLANK_PEDESTAL_DISABLE        (0<<7)
  303.     #define PM3RD_DACControl_BLANK_PEDESTAL_ENABLE        (1<<7)
  304. #define PM3RD_PixelSize                        0x003
  305.     #define PM3RD_PixelSize_24_BIT_PIXELS            (4<<0)
  306.     #define PM3RD_PixelSize_32_BIT_PIXELS            (2<<0)
  307.     #define PM3RD_PixelSize_16_BIT_PIXELS            (1<<0)
  308.     #define PM3RD_PixelSize_8_BIT_PIXELS            (0<<0)
  309. #define PM3RD_ColorFormat                    0x004
  310.     #define PM3RD_ColorFormat_LINEAR_COLOR_EXT_ENABLE    (1<<6)
  311.     #define PM3RD_ColorFormat_LINEAR_COLOR_EXT_DISABLE    (0<<6)
  312.     #define PM3RD_ColorFormat_COLOR_ORDER_BLUE_LOW        (1<<5)
  313.     #define PM3RD_ColorFormat_COLOR_ORDER_RED_LOW        (0<<5)
  314.     #define PM3RD_ColorFormat_COLOR_FORMAT_MASK        (0x1f<<0)
  315.     #define PM3RD_ColorFormat_8888_COLOR            (0<<0)
  316.     #define PM3RD_ColorFormat_5551_FRONT_COLOR        (1<<0)
  317.     #define PM3RD_ColorFormat_4444_COLOR            (2<<0)
  318.     #define PM3RD_ColorFormat_332_FRONT_COLOR        (5<<0)
  319.     #define PM3RD_ColorFormat_332_BACK_COLOR        (6<<0)
  320.     #define PM3RD_ColorFormat_2321_FRONT_COLOR        (9<<0)
  321.     #define PM3RD_ColorFormat_2321_BACK_COLOR        (10<<0)
  322.     #define PM3RD_ColorFormat_232_FRONTOFF_COLOR        (11<<0)
  323.     #define PM3RD_ColorFormat_232_BACKOFF_COLOR        (12<<0)
  324.     #define PM3RD_ColorFormat_5551_BACK_COLOR        (13<<0)
  325.     #define PM3RD_ColorFormat_CI8_COLOR            (14<<0)
  326.     #define PM3RD_ColorFormat_565_FRONT_COLOR        (16<<0)
  327.     #define PM3RD_ColorFormat_565_BACK_COLOR        (17<<0)
  328. #define PM3RD_CursorMode                    0x005
  329.     #define PM3RD_CursorMode_CURSOR_DISABLE            (0<<0)
  330.     #define PM3RD_CursorMode_CURSOR_ENABLE            (1<<0)
  331.     #define PM3RD_CursorMode_FORMAT_64x64_2BPE_P0123    (0<<2)
  332.     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P0        (1<<2)
  333.     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P1        (2<<2)
  334.     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P2        (3<<2)
  335.     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P3        (4<<2)
  336.     #define PM3RD_CursorMode_FORMAT_32x32_4BPE_P01        (5<<2)
  337.     #define PM3RD_CursorMode_FORMAT_32x32_4BPE_P23        (6<<2)
  338.     #define PM3RD_CursorMode_TYPE_MS            (0<<4)
  339.     #define PM3RD_CursorMode_TYPE_X                (1<<4)
  340.     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_DISABLE    (0<<6)
  341.     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_ENABLE    (1<<6)
  342.     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_3_COLOR    (2<<6)
  343.     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_15_COLOR    (3<<6)
  344. #define PM3RD_CursorControl                    0x006
  345.     #define PM3RD_CursorControl_DOUBLE_X_DISABLED        (0<<0)
  346.     #define PM3RD_CursorControl_DOUBLE_X_ENABLED        (1<<0)
  347.     #define PM3RD_CursorControl_DOUBLE_Y_DISABLED        (0<<1)
  348.     #define PM3RD_CursorControl_DOUBLE_Y_ENABLED        (1<<1)
  349.     #define PM3RD_CursorControl_READBACK_POS_DISABLED    (0<<2)
  350.     #define PM3RD_CursorControl_READBACK_POS_ENABLED    (1<<2)
  351.  
  352. #define PM3RD_CursorXLow                    0x007
  353. #define PM3RD_CursorXHigh                    0x008
  354. #define PM3RD_CursorYLow                    0x009
  355. #define PM3RD_CursorYHigh                    0x00a
  356. #define PM3RD_CursorHotSpotX                    0x00b
  357. #define PM3RD_CursorHotSpotY                    0x00c
  358. #define PM3RD_OverlayKey                    0x00d
  359. #define PM3RD_Pan                        0x00e
  360.     #define PM3RD_Pan_DISABLE                (0<<0)
  361.     #define PM3RD_Pan_ENABLE                (1<<0)
  362.     #define PM3RD_Pan_GATE_DISABLE                (0<<1)
  363.     #define PM3RD_Pan_GATE_ENABLE                (1<<1)
  364. #define PM3RD_Sense                        0x00f
  365.  
  366. #define PM3RD_CheckControl                    0x018
  367.     #define PM3RD_CheckControl_PIXEL_DISABLED        (0<<0)
  368.     #define PM3RD_CheckControl_PIXEL_ENABLED        (1<<0)
  369.     #define PM3RD_CheckControl_LUT_DISABLED            (0<<1)
  370.     #define PM3RD_CheckControl_LUT_ENABLED            (1<<1)
  371. #define PM3RD_CheckPixelRed                    0x019
  372. #define PM3RD_CheckPixelGreen                    0x01a
  373. #define PM3RD_CheckPixelBlue                    0x01b
  374. #define PM3RD_CheckLUTRed                    0x01c
  375. #define PM3RD_CheckLUTGreen                    0x01d
  376. #define PM3RD_CheckLUTBlue                    0x01e
  377. #define PM3RD_Scratch                        0x01f
  378.  
  379. #define PM3RD_VideoOverlayControl                0x020
  380.         #define PM3RD_VideoOverlayControl_DISABLE               (0<<0)
  381.         #define PM3RD_VideoOverlayControl_ENABLE                (1<<0)
  382.         #define PM3RD_VideoOverlayControl_MODE_MASK             (3<<1)
  383.         #define PM3RD_VideoOverlayControl_MODE_MAINKEY          (0<<1)
  384.         #define PM3RD_VideoOverlayControl_MODE_OVERLAYKEY       (1<<1)
  385.         #define PM3RD_VideoOverlayControl_MODE_ALWAYS           (2<<1)
  386.         #define PM3RD_VideoOverlayControl_MODE_BLEND            (3<<1)
  387.         #define PM3RD_VideoOverlayControl_DIRECTCOLOR_DISABLED  (0<<3)
  388.         #define PM3RD_VideoOverlayControl_DIRECTCOLOR_ENABLED   (1<<3)
  389.         #define PM3RD_VideoOverlayControl_BLENDSRC_MAIN         (0<<4)
  390.         #define PM3RD_VideoOverlayControl_BLENDSRC_REGISTER     (1<<4)
  391.         #define PM3RD_VideoOverlayControl_KEY_COLOR             (0<<5)
  392.         #define PM3RD_VideoOverlayControl_KEY_ALPHA             (1<<5)
  393. #define PM3RD_VideoOverlayXStartLow                0x021
  394. #define PM3RD_VideoOverlayXStartHigh                0x022
  395. #define PM3RD_VideoOverlayYStartLow                0x023
  396. #define PM3RD_VideoOverlayYStartHigh                0x024
  397. #define PM3RD_VideoOverlayXEndLow                0x025
  398. #define PM3RD_VideoOverlayXEndHigh                0x026
  399. #define PM3RD_VideoOverlayYEndLow                0x027
  400. #define PM3RD_VideoOverlayYEndHigh                0x028
  401. #define PM3RD_VideoOverlayKeyR                    0x029
  402. #define PM3RD_VideoOverlayKeyG                    0x02a
  403. #define PM3RD_VideoOverlayKeyB                    0x02b
  404. #define PM3RD_VideoOverlayBlend                    0x02c
  405.         #define PM3RD_VideoOverlayBlend_FACTOR_0_PERCENT        (0<<6)
  406.         #define PM3RD_VideoOverlayBlend_FACTOR_25_PERCENT       (1<<6)
  407.         #define PM3RD_VideoOverlayBlend_FACTOR_75_PERCENT       (2<<6)
  408.         #define PM3RD_VideoOverlayBlend_FACTOR_100_PERCENT      (3<<6)
  409.  
  410. #define PM3RD_DClkSetup1                    0x1f0
  411. #define PM3RD_DClkSetup2                    0x1f1
  412. #define PM3RD_KClkSetup1                    0x1f2
  413. #define PM3RD_KClkSetup2                    0x1f3
  414.  
  415. #define PM3RD_DClkControl                    0x200
  416.     #define PM3RD_DClkControl_SOURCE_PLL            (0<<4)
  417.     #define PM3RD_DClkControl_SOURCE_VSA            (1<<4)
  418.     #define PM3RD_DClkControl_SOURCE_VSB            (2<<4)
  419.     #define PM3RD_DClkControl_SOURCE_EXT            (3<<4)
  420.     #define PM3RD_DClkControl_STATE_RUN            (2<<2)
  421.     #define PM3RD_DClkControl_STATE_HIGH            (1<<2)
  422.     #define PM3RD_DClkControl_STATE_LOW            (0<<2)
  423.     #define PM3RD_DClkControl_LOCKED            (1<<1)
  424.     #define PM3RD_DClkControl_NOT_LOCKED            (0<<1)
  425.     #define PM3RD_DClkControl_ENABLE            (1<<0)
  426.     #define PM3RD_DClkControl_DISABLE            (0<<0)
  427. #define PM3RD_DClk0PreScale                    0x201
  428. #define PM3RD_DClk0FeedbackScale                0x202
  429. #define PM3RD_DClk0PostScale                    0x203
  430.         #define PM3_REF_CLOCK                                   14318
  431. #define PM3RD_DClk1PreScale                    0x204
  432. #define PM3RD_DClk1FeedbackScale                0x205
  433. #define PM3RD_DClk1PostScale                    0x206
  434. #define PM3RD_DClk2PreScale                    0x207
  435. #define PM3RD_DClk2FeedbackScale                0x208
  436. #define PM3RD_DClk2PostScale                    0x209
  437. #define PM3RD_DClk3PreScale                    0x20a
  438. #define PM3RD_DClk3FeedbackScale                0x20b
  439. #define PM3RD_DClk3PostScale                    0x20c
  440. #define PM3RD_KClkControl                    0x20d
  441.     #define PM3RD_KClkControl_DISABLE            (0<<0)
  442.     #define PM3RD_KClkControl_ENABLE            (1<<0)
  443.     #define PM3RD_KClkControl_NOT_LOCKED            (0<<1)
  444.     #define PM3RD_KClkControl_LOCKED            (1<<1)
  445.     #define PM3RD_KClkControl_STATE_LOW            (0<<2)
  446.     #define PM3RD_KClkControl_STATE_HIGH            (1<<2)
  447.     #define PM3RD_KClkControl_STATE_RUN            (2<<2)
  448.     #define PM3RD_KClkControl_STATE_LOW_POWER        (3<<2)
  449.     #define PM3RD_KClkControl_SOURCE_PCLK            (0<<4)
  450.     #define PM3RD_KClkControl_SOURCE_HALF_PCLK        (1<<4)
  451.     #define PM3RD_KClkControl_SOURCE_PLL            (2<<4)
  452. #define PM3RD_KClkPreScale                    0x20e
  453. #define PM3RD_KClkFeedbackScale                    0x20f
  454. #define PM3RD_KClkPostScale                    0x210
  455. #define PM3RD_MClkControl                    0x211
  456.     #define PM3RD_MClkControl_DISABLE            (0<<0)
  457.     #define PM3RD_MClkControl_ENABLE            (1<<0)
  458.     #define PM3RD_MClkControl_NOT_LOCKED            (0<<1)
  459.     #define PM3RD_MClkControl_LOCKED            (1<<1)
  460.     #define PM3RD_MClkControl_STATE_LOW            (0<<2)
  461.     #define PM3RD_MClkControl_STATE_HIGH            (1<<2)
  462.     #define PM3RD_MClkControl_STATE_RUN            (2<<2)
  463.     #define PM3RD_MClkControl_STATE_LOW_POWER        (3<<2)
  464.     #define PM3RD_MClkControl_SOURCE_PCLK            (0<<4)
  465.     #define PM3RD_MClkControl_SOURCE_HALF_PCLK        (1<<4)
  466.     #define PM3RD_MClkControl_SOURCE_HALF_EXT        (3<<4)
  467.     #define PM3RD_MClkControl_SOURCE_EXT            (4<<4)
  468.     #define PM3RD_MClkControl_SOURCE_HALF_KCLK        (5<<4)
  469.     #define PM3RD_MClkControl_SOURCE_KCLK            (6<<4)
  470. #define PM3RD_MClkPreScale                    0x212
  471. #define PM3RD_MClkFeedbackScale                    0x213
  472. #define PM3RD_MClkPostScale                    0x214
  473. #define PM3RD_SClkControl                    0x215
  474.     #define PM3RD_SClkControl_DISABLE            (0<<0)
  475.     #define PM3RD_SClkControl_ENABLE            (1<<0)
  476.     #define PM3RD_SClkControl_NOT_LOCKED            (0<<1)
  477.     #define PM3RD_SClkControl_LOCKED            (1<<1)
  478.     #define PM3RD_SClkControl_STATE_LOW            (0<<2)
  479.     #define PM3RD_SClkControl_STATE_HIGH            (1<<2)
  480.     #define PM3RD_SClkControl_STATE_RUN            (2<<2)
  481.     #define PM3RD_SClkControl_STATE_LOW_POWER        (3<<2)
  482.     #define PM3RD_SClkControl_SOURCE_PCLK            (0<<4)
  483.     #define PM3RD_SClkControl_SOURCE_HALF_PCLK        (1<<4)
  484.     #define PM3RD_SClkControl_SOURCE_HALF_EXT        (3<<4)
  485.     #define PM3RD_SClkControl_SOURCE_EXT            (4<<4)
  486.     #define PM3RD_SClkControl_SOURCE_HALF_KCLK        (5<<4)
  487.     #define PM3RD_SClkControl_SOURCE_KCLK            (6<<4)
  488. #define PM3RD_SClkPreScale                    0x216
  489. #define PM3RD_SClkFeedbackScale                    0x217
  490. #define PM3RD_SClkPostScale                    0x218
  491.  
  492. #define PM3RD_CursorPalette(p)                    (0x303+(p))
  493. #define PM3RD_CursorPattern(p)                    (0x400+(p))
  494. /******************************************************
  495. *  GLINT Permedia3 Video Streaming Registers (0x5000) *
  496. *******************************************************/
  497.  
  498. #define PM3VSConfiguration                    0x5800
  499.  
  500. /**********************************************
  501. *  GLINT Permedia3 Core Registers (0x8000+)   *
  502. ***********************************************/
  503. #define PM3AALineWidth                        0x94c0
  504. #define PM3AAPointsize                        0x94a0
  505. #define PM3AlphaBlendAlphaMode                    0xafa8
  506. #define PM3AlphaBlendAlphaModeAnd                0xad30
  507. #define PM3AlphaBlendAlphaModeOr                0xad38
  508. #define PM3AlphaBlendColorMode                    0xafa0
  509. #define PM3AlphaBlendColorModeAnd                0xacb0
  510. #define PM3AlphaBlendColorModeOr                0xacb8
  511. #define PM3AlphaDestColor                    0xaf88
  512. #define PM3AlphaSourceColor                    0xaf80
  513. #define PM3AlphaTestMode                    0x8800
  514. #define PM3AlphaTestModeAnd                    0xabf0
  515. #define PM3AlphaTestModeOr                    0xabf8
  516. #define PM3AntialiasMode                    0x8808
  517. #define PM3AntialiasModeAnd                    0xac00
  518. #define PM3AntialiasModeOr                    0xac08
  519. /* ... */
  520. #define PM3BackgroundColor                    0xb0c8
  521. /* ... */
  522. #define PM3ColorDDAMode                        0x87e0
  523. #define PM3ColorDDAModeAnd                    0xabe0
  524. #define PM3ColorDDAModeOr                    0xabe8
  525. #define PM3CommandInterrupt                    0xa990
  526. #define PM3ConstantColorDDA                    0xafb0
  527.     #define PM3ConstantColorDDA_R(r)        ((r)&0xff)
  528.     #define PM3ConstantColorDDA_G(g)        (((g)&0xff)<<8)
  529.     #define PM3ConstantColorDDA_B(b)        (((b)&0xff)<<16)
  530.     #define PM3ConstantColorDDA_A(a)        (((a)&0xff)<<24)
  531. #define PM3ContextData                        0x8dd0
  532. #define PM3ContextDump                        0x8dc0
  533. #define PM3ContextRestore                    0x8dc8
  534. #define PM3Continue                        0x8058
  535. #define PM3ContinueNewDom                    0x8048
  536. #define PM3ContinueNewLine                    0x8040
  537. #define PM3ContinueNewSub                    0x8050
  538. #define PM3Count                        0x8030
  539. /* ... */
  540. #define PM3DeltaControl                        0x9350
  541. #define PM3DeltaControlAnd                    0xab20
  542. #define PM3DeltaControlOr                    0xab28
  543. #define PM3DeltaMode                        0x9300
  544. #define PM3DeltaModeAnd                        0xaad0
  545. #define PM3DeltaModeOr                        0xaad8
  546. /* ... */
  547. #define PM3DitherMode                        0x8818
  548. #define PM3DitherModeAnd                    0xacd0
  549. #define PM3DitherModeOr                        0xacd8
  550. /* ... */
  551. #define PM3dXDom                        0x8008
  552. #define PM3dXSub                        0x8018
  553. #define PM3dY                            0x8028
  554. /* ... */
  555. #define PM3FBBlockColor                        0x8ac8
  556. #define PM3FBBlockColor0                    0xb060
  557. #define PM3FBBlockColor1                    0xb068
  558. #define PM3FBBlockColor2                    0xb070
  559. #define PM3FBBlockColor3                    0xb078
  560. #define PM3FBBlockColorBack                    0xb0a0
  561. #define PM3FBBlockColorBack0                    0xb080
  562. #define PM3FBBlockColorBack1                    0xb088
  563. #define PM3FBBlockColorBack2                    0xb090
  564. #define PM3FBBlockColorBack3                    0xb098
  565. #define PM3FBColor                        0x8a98
  566. #define PM3FBDestReadBufferAddr0                0xae80
  567. #define PM3FBDestReadBufferAddr1                0xae88
  568. #define PM3FBDestReadBufferAddr2                0xae90
  569. #define PM3FBDestReadBufferAddr3                0xae98
  570. #define PM3FBDestReadBufferOffset0                0xaea0
  571. #define PM3FBDestReadBufferOffset1                0xaea8
  572. #define PM3FBDestReadBufferOffset2                0xaeb0
  573. #define PM3FBDestReadBufferOffset3                0xaeb8
  574.     #define PM3FBDestReadBufferOffset_XOffset(x)    ((x)&0xffff)
  575.     #define PM3FBDestReadBufferOffset_YOffset(y)    (((y)&0xffff)<<16)
  576. #define PM3FBDestReadBufferWidth0                0xaec0
  577. #define PM3FBDestReadBufferWidth1                0xaec8
  578. #define PM3FBDestReadBufferWidth2                0xaed0
  579. #define PM3FBDestReadBufferWidth3                0xaed8
  580.     #define PM3FBDestReadBufferWidth_Width(w)    ((w)&0x0fff)
  581.  
  582. #define PM3FBDestReadEnables                    0xaee8
  583. #define PM3FBDestReadEnablesAnd                    0xad20
  584. #define PM3FBDestReadEnablesOr                    0xad28
  585.     #define PM3FBDestReadEnables_E(e)        ((e)&0xff)
  586.     #define PM3FBDestReadEnables_E0                1<<0
  587.     #define PM3FBDestReadEnables_E1                1<<1
  588.     #define PM3FBDestReadEnables_E2                1<<2
  589.     #define PM3FBDestReadEnables_E3                1<<3
  590.     #define PM3FBDestReadEnables_E4                1<<4
  591.     #define PM3FBDestReadEnables_E5                1<<5
  592.     #define PM3FBDestReadEnables_E6                1<<6
  593.     #define PM3FBDestReadEnables_E7                1<<7
  594.     #define PM3FBDestReadEnables_R(r)        (((r)&0xff)<<8)
  595.     #define PM3FBDestReadEnables_R0                1<<8
  596.     #define PM3FBDestReadEnables_R1                1<<9
  597.     #define PM3FBDestReadEnables_R2                1<<10
  598.     #define PM3FBDestReadEnables_R3                1<<11
  599.     #define PM3FBDestReadEnables_R4                1<<12
  600.     #define PM3FBDestReadEnables_R5                1<<13
  601.     #define PM3FBDestReadEnables_R6                1<<14
  602.     #define PM3FBDestReadEnables_R7                1<<15
  603.     #define PM3FBDestReadEnables_ReferenceAlpha(a)    (((a)&0xff)<<24)
  604.  
  605. #define PM3FBDestReadMode                    0xaee0
  606. #define PM3FBDestReadModeAnd                    0xac90
  607. #define PM3FBDestReadModeOr                    0xac98
  608.     #define PM3FBDestReadMode_ReadDisable            0<<0
  609.     #define PM3FBDestReadMode_ReadEnable            1<<0
  610.     #define PM3FBDestReadMode_StripePitch(sp)    (((sp)&0x7)<<2
  611.     #define PM3FBDestReadMode_StripeHeight(sh)    (((sh)&0x7)<<7
  612.     #define PM3FBDestReadMode_Enable0            1<<8
  613.     #define PM3FBDestReadMode_Enable1            1<<9
  614.     #define PM3FBDestReadMode_Enable2            1<<10
  615.     #define PM3FBDestReadMode_Enable3            1<<11
  616.     #define PM3FBDestReadMode_Layout0(l)        (((l)&0x3)<<12
  617.     #define PM3FBDestReadMode_Layout1(l)        (((l)&0x3)<<14
  618.     #define PM3FBDestReadMode_Layout2(l)        (((l)&0x3)<<16
  619.     #define PM3FBDestReadMode_Layout3(l)        (((l)&0x3)<<18
  620.     #define PM3FBDestReadMode_Origin0            1<<20
  621.     #define PM3FBDestReadMode_Origin1            1<<21
  622.     #define PM3FBDestReadMode_Origin2            1<<22
  623.     #define PM3FBDestReadMode_Origin3            1<<23
  624.     #define PM3FBDestReadMode_Blocking            1<<24
  625.     #define PM3FBDestReadMode_UseReadEnabled        1<<26
  626.     #define PM3FBDestReadMode_AlphaFiltering        1<<27
  627.  
  628. #define PM3FBHardwareWriteMask                    0x8ac0
  629. #define PM3FBSoftwareWriteMask                    0x8820
  630. #define PM3FBData                        0x8aa0
  631. #define PM3FBSourceData                        0x8aa8
  632. #define PM3FBSourceReadBufferAddr                0xaf08
  633. #define PM3FBSourceReadBufferOffset                0xaf10
  634.     #define PM3FBSourceReadBufferOffset_XOffset(x)    ((x)&0xffff)
  635.     #define PM3FBSourceReadBufferOffset_YOffset(y)    (((y)&0xffff)<<16)
  636. #define PM3FBSourceReadBufferWidth                0xaf18
  637.     #define PM3FBSourceReadBufferWidth_Width(w)    ((w)&0x0fff)
  638. #define PM3FBSourceReadMode                    0xaf00
  639. #define PM3FBSourceReadModeAnd                    0xaca0
  640. #define PM3FBSourceReadModeOr                    0xaca8
  641.     #define PM3FBSourceReadMode_ReadDisable            (0<<0)
  642.     #define PM3FBSourceReadMode_ReadEnable            (1<<0)
  643.     #define PM3FBSourceReadMode_StripePitch(sp)    (((sp)&0x7)<<2
  644.     #define PM3FBSourceReadMode_StripeHeight(sh)    (((sh)&0x7)<<7
  645.     #define PM3FBSourceReadMode_Layout(l)        (((l)&0x3)<<8
  646.     #define PM3FBSourceReadMode_Origin            1<<10
  647.     #define PM3FBSourceReadMode_Blocking            1<<11
  648.     #define PM3FBSourceReadMode_UserTexelCoord        1<<13
  649.     #define PM3FBSourceReadMode_WrapXEnable            1<<14
  650.     #define PM3FBSourceReadMode_WrapYEnable            1<<15
  651.     #define PM3FBSourceReadMode_WrapX(w)        (((w)&0xf)<<16
  652.     #define PM3FBSourceReadMode_WrapY(w)        (((w)&0xf)<<20
  653.     #define PM3FBSourceReadMode_ExternalSourceData        1<<24
  654. #define PM3FBWriteBufferAddr0                                   0xb000
  655. #define PM3FBWriteBufferAddr1                                   0xb008
  656. #define PM3FBWriteBufferAddr2                                   0xb010
  657. #define PM3FBWriteBufferAddr3                                   0xb018
  658.  
  659. #define PM3FBWriteBufferOffset0                                 0xb020
  660. #define PM3FBWriteBufferOffset1                                 0xb028
  661. #define PM3FBWriteBufferOffset2                                 0xb030
  662. #define PM3FBWriteBufferOffset3                                 0xb038
  663.     #define PM3FBWriteBufferOffset_XOffset(x)        ((x)&0xffff)
  664.     #define PM3FBWriteBufferOffset_YOffset(y)        (((y)&0xffff)<<16)
  665.  
  666. #define PM3FBWriteBufferWidth0                                  0xb040
  667. #define PM3FBWriteBufferWidth1                                  0xb048
  668. #define PM3FBWriteBufferWidth2                                  0xb050
  669. #define PM3FBWriteBufferWidth3                                  0xb058
  670.     #define PM3FBWriteBufferWidth_Width(w)            ((w)&0x0fff)
  671.  
  672. #define PM3FBWriteMode                                          0x8ab8
  673. #define PM3FBWriteModeAnd                                       0xacf0
  674. #define PM3FBWriteModeOr                                        0xacf8
  675.     #define PM3FBWriteMode_WriteDisable                     0<<0
  676.     #define PM3FBWriteMode_WriteEnable                      1<<0
  677.     #define PM3FBWriteMode_Replicate                        1<<4
  678.     #define PM3FBWriteMode_OpaqueSpan                       1<<5
  679.     #define PM3FBWriteMode_StripePitch(p)            (((p)&0x7)<<6)
  680.     #define PM3FBWriteMode_StripeHeight(h)           (((h)&0x7)<<9)
  681.     #define PM3FBWriteMode_Enable0                          1<<12
  682.     #define PM3FBWriteMode_Enable1                          1<<13
  683.     #define PM3FBWriteMode_Enable2                          1<<14
  684.     #define PM3FBWriteMode_Enable3                          1<<15
  685.     #define PM3FBWriteMode_Layout0(l)               (((l)&0x3)<<16)
  686.     #define PM3FBWriteMode_Layout1(l)               (((l)&0x3)<<18)
  687.     #define PM3FBWriteMode_Layout2(l)               (((l)&0x3)<<20)
  688.     #define PM3FBWriteMode_Layout3(l)               (((l)&0x3)<<22)
  689.     #define PM3FBWriteMode_Origin0                          1<<24
  690.     #define PM3FBWriteMode_Origin1                          1<<25
  691.     #define PM3FBWriteMode_Origin2                          1<<26
  692.     #define PM3FBWriteMode_Origin3                          1<<27
  693. #define PM3ForegroundColor                    0xb0c0
  694. /* ... */
  695. #define PM3GIDMode                        0xb538
  696. #define PM3GIDModeAnd                        0xb5b0
  697. #define PM3GIDModeOr                        0xb5b8
  698. /* ... */
  699. #define PM3LBDestReadBufferAddr                    0xb510
  700. #define PM3LBDestReadBufferOffset                0xb518
  701. #define PM3LBDestReadEnables                    0xb508
  702. #define PM3LBDestReadEnablesAnd                    0xb590
  703. #define PM3LBDestReadEnablesOr                    0xb598
  704. #define PM3LBDestReadMode                    0xb500
  705. #define PM3LBDestReadModeAnd                    0xb580
  706. #define PM3LBDestReadModeOr                    0xb588
  707.     #define PM3LBDestReadMode_Disable            0<<0
  708.     #define PM3LBDestReadMode_Enable            1<<0
  709.     #define PM3LBDestReadMode_StripePitch(p)        (((p)&0x7)<<2)
  710.     #define PM3LBDestReadMode_StripeHeight(h)        (((h)&0x7)<<5)
  711.     #define PM3LBDestReadMode_Layout            1<<8
  712.     #define PM3LBDestReadMode_Origin            1<<9
  713.     #define PM3LBDestReadMode_UserReadEnables        1<<10
  714.     #define PM3LBDestReadMode_Packed16            1<<11
  715.     #define PM3LBDestReadMode_Width(w)            (((w)&0xfff)<<12)
  716. #define PM3LBReadFormat                        0x8888
  717.     #define PM3LBReadFormat_DepthWidth(w)            (((w)&0x3)<<0)
  718.     #define PM3LBReadFormat_StencilWidth(w)            (((w)&0xf)<<2)
  719.     #define PM3LBReadFormat_StencilPosition(p)        (((p)&0x1f)<<6)
  720.     #define PM3LBReadFormat_FCPWidth(w)            (((w)&0xf)<<11)
  721.     #define PM3LBReadFormat_FCPPosition(p)            (((p)&0x1f)<<15)
  722.     #define PM3LBReadFormat_GIDWidth(w)            (((w)&0x7)<<20)
  723.     #define PM3LBReadFormat_GIDPosition(p)            (((p)&0x1f)<<23)
  724. #define PM3LBSourceReadBufferAddr                0xb528
  725. #define PM3LBSourceReadBufferOffset                0xb530
  726. #define PM3LBSourceReadMode                    0xb520
  727. #define PM3LBSourceReadModeAnd                    0xb5a0
  728. #define PM3LBSourceReadModeOr                    0xb5a8
  729.     #define PM3LBSourceReadMode_Enable            1<<0
  730.     #define PM3LBSourceReadMode_StripePitch(p)        (((p)&0x7)<<2)
  731.     #define PM3LBSourceReadMode_StripeHeight(h)        (((h)&0x7)<<5)
  732.     #define PM3LBSourceReadMode_Layout            1<<8
  733.     #define PM3LBSourceReadMode_Origin            1<<9
  734.     #define PM3LBSourceReadMode_Packed16            1<<10
  735.     #define PM3LBSourceReadMode_Width(w)            (((w)&0xfff)<<11)
  736. #define PM3LBStencil                        0x88a8
  737. #define PM3LBWriteBufferAddr                    0xb540
  738. #define PM3LBWriteBufferOffset                    0xb548
  739. #define PM3LBWriteFormat                    0x88c8
  740.     #define PM3LBWriteFormat_DepthWidth(w)            (((w)&0x3)<<0)
  741.     #define PM3LBWriteFormat_StencilWidth(w)        (((w)&0xf)<<2)
  742.     #define PM3LBWriteFormat_StencilPosition(p)        (((p)&0x1f)<<6)
  743.     #define PM3LBWriteFormat_GIDWidth(w)            (((w)&0x7)<<20)
  744.     #define PM3LBWriteFormat_GIDPosition(p)            (((p)&0x1f)<<23)
  745. #define PM3LBWriteMode                        0x88c0
  746. #define PM3LBWriteModeAnd                    0xac80
  747. #define PM3LBWriteModeOr                    0xac88
  748.     #define PM3LBWriteMode_WriteDisable            0<<0
  749.     #define PM3LBWriteMode_WriteEnable            1<<0
  750.     #define PM3LBWriteMode_StripePitch(p)            (((p)&0x7)<<3)
  751.     #define PM3LBWriteMode_StripeHeight(h)            (((h)&0x7)<<6)
  752.     #define PM3LBWriteMode_Layout                1<<9
  753.     #define PM3LBWriteMode_Origin                1<<10
  754.     #define PM3LBWriteMode_Packed16                1<<11
  755.     #define PM3LBWriteMode_Width(w)                (((w)&0xfff)<<12)
  756. /* ... */
  757. #define PM3LineStippleMode                    0x81a8
  758. #define PM3LineStippleModeAnd                    0xabc0
  759. #define PM3LineStippleModeOr                    0xabc8
  760. #define PM3LoadLineStippleCounters                0x81b0
  761. /* ... */
  762. #define PM3LogicalOpMode                    0x8828
  763. #define PM3LogicalOpModeAnd                    0xace0
  764. #define PM3LogicalOpModeOr                    0xace8
  765.     #define PM3LogicalOpMode_Disable            (0<<0)
  766.     #define PM3LogicalOpMode_Enable                (1<<0)
  767.     #define PM3LogicalOpMode_LogicOp(op)            (((op)&0xf)<<1)
  768.     #define PM3LogicalOpMode_UseConstantWriteData_Disable    (0<<5)
  769.     #define PM3LogicalOpMode_UseConstantWriteData_Enable    (1<<5)
  770.     #define PM3LogicalOpMode_Background_Disable        (0<<6)
  771.     #define PM3LogicalOpMode_Background_Enable        (1<<6)
  772.     #define PM3LogicalOpMode_Background_LogicOp(op)        (((op)&0xf)<<7)
  773.     #define PM3LogicalOpMode_UseConstantSource_Disable    (0<<11)
  774.     #define PM3LogicalOpMode_UseConstantSource_Enable    (1<<11)
  775.  
  776. /* ... */
  777. #define PM3LUT                            0x8e80
  778. /* ... */
  779. #define PM3LUT                            0x8e80
  780. #define PM3LUTAddress                        0x84d0
  781. #define PM3LUTData                        0x84c8
  782. #define PM3LUTIndex                        0x84c0
  783. #define PM3LUTMode                        0xb378
  784. #define PM3LUTModeAnd                        0xad70
  785. #define PM3LUTModeOr                        0xad78
  786. #define PM3LUTTransfer                        0x84d8
  787. /* ... */
  788. #define PM3PixelSize                        0x80c0
  789.     #define PM3PixelSize_GLOBAL_32BIT            (0<<0)
  790.     #define PM3PixelSize_GLOBAL_16BIT            (1<<0)
  791.     #define PM3PixelSize_GLOBAL_8BIT            (2<<0)
  792.     #define PM3PixelSize_RASTERIZER_32BIT            (0<<2)
  793.     #define PM3PixelSize_RASTERIZER_16BIT            (1<<2)
  794.     #define PM3PixelSize_RASTERIZER_8BIT            (2<<2)
  795.     #define PM3PixelSize_SCISSOR_AND_STIPPLE_32BIT        (0<<4)
  796.     #define PM3PixelSize_SCISSOR_AND_STIPPLE_16BIT        (1<<4)
  797.     #define PM3PixelSize_SCISSOR_AND_STIPPLE_8BIT        (2<<4)
  798.     #define PM3PixelSize_TEXTURE_32BIT            (0<<6)
  799.     #define PM3PixelSize_TEXTURE_16BIT            (1<<6)
  800.     #define PM3PixelSize_TEXTURE_8BIT            (2<<6)
  801.     #define PM3PixelSize_LUT_32BIT                (0<<8)
  802.     #define PM3PixelSize_LUT_16BIT                (1<<8)
  803.     #define PM3PixelSize_LUT_8BIT                (2<<8)
  804.     #define PM3PixelSize_FRAMEBUFFER_32BIT            (0<<10)
  805.     #define PM3PixelSize_FRAMEBUFFER_16BIT            (1<<10)
  806.     #define PM3PixelSize_FRAMEBUFFER_8BIT            (2<<10)
  807.     #define PM3PixelSize_LOGICAL_OP_32BIT            (0<<12)
  808.     #define PM3PixelSize_LOGICAL_OP_16BIT            (1<<12)
  809.     #define PM3PixelSize_LOGICAL_OP_8BIT            (2<<12)
  810.     #define PM3PixelSize_LOCALBUFFER_32BIT            (0<<14)
  811.     #define PM3PixelSize_LOCALBUFFER_16BIT            (1<<14)
  812.     #define PM3PixelSize_LOCALBUFFER_8BIT            (2<<14)
  813.     #define PM3PixelSize_SETUP_32BIT            (0<<16)
  814.     #define PM3PixelSize_SETUP_16BIT            (1<<16)
  815.     #define PM3PixelSize_SETUP_8BIT                (2<<16)
  816.     #define PM3PixelSize_GLOBAL                (0<<31)
  817.     #define PM3PixelSize_INDIVIDUAL                (1<<31)
  818. /* ... */
  819. #define PM3Render                        0x8038
  820.     #define PM3Render_AreaStipple_Disable            (0<<0)
  821.     #define PM3Render_AreaStipple_Enable            (1<<0)
  822.     #define PM3Render_LineStipple_Disable            (0<<1)
  823.     #define PM3Render_LineStipple_Enable            (1<<1)
  824.     #define PM3Render_ResetLine_Disable            (0<<2)
  825.     #define PM3Render_ResetLine_Enable            (1<<2)
  826.     #define PM3Render_FastFill_Disable            (0<<3)
  827.     #define PM3Render_FastFill_Enable            (1<<3)
  828.     #define PM3Render_Primitive_Line            (0<<6)
  829.     #define PM3Render_Primitive_Trapezoid            (1<<6)
  830.     #define PM3Render_Primitive_Point            (2<<6)
  831.     #define PM3Render_Antialias_Disable            (0<<8)
  832.     #define PM3Render_Antialias_Enable            (1<<8)
  833.     #define PM3Render_Antialias_SubPixelRes_4x4        (0<<9)
  834.     #define PM3Render_Antialias_SubPixelRes_8x8        (1<<9)
  835.     #define PM3Render_UsePointTable_Disable            (0<<10)
  836.     #define PM3Render_UsePointTable_Enable            (1<<10)
  837.     #define PM3Render_SyncOnbitMask_Disable            (0<<11)
  838.     #define PM3Render_SyncOnBitMask_Enable            (1<<11)
  839.     #define PM3Render_SyncOnHostData_Disable        (0<<12)
  840.     #define PM3Render_SyncOnHostData_Enable            (1<<12)
  841.     #define PM3Render_Texture_Disable            (0<<13)
  842.     #define PM3Render_Texture_Enable            (1<<13)
  843.     #define PM3Render_Fog_Disable                (0<<14)
  844.     #define PM3Render_Fog_Enable                (1<<14)
  845.     #define PM3Render_Coverage_Disable            (0<<15)
  846.     #define PM3Render_Coverage_Enable            (1<<15)
  847.     #define PM3Render_SubPixelCorrection_Disable        (0<<16)
  848.     #define PM3Render_SubPixelCorrection_Enable        (1<<16)
  849.     #define PM3Render_SpanOperation_Disable            (0<<18)
  850.     #define PM3Render_SpanOperation_Enable            (1<<18)
  851.     #define PM3Render_FBSourceRead_Disable            (0<<27)
  852.     #define PM3Render_FBSourceRead_Enable            (1<<27)
  853. #define PM3RasterizerMode                    0x80a0
  854. #define PM3RasterizerModeAnd                    0xaba0
  855. #define PM3RasterizerModeOr                    0xabb8
  856. #define PM3RectangleHeight                    0x94e0
  857. #define PM3Render                        0x8038
  858. #define PM3RepeatLine                        0x9328
  859. #define PM3ResetPickResult                    0x8c20
  860. #define PM3RLEMask                        0x8c48
  861. #define PM3RouterMode                        0x8840
  862. #define PM3RStart                        0x8780
  863. #define PM3S1Start                        0x8400
  864. #define PM3aveLineStippleCounters                0x81c0
  865. #define PM3ScissorMaxXY                        0x8190
  866. #define PM3ScissorMinXY                        0x8188
  867. #define PM3ScissorMode                        0x8180
  868. #define PM3ScissorModeAnd                    0xabb0
  869. #define PM3ScissorModeOr                    0xabb8
  870. #define PM3ScreenSize                        0x8198
  871. #define PM3Security                        0x8908
  872. #define PM3SetLogicalTexturePage                0xb360
  873. #define PM3SizeOfFramebuffer                    0xb0a8
  874. #define PM3SStart                        0x8388
  875. #define PM3StartXDom                        0x8000
  876. #define PM3StartXSub                        0x8010
  877. #define PM3StartY                        0x8020
  878. /* ... */
  879. #define PM3SpanColorMask                    0x8168
  880. /* ... */
  881. #define PM3TextureApplicationMode                0x8680
  882. #define PM3TextureApplicationModeAnd                0xac50
  883. #define PM3TextureApplicationModeOr                0xac58
  884. #define PM3TextureBaseAddr                    0x8500
  885. #define PM3TextureCacheControl                    0x8490
  886. #define PM3TextureChromaLower0                    0x84f0
  887. #define PM3TextureChromaLower1                    0x8608
  888. #define PM3TextureChromaUpper0                    0x84e8
  889. #define PM3TextureChromaUpper1                    0x8600
  890. #define PM3TextureCompositeAlphaMode0                0xb310
  891. #define PM3TextureCompositeAlphaMode0And            0xb390
  892. #define PM3TextureCompositeAlphaMode0Or                0xb398
  893. #define PM3TextureCompositeAlphaMode1                0xb320
  894. #define PM3TextureCompositeAlphaMode1And            0xb3b0
  895. #define PM3TextureCompositeAlphaMode1Or                0xb3b8
  896. #define PM3TextureCompositeColorMode0                0xb308
  897. #define PM3TextureCompositeColorMode0And            0xb380
  898. #define PM3TextureCompositeColorMode0Or                0xb388
  899. #define PM3TextureCompositeColorMode1                0xb318
  900. #define PM3TextureCompositeColorMode1And            0xb3a0
  901. #define PM3TextureCompositeColorMode1Or                0xb3a8
  902. #define PM3TextureCompositeFactor0                0xb328
  903. #define PM3TextureCompositeFactor1                0xb330
  904. #define PM3TextureCompositeMode                    0xb300
  905. #define PM3TextureCoordMode                    0x8380
  906. #define PM3TextureCoordModeAnd                    0xac20
  907. #define PM3TextureCoordModeOr                    0xac28
  908. #define PM3TextureData                        0x88e8
  909. /*
  910. #define PM3TextureDownloadControl                0x0108
  911. */
  912. #define PM3TextureDownloadOffset                0x88f0
  913. #define PM3TextureEnvColor                    0x8688
  914. #define PM3TextureFilterMode                    0x84e0
  915. #define PM3TextureFilterModeAnd                    0xad50
  916. #define PM3TextureFilterModeOr                    0xad58
  917. #define PM3TextureIndexMode0                    0xb338
  918. #define PM3TextureIndexMode0And                    0xb3c0
  919. #define PM3TextureIndexMode0Or                    0xb3c8
  920. #define PM3TextureIndexMode1                    0xb340
  921. #define PM3TextureIndexMode1And                    0xb3d0
  922. #define PM3TextureIndexMode1Or                    0xb3d8
  923. /* ... */
  924. #define PM3TextureMapSize                                       0xb428
  925. #define PM3TextureMapWidth0                                     0x8580
  926. #define PM3TextureMapWidth1                                     0x8588
  927.         #define PM3TextureMapWidth_Width(w)             ((w&0xfff)<<0)
  928.         #define PM3TextureMapWidth_BorderLayout                 (1<<12)
  929.         #define PM3TextureMapWidth_Layout_Linear                (0<<13)
  930.         #define PM3TextureMapWidth_Layout_Patch64               (1<<13)
  931.         #define PM3TextureMapWidth_Layout_Patch32_2             (2<<13)
  932.         #define PM3TextureMapWidth_Layout_Patch2                (3<<13)
  933.         #define PM3TextureMapWidth_HostTexture                  (1<<15)
  934. #define PM3TextureReadMode0                                     0xb400
  935. #define PM3TextureReadMode0And                                  0xac30
  936. #define PM3TextureReadMode0Or                                   0xac38
  937. #define PM3TextureReadMode1                                     0xb408
  938. #define PM3TextureReadMode1And                                  0xad40
  939. #define PM3TextureReadMode1Or                                   0xad48
  940. /* ... */
  941. #define PM3WaitForCompletion                    0x80b8
  942. #define PM3Window                        0x8980
  943.     #define PM3Window_ForceLBUpdate                1<<3
  944.     #define PM3Window_LBUpdateSource            1<<4
  945.     #define PM3Window_FrameCount(c)                (((c)&0xff)<<9
  946.     #define PM3Window_StencilFCP                1<<17
  947.     #define PM3Window_DepthFCP                1<<18
  948.     #define PM3Window_OverrideWriteFiltering        1<<19
  949. #define PM3WindowAnd                        0xab80
  950. #define PM3WindowOr                        0xab88
  951. #define PM3WindowOrigin                        0x81c8
  952. #define PM3XBias                        0x9480
  953. #define PM3YBias                        0x9488
  954. #define PM3YLimits                        0x80a8
  955. #define PM3UVMode                        0x8f00
  956. #define PM3ZFogBias                        0x86b8
  957. #define PM3ZStart                        0xadd8
  958. #define PM3ZStartL                        0x89b8
  959. #define PM3ZStartU                        0x89b0
  960.  
  961.  
  962. /**********************************************
  963. *  GLINT Permedia3 2D setup Unit              *
  964. ***********************************************/
  965. #define PM3Config2D                        0xb618
  966.     #define PM3Config2D_OpaqueSpan                1<<0
  967.     #define PM3Config2D_MultiRXBlit                1<<1
  968.     #define PM3Config2D_UserScissorEnable            1<<2
  969.     #define PM3Config2D_FBDestReadEnable            1<<3
  970.     #define PM3Config2D_AlphaBlendEnable            1<<4
  971.     #define PM3Config2D_DitherEnable            1<<5
  972.     #define PM3Config2D_ForegroundROPEnable            1<<6
  973.     #define PM3Config2D_ForegroundROP(rop)        (((rop)&0xf)<<7)
  974.     #define PM3Config2D_BackgroundROPEnable            1<<11
  975.     #define PM3Config2D_BackgroundROP(rop)        (((rop)&0xf)<<12)
  976.     #define PM3Config2D_UseConstantSource            1<<16
  977.     #define PM3Config2D_FBWriteEnable            1<<17
  978.     #define PM3Config2D_Blocking                1<<18
  979.     #define PM3Config2D_ExternalSourceData            1<<19
  980.     #define PM3Config2D_LUTModeEnable            1<<20
  981. #define PM3DownloadGlyphwidth                    0xb658
  982.     #define PM3DownloadGlyphwidth_GlyphWidth(gw)    ((gw)&0xffff)
  983. #define PM3DownloadTarget                    0xb650
  984.     #define PM3DownloadTarget_TagName(tag)        ((tag)&0x1fff)
  985. #define PM3GlyphData                        0xb660
  986. #define PM3GlyphPosition                    0xb608
  987.     #define PM3GlyphPosition_XOffset(x)        ((x)&0xffff)
  988.     #define PM3GlyphPosition_YOffset(y)        (((y)&0xffff)<<16)
  989. #define PM3Packed4Pixels                    0xb668
  990. #define PM3Packed8Pixels                    0xb630
  991. #define PM3Packed16Pixels                    0xb638
  992. #define PM3RectanglePosition                    0xb600
  993.     #define PM3RectanglePosition_XOffset(x)        ((x)&0xffff)
  994.     #define PM3RectanglePosition_YOffset(y)        (((y)&0xffff)<<16)
  995. #define PM3Render2D                        0xb640
  996.     #define PM3Render2D_Width(w)            ((w)&0x0fff)
  997.     #define PM3Render2D_Operation_Normal            0<<12
  998.     #define PM3Render2D_Operation_SyncOnHostData        1<<12
  999.     #define PM3Render2D_Operation_SyncOnBitMask        2<<12
  1000.     #define PM3Render2D_Operation_PatchOrderRendering    3<<12
  1001.     #define PM3Render2D_FBSourceReadEnable            1<<14
  1002.     #define PM3Render2D_SpanOperation            1<<15
  1003.     #define PM3Render2D_Height(h)            (((h)&0x0fff)<<16)
  1004.     #define PM3Render2D_XPositive                1<<28
  1005.     #define PM3Render2D_YPositive                1<<29
  1006.     #define PM3Render2D_AreaStippleEnable            1<<30
  1007.     #define PM3Render2D_TextureEnable            1<<31
  1008. #define PM3Render2DGlyph                    0xb648
  1009.     #define PM3Render2DGlyph_Width(w)        ((w)&0x7f)
  1010.     #define PM3Render2DGlyph_Height(h)        (((h)&0x7f)<<7)
  1011.     #define PM3Render2DGlyph_XOffset(x)        (((x)&0x1ff)<<14)
  1012.     #define PM3Render2DGlyph_YOffset(y)        (((y)&0x1ff)<<23)
  1013. #define PM3RenderPatchOffset                    0xb610
  1014.     #define PM3RenderPatchOffset_XOffset(x)        ((x)&0xffff)
  1015.     #define PM3RenderPatchOffset_YOffset(y)        (((y)&0xffff)<<16)
  1016. #define PM3RLCount                        0xb678
  1017.     #define PM3RLCount_Count(c)            ((c)&0x0fff)
  1018. #define PM3RLData                        0xb670
  1019.  
  1020. /**********************************************
  1021. *  GLINT Permedia3 Alias Register             *
  1022. ***********************************************/
  1023. #define PM3FillBackgroundColor                                  0x8330
  1024. #define PM3FillConfig2D0                                        0x8338
  1025. #define PM3FillConfig2D1                                        0x8360
  1026.     #define PM3FillConfig2D_OpaqueSpan                      1<<0
  1027.     #define PM3FillConfig2D_MultiRXBlit                     1<<1
  1028.     #define PM3FillConfig2D_UserScissorEnable               1<<2
  1029.     #define PM3FillConfig2D_FBDestReadEnable                1<<3
  1030.     #define PM3FillConfig2D_AlphaBlendEnable                1<<4
  1031.     #define PM3FillConfig2D_DitherEnable                    1<<5
  1032.     #define PM3FillConfig2D_ForegroundROPEnable             1<<6
  1033.     #define PM3FillConfig2D_ForegroundROP(rop)              (((rop)&0xf)<<7)
  1034.     #define PM3FillConfig2D_BackgroundROPEnable             1<<11
  1035.     #define PM3FillConfig2D_BackgroundROP(rop)              (((rop)&0xf)<<12)
  1036.     #define PM3FillConfig2D_UseConstantSource               1<<16
  1037.     #define PM3FillConfig2D_FBWriteEnable                   1<<17
  1038.     #define PM3FillConfig2D_Blocking                        1<<18
  1039.     #define PM3FillConfig2D_ExternalSourceData              1<<19
  1040.     #define PM3FillConfig2D_LUTModeEnable                   1<<20
  1041. #define PM3FillFBDestReadBufferAddr                             0x8310
  1042. #define PM3FillFBSourceReadBufferAddr                           0x8308
  1043. #define PM3FillFBSourceReadBufferOffset                         0x8340
  1044.     #define PM3FillFBSourceReadBufferOffset_XOffset(x)     ((x)&0xffff)
  1045.     #define PM3FillFBSourceReadBufferOffset_YOffset(y)      (((y)&0xffff)<<16)
  1046. #define PM3FillFBWriteBufferAddr                                0x8300
  1047. #define PM3FillForegroundColor0                                 0x8328
  1048. #define PM3FillForegroundColor1                                 0x8358
  1049. #define PM3FillGlyphPosition                                    0x8368
  1050.         #define PM3FillGlyphPosition_XOffset(x)                        ((x)&0xffff)
  1051.     #define PM3FillGlyphPosition_YOffset(y)                        (((y)&0xffff)<<16)
  1052. #define PM3FillRectanglePosition                                0x8348
  1053.     #define PM3FillRectanglePosition_XOffset(x)            ((x)&0xffff)
  1054.     #define PM3FillRectanglePosition_YOffset(y)            (((y)&0xffff)<<16)
  1055.  
  1056. #define PM3_REGS_SIZE           0x10000
  1057. #define PM3_MAX_PIXCLOCK        300000
  1058. /* a few more useful registers & regs value... */
  1059. #define PM3Sync 0x8c40
  1060.         #define PM3Sync_Tag 0x188
  1061. #define PM3FilterMode 0x8c00
  1062.         #define PM3FilterModeSync 0x400
  1063. #define PM3OutputFifo 0x2000
  1064. #define PM3StatisticMode 0x8c08
  1065. #define PM3AreaStippleMode 0x81a0
  1066.         #define AreaStipplePattern0                    (0x8200)
  1067.         #define AreaStipplePattern1                    (0x8208)
  1068.         #define AreaStipplePattern2                    (0x8210)
  1069.         #define AreaStipplePattern3                    (0x8218)
  1070.         #define AreaStipplePattern4                    (0x8220)
  1071.         #define AreaStipplePattern5                    (0x8228)
  1072.         #define AreaStipplePattern6                    (0x8230)
  1073.         #define AreaStipplePattern7                    (0x8238)
  1074.         #define AreaStipplePattern8                    (0x8240)
  1075.         #define AreaStipplePattern9                    (0x8248)
  1076.         #define AreaStipplePattern10                    (0x8250)
  1077.         #define AreaStipplePattern11                    (0x8258)
  1078.         #define AreaStipplePattern12                    (0x8260)
  1079.         #define AreaStipplePattern13                    (0x8268)
  1080.         #define AreaStipplePattern14                    (0x8270)
  1081.         #define AreaStipplePattern15                    (0x8278)
  1082.         #define AreaStipplePattern16                    (0x8280)
  1083.         #define AreaStipplePattern17                    (0x8288)
  1084.         #define AreaStipplePattern18                    (0x8290)
  1085.         #define AreaStipplePattern19                    (0x8298)
  1086.         #define AreaStipplePattern20                    (0x82a0)
  1087.         #define AreaStipplePattern21                    (0x82a8)
  1088.         #define AreaStipplePattern22                    (0x82b0)
  1089.         #define AreaStipplePattern23                    (0x82b8)
  1090.         #define AreaStipplePattern24                    (0x82c0)
  1091.         #define AreaStipplePattern25                    (0x82c8)
  1092.         #define AreaStipplePattern26                    (0x82d0)
  1093.         #define AreaStipplePattern27                    (0x82d8)
  1094.         #define AreaStipplePattern28                    (0x82eo)
  1095.         #define AreaStipplePattern29                    (0x82e8)
  1096.         #define AreaStipplePattern30                    (0x82f0)
  1097.         #define AreaStipplePattern31                    (0x82f8)
  1098.         #define AreaStipplePattern_indexed(i)             (0x8200 + ((i) * 0x8))
  1099.  
  1100. #define PM3DepthMode 0x89a0
  1101. #define PM3StencilMode 0x8988
  1102. #define PM3StencilData 0x8990
  1103. #define PM3TextureReadMode 0x8670
  1104. #define PM3FogMode 0x8690
  1105. #define PM3ChromaTestMode 0x8f18
  1106. #define PM3YUVMode 0x8f00
  1107. #define PM3BitMaskPattern 0x8068
  1108.  
  1109. /* ***************************** */
  1110. /* ***** pm3fb IOCTL const ***** */
  1111. /* ***************************** */
  1112. /* debug-only IOCTL */
  1113. #define PM3FBIO_CLEARMEMORY 0x504D3300 /* 'PM3\000' */
  1114. #define PM3FBIO_CLEARCMAP   0x504D3301 /* 'PM3\001' */
  1115. /* common use IOCTL */
  1116. #define PM3FBIO_RESETCHIP   0x504D33FF /* 'PM3\377' */
  1117.  
  1118. /* ***************************************** */
  1119. /* ***** pm3fb useful define and macro ***** */
  1120. /* ***************************************** */
  1121.  
  1122. /* permedia3 -specific definitions */
  1123. #define PM3_SCALE_TO_CLOCK(pr, fe, po) ((2 * PM3_REF_CLOCK * fe) / (pr * (1 << (po))))
  1124.  
  1125. /* in case it's not in linux/pci.h */
  1126. #ifndef PCI_DEVICE_ID_3DLABS_PERMEDIA3
  1127. #define PCI_DEVICE_ID_3DLABS_PERMEDIA3 0x000a
  1128. #endif
  1129.  
  1130. /* max number of simultaneous board */
  1131. #define PM3_MAX_BOARD 4
  1132.  
  1133. /* max size of options */
  1134. #define PM3_OPTIONS_SIZE 256
  1135.  
  1136. /* max size of font name */
  1137. #define PM3_FONTNAME_SIZE 40
  1138.  
  1139. /* do we want accelerated console  */
  1140. #define PM3FB_USE_ACCEL 1
  1141.  
  1142. /* for driver debugging ONLY */
  1143. /* 0 = assert only, 1 = error, 2 = info, 3+ = verbose */
  1144. /* define PM3FB_MASTER_DEBUG 1 */
  1145. #if defined(PM3FB_MASTER_DEBUG) && (PM3FB_MASTER_DEBUG >= 3)
  1146. #define PM3FB_TRACE
  1147. #endif /* defined(PM3FB_MASTER_DEBUG) && (PM3FB_MASTER_DEBUG >= 3) */
  1148.  
  1149. #ifdef PM3FB_MASTER_DEBUG
  1150. #define DPRINTK(l,a,b...) do { if ((l) <= PM3FB_MASTER_DEBUG) printk("pm3fb: %s: " a, __FUNCTION__ , ## b); } while (0)
  1151. #define DASSERT(t,a,b...) do { if (!(t)) printk("pm3fb: _assert failed: %s: " a, __FUNCTION__ , ## b); } while (0)
  1152. #ifdef PM3FB_TRACE
  1153. #define DTRACE printk("pm3fb: _enter %s\n", __FUNCTION__)
  1154. #else /* PM3FB_TRACE */
  1155. #define DTRACE
  1156. #endif /* PM3FB_TRACE */
  1157. #else /* PM3FB_MASTER_DEBUG */
  1158. #define DPRINTK(l,a,b...)
  1159. #define DASSERT(t,a,b...)
  1160. #define DTRACE
  1161. #endif /* PM3FB_MASTER_DEBUG */
  1162.  
  1163. #if defined(PM3FB_MASTER_DEBUG) && (PM3FB_MASTER_DEBUG >= 2)
  1164. #define PM3_SHOW_CUR_MODE pm3fb_show_cur_mode(l_fb_info)
  1165. #else
  1166. #define PM3_SHOW_CUR_MODE /* pm3fb_show_cur_mode() */
  1167. #endif
  1168.  
  1169. /* ******************************************** */
  1170. /* ***** A bunch of register-access macro ***** */
  1171. /* ******************************************** */
  1172.  
  1173. #define PM3_WRITE_REG(r, v) fb_writel(v, (l_fb_info->vIOBase + r))
  1174. #define PM3_READ_REG(r) fb_readl((l_fb_info->vIOBase + r))
  1175.  
  1176.  
  1177. #define depth2bpp(d) ((d + 7L) & ~7L)
  1178. #define depth2ByPP(d) (depth2bpp(d) / 8)
  1179.  
  1180. #define depth_supported(d) ((d == 8) || (d == 12) || (d == 15) || (d == 16) || (d==32))
  1181.  
  1182.  
  1183. #define PM3_WAIT(n) \
  1184. do{ \
  1185.     while(PM3_READ_REG(PM3InFIFOSpace)<(n)); \
  1186. } while(0)
  1187.  
  1188. #define PM3_DELAY(x) do { \
  1189.         int delay = x; \
  1190.         unsigned char tmp; \
  1191.         while(delay--){tmp = PM3_READ_REG(PM3InFIFOSpace);}; \
  1192. } while(0)
  1193.  
  1194. #define PM3_SLOW_WRITE_REG(r,v)    \
  1195. do{                             \
  1196.     DASSERT((l_fb_info->vIOBase != (unsigned char*)(-1)), "l_fb_info->vIOBase mapped in slow write\n"); \
  1197.     mb();                   \
  1198.     PM3_WAIT(1);            \
  1199.     mb();                   \
  1200.     PM3_WRITE_REG(r,v);     \
  1201. } while(0)
  1202.  
  1203. #define PM3_SET_INDEX(index) \
  1204. do{ \
  1205.     PM3_SLOW_WRITE_REG(PM3RD_IndexHigh,(((index)>>8)&0xff)); \
  1206.     PM3_SLOW_WRITE_REG(PM3RD_IndexLow,((index)&0xff)); \
  1207. } while(0)
  1208.  
  1209. #define PM3_WRITE_DAC_REG(r, v) \
  1210. do { \
  1211.      DASSERT((l_fb_info->vIOBase != (unsigned char*)(-1)), "l_fb_info->vIOBase mapped in write dac reg\n"); \
  1212.      PM3_SET_INDEX(r); \
  1213.      mb(); \
  1214.      PM3_WRITE_REG(PM3RD_IndexedData, v); \
  1215. } while (0)
  1216.  
  1217. /* next one is really a function, added as a macro to be consistent */
  1218. #define PM3_READ_DAC_REG(r) pm3fb_read_dac_reg(l_fb_info, r)
  1219.  
  1220.  
  1221. #define PM3_COLOR(c) \
  1222. do { \
  1223.   if (l_fb_info->current_par->depth == 8) \
  1224.     { \
  1225.       c = (c & 0xFF); \
  1226.       c = c | (c << 8); \
  1227.     } \
  1228.   if ((l_fb_info->current_par->depth == 8) || (depth2bpp(l_fb_info->current_par->depth) == 16)) \
  1229.     { \
  1230.       c = (c & 0xFFFF); \
  1231.       c = c | (c << 16); \
  1232.     } \
  1233. } while (0)
  1234.  
  1235. #endif /* PM3FB_H */
  1236.