0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
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
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
0078
0079 #define PCI_BM_CTL 0x3e
0080 #define PCI_BM_CTL_ENABLE 0x01
0081 #define PCI_BM_CTL_BURST 0x02
0082 #define PCI_BM_CTL_BACK2BACK 0x04
0083 #define PCI_BM_CTL_DUMMY 0x08
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
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
0200 #define EXT_CAP_MODE1_CCIR656 0x02
0201 #define EXT_CAP_MODE1_IGNOREVGT 0x04
0202 #define EXT_CAP_MODE1_ALTFIFO 0x10
0203 #define EXT_CAP_MODE1_SWAPUV 0x20
0204 #define EXT_CAP_MODE1_MIRRORY 0x40
0205 #define EXT_CAP_MODE1_MIRRORX 0x80
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
0227
0228 #define EXT_FEATURE 0xb7
0229 #define EXT_FEATURE_BUS_MASK 0x07
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
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
0247 #define HOR_PHASE_SHIFT 0xc2
0248 #define EXT_SRC_WIDTH 0xc3
0249 #define EXT_SRC_HEIGHT 0xc4
0250 #define EXT_X_START 0xc5
0251 #define EXT_X_END 0xc7
0252 #define EXT_Y_START 0xc9
0253 #define EXT_Y_END 0xcb
0254 #define EXT_SRC_WIN_WIDTH 0xcd
0255 #define EXT_COLOUR_COMPARE 0xce
0256 #define EXT_DDA_X_INIT 0xd1
0257 #define EXT_DDA_X_INC 0xd3
0258 #define EXT_DDA_Y_INIT 0xd5
0259 #define EXT_DDA_Y_INC 0xd7
0260
0261 #define EXT_VID_FIFO_CTL 0xd9
0262
0263 #define EXT_VID_FMT 0xdb
0264 #define EXT_VID_FMT_YUV422 0x00
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
0273 #define EXT_VID_FMT_MOD_3RD_PIX 0x20
0274 #define EXT_VID_FMT_DBL_H_PIX 0x40
0275 #define EXT_VID_FMT_YUV128 0x80
0276
0277 #define EXT_VID_DISP_CTL1 0xdc
0278 #define EXT_VID_DISP_CTL1_INTRAM 0x01
0279 #define EXT_VID_DISP_CTL1_IGNORE_CCOMP 0x02
0280 #define EXT_VID_DISP_CTL1_NOCLIP 0x04
0281 #define EXT_VID_DISP_CTL1_UV_AVG 0x08
0282 #define EXT_VID_DISP_CTL1_Y128 0x10
0283 #define EXT_VID_DISP_CTL1_VINTERPOL_OFF 0x20
0284 #define EXT_VID_DISP_CTL1_FULL_WIN 0x40
0285 #define EXT_VID_DISP_CTL1_ENABLE_WINDOW 0x80
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
0290
0291 #define EXT_ROM_UCB4GH 0xe5
0292 #define EXT_ROM_UCB4GH_FREEZE 0x02
0293 #define EXT_ROM_UCB4GH_ODDFRAME 0x04
0294 #define EXT_ROM_UCB4GH_1HL 0x08
0295 #define EXT_ROM_UCB4GH_ODD 0x10
0296 #define EXT_ROM_UCB4GH_INTSTAT 0x20
0297
0298 #define VFAC_CTL1 0xe8
0299 #define VFAC_CTL1_CAPTURE 0x01
0300 #define VFAC_CTL1_VFAC_ENABLE 0x02
0301 #define VFAC_CTL1_FREEZE_CAPTURE 0x04
0302 #define VFAC_CTL1_FREEZE_CAPTURE_SYNC 0x08
0303 #define VFAC_CTL1_VALIDFRAME_SRC 0x10
0304 #define VFAC_CTL1_PHILIPS 0x40
0305 #define VFAC_CTL1_MODVINTERPOLCLK 0x80
0306
0307 #define VFAC_CTL2 0xe9
0308 #define VFAC_CTL2_INVERT_VIDDATAVALID 0x01
0309 #define VFAC_CTL2_INVERT_GRAPHREADY 0x02
0310 #define VFAC_CTL2_INVERT_DATACLK 0x04
0311 #define VFAC_CTL2_INVERT_HSYNC 0x08
0312 #define VFAC_CTL2_INVERT_VSYNC 0x10
0313 #define VFAC_CTL2_INVERT_FRAME 0x20
0314 #define VFAC_CTL2_INVERT_BLANK 0x40
0315 #define VFAC_CTL2_INVERT_OVSYNC 0x80
0316
0317 #define VFAC_CTL3 0xea
0318 #define VFAC_CTL3_CAP_LARGE_FIFO 0x01
0319 #define VFAC_CTL3_CAP_INTERLACE 0x02
0320 #define VFAC_CTL3_CAP_HOLD_4NS 0x00
0321 #define VFAC_CTL3_CAP_HOLD_2NS 0x04
0322 #define VFAC_CTL3_CAP_HOLD_6NS 0x08
0323 #define VFAC_CTL3_CAP_HOLD_0NS 0x0c
0324 #define VFAC_CTL3_CHROMAKEY 0x20
0325 #define VFAC_CTL3_CAP_IRQ 0x40
0326
0327 #define CAP_MEM_START 0xeb
0328 #define CAP_MAP_WIDTH 0xed
0329 #define CAP_PITCH 0xee
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
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
0358 #define BM_CONTROL_IRQEN 0x02
0359 #define BM_CONTROL_INIT 0x04
0360 #define BM_COUNT 0xbc090
0361
0362
0363
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
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
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
0450 #define CO_CMD_H_FGSRCMAP 0x2000
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
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
0475
0476
0477
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
0489
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);