Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  *  linux/drivers/video/pm3fb.h -- 3DLabs Permedia3 frame buffer device
0003  *
0004  *  Copyright (C) 2001 Romain Dolbeau <dolbeau@irisa.fr>
0005  *  Copyright (C) 2001 Sven Luther, <luther@dpt-info.u-strasbg.fr>
0006  *
0007  *  This file is subject to the terms and conditions of the GNU General Public
0008  *  License. See the file COPYING in the main directory of this archive for
0009  *  more details.
0010  */
0011 
0012 #ifndef PM3FB_H
0013 #define PM3FB_H
0014 
0015 /**********************************************
0016 *  GLINT Permedia3 Control Status registers   *
0017 ***********************************************/
0018 /* Control Status Registers */
0019 #define PM3ResetStatus                      0x0000
0020 #define PM3IntEnable                        0x0008
0021 #define PM3IntFlags                     0x0010
0022 #define PM3InFIFOSpace                      0x0018
0023 #define PM3OutFIFOWords                     0x0020
0024 #define PM3DMAAddress                       0x0028
0025 #define PM3DMACount                     0x0030
0026 #define PM3ErrorFlags                       0x0038
0027 #define PM3VClkCtl                      0x0040
0028 #define PM3TestRegister                     0x0048
0029 #define PM3Aperture0                        0x0050
0030 #define PM3Aperture1                        0x0058
0031 #define PM3DMAControl                       0x0060
0032 #define PM3FIFODis                      0x0068
0033 #define PM3ChipConfig                       0x0070
0034 #define PM3AGPControl                       0x0078
0035 
0036 #define PM3GPOutDMAAddress                  0x0080
0037 #define PM3PCIFeedbackCount                 0x0088
0038 #define PM3PCIAbortStatus                   0x0090
0039 #define PM3PCIAbortAddress                  0x0098
0040 
0041 #define PM3PCIPLLStatus                     0x00f0
0042 
0043 #define PM3HostTextureAddress                   0x0100
0044 #define PM3TextureDownloadControl               0x0108
0045 #define PM3TextureOperation                 0x0110
0046 #define PM3LogicalTexturePage                   0x0118
0047 #define PM3TexDMAAddress                    0x0120
0048 #define PM3TexFIFOSpace                     0x0128
0049 
0050 /**********************************************
0051 *  GLINT Permedia3 Region 0 Bypass Controls   *
0052 ***********************************************/
0053 #define PM3ByAperture1Mode                  0x0300
0054     #define PM3ByApertureMode_BYTESWAP_ABCD         (0 << 0)
0055     #define PM3ByApertureMode_BYTESWAP_BADC         (1 << 0)
0056     #define PM3ByApertureMode_BYTESWAP_CDAB         (2 << 0)
0057     #define PM3ByApertureMode_BYTESWAP_DCBA         (3 << 0)
0058     #define PM3ByApertureMode_PATCH_ENABLE          (1 << 2)
0059     #define PM3ByApertureMode_FORMAT_RAW            (0 << 3)
0060     #define PM3ByApertureMode_FORMAT_YUYV           (1 << 3)
0061     #define PM3ByApertureMode_FORMAT_UYVY           (2 << 3)
0062     #define PM3ByApertureMode_PIXELSIZE_8BIT        (0 << 5)
0063     #define PM3ByApertureMode_PIXELSIZE_16BIT       (1 << 5)
0064     #define PM3ByApertureMode_PIXELSIZE_32BIT       (2 << 5)
0065         #define PM3ByApertureMode_PIXELSIZE_MASK    (3 << 5)
0066     #define PM3ByApertureMode_EFFECTIVE_STRIDE_1024     (0 << 7)
0067     #define PM3ByApertureMode_EFFECTIVE_STRIDE_2048     (1 << 7)
0068     #define PM3ByApertureMode_EFFECTIVE_STRIDE_4096     (2 << 7)
0069     #define PM3ByApertureMode_EFFECTIVE_STRIDE_8192     (3 << 7)
0070     #define PM3ByApertureMode_PATCH_OFFSET_X(off)   (((off) & 0x7f) << 9)
0071     #define PM3ByApertureMode_PATCH_OFFSET_Y(off)   (((off) & 0x7f) << 16)
0072     #define PM3ByApertureMode_FRAMEBUFFER           (0 << 21)
0073     #define PM3ByApertureMode_LOCALBUFFER           (1 << 21)
0074     #define PM3ByApertureMode_DOUBLE_WRITE_OFF      (0 << 22)
0075     #define PM3ByApertureMode_DOUBLE_WRITE_1MB      (1 << 22)
0076     #define PM3ByApertureMode_DOUBLE_WRITE_2MB      (2 << 22)
0077     #define PM3ByApertureMode_DOUBLE_WRITE_4MB      (3 << 22)
0078     #define PM3ByApertureMode_DOUBLE_WRITE_8MB      (4 << 22)
0079     #define PM3ByApertureMode_DOUBLE_WRITE_16MB     (5 << 22)
0080     #define PM3ByApertureMode_DOUBLE_WRITE_32MB     (6 << 22)
0081 
0082 #define PM3ByAperture2Mode                  0x0328
0083 
0084 /**********************************************
0085 *  GLINT Permedia3 Memory Control (0x1000)    *
0086 ***********************************************/
0087 #define PM3MemCounter                       0x1000
0088 #define PM3MemBypassWriteMask                   0x1008
0089 #define PM3MemScratch                       0x1010
0090 #define PM3LocalMemCaps                     0x1018
0091     #define PM3LocalMemCaps_NoWriteMask         (1 << 28)
0092 #define PM3LocalMemTimings                  0x1020
0093 #define PM3LocalMemControl                  0x1028
0094 #define PM3LocalMemRefresh                  0x1030
0095 #define PM3LocalMemPowerDown                    0x1038
0096 #define PM3RemoteMemControl                 0x1100
0097 
0098 /**********************************************
0099 *  GLINT Permedia3 Video Control (0x3000)     *
0100 ***********************************************/
0101 
0102 #define PM3ScreenBase                       0x3000
0103 #define PM3ScreenStride                     0x3008
0104 #define PM3HTotal                       0x3010
0105 #define PM3HgEnd                        0x3018
0106 #define PM3HbEnd                        0x3020
0107 #define PM3HsStart                      0x3028
0108 #define PM3HsEnd                        0x3030
0109 #define PM3VTotal                       0x3038
0110 #define PM3VbEnd                        0x3040
0111 #define PM3VsStart                      0x3048
0112 #define PM3VsEnd                        0x3050
0113 #define PM3VideoControl                     0x3058
0114     #define PM3VideoControl_ENABLE              (1 << 0)
0115     #define PM3VideoControl_BLANK_ACTIVE_HIGH       (0 << 1)
0116     #define PM3VideoControl_BLANK_ACTIVE_LOW        (1 << 1)
0117     #define PM3VideoControl_LINE_DOUBLE_OFF         (0 << 2)
0118     #define PM3VideoControl_LINE_DOUBLE_ON          (1 << 2)
0119     #define PM3VideoControl_HSYNC_FORCE_HIGH        (0 << 3)
0120     #define PM3VideoControl_HSYNC_ACTIVE_HIGH       (1 << 3)
0121     #define PM3VideoControl_HSYNC_FORCE_LOW         (2 << 3)
0122     #define PM3VideoControl_HSYNC_ACTIVE_LOW        (3 << 3)
0123     #define PM3VideoControl_HSYNC_MASK          (3 << 3)
0124     #define PM3VideoControl_VSYNC_FORCE_HIGH        (0 << 5)
0125     #define PM3VideoControl_VSYNC_ACTIVE_HIGH       (1 << 5)
0126     #define PM3VideoControl_VSYNC_FORCE_LOW         (2 << 5)
0127     #define PM3VideoControl_VSYNC_ACTIVE_LOW        (3 << 5)
0128     #define PM3VideoControl_VSYNC_MASK          (3 << 5)
0129     #define PM3VideoControl_BYTE_DOUBLE_OFF         (0 << 7)
0130     #define PM3VideoControl_BYTE_DOUBLE_ON          (1 << 7)
0131     #define PM3VideoControl_BUFFER_SWAP_SYNCON_FRAMEBLANK   (0 << 9)
0132     #define PM3VideoControl_BUFFER_SWAP_FREE_RUNNING    (1 << 9)
0133     #define PM3VideoControl_BUFFER_SWAP_LIMITETO_FRAMERATE  (2 << 9)
0134     #define PM3VideoControl_STEREO_ENABLE           (1 << 11)
0135     #define PM3VideoControl_RIGHT_EYE_ACTIVE_HIGH       (0 << 12)
0136     #define PM3VideoControl_RIGHT_EYE_ACTIVE_LOW        (1 << 12)
0137     #define PM3VideoControl_VIDEO_EXT_LOW           (0 << 14)
0138     #define PM3VideoControl_VIDEO_EXT_HIGH          (1 << 14)
0139     #define PM3VideoControl_SYNC_MODE_INDEPENDENT       (0 << 16)
0140     #define PM3VideoControl_SYNC_MODE_SYNCTO_VSA        (1 << 16)
0141     #define PM3VideoControl_SYNC_MODE_SYNCTO_VSB        (2 << 16)
0142     #define PM3VideoControl_PATCH_ENABLE            (1 << 18)
0143     #define PM3VideoControl_PIXELSIZE_8BIT          (0 << 19)
0144     #define PM3VideoControl_PIXELSIZE_16BIT         (1 << 19)
0145     #define PM3VideoControl_PIXELSIZE_32BIT         (2 << 19)
0146     #define PM3VideoControl_DISPLAY_ENABLE          (1 << 21)
0147     #define PM3VideoControl_PATCH_OFFSET_X(off) (((off) & 0x3f) << 22)
0148     #define PM3VideoControl_PATCH_OFFSET_Y(off) (((off) & 0x3f) << 28)
0149 #define PM3InterruptLine                    0x3060
0150 #define PM3DisplayData                      0x3068
0151 #define PM3VerticalLineCount                    0x3070
0152 #define PM3FifoControl                      0x3078
0153 #define PM3ScreenBaseRight                  0x3080
0154 #define PM3MiscControl                      0x3088
0155 
0156 #define PM3VideoOverlayUpdate                   0x3100
0157     #define PM3VideoOverlayUpdate_ENABLE            (1 << 0)
0158 #define PM3VideoOverlayMode                 0x3108
0159     #define PM3VideoOverlayMode_ENABLE          (1 << 0)
0160     #define PM3VideoOverlayMode_BUFFERSYNC_MANUAL       (0 << 1)
0161     #define PM3VideoOverlayMode_BUFFERSYNC_VIDEOSTREAMA (1 << 1)
0162     #define PM3VideoOverlayMode_BUFFERSYNC_VIDEOSTREAMB (2 << 1)
0163     #define PM3VideoOverlayMode_FIELDPOLARITY_NORMAL    (0 << 4)
0164     #define PM3VideoOverlayMode_FIELDPOLARITY_INVERT    (1 << 4)
0165     #define PM3VideoOverlayMode_PIXELSIZE_8BIT      (0 << 5)
0166     #define PM3VideoOverlayMode_PIXELSIZE_16BIT     (1 << 5)
0167     #define PM3VideoOverlayMode_PIXELSIZE_32BIT     (2 << 5)
0168     #define PM3VideoOverlayMode_COLORFORMAT_RGB8888     \
0169                     ((0 << 7)|(1 << 12)|(2 << 5))
0170     #define PM3VideoOverlayMode_COLORFORMAT_RGB4444     \
0171                     ((1 << 7)|(1 << 12)|(1 << 5))
0172     #define PM3VideoOverlayMode_COLORFORMAT_RGB5551     \
0173                     ((2 << 7)|(1 << 12)|(1 << 5))
0174     #define PM3VideoOverlayMode_COLORFORMAT_RGB565      \
0175                     ((3 << 7)|(1 << 12)|(1 << 5))
0176     #define PM3VideoOverlayMode_COLORFORMAT_RGB332      \
0177                     ((4 << 7)|(1 << 12)|(0 << 5))
0178     #define PM3VideoOverlayMode_COLORFORMAT_BGR8888     \
0179                     ((0 << 7)|(2 << 5))
0180     #define PM3VideoOverlayMode_COLORFORMAT_BGR4444     \
0181                     ((1 << 7)|(1 << 5))
0182     #define PM3VideoOverlayMode_COLORFORMAT_BGR5551     \
0183                     ((2 << 7)|(1 << 5))
0184     #define PM3VideoOverlayMode_COLORFORMAT_BGR565      \
0185                     ((3 << 7)|(1 << 5))
0186     #define PM3VideoOverlayMode_COLORFORMAT_BGR332      \
0187                     ((4 << 7)|(0 << 5))
0188     #define PM3VideoOverlayMode_COLORFORMAT_CI8     \
0189                     ((5 << 7)|(1 << 12)|(0 << 5))
0190     #define PM3VideoOverlayMode_COLORFORMAT_VUY444      \
0191                     ((2 << 10)|(1 << 12)|(2 << 5))
0192     #define PM3VideoOverlayMode_COLORFORMAT_YUV444      \
0193                     ((2 << 10)|(2 << 5))
0194     #define PM3VideoOverlayMode_COLORFORMAT_VUY422      \
0195                     ((1 << 10)|(1 << 12)|(1 << 5))
0196     #define PM3VideoOverlayMode_COLORFORMAT_YUV422      \
0197                     ((1 << 10)|(1 << 5))
0198     #define PM3VideoOverlayMode_COLORORDER_BGR      (0 << 12)
0199     #define PM3VideoOverlayMode_COLORORDER_RGB      (1 << 12)
0200     #define PM3VideoOverlayMode_LINEARCOLOREXT_OFF      (0 << 13)
0201     #define PM3VideoOverlayMode_LINEARCOLOREXT_ON       (1 << 13)
0202     #define PM3VideoOverlayMode_FILTER_MASK         (3 << 14)
0203     #define PM3VideoOverlayMode_FILTER_OFF          (0 << 14)
0204     #define PM3VideoOverlayMode_FILTER_FULL         (1 << 14)
0205     #define PM3VideoOverlayMode_FILTER_PARTIAL      (2 << 14)
0206     #define PM3VideoOverlayMode_DEINTERLACE_OFF     (0 << 16)
0207     #define PM3VideoOverlayMode_DEINTERLACE_BOB     (1 << 16)
0208     #define PM3VideoOverlayMode_PATCHMODE_OFF       (0 << 18)
0209     #define PM3VideoOverlayMode_PATCHMODE_ON        (1 << 18)
0210     #define PM3VideoOverlayMode_FLIP_VIDEO          (0 << 20)
0211     #define PM3VideoOverlayMode_FLIP_VIDEOSTREAMA       (1 << 20)
0212     #define PM3VideoOverlayMode_FLIP_VIDEOSTREAMB       (2 << 20)
0213     #define PM3VideoOverlayMode_MIRROR_MASK         (3 << 23)
0214     #define PM3VideoOverlayMode_MIRRORX_OFF         (0 << 23)
0215     #define PM3VideoOverlayMode_MIRRORX_ON          (1 << 23)
0216     #define PM3VideoOverlayMode_MIRRORY_OFF         (0 << 24)
0217     #define PM3VideoOverlayMode_MIRRORY_ON          (1 << 24)
0218 #define PM3VideoOverlayFifoControl              0x3110
0219 #define PM3VideoOverlayIndex                    0x3118
0220 #define PM3VideoOverlayBase0                    0x3120
0221 #define PM3VideoOverlayBase1                    0x3128
0222 #define PM3VideoOverlayBase2                    0x3130
0223 #define PM3VideoOverlayStride                   0x3138
0224     #define PM3VideoOverlayStride_STRIDE(s)     (((s) & 0xfff) << 0)
0225 #define PM3VideoOverlayWidth                    0x3140
0226     #define PM3VideoOverlayWidth_WIDTH(w)       (((w) & 0xfff) << 0)
0227 #define PM3VideoOverlayHeight                   0x3148
0228     #define PM3VideoOverlayHeight_HEIGHT(h)     (((h) & 0xfff) << 0)
0229 #define PM3VideoOverlayOrigin                   0x3150
0230     #define PM3VideoOverlayOrigin_XORIGIN(x)    (((x) & 0xfff) << 0)
0231     #define PM3VideoOverlayOrigin_YORIGIN(y)    (((y) & 0xfff) << 16)
0232 #define PM3VideoOverlayShrinkXDelta             0x3158
0233     #define PM3VideoOverlayShrinkXDelta_NONE        (1 << 16)
0234     #define PM3VideoOverlayShrinkXDelta_DELTA(s,d)  \
0235         ((((s) << 16)/(d)) & 0x0ffffff0)
0236 #define PM3VideoOverlayZoomXDelta               0x3160
0237     #define PM3VideoOverlayZoomXDelta_NONE          (1 << 16)
0238     #define PM3VideoOverlayZoomXDelta_DELTA(s,d)    \
0239         ((((s) << 16)/(d)) & 0x0001fff0)
0240 #define PM3VideoOverlayYDelta                   0x3168
0241     #define PM3VideoOverlayYDelta_NONE          (1 << 16)
0242     #define PM3VideoOverlayYDelta_DELTA(s,d)    \
0243         ((((s) << 16)/(d)) & 0x0ffffff0)
0244 #define PM3VideoOverlayFieldOffset              0x3170
0245 #define PM3VideoOverlayStatus                   0x3178
0246 
0247 /**********************************************
0248 *  GLINT Permedia3 RAMDAC Registers (0x4000)  *
0249 ***********************************************/
0250 /* Direct Registers */
0251 #define PM3RD_PaletteWriteAddress               0x4000
0252 #define PM3RD_PaletteData                   0x4008
0253 #define PM3RD_PixelMask                     0x4010
0254 #define PM3RD_PaletteReadAddress                0x4018
0255 
0256 #define PM3RD_IndexLow                      0x4020
0257 #define PM3RD_IndexHigh                     0x4028
0258 #define PM3RD_IndexedData                   0x4030
0259 #define PM3RD_IndexControl                  0x4038
0260     #define PM3RD_IndexControl_AUTOINCREMENT_ENABLE     (1 << 0)
0261 
0262 /* Indirect Registers */
0263 #define PM3RD_MiscControl                   0x000
0264     #define PM3RD_MiscControl_HIGHCOLOR_RES_ENABLE      (1 << 0)
0265     #define PM3RD_MiscControl_PIXELDOUBLE_ENABLE        (1 << 1)
0266     #define PM3RD_MiscControl_LASTREAD_ADDR_ENABLE      (1 << 2)
0267     #define PM3RD_MiscControl_DIRECTCOLOR_ENABLE        (1 << 3)
0268     #define PM3RD_MiscControl_OVERLAY_ENABLE        (1 << 4)
0269     #define PM3RD_MiscControl_PIXELDOUBLE_BUFFER_ENABLE (1 << 5)
0270     #define PM3RD_MiscControl_VSB_OUTPUT_ENABLE     (1 << 6)
0271     #define PM3RD_MiscControl_STEREODOUBLE_BUFFER_ENABLE    (1 << 7)
0272 #define PM3RD_SyncControl                   0x001
0273     #define PM3RD_SyncControl_HSYNC_ACTIVE_LOW      (0 << 0)
0274     #define PM3RD_SyncControl_HSYNC_ACTIVE_HIGH     (1 << 0)
0275     #define PM3RD_SyncControl_HSYNC_FORCE_ACTIVE        (3 << 0)
0276     #define PM3RD_SyncControl_HSYNC_FORCE_INACTIVE      (4 << 0)
0277     #define PM3RD_SyncControl_HSYNC_TRI_STATE       (2 << 0)
0278     #define PM3RD_SyncControl_VSYNC_ACTIVE_LOW      (0 << 3)
0279     #define PM3RD_SyncControl_VSYNC_ACTIVE_HIGH     (1 << 3)
0280     #define PM3RD_SyncControl_VSYNC_TRI_STATE       (2 << 3)
0281     #define PM3RD_SyncControl_VSYNC_FORCE_ACTIVE        (3 << 3)
0282     #define PM3RD_SyncControl_VSYNC_FORCE_INACTIVE      (4 << 3)
0283     #define PM3RD_SyncControl_HSYNC_OVERRIDE_SETBY_HSYNC    (0 << 6)
0284     #define PM3RD_SyncControl_HSYNC_OVERRIDE_FORCE_HIGH (1 << 6)
0285     #define PM3RD_SyncControl_VSYNC_OVERRIDE_SETBY_VSYNC    (0 << 7)
0286     #define PM3RD_SyncControl_VSYNC_OVERRIDE_FORCE_HIGH (1 << 7)
0287 #define PM3RD_DACControl                    0x002
0288     #define PM3RD_DACControl_DAC_POWER_ON           (0 << 0)
0289     #define PM3RD_DACControl_DAC_POWER_OFF          (1 << 0)
0290     #define PM3RD_DACControl_SYNC_ON_GREEN_ENABLE       (1 << 3)
0291     #define PM3RD_DACControl_BLANK_RED_DAC_ENABLE       (1 << 4)
0292     #define PM3RD_DACControl_BLANK_GREEN_DAC_ENABLE     (1 << 5)
0293     #define PM3RD_DACControl_BLANK_BLUE_DAC_ENABLE      (1 << 6)
0294     #define PM3RD_DACControl_BLANK_PEDESTAL_ENABLE      (1 << 7)
0295 #define PM3RD_PixelSize                     0x003
0296     #define PM3RD_PixelSize_24_BIT_PIXELS           (4 << 0)
0297     #define PM3RD_PixelSize_32_BIT_PIXELS           (2 << 0)
0298     #define PM3RD_PixelSize_16_BIT_PIXELS           (1 << 0)
0299     #define PM3RD_PixelSize_8_BIT_PIXELS            (0 << 0)
0300 #define PM3RD_ColorFormat                   0x004
0301     #define PM3RD_ColorFormat_LINEAR_COLOR_EXT_ENABLE   (1 << 6)
0302     #define PM3RD_ColorFormat_COLOR_ORDER_BLUE_LOW      (1 << 5)
0303     #define PM3RD_ColorFormat_COLOR_ORDER_RED_LOW       (0 << 5)
0304     #define PM3RD_ColorFormat_COLOR_FORMAT_MASK     (0x1f << 0)
0305     #define PM3RD_ColorFormat_8888_COLOR            (0 << 0)
0306     #define PM3RD_ColorFormat_5551_FRONT_COLOR      (1 << 0)
0307     #define PM3RD_ColorFormat_4444_COLOR            (2 << 0)
0308     #define PM3RD_ColorFormat_332_FRONT_COLOR       (5 << 0)
0309     #define PM3RD_ColorFormat_332_BACK_COLOR        (6 << 0)
0310     #define PM3RD_ColorFormat_2321_FRONT_COLOR      (9 << 0)
0311     #define PM3RD_ColorFormat_2321_BACK_COLOR       (10 << 0)
0312     #define PM3RD_ColorFormat_232_FRONTOFF_COLOR        (11 << 0)
0313     #define PM3RD_ColorFormat_232_BACKOFF_COLOR     (12 << 0)
0314     #define PM3RD_ColorFormat_5551_BACK_COLOR       (13 << 0)
0315     #define PM3RD_ColorFormat_CI8_COLOR         (14 << 0)
0316     #define PM3RD_ColorFormat_565_FRONT_COLOR       (16 << 0)
0317     #define PM3RD_ColorFormat_565_BACK_COLOR        (17 << 0)
0318 #define PM3RD_CursorMode                    0x005
0319     #define PM3RD_CursorMode_CURSOR_ENABLE          (1 << 0)
0320     #define PM3RD_CursorMode_FORMAT_64x64_2BPE_P0123    (0 << 2)
0321     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P0       (1 << 2)
0322     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P1       (2 << 2)
0323     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P2       (3 << 2)
0324     #define PM3RD_CursorMode_FORMAT_32x32_2BPE_P3       (4 << 2)
0325     #define PM3RD_CursorMode_FORMAT_32x32_4BPE_P01      (5 << 2)
0326     #define PM3RD_CursorMode_FORMAT_32x32_4BPE_P23      (6 << 2)
0327     #define PM3RD_CursorMode_TYPE_MS            (0 << 4)
0328     #define PM3RD_CursorMode_TYPE_X             (1 << 4)
0329     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_ENABLE (1 << 6)
0330     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_3_COLOR    (2 << 6)
0331     #define PM3RD_CursorMode_REVERSE_PIXEL_ORDER_15_COLOR   (3 << 6)
0332 #define PM3RD_CursorControl                 0x006
0333     #define PM3RD_CursorControl_DOUBLE_X_ENABLED        (1 << 0)
0334     #define PM3RD_CursorControl_DOUBLE_Y_ENABLED        (1 << 1)
0335     #define PM3RD_CursorControl_READBACK_POS_ENABLED    (1 << 2)
0336 
0337 #define PM3RD_CursorXLow                    0x007
0338 #define PM3RD_CursorXHigh                   0x008
0339 #define PM3RD_CursorYLow                    0x009
0340 #define PM3RD_CursorYHigh                   0x00a
0341 #define PM3RD_CursorHotSpotX                    0x00b
0342 #define PM3RD_CursorHotSpotY                    0x00c
0343 #define PM3RD_OverlayKey                    0x00d
0344 #define PM3RD_Pan                       0x00e
0345     #define PM3RD_Pan_ENABLE                (1 << 0)
0346     #define PM3RD_Pan_GATE_ENABLE               (1 << 1)
0347 #define PM3RD_Sense                     0x00f
0348 
0349 #define PM3RD_CheckControl                  0x018
0350     #define PM3RD_CheckControl_PIXEL_ENABLED        (1 << 0)
0351     #define PM3RD_CheckControl_LUT_ENABLED          (1 << 1)
0352 #define PM3RD_CheckPixelRed                 0x019
0353 #define PM3RD_CheckPixelGreen                   0x01a
0354 #define PM3RD_CheckPixelBlue                    0x01b
0355 #define PM3RD_CheckLUTRed                   0x01c
0356 #define PM3RD_CheckLUTGreen                 0x01d
0357 #define PM3RD_CheckLUTBlue                  0x01e
0358 #define PM3RD_Scratch                       0x01f
0359 
0360 #define PM3RD_VideoOverlayControl               0x020
0361     #define PM3RD_VideoOverlayControl_ENABLE        (1 << 0)
0362     #define PM3RD_VideoOverlayControl_MODE_MASK     (3 << 1)
0363     #define PM3RD_VideoOverlayControl_MODE_MAINKEY      (0 << 1)
0364     #define PM3RD_VideoOverlayControl_MODE_OVERLAYKEY   (1 << 1)
0365     #define PM3RD_VideoOverlayControl_MODE_ALWAYS       (2 << 1)
0366     #define PM3RD_VideoOverlayControl_MODE_BLEND        (3 << 1)
0367     #define PM3RD_VideoOverlayControl_DIRECTCOLOR_ENABLED   (1 << 3)
0368     #define PM3RD_VideoOverlayControl_BLENDSRC_MAIN     (0 << 4)
0369     #define PM3RD_VideoOverlayControl_BLENDSRC_REGISTER (1 << 4)
0370     #define PM3RD_VideoOverlayControl_KEY_COLOR     (0 << 5)
0371     #define PM3RD_VideoOverlayControl_KEY_ALPHA     (1 << 5)
0372 #define PM3RD_VideoOverlayXStartLow             0x021
0373 #define PM3RD_VideoOverlayXStartHigh                0x022
0374 #define PM3RD_VideoOverlayYStartLow             0x023
0375 #define PM3RD_VideoOverlayYStartHigh                0x024
0376 #define PM3RD_VideoOverlayXEndLow               0x025
0377 #define PM3RD_VideoOverlayXEndHigh              0x026
0378 #define PM3RD_VideoOverlayYEndLow               0x027
0379 #define PM3RD_VideoOverlayYEndHigh              0x028
0380 #define PM3RD_VideoOverlayKeyR                  0x029
0381 #define PM3RD_VideoOverlayKeyG                  0x02a
0382 #define PM3RD_VideoOverlayKeyB                  0x02b
0383 #define PM3RD_VideoOverlayBlend                 0x02c
0384     #define PM3RD_VideoOverlayBlend_FACTOR_0_PERCENT    (0 << 6)
0385     #define PM3RD_VideoOverlayBlend_FACTOR_25_PERCENT   (1 << 6)
0386     #define PM3RD_VideoOverlayBlend_FACTOR_75_PERCENT   (2 << 6)
0387     #define PM3RD_VideoOverlayBlend_FACTOR_100_PERCENT  (3 << 6)
0388 
0389 #define PM3RD_DClkSetup1                    0x1f0
0390 #define PM3RD_DClkSetup2                    0x1f1
0391 #define PM3RD_KClkSetup1                    0x1f2
0392 #define PM3RD_KClkSetup2                    0x1f3
0393 
0394 #define PM3RD_DClkControl                   0x200
0395     #define PM3RD_DClkControl_SOURCE_PLL            (0 << 4)
0396     #define PM3RD_DClkControl_SOURCE_VSA            (1 << 4)
0397     #define PM3RD_DClkControl_SOURCE_VSB            (2 << 4)
0398     #define PM3RD_DClkControl_SOURCE_EXT            (3 << 4)
0399     #define PM3RD_DClkControl_STATE_RUN         (2 << 2)
0400     #define PM3RD_DClkControl_STATE_HIGH            (1 << 2)
0401     #define PM3RD_DClkControl_STATE_LOW         (0 << 2)
0402     #define PM3RD_DClkControl_LOCKED            (1 << 1)
0403     #define PM3RD_DClkControl_NOT_LOCKED            (0 << 1)
0404     #define PM3RD_DClkControl_ENABLE            (1 << 0)
0405 #define PM3RD_DClk0PreScale                 0x201
0406 #define PM3RD_DClk0FeedbackScale                0x202
0407 #define PM3RD_DClk0PostScale                    0x203
0408     #define PM3_REF_CLOCK                   14318
0409 #define PM3RD_DClk1PreScale                 0x204
0410 #define PM3RD_DClk1FeedbackScale                0x205
0411 #define PM3RD_DClk1PostScale                    0x206
0412 #define PM3RD_DClk2PreScale                 0x207
0413 #define PM3RD_DClk2FeedbackScale                0x208
0414 #define PM3RD_DClk2PostScale                    0x209
0415 #define PM3RD_DClk3PreScale                 0x20a
0416 #define PM3RD_DClk3FeedbackScale                0x20b
0417 #define PM3RD_DClk3PostScale                    0x20c
0418 #define PM3RD_KClkControl                   0x20d
0419     #define PM3RD_KClkControl_ENABLE            (1 << 0)
0420     #define PM3RD_KClkControl_NOT_LOCKED            (0 << 1)
0421     #define PM3RD_KClkControl_LOCKED            (1 << 1)
0422     #define PM3RD_KClkControl_STATE_LOW         (0 << 2)
0423     #define PM3RD_KClkControl_STATE_HIGH            (1 << 2)
0424     #define PM3RD_KClkControl_STATE_RUN         (2 << 2)
0425     #define PM3RD_KClkControl_STATE_LOW_POWER       (3 << 2)
0426     #define PM3RD_KClkControl_SOURCE_PCLK           (0 << 4)
0427     #define PM3RD_KClkControl_SOURCE_HALF_PCLK      (1 << 4)
0428     #define PM3RD_KClkControl_SOURCE_PLL            (2 << 4)
0429 #define PM3RD_KClkPreScale                  0x20e
0430 #define PM3RD_KClkFeedbackScale                 0x20f
0431 #define PM3RD_KClkPostScale                 0x210
0432 #define PM3RD_MClkControl                   0x211
0433     #define PM3RD_MClkControl_ENABLE            (1 << 0)
0434     #define PM3RD_MClkControl_NOT_LOCKED            (0 << 1)
0435     #define PM3RD_MClkControl_LOCKED            (1 << 1)
0436     #define PM3RD_MClkControl_STATE_LOW         (0 << 2)
0437     #define PM3RD_MClkControl_STATE_HIGH            (1 << 2)
0438     #define PM3RD_MClkControl_STATE_RUN         (2 << 2)
0439     #define PM3RD_MClkControl_STATE_LOW_POWER       (3 << 2)
0440     #define PM3RD_MClkControl_SOURCE_PCLK           (0 << 4)
0441     #define PM3RD_MClkControl_SOURCE_HALF_PCLK      (1 << 4)
0442     #define PM3RD_MClkControl_SOURCE_HALF_EXT       (3 << 4)
0443     #define PM3RD_MClkControl_SOURCE_EXT            (4 << 4)
0444     #define PM3RD_MClkControl_SOURCE_HALF_KCLK      (5 << 4)
0445     #define PM3RD_MClkControl_SOURCE_KCLK           (6 << 4)
0446 #define PM3RD_MClkPreScale                  0x212
0447 #define PM3RD_MClkFeedbackScale                 0x213
0448 #define PM3RD_MClkPostScale                 0x214
0449 #define PM3RD_SClkControl                   0x215
0450     #define PM3RD_SClkControl_ENABLE            (1 << 0)
0451     #define PM3RD_SClkControl_NOT_LOCKED            (0 << 1)
0452     #define PM3RD_SClkControl_LOCKED            (1 << 1)
0453     #define PM3RD_SClkControl_STATE_LOW         (0 << 2)
0454     #define PM3RD_SClkControl_STATE_HIGH            (1 << 2)
0455     #define PM3RD_SClkControl_STATE_RUN         (2 << 2)
0456     #define PM3RD_SClkControl_STATE_LOW_POWER       (3 << 2)
0457     #define PM3RD_SClkControl_SOURCE_PCLK           (0 << 4)
0458     #define PM3RD_SClkControl_SOURCE_HALF_PCLK      (1 << 4)
0459     #define PM3RD_SClkControl_SOURCE_HALF_EXT       (3 << 4)
0460     #define PM3RD_SClkControl_SOURCE_EXT            (4 << 4)
0461     #define PM3RD_SClkControl_SOURCE_HALF_KCLK      (5 << 4)
0462     #define PM3RD_SClkControl_SOURCE_KCLK           (6 << 4)
0463 #define PM3RD_SClkPreScale                  0x216
0464 #define PM3RD_SClkFeedbackScale                 0x217
0465 #define PM3RD_SClkPostScale                 0x218
0466 
0467 #define PM3RD_CursorPalette(p)              (0x303 + (p))
0468 #define PM3RD_CursorPattern(p)              (0x400 + (p))
0469 /******************************************************
0470 *  GLINT Permedia3 Video Streaming Registers (0x5000) *
0471 *******************************************************/
0472 
0473 #define PM3VSConfiguration                  0x5800
0474 
0475 /**********************************************
0476 *  GLINT Permedia3 Core Registers (0x8000+)   *
0477 ***********************************************/
0478 #define PM3AALineWidth                      0x94c0
0479 #define PM3AAPointsize                      0x94a0
0480 #define PM3AlphaBlendAlphaMode                  0xafa8
0481 #define PM3AlphaBlendAlphaModeAnd               0xad30
0482 #define PM3AlphaBlendAlphaModeOr                0xad38
0483 #define PM3AlphaBlendColorMode                  0xafa0
0484 #define PM3AlphaBlendColorModeAnd               0xacb0
0485 #define PM3AlphaBlendColorModeOr                0xacb8
0486 #define PM3AlphaDestColor                   0xaf88
0487 #define PM3AlphaSourceColor                 0xaf80
0488 #define PM3AlphaTestMode                    0x8800
0489 #define PM3AlphaTestModeAnd                 0xabf0
0490 #define PM3AlphaTestModeOr                  0xabf8
0491 #define PM3AntialiasMode                    0x8808
0492 #define PM3AntialiasModeAnd                 0xac00
0493 #define PM3AntialiasModeOr                  0xac08
0494 /* ... */
0495 #define PM3BackgroundColor                  0xb0c8
0496 /* ... */
0497 #define PM3ColorDDAMode                     0x87e0
0498 #define PM3ColorDDAModeAnd                  0xabe0
0499 #define PM3ColorDDAModeOr                   0xabe8
0500 #define PM3CommandInterrupt                 0xa990
0501 #define PM3ConstantColorDDA                 0xafb0
0502     #define PM3ConstantColorDDA_R(r)        ((r) & 0xff)
0503     #define PM3ConstantColorDDA_G(g)        (((g) & 0xff) << 8)
0504     #define PM3ConstantColorDDA_B(b)        (((b) & 0xff) << 16)
0505     #define PM3ConstantColorDDA_A(a)        (((a) & 0xff) << 24)
0506 #define PM3ContextData                      0x8dd0
0507 #define PM3ContextDump                      0x8dc0
0508 #define PM3ContextRestore                   0x8dc8
0509 #define PM3Continue                     0x8058
0510 #define PM3ContinueNewDom                   0x8048
0511 #define PM3ContinueNewLine                  0x8040
0512 #define PM3ContinueNewSub                   0x8050
0513 #define PM3Count                        0x8030
0514 /* ... */
0515 #define PM3DeltaControl                     0x9350
0516 #define PM3DeltaControlAnd                  0xab20
0517 #define PM3DeltaControlOr                   0xab28
0518 #define PM3DeltaMode                        0x9300
0519 #define PM3DeltaModeAnd                     0xaad0
0520 #define PM3DeltaModeOr                      0xaad8
0521 /* ... */
0522 #define PM3DitherMode                       0x8818
0523 #define PM3DitherModeAnd                    0xacd0
0524 #define PM3DitherModeOr                     0xacd8
0525 /* ... */
0526 #define PM3dXDom                        0x8008
0527 #define PM3dXSub                        0x8018
0528 #define PM3dY                           0x8028
0529 /* ... */
0530 #define PM3FBBlockColor                     0x8ac8
0531 #define PM3FBBlockColor0                    0xb060
0532 #define PM3FBBlockColor1                    0xb068
0533 #define PM3FBBlockColor2                    0xb070
0534 #define PM3FBBlockColor3                    0xb078
0535 #define PM3FBBlockColorBack                 0xb0a0
0536 #define PM3FBBlockColorBack0                    0xb080
0537 #define PM3FBBlockColorBack1                    0xb088
0538 #define PM3FBBlockColorBack2                    0xb090
0539 #define PM3FBBlockColorBack3                    0xb098
0540 #define PM3FBColor                      0x8a98
0541 #define PM3FBDestReadBufferAddr0                0xae80
0542 #define PM3FBDestReadBufferAddr1                0xae88
0543 #define PM3FBDestReadBufferAddr2                0xae90
0544 #define PM3FBDestReadBufferAddr3                0xae98
0545 #define PM3FBDestReadBufferOffset0              0xaea0
0546 #define PM3FBDestReadBufferOffset1              0xaea8
0547 #define PM3FBDestReadBufferOffset2              0xaeb0
0548 #define PM3FBDestReadBufferOffset3              0xaeb8
0549     #define PM3FBDestReadBufferOffset_XOffset(x)    ((x) & 0xffff)
0550     #define PM3FBDestReadBufferOffset_YOffset(y)    (((y) & 0xffff) << 16)
0551 #define PM3FBDestReadBufferWidth0               0xaec0
0552 #define PM3FBDestReadBufferWidth1               0xaec8
0553 #define PM3FBDestReadBufferWidth2               0xaed0
0554 #define PM3FBDestReadBufferWidth3               0xaed8
0555     #define PM3FBDestReadBufferWidth_Width(w)   ((w) & 0x0fff)
0556 
0557 #define PM3FBDestReadEnables                    0xaee8
0558 #define PM3FBDestReadEnablesAnd                 0xad20
0559 #define PM3FBDestReadEnablesOr                  0xad28
0560     #define PM3FBDestReadEnables_E(e)       ((e) & 0xff)
0561     #define PM3FBDestReadEnables_E0             (1 << 0)
0562     #define PM3FBDestReadEnables_E1             (1 << 1)
0563     #define PM3FBDestReadEnables_E2             (1 << 2)
0564     #define PM3FBDestReadEnables_E3             (1 << 3)
0565     #define PM3FBDestReadEnables_E4             (1 << 4)
0566     #define PM3FBDestReadEnables_E5             (1 << 5)
0567     #define PM3FBDestReadEnables_E6             (1 << 6)
0568     #define PM3FBDestReadEnables_E7             (1 << 7)
0569     #define PM3FBDestReadEnables_R(r)       (((r) & 0xff) << 8)
0570     #define PM3FBDestReadEnables_R0             (1 << 8)
0571     #define PM3FBDestReadEnables_R1             (1 << 9)
0572     #define PM3FBDestReadEnables_R2             (1 << 10)
0573     #define PM3FBDestReadEnables_R3             (1 << 11)
0574     #define PM3FBDestReadEnables_R4             (1 << 12)
0575     #define PM3FBDestReadEnables_R5             (1 << 13)
0576     #define PM3FBDestReadEnables_R6             (1 << 14)
0577     #define PM3FBDestReadEnables_R7             (1 << 15)
0578     #define PM3FBDestReadEnables_ReferenceAlpha(a)  (((a) & 0xff) << 24)
0579 
0580 #define PM3FBDestReadMode                   0xaee0
0581 #define PM3FBDestReadModeAnd                    0xac90
0582 #define PM3FBDestReadModeOr                 0xac98
0583     #define PM3FBDestReadMode_ReadDisable           (0 << 0)
0584     #define PM3FBDestReadMode_ReadEnable            (1 << 0)
0585     #define PM3FBDestReadMode_StripePitch(sp)   (((sp) & 0x7) << 2)
0586     #define PM3FBDestReadMode_StripeHeight(sh)  (((sh) & 0x7) << 7)
0587     #define PM3FBDestReadMode_Enable0           (1 << 8)
0588     #define PM3FBDestReadMode_Enable1           (1 << 9)
0589     #define PM3FBDestReadMode_Enable2           (1 << 10)
0590     #define PM3FBDestReadMode_Enable3           (1 << 11)
0591     #define PM3FBDestReadMode_Layout0(l)        (((l) & 0x3) << 12)
0592     #define PM3FBDestReadMode_Layout1(l)        (((l) & 0x3) << 14)
0593     #define PM3FBDestReadMode_Layout2(l)        (((l) & 0x3) << 16)
0594     #define PM3FBDestReadMode_Layout3(l)        (((l) & 0x3) << 18)
0595     #define PM3FBDestReadMode_Origin0           (1 << 20)
0596     #define PM3FBDestReadMode_Origin1           (1 << 21)
0597     #define PM3FBDestReadMode_Origin2           (1 << 22)
0598     #define PM3FBDestReadMode_Origin3           (1 << 23)
0599     #define PM3FBDestReadMode_Blocking          (1 << 24)
0600     #define PM3FBDestReadMode_UseReadEnabled        (1 << 26)
0601     #define PM3FBDestReadMode_AlphaFiltering        (1 << 27)
0602 
0603 #define PM3FBHardwareWriteMask                  0x8ac0
0604 #define PM3FBSoftwareWriteMask                  0x8820
0605 #define PM3FBData                       0x8aa0
0606 #define PM3FBSourceData                     0x8aa8
0607 #define PM3FBSourceReadBufferAddr               0xaf08
0608 #define PM3FBSourceReadBufferOffset             0xaf10
0609     #define PM3FBSourceReadBufferOffset_XOffset(x)  ((x) & 0xffff)
0610     #define PM3FBSourceReadBufferOffset_YOffset(y)  (((y) & 0xffff) << 16)
0611 #define PM3FBSourceReadBufferWidth              0xaf18
0612     #define PM3FBSourceReadBufferWidth_Width(w) ((w) & 0x0fff)
0613 #define PM3FBSourceReadMode                 0xaf00
0614 #define PM3FBSourceReadModeAnd                  0xaca0
0615 #define PM3FBSourceReadModeOr                   0xaca8
0616     #define PM3FBSourceReadMode_ReadDisable         (0 << 0)
0617     #define PM3FBSourceReadMode_ReadEnable          (1 << 0)
0618     #define PM3FBSourceReadMode_StripePitch(sp) (((sp) & 0x7) << 2)
0619     #define PM3FBSourceReadMode_StripeHeight(sh)    (((sh) & 0x7) << 7)
0620     #define PM3FBSourceReadMode_Layout(l)       (((l) & 0x3) << 8)
0621     #define PM3FBSourceReadMode_Origin          (1 << 10)
0622     #define PM3FBSourceReadMode_Blocking            (1 << 11)
0623     #define PM3FBSourceReadMode_UserTexelCoord      (1 << 13)
0624     #define PM3FBSourceReadMode_WrapXEnable         (1 << 14)
0625     #define PM3FBSourceReadMode_WrapYEnable         (1 << 15)
0626     #define PM3FBSourceReadMode_WrapX(w)        (((w) & 0xf) << 16)
0627     #define PM3FBSourceReadMode_WrapY(w)        (((w) & 0xf) << 20)
0628     #define PM3FBSourceReadMode_ExternalSourceData      (1 << 24)
0629 #define PM3FBWriteBufferAddr0                   0xb000
0630 #define PM3FBWriteBufferAddr1                   0xb008
0631 #define PM3FBWriteBufferAddr2                   0xb010
0632 #define PM3FBWriteBufferAddr3                   0xb018
0633 
0634 #define PM3FBWriteBufferOffset0                 0xb020
0635 #define PM3FBWriteBufferOffset1                 0xb028
0636 #define PM3FBWriteBufferOffset2                 0xb030
0637 #define PM3FBWriteBufferOffset3                 0xb038
0638     #define PM3FBWriteBufferOffset_XOffset(x)   ((x) & 0xffff)
0639     #define PM3FBWriteBufferOffset_YOffset(y)   (((y) & 0xffff) << 16)
0640 
0641 #define PM3FBWriteBufferWidth0                  0xb040
0642 #define PM3FBWriteBufferWidth1                  0xb048
0643 #define PM3FBWriteBufferWidth2                  0xb050
0644 #define PM3FBWriteBufferWidth3                  0xb058
0645     #define PM3FBWriteBufferWidth_Width(w)      ((w) & 0x0fff)
0646 
0647 #define PM3FBWriteMode                      0x8ab8
0648 #define PM3FBWriteModeAnd                   0xacf0
0649 #define PM3FBWriteModeOr                    0xacf8
0650     #define PM3FBWriteMode_WriteDisable         (0 << 0)
0651     #define PM3FBWriteMode_WriteEnable          (1 << 0)
0652     #define PM3FBWriteMode_Replicate            (1 << 4)
0653     #define PM3FBWriteMode_OpaqueSpan           (1 << 5)
0654     #define PM3FBWriteMode_StripePitch(p)       (((p) & 0x7) << 6)
0655     #define PM3FBWriteMode_StripeHeight(h)      (((h) & 0x7) << 9)
0656     #define PM3FBWriteMode_Enable0              (1 << 12)
0657     #define PM3FBWriteMode_Enable1              (1 << 13)
0658     #define PM3FBWriteMode_Enable2              (1 << 14)
0659     #define PM3FBWriteMode_Enable3              (1 << 15)
0660     #define PM3FBWriteMode_Layout0(l)       (((l) & 0x3) << 16)
0661     #define PM3FBWriteMode_Layout1(l)       (((l) & 0x3) << 18)
0662     #define PM3FBWriteMode_Layout2(l)       (((l) & 0x3) << 20)
0663     #define PM3FBWriteMode_Layout3(l)       (((l) & 0x3) << 22)
0664     #define PM3FBWriteMode_Origin0              (1 << 24)
0665     #define PM3FBWriteMode_Origin1              (1 << 25)
0666     #define PM3FBWriteMode_Origin2              (1 << 26)
0667     #define PM3FBWriteMode_Origin3              (1 << 27)
0668 #define PM3ForegroundColor                  0xb0c0
0669 /* ... */
0670 #define PM3GIDMode                      0xb538
0671 #define PM3GIDModeAnd                       0xb5b0
0672 #define PM3GIDModeOr                        0xb5b8
0673 /* ... */
0674 #define PM3LBDestReadBufferAddr                 0xb510
0675 #define PM3LBDestReadBufferOffset               0xb518
0676 #define PM3LBDestReadEnables                    0xb508
0677 #define PM3LBDestReadEnablesAnd                 0xb590
0678 #define PM3LBDestReadEnablesOr                  0xb598
0679 #define PM3LBDestReadMode                   0xb500
0680 #define PM3LBDestReadModeAnd                    0xb580
0681 #define PM3LBDestReadModeOr                 0xb588
0682     #define PM3LBDestReadMode_Disable           (0 << 0)
0683     #define PM3LBDestReadMode_Enable            (1 << 0)
0684     #define PM3LBDestReadMode_StripePitch(p)    (((p) & 0x7) << 2)
0685     #define PM3LBDestReadMode_StripeHeight(h)   (((h) & 0x7) << 5)
0686     #define PM3LBDestReadMode_Layout            (1 << 8)
0687     #define PM3LBDestReadMode_Origin            (1 << 9)
0688     #define PM3LBDestReadMode_UserReadEnables       (1 << 10)
0689     #define PM3LBDestReadMode_Packed16          (1 << 11)
0690     #define PM3LBDestReadMode_Width(w)      (((w) & 0xfff) << 12)
0691 #define PM3LBReadFormat                     0x8888
0692     #define PM3LBReadFormat_DepthWidth(w)       (((w) & 0x3) << 0)
0693     #define PM3LBReadFormat_StencilWidth(w)     (((w) & 0xf) << 2)
0694     #define PM3LBReadFormat_StencilPosition(p)  (((p) & 0x1f) << 6)
0695     #define PM3LBReadFormat_FCPWidth(w)     (((w) & 0xf) << 11)
0696     #define PM3LBReadFormat_FCPPosition(p)      (((p) & 0x1f) << 15)
0697     #define PM3LBReadFormat_GIDWidth(w)     (((w) & 0x7) << 20)
0698     #define PM3LBReadFormat_GIDPosition(p)      (((p) & 0x1f) << 23)
0699 #define PM3LBSourceReadBufferAddr               0xb528
0700 #define PM3LBSourceReadBufferOffset             0xb530
0701 #define PM3LBSourceReadMode                 0xb520
0702 #define PM3LBSourceReadModeAnd                  0xb5a0
0703 #define PM3LBSourceReadModeOr                   0xb5a8
0704     #define PM3LBSourceReadMode_Enable          (1 << 0)
0705     #define PM3LBSourceReadMode_StripePitch(p)  (((p) & 0x7) << 2)
0706     #define PM3LBSourceReadMode_StripeHeight(h) (((h) & 0x7) << 5)
0707     #define PM3LBSourceReadMode_Layout          (1 << 8)
0708     #define PM3LBSourceReadMode_Origin          (1 << 9)
0709     #define PM3LBSourceReadMode_Packed16            (1 << 10)
0710     #define PM3LBSourceReadMode_Width(w)        (((w) & 0xfff) << 11)
0711 #define PM3LBStencil                        0x88a8
0712 #define PM3LBWriteBufferAddr                    0xb540
0713 #define PM3LBWriteBufferOffset                  0xb548
0714 #define PM3LBWriteFormat                    0x88c8
0715     #define PM3LBWriteFormat_DepthWidth(w)      (((w) & 0x3) << 0)
0716     #define PM3LBWriteFormat_StencilWidth(w)    (((w) & 0xf) << 2)
0717     #define PM3LBWriteFormat_StencilPosition(p) (((p) & 0x1f) << 6)
0718     #define PM3LBWriteFormat_GIDWidth(w)        (((w) & 0x7) << 20)
0719     #define PM3LBWriteFormat_GIDPosition(p)     (((p) & 0x1f) << 23)
0720 #define PM3LBWriteMode                      0x88c0
0721 #define PM3LBWriteModeAnd                   0xac80
0722 #define PM3LBWriteModeOr                    0xac88
0723     #define PM3LBWriteMode_WriteDisable         (0 << 0)
0724     #define PM3LBWriteMode_WriteEnable          (1 << 0)
0725     #define PM3LBWriteMode_StripePitch(p)       (((p) & 0x7) << 3)
0726     #define PM3LBWriteMode_StripeHeight(h)      (((h) & 0x7) << 6)
0727     #define PM3LBWriteMode_Layout               (1 << 9)
0728     #define PM3LBWriteMode_Origin               (1 << 10)
0729     #define PM3LBWriteMode_Packed16             (1 << 11)
0730     #define PM3LBWriteMode_Width(w)         (((w) & 0xfff) << 12)
0731 /* ... */
0732 #define PM3LineStippleMode                  0x81a8
0733 #define PM3LineStippleModeAnd                   0xabc0
0734 #define PM3LineStippleModeOr                    0xabc8
0735 #define PM3LoadLineStippleCounters              0x81b0
0736 /* ... */
0737 #define PM3LogicalOpMode                    0x8828
0738 #define PM3LogicalOpModeAnd                 0xace0
0739 #define PM3LogicalOpModeOr                  0xace8
0740     #define PM3LogicalOpMode_Disable            (0 << 0)
0741     #define PM3LogicalOpMode_Enable             (1 << 0)
0742     #define PM3LogicalOpMode_LogicOp(op)        (((op) & 0xf) << 1)
0743     #define PM3LogicalOpMode_UseConstantWriteData_Disable   (0 << 5)
0744     #define PM3LogicalOpMode_UseConstantWriteData_Enable    (1 << 5)
0745     #define PM3LogicalOpMode_Background_Disable     (0 << 6)
0746     #define PM3LogicalOpMode_Background_Enable      (1 << 6)
0747     #define PM3LogicalOpMode_Background_LogicOp(op) (((op) & 0xf) << 7)
0748     #define PM3LogicalOpMode_UseConstantSource_Disable  (0 << 11)
0749     #define PM3LogicalOpMode_UseConstantSource_Enable   (1 << 11)
0750 /* ... */
0751 #define PM3LUT                          0x8e80
0752 #define PM3LUTAddress                       0x84d0
0753 #define PM3LUTData                      0x84c8
0754 #define PM3LUTIndex                     0x84c0
0755 #define PM3LUTMode                      0xb378
0756 #define PM3LUTModeAnd                       0xad70
0757 #define PM3LUTModeOr                        0xad78
0758 #define PM3LUTTransfer                      0x84d8
0759 /* ... */
0760 #define PM3PixelSize                        0x80c0
0761     #define PM3PixelSize_GLOBAL_32BIT           (0 << 0)
0762     #define PM3PixelSize_GLOBAL_16BIT           (1 << 0)
0763     #define PM3PixelSize_GLOBAL_8BIT            (2 << 0)
0764     #define PM3PixelSize_RASTERIZER_32BIT           (0 << 2)
0765     #define PM3PixelSize_RASTERIZER_16BIT           (1 << 2)
0766     #define PM3PixelSize_RASTERIZER_8BIT            (2 << 2)
0767     #define PM3PixelSize_SCISSOR_AND_STIPPLE_32BIT      (0 << 4)
0768     #define PM3PixelSize_SCISSOR_AND_STIPPLE_16BIT      (1 << 4)
0769     #define PM3PixelSize_SCISSOR_AND_STIPPLE_8BIT       (2 << 4)
0770     #define PM3PixelSize_TEXTURE_32BIT          (0 << 6)
0771     #define PM3PixelSize_TEXTURE_16BIT          (1 << 6)
0772     #define PM3PixelSize_TEXTURE_8BIT           (2 << 6)
0773     #define PM3PixelSize_LUT_32BIT              (0 << 8)
0774     #define PM3PixelSize_LUT_16BIT              (1 << 8)
0775     #define PM3PixelSize_LUT_8BIT               (2 << 8)
0776     #define PM3PixelSize_FRAMEBUFFER_32BIT          (0 << 10)
0777     #define PM3PixelSize_FRAMEBUFFER_16BIT          (1 << 10)
0778     #define PM3PixelSize_FRAMEBUFFER_8BIT           (2 << 10)
0779     #define PM3PixelSize_LOGICAL_OP_32BIT           (0 << 12)
0780     #define PM3PixelSize_LOGICAL_OP_16BIT           (1 << 12)
0781     #define PM3PixelSize_LOGICAL_OP_8BIT            (2 << 12)
0782     #define PM3PixelSize_LOCALBUFFER_32BIT          (0 << 14)
0783     #define PM3PixelSize_LOCALBUFFER_16BIT          (1 << 14)
0784     #define PM3PixelSize_LOCALBUFFER_8BIT           (2 << 14)
0785     #define PM3PixelSize_SETUP_32BIT            (0 << 16)
0786     #define PM3PixelSize_SETUP_16BIT            (1 << 16)
0787     #define PM3PixelSize_SETUP_8BIT             (2 << 16)
0788     #define PM3PixelSize_GLOBAL             (0 << 31)
0789     #define PM3PixelSize_INDIVIDUAL             (1 << 31)
0790 /* ... */
0791 #define PM3Render                       0x8038
0792     #define PM3Render_AreaStipple_Disable           (0 << 0)
0793     #define PM3Render_AreaStipple_Enable            (1 << 0)
0794     #define PM3Render_LineStipple_Disable           (0 << 1)
0795     #define PM3Render_LineStipple_Enable            (1 << 1)
0796     #define PM3Render_ResetLine_Disable         (0 << 2)
0797     #define PM3Render_ResetLine_Enable          (1 << 2)
0798     #define PM3Render_FastFill_Disable          (0 << 3)
0799     #define PM3Render_FastFill_Enable           (1 << 3)
0800     #define PM3Render_Primitive_Line            (0 << 6)
0801     #define PM3Render_Primitive_Trapezoid           (1 << 6)
0802     #define PM3Render_Primitive_Point           (2 << 6)
0803     #define PM3Render_Antialias_Disable         (0 << 8)
0804     #define PM3Render_Antialias_Enable          (1 << 8)
0805     #define PM3Render_Antialias_SubPixelRes_4x4     (0 << 9)
0806     #define PM3Render_Antialias_SubPixelRes_8x8     (1 << 9)
0807     #define PM3Render_UsePointTable_Disable         (0 << 10)
0808     #define PM3Render_UsePointTable_Enable          (1 << 10)
0809     #define PM3Render_SyncOnbitMask_Disable         (0 << 11)
0810     #define PM3Render_SyncOnBitMask_Enable          (1 << 11)
0811     #define PM3Render_SyncOnHostData_Disable        (0 << 12)
0812     #define PM3Render_SyncOnHostData_Enable         (1 << 12)
0813     #define PM3Render_Texture_Disable           (0 << 13)
0814     #define PM3Render_Texture_Enable            (1 << 13)
0815     #define PM3Render_Fog_Disable               (0 << 14)
0816     #define PM3Render_Fog_Enable                (1 << 14)
0817     #define PM3Render_Coverage_Disable          (0 << 15)
0818     #define PM3Render_Coverage_Enable           (1 << 15)
0819     #define PM3Render_SubPixelCorrection_Disable        (0 << 16)
0820     #define PM3Render_SubPixelCorrection_Enable     (1 << 16)
0821     #define PM3Render_SpanOperation_Disable         (0 << 18)
0822     #define PM3Render_SpanOperation_Enable          (1 << 18)
0823     #define PM3Render_FBSourceRead_Disable          (0 << 27)
0824     #define PM3Render_FBSourceRead_Enable           (1 << 27)
0825 #define PM3RasterizerMode                   0x80a0
0826 #define PM3RasterizerModeAnd                    0xaba0
0827 #define PM3RasterizerModeOr                 0xaba8
0828 #define PM3RectangleHeight                  0x94e0
0829 #define PM3RepeatLine                       0x9328
0830 #define PM3ResetPickResult                  0x8c20
0831 #define PM3RLEMask                      0x8c48
0832 #define PM3RouterMode                       0x8840
0833 #define PM3RStart                       0x8780
0834 #define PM3S1Start                      0x8400
0835 #define PM3aveLineStippleCounters               0x81c0
0836 #define PM3ScissorMaxXY                     0x8190
0837 #define PM3ScissorMinXY                     0x8188
0838 #define PM3ScissorMode                      0x8180
0839 #define PM3ScissorModeAnd                   0xabb0
0840 #define PM3ScissorModeOr                    0xabb8
0841 #define PM3ScreenSize                       0x8198
0842 #define PM3Security                     0x8908
0843 #define PM3SetLogicalTexturePage                0xb360
0844 #define PM3SizeOfFramebuffer                    0xb0a8
0845 #define PM3SStart                       0x8388
0846 #define PM3StartXDom                        0x8000
0847 #define PM3StartXSub                        0x8010
0848 #define PM3StartY                       0x8020
0849 /* ... */
0850 #define PM3SpanColorMask                    0x8168
0851 /* ... */
0852 #define PM3TextureApplicationMode               0x8680
0853 #define PM3TextureApplicationModeAnd                0xac50
0854 #define PM3TextureApplicationModeOr             0xac58
0855 #define PM3TextureBaseAddr                  0x8500
0856 #define PM3TextureCacheControl                  0x8490
0857 #define PM3TextureChromaLower0                  0x84f0
0858 #define PM3TextureChromaLower1                  0x8608
0859 #define PM3TextureChromaUpper0                  0x84e8
0860 #define PM3TextureChromaUpper1                  0x8600
0861 #define PM3TextureCompositeAlphaMode0               0xb310
0862 #define PM3TextureCompositeAlphaMode0And            0xb390
0863 #define PM3TextureCompositeAlphaMode0Or             0xb398
0864 #define PM3TextureCompositeAlphaMode1               0xb320
0865 #define PM3TextureCompositeAlphaMode1And            0xb3b0
0866 #define PM3TextureCompositeAlphaMode1Or             0xb3b8
0867 #define PM3TextureCompositeColorMode0               0xb308
0868 #define PM3TextureCompositeColorMode0And            0xb380
0869 #define PM3TextureCompositeColorMode0Or             0xb388
0870 #define PM3TextureCompositeColorMode1               0xb318
0871 #define PM3TextureCompositeColorMode1And            0xb3a0
0872 #define PM3TextureCompositeColorMode1Or             0xb3a8
0873 #define PM3TextureCompositeFactor0              0xb328
0874 #define PM3TextureCompositeFactor1              0xb330
0875 #define PM3TextureCompositeMode                 0xb300
0876 #define PM3TextureCoordMode                 0x8380
0877 #define PM3TextureCoordModeAnd                  0xac20
0878 #define PM3TextureCoordModeOr                   0xac28
0879 #define PM3TextureData                      0x88e8
0880 /*
0881 #define PM3TextureDownloadControl               0x0108
0882 */
0883 #define PM3TextureDownloadOffset                0x88f0
0884 #define PM3TextureEnvColor                  0x8688
0885 #define PM3TextureFilterMode                    0x84e0
0886 #define PM3TextureFilterModeAnd                 0xad50
0887 #define PM3TextureFilterModeOr                  0xad58
0888 #define PM3TextureIndexMode0                    0xb338
0889 #define PM3TextureIndexMode0And                 0xb3c0
0890 #define PM3TextureIndexMode0Or                  0xb3c8
0891 #define PM3TextureIndexMode1                    0xb340
0892 #define PM3TextureIndexMode1And                 0xb3d0
0893 #define PM3TextureIndexMode1Or                  0xb3d8
0894 /* ... */
0895 #define PM3TextureMapSize                   0xb428
0896 #define PM3TextureMapWidth0                 0x8580
0897 #define PM3TextureMapWidth1                 0x8588
0898     #define PM3TextureMapWidth_Width(w)     (((w) & 0xfff) << 0)
0899     #define PM3TextureMapWidth_BorderLayout         (1 << 12)
0900     #define PM3TextureMapWidth_Layout_Linear        (0 << 13)
0901     #define PM3TextureMapWidth_Layout_Patch64       (1 << 13)
0902     #define PM3TextureMapWidth_Layout_Patch32_2     (2 << 13)
0903     #define PM3TextureMapWidth_Layout_Patch2        (3 << 13)
0904     #define PM3TextureMapWidth_HostTexture          (1 << 15)
0905 #define PM3TextureReadMode0                 0xb400
0906 #define PM3TextureReadMode0And                  0xac30
0907 #define PM3TextureReadMode0Or                   0xac38
0908 #define PM3TextureReadMode1                 0xb408
0909 #define PM3TextureReadMode1And                  0xad40
0910 #define PM3TextureReadMode1Or                   0xad48
0911 /* ... */
0912 #define PM3WaitForCompletion                    0x80b8
0913 #define PM3Window                       0x8980
0914     #define PM3Window_ForceLBUpdate             (1 << 3)
0915     #define PM3Window_LBUpdateSource            (1 << 4)
0916     #define PM3Window_FrameCount(c)         (((c) & 0xff) << 9)
0917     #define PM3Window_StencilFCP                (1 << 17)
0918     #define PM3Window_DepthFCP              (1 << 18)
0919     #define PM3Window_OverrideWriteFiltering        (1 << 19)
0920 #define PM3WindowAnd                        0xab80
0921 #define PM3WindowOr                     0xab88
0922 #define PM3WindowOrigin                     0x81c8
0923 #define PM3XBias                        0x9480
0924 #define PM3YBias                        0x9488
0925 #define PM3YLimits                      0x80a8
0926 #define PM3UVMode                       0x8f00
0927 #define PM3ZFogBias                     0x86b8
0928 #define PM3ZStart                       0xadd8
0929 #define PM3ZStartL                      0x89b8
0930 #define PM3ZStartU                      0x89b0
0931 
0932 
0933 /**********************************************
0934 *  GLINT Permedia3 2D setup Unit          *
0935 ***********************************************/
0936 #define PM3Config2D                     0xb618
0937     #define PM3Config2D_OpaqueSpan              (1 << 0)
0938     #define PM3Config2D_MultiRXBlit             (1 << 1)
0939     #define PM3Config2D_UserScissorEnable           (1 << 2)
0940     #define PM3Config2D_FBDestReadEnable            (1 << 3)
0941     #define PM3Config2D_AlphaBlendEnable            (1 << 4)
0942     #define PM3Config2D_DitherEnable            (1 << 5)
0943     #define PM3Config2D_ForegroundROPEnable         (1 << 6)
0944     #define PM3Config2D_ForegroundROP(rop)      (((rop) & 0xf) << 7)
0945     #define PM3Config2D_BackgroundROPEnable         (1 << 11)
0946     #define PM3Config2D_BackgroundROP(rop)      (((rop) & 0xf) << 12)
0947     #define PM3Config2D_UseConstantSource           (1 << 16)
0948     #define PM3Config2D_FBWriteEnable           (1 << 17)
0949     #define PM3Config2D_Blocking                (1 << 18)
0950     #define PM3Config2D_ExternalSourceData          (1 << 19)
0951     #define PM3Config2D_LUTModeEnable           (1 << 20)
0952 #define PM3DownloadGlyphwidth                   0xb658
0953     #define PM3DownloadGlyphwidth_GlyphWidth(gw)    ((gw) & 0xffff)
0954 #define PM3DownloadTarget                   0xb650
0955     #define PM3DownloadTarget_TagName(tag)      ((tag) & 0x1fff)
0956 #define PM3GlyphData                        0xb660
0957 #define PM3GlyphPosition                    0xb608
0958     #define PM3GlyphPosition_XOffset(x)     ((x) & 0xffff)
0959     #define PM3GlyphPosition_YOffset(y)     (((y) & 0xffff) << 16)
0960 #define PM3Packed4Pixels                    0xb668
0961 #define PM3Packed8Pixels                    0xb630
0962 #define PM3Packed16Pixels                   0xb638
0963 #define PM3RectanglePosition                    0xb600
0964     #define PM3RectanglePosition_XOffset(x)     ((x) & 0xffff)
0965     #define PM3RectanglePosition_YOffset(y)     (((y) & 0xffff) << 16)
0966 #define PM3Render2D                     0xb640
0967     #define PM3Render2D_Width(w)            ((w) & 0x0fff)
0968     #define PM3Render2D_Operation_Normal            (0 << 12)
0969     #define PM3Render2D_Operation_SyncOnHostData        (1 << 12)
0970     #define PM3Render2D_Operation_SyncOnBitMask     (2 << 12)
0971     #define PM3Render2D_Operation_PatchOrderRendering   (3 << 12)
0972     #define PM3Render2D_FBSourceReadEnable          (1 << 14)
0973     #define PM3Render2D_SpanOperation           (1 << 15)
0974     #define PM3Render2D_Height(h)           (((h) & 0x0fff) << 16)
0975     #define PM3Render2D_XPositive               (1 << 28)
0976     #define PM3Render2D_YPositive               (1 << 29)
0977     #define PM3Render2D_AreaStippleEnable           (1 << 30)
0978     #define PM3Render2D_TextureEnable           (1 << 31)
0979 #define PM3Render2DGlyph                    0xb648
0980     #define PM3Render2DGlyph_Width(w)       ((w) & 0x7f)
0981     #define PM3Render2DGlyph_Height(h)      (((h) & 0x7f) << 7)
0982     #define PM3Render2DGlyph_XOffset(x)     (((x) & 0x1ff) << 14)
0983     #define PM3Render2DGlyph_YOffset(y)     (((y) & 0x1ff) << 23)
0984 #define PM3RenderPatchOffset                    0xb610
0985     #define PM3RenderPatchOffset_XOffset(x)     ((x) & 0xffff)
0986     #define PM3RenderPatchOffset_YOffset(y)     (((y) & 0xffff) << 16)
0987 #define PM3RLCount                      0xb678
0988     #define PM3RLCount_Count(c)         ((c) & 0x0fff)
0989 #define PM3RLData                       0xb670
0990 
0991 /**********************************************
0992 *  GLINT Permedia3 Alias Register        *
0993 ***********************************************/
0994 #define PM3FillBackgroundColor                  0x8330
0995 #define PM3FillConfig2D0                    0x8338
0996 #define PM3FillConfig2D1                    0x8360
0997     #define PM3FillConfig2D_OpaqueSpan          (1 << 0)
0998     #define PM3FillConfig2D_MultiRXBlit         (1 << 1)
0999     #define PM3FillConfig2D_UserScissorEnable       (1 << 2)
1000     #define PM3FillConfig2D_FBDestReadEnable        (1 << 3)
1001     #define PM3FillConfig2D_AlphaBlendEnable        (1 << 4)
1002     #define PM3FillConfig2D_DitherEnable            (1 << 5)
1003     #define PM3FillConfig2D_ForegroundROPEnable     (1 << 6)
1004     #define PM3FillConfig2D_ForegroundROP(rop)  (((rop) & 0xf) << 7)
1005     #define PM3FillConfig2D_BackgroundROPEnable     (1 << 11)
1006     #define PM3FillConfig2D_BackgroundROP(rop)  (((rop) & 0xf) << 12)
1007     #define PM3FillConfig2D_UseConstantSource       (1 << 16)
1008     #define PM3FillConfig2D_FBWriteEnable           (1 << 17)
1009     #define PM3FillConfig2D_Blocking            (1 << 18)
1010     #define PM3FillConfig2D_ExternalSourceData      (1 << 19)
1011     #define PM3FillConfig2D_LUTModeEnable           (1 << 20)
1012 #define PM3FillFBDestReadBufferAddr             0x8310
1013 #define PM3FillFBSourceReadBufferAddr               0x8308
1014 #define PM3FillFBSourceReadBufferOffset             0x8340
1015     #define PM3FillFBSourceReadBufferOffset_XOffset(x) ((x) & 0xffff)
1016     #define PM3FillFBSourceReadBufferOffset_YOffset(y)  \
1017                         (((y) & 0xffff) << 16)
1018 #define PM3FillFBWriteBufferAddr                0x8300
1019 #define PM3FillForegroundColor0                 0x8328
1020 #define PM3FillForegroundColor1                 0x8358
1021 #define PM3FillGlyphPosition                    0x8368
1022     #define PM3FillGlyphPosition_XOffset(x)     ((x) & 0xffff)
1023     #define PM3FillGlyphPosition_YOffset(y)     (((y) & 0xffff) << 16)
1024 #define PM3FillRectanglePosition                0x8348
1025     #define PM3FillRectanglePosition_XOffset(x) ((x) & 0xffff)
1026     #define PM3FillRectanglePosition_YOffset(y) (((y) & 0xffff) << 16)
1027 
1028 /* a few more useful registers & regs value... */
1029 #define PM3Sync                         0x8c40
1030     #define PM3Sync_Tag                 0x188
1031 #define PM3FilterMode                       0x8c00
1032     #define PM3FilterModeSync               0x400
1033 #define PM3OutputFifo                       0x2000
1034 #define PM3StatisticMode                    0x8c08
1035 #define PM3AreaStippleMode                  0x81a0
1036 #define AreaStipplePattern_indexed(i)       (0x8200 + ((i) * 0x8))
1037 
1038 #define PM3DepthMode                        0x89a0
1039 #define PM3StencilMode                      0x8988
1040 #define PM3StencilData                      0x8990
1041 #define PM3TextureReadMode                  0x8670
1042 #define PM3FogMode                      0x8690
1043 #define PM3ChromaTestMode                   0x8f18
1044 #define PM3YUVMode                      0x8f00
1045 #define PM3BitMaskPattern                   0x8068
1046 
1047 /* ***************************** */
1048 /* ***** pm3fb IOCTL const ***** */
1049 /* ***************************** */
1050 #define PM3FBIO_RESETCHIP       0x504D33FF /* 'PM3\377' */
1051 
1052 /* ***************************************** */
1053 /* ***** pm3fb useful define and macro ***** */
1054 /* ***************************************** */
1055 
1056 /* fifo size in chip */
1057 #define PM3_FIFO_SIZE                       120
1058 #define PM3_REGS_SIZE                       0x10000
1059 #define PM3_MAX_PIXCLOCK                    300000
1060 
1061 #endif /* PM3FB_H */