Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  linux/drivers/video/cyber2000fb.h
0004  *
0005  *  Copyright (C) 1998-2000 Russell King
0006  *
0007  * Integraphics Cyber2000 frame buffer device
0008  */
0009 
0010 /*
0011  * Internal CyberPro sizes and offsets.
0012  */
0013 #define MMIO_OFFSET 0x00800000
0014 #define MMIO_SIZE   0x000c0000
0015 
0016 #define NR_PALETTE  256
0017 
0018 #if defined(DEBUG) && defined(CONFIG_DEBUG_LL)
0019 static void debug_printf(char *fmt, ...)
0020 {
0021     extern void printascii(const char *);
0022     char buffer[128];
0023     va_list ap;
0024 
0025     va_start(ap, fmt);
0026     vsprintf(buffer, fmt, ap);
0027     va_end(ap);
0028 
0029     printascii(buffer);
0030 }
0031 #else
0032 #define debug_printf(x...) do { } while (0)
0033 #endif
0034 
0035 #define RAMDAC_RAMPWRDN     0x01
0036 #define RAMDAC_DAC8BIT      0x02
0037 #define RAMDAC_VREFEN       0x04
0038 #define RAMDAC_BYPASS       0x10
0039 #define RAMDAC_DACPWRDN     0x40
0040 
0041 #define EXT_CRT_VRTOFL      0x11
0042 #define EXT_CRT_VRTOFL_LINECOMP10   0x10
0043 #define EXT_CRT_VRTOFL_INTERLACE    0x20
0044 
0045 #define EXT_CRT_IRQ     0x12
0046 #define EXT_CRT_IRQ_ENABLE      0x01
0047 #define EXT_CRT_IRQ_ACT_HIGH        0x04
0048 
0049 #define EXT_CRT_TEST        0x13
0050 
0051 #define EXT_SYNC_CTL        0x16
0052 #define EXT_SYNC_CTL_HS_NORMAL      0x00
0053 #define EXT_SYNC_CTL_HS_0       0x01
0054 #define EXT_SYNC_CTL_HS_1       0x02
0055 #define EXT_SYNC_CTL_HS_HSVS        0x03
0056 #define EXT_SYNC_CTL_VS_NORMAL      0x00
0057 #define EXT_SYNC_CTL_VS_0       0x04
0058 #define EXT_SYNC_CTL_VS_1       0x08
0059 #define EXT_SYNC_CTL_VS_COMP        0x0c
0060 
0061 #define EXT_BUS_CTL     0x30
0062 #define EXT_BUS_CTL_LIN_1MB     0x00
0063 #define EXT_BUS_CTL_LIN_2MB     0x01
0064 #define EXT_BUS_CTL_LIN_4MB     0x02
0065 #define EXT_BUS_CTL_ZEROWAIT        0x04
0066 #define EXT_BUS_CTL_PCIBURST_WRITE  0x20
0067 #define EXT_BUS_CTL_PCIBURST_READ   0x80    /* CyberPro 5000 only */
0068 
0069 #define EXT_SEG_WRITE_PTR   0x31
0070 #define EXT_SEG_READ_PTR    0x32
0071 #define EXT_BIU_MISC        0x33
0072 #define EXT_BIU_MISC_LIN_ENABLE     0x01
0073 #define EXT_BIU_MISC_COP_ENABLE     0x04
0074 #define EXT_BIU_MISC_COP_BFC        0x08
0075 
0076 #define EXT_FUNC_CTL        0x3c
0077 #define EXT_FUNC_CTL_EXTREGENBL     0x80    /* enable access to 0xbcxxx     */
0078 
0079 #define PCI_BM_CTL      0x3e
0080 #define PCI_BM_CTL_ENABLE       0x01    /* enable bus-master            */
0081 #define PCI_BM_CTL_BURST        0x02    /* enable burst             */
0082 #define PCI_BM_CTL_BACK2BACK        0x04    /* enable back to back          */
0083 #define PCI_BM_CTL_DUMMY        0x08    /* insert dummy cycle           */
0084 
0085 #define X_V2_VID_MEM_START  0x40
0086 #define X_V2_VID_SRC_WIDTH  0x43
0087 #define X_V2_X_START        0x45
0088 #define X_V2_X_END      0x47
0089 #define X_V2_Y_START        0x49
0090 #define X_V2_Y_END      0x4b
0091 #define X_V2_VID_SRC_WIN_WIDTH  0x4d
0092 
0093 #define Y_V2_DDA_X_INC      0x43
0094 #define Y_V2_DDA_Y_INC      0x47
0095 #define Y_V2_VID_FIFO_CTL   0x49
0096 #define Y_V2_VID_FMT        0x4b
0097 #define Y_V2_VID_DISP_CTL1  0x4c
0098 #define Y_V2_VID_FIFO_CTL1  0x4d
0099 
0100 #define J_X2_VID_MEM_START  0x40
0101 #define J_X2_VID_SRC_WIDTH  0x43
0102 #define J_X2_X_START        0x47
0103 #define J_X2_X_END      0x49
0104 #define J_X2_Y_START        0x4b
0105 #define J_X2_Y_END      0x4d
0106 #define J_X2_VID_SRC_WIN_WIDTH  0x4f
0107 
0108 #define K_X2_DDA_X_INIT     0x40
0109 #define K_X2_DDA_X_INC      0x42
0110 #define K_X2_DDA_Y_INIT     0x44
0111 #define K_X2_DDA_Y_INC      0x46
0112 #define K_X2_VID_FMT        0x48
0113 #define K_X2_VID_DISP_CTL1  0x49
0114 
0115 #define K_CAP_X2_CTL1       0x49
0116 
0117 #define CURS_H_START        0x50
0118 #define CURS_H_PRESET       0x52
0119 #define CURS_V_START        0x53
0120 #define CURS_V_PRESET       0x55
0121 #define CURS_CTL        0x56
0122 
0123 #define EXT_ATTRIB_CTL      0x57
0124 #define EXT_ATTRIB_CTL_EXT      0x01
0125 
0126 #define EXT_OVERSCAN_RED    0x58
0127 #define EXT_OVERSCAN_GREEN  0x59
0128 #define EXT_OVERSCAN_BLUE   0x5a
0129 
0130 #define CAP_X_START     0x60
0131 #define CAP_X_END       0x62
0132 #define CAP_Y_START     0x64
0133 #define CAP_Y_END       0x66
0134 #define CAP_DDA_X_INIT      0x68
0135 #define CAP_DDA_X_INC       0x6a
0136 #define CAP_DDA_Y_INIT      0x6c
0137 #define CAP_DDA_Y_INC       0x6e
0138 
0139 #define EXT_MEM_CTL0        0x70
0140 #define EXT_MEM_CTL0_7CLK       0x01
0141 #define EXT_MEM_CTL0_RAS_1      0x02
0142 #define EXT_MEM_CTL0_RAS2CAS_1      0x04
0143 #define EXT_MEM_CTL0_MULTCAS        0x08
0144 #define EXT_MEM_CTL0_ASYM       0x10
0145 #define EXT_MEM_CTL0_CAS1ON     0x20
0146 #define EXT_MEM_CTL0_FIFOFLUSH      0x40
0147 #define EXT_MEM_CTL0_SEQRESET       0x80
0148 
0149 #define EXT_MEM_CTL1        0x71
0150 #define EXT_MEM_CTL1_PAR        0x00
0151 #define EXT_MEM_CTL1_SERPAR     0x01
0152 #define EXT_MEM_CTL1_SER        0x03
0153 #define EXT_MEM_CTL1_SYNC       0x04
0154 #define EXT_MEM_CTL1_VRAM       0x08
0155 #define EXT_MEM_CTL1_4K_REFRESH     0x10
0156 #define EXT_MEM_CTL1_256Kx4     0x00
0157 #define EXT_MEM_CTL1_512Kx8     0x40
0158 #define EXT_MEM_CTL1_1Mx16      0x60
0159 
0160 #define EXT_MEM_CTL2        0x72
0161 #define MEM_CTL2_SIZE_1MB       0x00
0162 #define MEM_CTL2_SIZE_2MB       0x01
0163 #define MEM_CTL2_SIZE_4MB       0x02
0164 #define MEM_CTL2_SIZE_MASK      0x03
0165 #define MEM_CTL2_64BIT          0x04
0166 
0167 #define EXT_HIDDEN_CTL1     0x73
0168 
0169 #define EXT_FIFO_CTL        0x74
0170 
0171 #define EXT_SEQ_MISC        0x77
0172 #define EXT_SEQ_MISC_8          0x01
0173 #define EXT_SEQ_MISC_16_RGB565      0x02
0174 #define EXT_SEQ_MISC_32         0x03
0175 #define EXT_SEQ_MISC_24_RGB888      0x04
0176 #define EXT_SEQ_MISC_16_RGB555      0x06
0177 #define EXT_SEQ_MISC_8_RGB332       0x09
0178 #define EXT_SEQ_MISC_16_RGB444      0x0a
0179 
0180 #define EXT_HIDDEN_CTL4     0x7a
0181 
0182 #define CURS_MEM_START      0x7e        /* bits 23..12 */
0183 
0184 #define CAP_PIP_X_START     0x80
0185 #define CAP_PIP_X_END       0x82
0186 #define CAP_PIP_Y_START     0x84
0187 #define CAP_PIP_Y_END       0x86
0188 
0189 #define EXT_CAP_CTL1        0x88
0190 
0191 #define EXT_CAP_CTL2        0x89
0192 #define EXT_CAP_CTL2_ODDFRAMEIRQ    0x01
0193 #define EXT_CAP_CTL2_ANYFRAMEIRQ    0x02
0194 
0195 #define BM_CTRL0        0x9c
0196 #define BM_CTRL1        0x9d
0197 
0198 #define EXT_CAP_MODE1       0xa4
0199 #define EXT_CAP_MODE1_8BIT      0x01    /* enable 8bit capture mode     */
0200 #define EXT_CAP_MODE1_CCIR656       0x02    /* CCIR656 mode             */
0201 #define EXT_CAP_MODE1_IGNOREVGT     0x04    /* ignore VGT               */
0202 #define EXT_CAP_MODE1_ALTFIFO       0x10    /* use alternate FIFO for capture   */
0203 #define EXT_CAP_MODE1_SWAPUV        0x20    /* swap UV bytes            */
0204 #define EXT_CAP_MODE1_MIRRORY       0x40    /* mirror vertically            */
0205 #define EXT_CAP_MODE1_MIRRORX       0x80    /* mirror horizontally          */
0206 
0207 #define EXT_CAP_MODE2       0xa5
0208 #define EXT_CAP_MODE2_CCIRINVOE     0x01
0209 #define EXT_CAP_MODE2_CCIRINVVGT    0x02
0210 #define EXT_CAP_MODE2_CCIRINVHGT    0x04
0211 #define EXT_CAP_MODE2_CCIRINVDG     0x08
0212 #define EXT_CAP_MODE2_DATEND        0x10
0213 #define EXT_CAP_MODE2_CCIRDGH       0x20
0214 #define EXT_CAP_MODE2_FIXSONY       0x40
0215 #define EXT_CAP_MODE2_SYNCFREEZE    0x80
0216 
0217 #define EXT_TV_CTL      0xae
0218 
0219 #define EXT_DCLK_MULT       0xb0
0220 #define EXT_DCLK_DIV        0xb1
0221 #define EXT_DCLK_DIV_VFSEL      0x20
0222 #define EXT_MCLK_MULT       0xb2
0223 #define EXT_MCLK_DIV        0xb3
0224 
0225 #define EXT_LATCH1      0xb5
0226 #define EXT_LATCH1_VAFC_EN      0x01    /* enable VAFC              */
0227 
0228 #define EXT_FEATURE     0xb7
0229 #define EXT_FEATURE_BUS_MASK        0x07    /* host bus mask            */
0230 #define EXT_FEATURE_BUS_PCI     0x00
0231 #define EXT_FEATURE_BUS_VL_STD      0x04
0232 #define EXT_FEATURE_BUS_VL_LINEAR   0x05
0233 #define EXT_FEATURE_1682        0x20    /* IGS 1682 compatibility       */
0234 
0235 #define EXT_LATCH2      0xb6
0236 #define EXT_LATCH2_I2C_CLKEN        0x10
0237 #define EXT_LATCH2_I2C_CLK      0x20
0238 #define EXT_LATCH2_I2C_DATEN        0x40
0239 #define EXT_LATCH2_I2C_DAT      0x80
0240 
0241 #define EXT_XT_CTL      0xbe
0242 #define EXT_XT_CAP16            0x04
0243 #define EXT_XT_LINEARFB         0x08
0244 #define EXT_XT_PAL          0x10
0245 
0246 #define EXT_MEM_START       0xc0        /* ext start address 21 bits        */
0247 #define HOR_PHASE_SHIFT     0xc2        /* high 3 bits              */
0248 #define EXT_SRC_WIDTH       0xc3        /* ext offset phase  10 bits        */
0249 #define EXT_SRC_HEIGHT      0xc4        /* high 6 bits              */
0250 #define EXT_X_START     0xc5        /* ext->screen, 16 bits         */
0251 #define EXT_X_END       0xc7        /* ext->screen, 16 bits         */
0252 #define EXT_Y_START     0xc9        /* ext->screen, 16 bits         */
0253 #define EXT_Y_END       0xcb        /* ext->screen, 16 bits         */
0254 #define EXT_SRC_WIN_WIDTH   0xcd        /* 8 bits               */
0255 #define EXT_COLOUR_COMPARE  0xce        /* 24 bits              */
0256 #define EXT_DDA_X_INIT      0xd1        /* ext->screen 16 bits          */
0257 #define EXT_DDA_X_INC       0xd3        /* ext->screen 16 bits          */
0258 #define EXT_DDA_Y_INIT      0xd5        /* ext->screen 16 bits          */
0259 #define EXT_DDA_Y_INC       0xd7        /* ext->screen 16 bits          */
0260 
0261 #define EXT_VID_FIFO_CTL    0xd9
0262 
0263 #define EXT_VID_FMT     0xdb
0264 #define EXT_VID_FMT_YUV422      0x00    /* formats - does this cause conversion? */
0265 #define EXT_VID_FMT_RGB555      0x01
0266 #define EXT_VID_FMT_RGB565      0x02
0267 #define EXT_VID_FMT_RGB888_24       0x03
0268 #define EXT_VID_FMT_RGB888_32       0x04
0269 #define EXT_VID_FMT_RGB8        0x05
0270 #define EXT_VID_FMT_RGB4444     0x06
0271 #define EXT_VID_FMT_RGB8T       0x07
0272 #define EXT_VID_FMT_DUP_PIX_ZOON    0x08    /* duplicate pixel zoom         */
0273 #define EXT_VID_FMT_MOD_3RD_PIX     0x20    /* modify 3rd duplicated pixel      */
0274 #define EXT_VID_FMT_DBL_H_PIX       0x40    /* double horiz pixels          */
0275 #define EXT_VID_FMT_YUV128      0x80    /* YUV data offset by 128       */
0276 
0277 #define EXT_VID_DISP_CTL1   0xdc
0278 #define EXT_VID_DISP_CTL1_INTRAM    0x01    /* video pixels go to internal RAM  */
0279 #define EXT_VID_DISP_CTL1_IGNORE_CCOMP  0x02    /* ignore colour compare registers  */
0280 #define EXT_VID_DISP_CTL1_NOCLIP    0x04    /* do not clip to 16235,16240       */
0281 #define EXT_VID_DISP_CTL1_UV_AVG    0x08    /* U/V data is averaged         */
0282 #define EXT_VID_DISP_CTL1_Y128      0x10    /* Y data offset by 128 (if YUV128 set) */
0283 #define EXT_VID_DISP_CTL1_VINTERPOL_OFF 0x20    /* disable vertical interpolation   */
0284 #define EXT_VID_DISP_CTL1_FULL_WIN  0x40    /* video out window full        */
0285 #define EXT_VID_DISP_CTL1_ENABLE_WINDOW 0x80    /* enable video window          */
0286 
0287 #define EXT_VID_FIFO_CTL1   0xdd
0288 #define EXT_VID_FIFO_CTL1_OE_HIGH   0x02
0289 #define EXT_VID_FIFO_CTL1_INTERLEAVE    0x04    /* enable interleaved memory read   */
0290 
0291 #define EXT_ROM_UCB4GH      0xe5
0292 #define EXT_ROM_UCB4GH_FREEZE       0x02    /* capture frozen           */
0293 #define EXT_ROM_UCB4GH_ODDFRAME     0x04    /* 1 = odd frame captured       */
0294 #define EXT_ROM_UCB4GH_1HL      0x08    /* first horizonal line after VGT falling edge */
0295 #define EXT_ROM_UCB4GH_ODD      0x10    /* odd frame indicator          */
0296 #define EXT_ROM_UCB4GH_INTSTAT      0x20    /* video interrupt          */
0297 
0298 #define VFAC_CTL1       0xe8
0299 #define VFAC_CTL1_CAPTURE       0x01    /* capture enable (only when VSYNC high)*/
0300 #define VFAC_CTL1_VFAC_ENABLE       0x02    /* vfac enable              */
0301 #define VFAC_CTL1_FREEZE_CAPTURE    0x04    /* freeze capture           */
0302 #define VFAC_CTL1_FREEZE_CAPTURE_SYNC   0x08    /* sync freeze capture          */
0303 #define VFAC_CTL1_VALIDFRAME_SRC    0x10    /* select valid frame source        */
0304 #define VFAC_CTL1_PHILIPS       0x40    /* select Philips mode          */
0305 #define VFAC_CTL1_MODVINTERPOLCLK   0x80    /* modify vertical interpolation clocl  */
0306 
0307 #define VFAC_CTL2       0xe9
0308 #define VFAC_CTL2_INVERT_VIDDATAVALID   0x01    /* invert video data valid      */
0309 #define VFAC_CTL2_INVERT_GRAPHREADY 0x02    /* invert graphic ready output sig  */
0310 #define VFAC_CTL2_INVERT_DATACLK    0x04    /* invert data clock signal     */
0311 #define VFAC_CTL2_INVERT_HSYNC      0x08    /* invert hsync input           */
0312 #define VFAC_CTL2_INVERT_VSYNC      0x10    /* invert vsync input           */
0313 #define VFAC_CTL2_INVERT_FRAME      0x20    /* invert frame odd/even input      */
0314 #define VFAC_CTL2_INVERT_BLANK      0x40    /* invert blank output          */
0315 #define VFAC_CTL2_INVERT_OVSYNC     0x80    /* invert other vsync input     */
0316 
0317 #define VFAC_CTL3       0xea
0318 #define VFAC_CTL3_CAP_LARGE_FIFO    0x01    /* large capture fifo           */
0319 #define VFAC_CTL3_CAP_INTERLACE     0x02    /* capture odd and even fields      */
0320 #define VFAC_CTL3_CAP_HOLD_4NS      0x00    /* hold capture data for 4ns        */
0321 #define VFAC_CTL3_CAP_HOLD_2NS      0x04    /* hold capture data for 2ns        */
0322 #define VFAC_CTL3_CAP_HOLD_6NS      0x08    /* hold capture data for 6ns        */
0323 #define VFAC_CTL3_CAP_HOLD_0NS      0x0c    /* hold capture data for 0ns        */
0324 #define VFAC_CTL3_CHROMAKEY     0x20    /* capture data will be chromakeyed */
0325 #define VFAC_CTL3_CAP_IRQ       0x40    /* enable capture interrupt     */
0326 
0327 #define CAP_MEM_START       0xeb        /* 18 bits              */
0328 #define CAP_MAP_WIDTH       0xed        /* high 6 bits              */
0329 #define CAP_PITCH       0xee        /* 8 bits               */
0330 
0331 #define CAP_CTL_MISC        0xef
0332 #define CAP_CTL_MISC_HDIV       0x01
0333 #define CAP_CTL_MISC_HDIV4      0x02
0334 #define CAP_CTL_MISC_ODDEVEN        0x04
0335 #define CAP_CTL_MISC_HSYNCDIV2      0x08
0336 #define CAP_CTL_MISC_SYNCTZHIGH     0x10
0337 #define CAP_CTL_MISC_SYNCTZOR       0x20
0338 #define CAP_CTL_MISC_DISPUSED       0x80
0339 
0340 #define REG_BANK        0xfa
0341 #define REG_BANK_X          0x00
0342 #define REG_BANK_Y          0x01
0343 #define REG_BANK_W          0x02
0344 #define REG_BANK_T          0x03
0345 #define REG_BANK_J          0x04
0346 #define REG_BANK_K          0x05
0347 
0348 /*
0349  * Bus-master
0350  */
0351 #define BM_VID_ADDR_LOW     0xbc040
0352 #define BM_VID_ADDR_HIGH    0xbc044
0353 #define BM_ADDRESS_LOW      0xbc080
0354 #define BM_ADDRESS_HIGH     0xbc084
0355 #define BM_LENGTH       0xbc088
0356 #define BM_CONTROL      0xbc08c
0357 #define BM_CONTROL_ENABLE       0x01    /* enable transfer          */
0358 #define BM_CONTROL_IRQEN        0x02    /* enable IRQ at end of transfer    */
0359 #define BM_CONTROL_INIT         0x04    /* initialise status & count        */
0360 #define BM_COUNT        0xbc090     /* read-only                */
0361 
0362 /*
0363  * TV registers
0364  */
0365 #define TV_VBLANK_EVEN_START    0xbe43c
0366 #define TV_VBLANK_EVEN_END  0xbe440
0367 #define TV_VBLANK_ODD_START 0xbe444
0368 #define TV_VBLANK_ODD_END   0xbe448
0369 #define TV_SYNC_YGAIN       0xbe44c
0370 #define TV_UV_GAIN      0xbe450
0371 #define TV_PED_UVDET        0xbe454
0372 #define TV_UV_BURST_AMP     0xbe458
0373 #define TV_HSYNC_START      0xbe45c
0374 #define TV_HSYNC_END        0xbe460
0375 #define TV_Y_DELAY1     0xbe464
0376 #define TV_Y_DELAY2     0xbe468
0377 #define TV_UV_DELAY1        0xbe46c
0378 #define TV_BURST_START      0xbe470
0379 #define TV_BURST_END        0xbe474
0380 #define TV_HBLANK_START     0xbe478
0381 #define TV_HBLANK_END       0xbe47c
0382 #define TV_PED_EVEN_START   0xbe480
0383 #define TV_PED_EVEN_END     0xbe484
0384 #define TV_PED_ODD_START    0xbe488
0385 #define TV_PED_ODD_END      0xbe48c
0386 #define TV_VSYNC_EVEN_START 0xbe490
0387 #define TV_VSYNC_EVEN_END   0xbe494
0388 #define TV_VSYNC_ODD_START  0xbe498
0389 #define TV_VSYNC_ODD_END    0xbe49c
0390 #define TV_SCFL         0xbe4a0
0391 #define TV_SCFH         0xbe4a4
0392 #define TV_SCP          0xbe4a8
0393 #define TV_DELAYBYPASS      0xbe4b4
0394 #define TV_EQL_END      0xbe4bc
0395 #define TV_SERR_START       0xbe4c0
0396 #define TV_SERR_END     0xbe4c4
0397 #define TV_CTL          0xbe4dc /* reflects a previous register- MVFCLR, MVPCLR etc P241*/
0398 #define TV_VSYNC_VGA_HS     0xbe4e8
0399 #define TV_FLICK_XMIN       0xbe514
0400 #define TV_FLICK_XMAX       0xbe518
0401 #define TV_FLICK_YMIN       0xbe51c
0402 #define TV_FLICK_YMAX       0xbe520
0403 
0404 /*
0405  * Graphics Co-processor
0406  */
0407 #define CO_REG_CONTROL      0xbf011
0408 #define CO_CTRL_BUSY            0x80
0409 #define CO_CTRL_CMDFULL         0x04
0410 #define CO_CTRL_FIFOEMPTY       0x02
0411 #define CO_CTRL_READY           0x01
0412 
0413 #define CO_REG_SRC_WIDTH    0xbf018
0414 #define CO_REG_PIXFMT       0xbf01c
0415 #define CO_PIXFMT_32BPP         0x03
0416 #define CO_PIXFMT_24BPP         0x02
0417 #define CO_PIXFMT_16BPP         0x01
0418 #define CO_PIXFMT_8BPP          0x00
0419 
0420 #define CO_REG_FGMIX        0xbf048
0421 #define CO_FG_MIX_ZERO          0x00
0422 #define CO_FG_MIX_SRC_AND_DST       0x01
0423 #define CO_FG_MIX_SRC_AND_NDST      0x02
0424 #define CO_FG_MIX_SRC           0x03
0425 #define CO_FG_MIX_NSRC_AND_DST      0x04
0426 #define CO_FG_MIX_DST           0x05
0427 #define CO_FG_MIX_SRC_XOR_DST       0x06
0428 #define CO_FG_MIX_SRC_OR_DST        0x07
0429 #define CO_FG_MIX_NSRC_AND_NDST     0x08
0430 #define CO_FG_MIX_SRC_XOR_NDST      0x09
0431 #define CO_FG_MIX_NDST          0x0a
0432 #define CO_FG_MIX_SRC_OR_NDST       0x0b
0433 #define CO_FG_MIX_NSRC          0x0c
0434 #define CO_FG_MIX_NSRC_OR_DST       0x0d
0435 #define CO_FG_MIX_NSRC_OR_NDST      0x0e
0436 #define CO_FG_MIX_ONES          0x0f
0437 
0438 #define CO_REG_FGCOLOUR     0xbf058
0439 #define CO_REG_BGCOLOUR     0xbf05c
0440 #define CO_REG_PIXWIDTH     0xbf060
0441 #define CO_REG_PIXHEIGHT    0xbf062
0442 #define CO_REG_X_PHASE      0xbf078
0443 #define CO_REG_CMD_L        0xbf07c
0444 #define CO_CMD_L_PATTERN_FGCOL      0x8000
0445 #define CO_CMD_L_INC_LEFT       0x0004
0446 #define CO_CMD_L_INC_UP         0x0002
0447 
0448 #define CO_REG_CMD_H        0xbf07e
0449 #define CO_CMD_H_BGSRCMAP       0x8000  /* otherwise bg colour */
0450 #define CO_CMD_H_FGSRCMAP       0x2000  /* otherwise fg colour */
0451 #define CO_CMD_H_BLITTER        0x0800
0452 
0453 #define CO_REG_SRC1_PTR     0xbf170
0454 #define CO_REG_SRC2_PTR     0xbf174
0455 #define CO_REG_DEST_PTR     0xbf178
0456 #define CO_REG_DEST_WIDTH   0xbf218
0457 
0458 /*
0459  * Private structure
0460  */
0461 struct cfb_info;
0462 
0463 struct cyberpro_info {
0464     struct device   *dev;
0465     struct i2c_adapter *i2c;
0466     unsigned char   __iomem *regs;
0467     char        __iomem *fb;
0468     char        dev_name[32];
0469     unsigned int    fb_size;
0470     unsigned int    chip_id;
0471     unsigned int    irq;
0472 
0473     /*
0474      * The following is a pointer to be passed into the
0475      * functions below.  The modules outside the main
0476      * cyber2000fb.c driver have no knowledge as to what
0477      * is within this structure.
0478      */
0479     struct cfb_info *info;
0480 };
0481 
0482 #define ID_IGA_1682     0
0483 #define ID_CYBERPRO_2000    1
0484 #define ID_CYBERPRO_2010    2
0485 #define ID_CYBERPRO_5000    3
0486 
0487 /*
0488  * Note! Writing to the Cyber20x0 registers from an interrupt
0489  * routine is definitely a bad idea atm.
0490  */
0491 int cyber2000fb_attach(struct cyberpro_info *info, int idx);
0492 void cyber2000fb_detach(int idx);
0493 void cyber2000fb_enable_extregs(struct cfb_info *cfb);
0494 void cyber2000fb_disable_extregs(struct cfb_info *cfb);