18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * linux/drivers/video/cyber2000fb.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 1998-2000 Russell King 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Integraphics Cyber2000 frame buffer device 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci/* 118c2ecf20Sopenharmony_ci * Internal CyberPro sizes and offsets. 128c2ecf20Sopenharmony_ci */ 138c2ecf20Sopenharmony_ci#define MMIO_OFFSET 0x00800000 148c2ecf20Sopenharmony_ci#define MMIO_SIZE 0x000c0000 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#define NR_PALETTE 256 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#if defined(DEBUG) && defined(CONFIG_DEBUG_LL) 198c2ecf20Sopenharmony_cistatic void debug_printf(char *fmt, ...) 208c2ecf20Sopenharmony_ci{ 218c2ecf20Sopenharmony_ci extern void printascii(const char *); 228c2ecf20Sopenharmony_ci char buffer[128]; 238c2ecf20Sopenharmony_ci va_list ap; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci va_start(ap, fmt); 268c2ecf20Sopenharmony_ci vsprintf(buffer, fmt, ap); 278c2ecf20Sopenharmony_ci va_end(ap); 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci printascii(buffer); 308c2ecf20Sopenharmony_ci} 318c2ecf20Sopenharmony_ci#else 328c2ecf20Sopenharmony_ci#define debug_printf(x...) do { } while (0) 338c2ecf20Sopenharmony_ci#endif 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci#define RAMDAC_RAMPWRDN 0x01 368c2ecf20Sopenharmony_ci#define RAMDAC_DAC8BIT 0x02 378c2ecf20Sopenharmony_ci#define RAMDAC_VREFEN 0x04 388c2ecf20Sopenharmony_ci#define RAMDAC_BYPASS 0x10 398c2ecf20Sopenharmony_ci#define RAMDAC_DACPWRDN 0x40 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci#define EXT_CRT_VRTOFL 0x11 428c2ecf20Sopenharmony_ci#define EXT_CRT_VRTOFL_LINECOMP10 0x10 438c2ecf20Sopenharmony_ci#define EXT_CRT_VRTOFL_INTERLACE 0x20 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci#define EXT_CRT_IRQ 0x12 468c2ecf20Sopenharmony_ci#define EXT_CRT_IRQ_ENABLE 0x01 478c2ecf20Sopenharmony_ci#define EXT_CRT_IRQ_ACT_HIGH 0x04 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci#define EXT_CRT_TEST 0x13 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL 0x16 528c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_HS_NORMAL 0x00 538c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_HS_0 0x01 548c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_HS_1 0x02 558c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_HS_HSVS 0x03 568c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_VS_NORMAL 0x00 578c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_VS_0 0x04 588c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_VS_1 0x08 598c2ecf20Sopenharmony_ci#define EXT_SYNC_CTL_VS_COMP 0x0c 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci#define EXT_BUS_CTL 0x30 628c2ecf20Sopenharmony_ci#define EXT_BUS_CTL_LIN_1MB 0x00 638c2ecf20Sopenharmony_ci#define EXT_BUS_CTL_LIN_2MB 0x01 648c2ecf20Sopenharmony_ci#define EXT_BUS_CTL_LIN_4MB 0x02 658c2ecf20Sopenharmony_ci#define EXT_BUS_CTL_ZEROWAIT 0x04 668c2ecf20Sopenharmony_ci#define EXT_BUS_CTL_PCIBURST_WRITE 0x20 678c2ecf20Sopenharmony_ci#define EXT_BUS_CTL_PCIBURST_READ 0x80 /* CyberPro 5000 only */ 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#define EXT_SEG_WRITE_PTR 0x31 708c2ecf20Sopenharmony_ci#define EXT_SEG_READ_PTR 0x32 718c2ecf20Sopenharmony_ci#define EXT_BIU_MISC 0x33 728c2ecf20Sopenharmony_ci#define EXT_BIU_MISC_LIN_ENABLE 0x01 738c2ecf20Sopenharmony_ci#define EXT_BIU_MISC_COP_ENABLE 0x04 748c2ecf20Sopenharmony_ci#define EXT_BIU_MISC_COP_BFC 0x08 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci#define EXT_FUNC_CTL 0x3c 778c2ecf20Sopenharmony_ci#define EXT_FUNC_CTL_EXTREGENBL 0x80 /* enable access to 0xbcxxx */ 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci#define PCI_BM_CTL 0x3e 808c2ecf20Sopenharmony_ci#define PCI_BM_CTL_ENABLE 0x01 /* enable bus-master */ 818c2ecf20Sopenharmony_ci#define PCI_BM_CTL_BURST 0x02 /* enable burst */ 828c2ecf20Sopenharmony_ci#define PCI_BM_CTL_BACK2BACK 0x04 /* enable back to back */ 838c2ecf20Sopenharmony_ci#define PCI_BM_CTL_DUMMY 0x08 /* insert dummy cycle */ 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci#define X_V2_VID_MEM_START 0x40 868c2ecf20Sopenharmony_ci#define X_V2_VID_SRC_WIDTH 0x43 878c2ecf20Sopenharmony_ci#define X_V2_X_START 0x45 888c2ecf20Sopenharmony_ci#define X_V2_X_END 0x47 898c2ecf20Sopenharmony_ci#define X_V2_Y_START 0x49 908c2ecf20Sopenharmony_ci#define X_V2_Y_END 0x4b 918c2ecf20Sopenharmony_ci#define X_V2_VID_SRC_WIN_WIDTH 0x4d 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci#define Y_V2_DDA_X_INC 0x43 948c2ecf20Sopenharmony_ci#define Y_V2_DDA_Y_INC 0x47 958c2ecf20Sopenharmony_ci#define Y_V2_VID_FIFO_CTL 0x49 968c2ecf20Sopenharmony_ci#define Y_V2_VID_FMT 0x4b 978c2ecf20Sopenharmony_ci#define Y_V2_VID_DISP_CTL1 0x4c 988c2ecf20Sopenharmony_ci#define Y_V2_VID_FIFO_CTL1 0x4d 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci#define J_X2_VID_MEM_START 0x40 1018c2ecf20Sopenharmony_ci#define J_X2_VID_SRC_WIDTH 0x43 1028c2ecf20Sopenharmony_ci#define J_X2_X_START 0x47 1038c2ecf20Sopenharmony_ci#define J_X2_X_END 0x49 1048c2ecf20Sopenharmony_ci#define J_X2_Y_START 0x4b 1058c2ecf20Sopenharmony_ci#define J_X2_Y_END 0x4d 1068c2ecf20Sopenharmony_ci#define J_X2_VID_SRC_WIN_WIDTH 0x4f 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci#define K_X2_DDA_X_INIT 0x40 1098c2ecf20Sopenharmony_ci#define K_X2_DDA_X_INC 0x42 1108c2ecf20Sopenharmony_ci#define K_X2_DDA_Y_INIT 0x44 1118c2ecf20Sopenharmony_ci#define K_X2_DDA_Y_INC 0x46 1128c2ecf20Sopenharmony_ci#define K_X2_VID_FMT 0x48 1138c2ecf20Sopenharmony_ci#define K_X2_VID_DISP_CTL1 0x49 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci#define K_CAP_X2_CTL1 0x49 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci#define CURS_H_START 0x50 1188c2ecf20Sopenharmony_ci#define CURS_H_PRESET 0x52 1198c2ecf20Sopenharmony_ci#define CURS_V_START 0x53 1208c2ecf20Sopenharmony_ci#define CURS_V_PRESET 0x55 1218c2ecf20Sopenharmony_ci#define CURS_CTL 0x56 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci#define EXT_ATTRIB_CTL 0x57 1248c2ecf20Sopenharmony_ci#define EXT_ATTRIB_CTL_EXT 0x01 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci#define EXT_OVERSCAN_RED 0x58 1278c2ecf20Sopenharmony_ci#define EXT_OVERSCAN_GREEN 0x59 1288c2ecf20Sopenharmony_ci#define EXT_OVERSCAN_BLUE 0x5a 1298c2ecf20Sopenharmony_ci 1308c2ecf20Sopenharmony_ci#define CAP_X_START 0x60 1318c2ecf20Sopenharmony_ci#define CAP_X_END 0x62 1328c2ecf20Sopenharmony_ci#define CAP_Y_START 0x64 1338c2ecf20Sopenharmony_ci#define CAP_Y_END 0x66 1348c2ecf20Sopenharmony_ci#define CAP_DDA_X_INIT 0x68 1358c2ecf20Sopenharmony_ci#define CAP_DDA_X_INC 0x6a 1368c2ecf20Sopenharmony_ci#define CAP_DDA_Y_INIT 0x6c 1378c2ecf20Sopenharmony_ci#define CAP_DDA_Y_INC 0x6e 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0 0x70 1408c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_7CLK 0x01 1418c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_RAS_1 0x02 1428c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_RAS2CAS_1 0x04 1438c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_MULTCAS 0x08 1448c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_ASYM 0x10 1458c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_CAS1ON 0x20 1468c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_FIFOFLUSH 0x40 1478c2ecf20Sopenharmony_ci#define EXT_MEM_CTL0_SEQRESET 0x80 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1 0x71 1508c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_PAR 0x00 1518c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_SERPAR 0x01 1528c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_SER 0x03 1538c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_SYNC 0x04 1548c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_VRAM 0x08 1558c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_4K_REFRESH 0x10 1568c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_256Kx4 0x00 1578c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_512Kx8 0x40 1588c2ecf20Sopenharmony_ci#define EXT_MEM_CTL1_1Mx16 0x60 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ci#define EXT_MEM_CTL2 0x72 1618c2ecf20Sopenharmony_ci#define MEM_CTL2_SIZE_1MB 0x00 1628c2ecf20Sopenharmony_ci#define MEM_CTL2_SIZE_2MB 0x01 1638c2ecf20Sopenharmony_ci#define MEM_CTL2_SIZE_4MB 0x02 1648c2ecf20Sopenharmony_ci#define MEM_CTL2_SIZE_MASK 0x03 1658c2ecf20Sopenharmony_ci#define MEM_CTL2_64BIT 0x04 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci#define EXT_HIDDEN_CTL1 0x73 1688c2ecf20Sopenharmony_ci 1698c2ecf20Sopenharmony_ci#define EXT_FIFO_CTL 0x74 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC 0x77 1728c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_8 0x01 1738c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_16_RGB565 0x02 1748c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_32 0x03 1758c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_24_RGB888 0x04 1768c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_16_RGB555 0x06 1778c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_8_RGB332 0x09 1788c2ecf20Sopenharmony_ci#define EXT_SEQ_MISC_16_RGB444 0x0a 1798c2ecf20Sopenharmony_ci 1808c2ecf20Sopenharmony_ci#define EXT_HIDDEN_CTL4 0x7a 1818c2ecf20Sopenharmony_ci 1828c2ecf20Sopenharmony_ci#define CURS_MEM_START 0x7e /* bits 23..12 */ 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ci#define CAP_PIP_X_START 0x80 1858c2ecf20Sopenharmony_ci#define CAP_PIP_X_END 0x82 1868c2ecf20Sopenharmony_ci#define CAP_PIP_Y_START 0x84 1878c2ecf20Sopenharmony_ci#define CAP_PIP_Y_END 0x86 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ci#define EXT_CAP_CTL1 0x88 1908c2ecf20Sopenharmony_ci 1918c2ecf20Sopenharmony_ci#define EXT_CAP_CTL2 0x89 1928c2ecf20Sopenharmony_ci#define EXT_CAP_CTL2_ODDFRAMEIRQ 0x01 1938c2ecf20Sopenharmony_ci#define EXT_CAP_CTL2_ANYFRAMEIRQ 0x02 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci#define BM_CTRL0 0x9c 1968c2ecf20Sopenharmony_ci#define BM_CTRL1 0x9d 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1 0xa4 1998c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_8BIT 0x01 /* enable 8bit capture mode */ 2008c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_CCIR656 0x02 /* CCIR656 mode */ 2018c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_IGNOREVGT 0x04 /* ignore VGT */ 2028c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_ALTFIFO 0x10 /* use alternate FIFO for capture */ 2038c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_SWAPUV 0x20 /* swap UV bytes */ 2048c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_MIRRORY 0x40 /* mirror vertically */ 2058c2ecf20Sopenharmony_ci#define EXT_CAP_MODE1_MIRRORX 0x80 /* mirror horizontally */ 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2 0xa5 2088c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_CCIRINVOE 0x01 2098c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_CCIRINVVGT 0x02 2108c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_CCIRINVHGT 0x04 2118c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_CCIRINVDG 0x08 2128c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_DATEND 0x10 2138c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_CCIRDGH 0x20 2148c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_FIXSONY 0x40 2158c2ecf20Sopenharmony_ci#define EXT_CAP_MODE2_SYNCFREEZE 0x80 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ci#define EXT_TV_CTL 0xae 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_ci#define EXT_DCLK_MULT 0xb0 2208c2ecf20Sopenharmony_ci#define EXT_DCLK_DIV 0xb1 2218c2ecf20Sopenharmony_ci#define EXT_DCLK_DIV_VFSEL 0x20 2228c2ecf20Sopenharmony_ci#define EXT_MCLK_MULT 0xb2 2238c2ecf20Sopenharmony_ci#define EXT_MCLK_DIV 0xb3 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_ci#define EXT_LATCH1 0xb5 2268c2ecf20Sopenharmony_ci#define EXT_LATCH1_VAFC_EN 0x01 /* enable VAFC */ 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_ci#define EXT_FEATURE 0xb7 2298c2ecf20Sopenharmony_ci#define EXT_FEATURE_BUS_MASK 0x07 /* host bus mask */ 2308c2ecf20Sopenharmony_ci#define EXT_FEATURE_BUS_PCI 0x00 2318c2ecf20Sopenharmony_ci#define EXT_FEATURE_BUS_VL_STD 0x04 2328c2ecf20Sopenharmony_ci#define EXT_FEATURE_BUS_VL_LINEAR 0x05 2338c2ecf20Sopenharmony_ci#define EXT_FEATURE_1682 0x20 /* IGS 1682 compatibility */ 2348c2ecf20Sopenharmony_ci 2358c2ecf20Sopenharmony_ci#define EXT_LATCH2 0xb6 2368c2ecf20Sopenharmony_ci#define EXT_LATCH2_I2C_CLKEN 0x10 2378c2ecf20Sopenharmony_ci#define EXT_LATCH2_I2C_CLK 0x20 2388c2ecf20Sopenharmony_ci#define EXT_LATCH2_I2C_DATEN 0x40 2398c2ecf20Sopenharmony_ci#define EXT_LATCH2_I2C_DAT 0x80 2408c2ecf20Sopenharmony_ci 2418c2ecf20Sopenharmony_ci#define EXT_XT_CTL 0xbe 2428c2ecf20Sopenharmony_ci#define EXT_XT_CAP16 0x04 2438c2ecf20Sopenharmony_ci#define EXT_XT_LINEARFB 0x08 2448c2ecf20Sopenharmony_ci#define EXT_XT_PAL 0x10 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ci#define EXT_MEM_START 0xc0 /* ext start address 21 bits */ 2478c2ecf20Sopenharmony_ci#define HOR_PHASE_SHIFT 0xc2 /* high 3 bits */ 2488c2ecf20Sopenharmony_ci#define EXT_SRC_WIDTH 0xc3 /* ext offset phase 10 bits */ 2498c2ecf20Sopenharmony_ci#define EXT_SRC_HEIGHT 0xc4 /* high 6 bits */ 2508c2ecf20Sopenharmony_ci#define EXT_X_START 0xc5 /* ext->screen, 16 bits */ 2518c2ecf20Sopenharmony_ci#define EXT_X_END 0xc7 /* ext->screen, 16 bits */ 2528c2ecf20Sopenharmony_ci#define EXT_Y_START 0xc9 /* ext->screen, 16 bits */ 2538c2ecf20Sopenharmony_ci#define EXT_Y_END 0xcb /* ext->screen, 16 bits */ 2548c2ecf20Sopenharmony_ci#define EXT_SRC_WIN_WIDTH 0xcd /* 8 bits */ 2558c2ecf20Sopenharmony_ci#define EXT_COLOUR_COMPARE 0xce /* 24 bits */ 2568c2ecf20Sopenharmony_ci#define EXT_DDA_X_INIT 0xd1 /* ext->screen 16 bits */ 2578c2ecf20Sopenharmony_ci#define EXT_DDA_X_INC 0xd3 /* ext->screen 16 bits */ 2588c2ecf20Sopenharmony_ci#define EXT_DDA_Y_INIT 0xd5 /* ext->screen 16 bits */ 2598c2ecf20Sopenharmony_ci#define EXT_DDA_Y_INC 0xd7 /* ext->screen 16 bits */ 2608c2ecf20Sopenharmony_ci 2618c2ecf20Sopenharmony_ci#define EXT_VID_FIFO_CTL 0xd9 2628c2ecf20Sopenharmony_ci 2638c2ecf20Sopenharmony_ci#define EXT_VID_FMT 0xdb 2648c2ecf20Sopenharmony_ci#define EXT_VID_FMT_YUV422 0x00 /* formats - does this cause conversion? */ 2658c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB555 0x01 2668c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB565 0x02 2678c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB888_24 0x03 2688c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB888_32 0x04 2698c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB8 0x05 2708c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB4444 0x06 2718c2ecf20Sopenharmony_ci#define EXT_VID_FMT_RGB8T 0x07 2728c2ecf20Sopenharmony_ci#define EXT_VID_FMT_DUP_PIX_ZOON 0x08 /* duplicate pixel zoom */ 2738c2ecf20Sopenharmony_ci#define EXT_VID_FMT_MOD_3RD_PIX 0x20 /* modify 3rd duplicated pixel */ 2748c2ecf20Sopenharmony_ci#define EXT_VID_FMT_DBL_H_PIX 0x40 /* double horiz pixels */ 2758c2ecf20Sopenharmony_ci#define EXT_VID_FMT_YUV128 0x80 /* YUV data offset by 128 */ 2768c2ecf20Sopenharmony_ci 2778c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1 0xdc 2788c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_INTRAM 0x01 /* video pixels go to internal RAM */ 2798c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_IGNORE_CCOMP 0x02 /* ignore colour compare registers */ 2808c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_NOCLIP 0x04 /* do not clip to 16235,16240 */ 2818c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_UV_AVG 0x08 /* U/V data is averaged */ 2828c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_Y128 0x10 /* Y data offset by 128 (if YUV128 set) */ 2838c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_VINTERPOL_OFF 0x20 /* disable vertical interpolation */ 2848c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_FULL_WIN 0x40 /* video out window full */ 2858c2ecf20Sopenharmony_ci#define EXT_VID_DISP_CTL1_ENABLE_WINDOW 0x80 /* enable video window */ 2868c2ecf20Sopenharmony_ci 2878c2ecf20Sopenharmony_ci#define EXT_VID_FIFO_CTL1 0xdd 2888c2ecf20Sopenharmony_ci#define EXT_VID_FIFO_CTL1_OE_HIGH 0x02 2898c2ecf20Sopenharmony_ci#define EXT_VID_FIFO_CTL1_INTERLEAVE 0x04 /* enable interleaved memory read */ 2908c2ecf20Sopenharmony_ci 2918c2ecf20Sopenharmony_ci#define EXT_ROM_UCB4GH 0xe5 2928c2ecf20Sopenharmony_ci#define EXT_ROM_UCB4GH_FREEZE 0x02 /* capture frozen */ 2938c2ecf20Sopenharmony_ci#define EXT_ROM_UCB4GH_ODDFRAME 0x04 /* 1 = odd frame captured */ 2948c2ecf20Sopenharmony_ci#define EXT_ROM_UCB4GH_1HL 0x08 /* first horizonal line after VGT falling edge */ 2958c2ecf20Sopenharmony_ci#define EXT_ROM_UCB4GH_ODD 0x10 /* odd frame indicator */ 2968c2ecf20Sopenharmony_ci#define EXT_ROM_UCB4GH_INTSTAT 0x20 /* video interrupt */ 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_ci#define VFAC_CTL1 0xe8 2998c2ecf20Sopenharmony_ci#define VFAC_CTL1_CAPTURE 0x01 /* capture enable (only when VSYNC high)*/ 3008c2ecf20Sopenharmony_ci#define VFAC_CTL1_VFAC_ENABLE 0x02 /* vfac enable */ 3018c2ecf20Sopenharmony_ci#define VFAC_CTL1_FREEZE_CAPTURE 0x04 /* freeze capture */ 3028c2ecf20Sopenharmony_ci#define VFAC_CTL1_FREEZE_CAPTURE_SYNC 0x08 /* sync freeze capture */ 3038c2ecf20Sopenharmony_ci#define VFAC_CTL1_VALIDFRAME_SRC 0x10 /* select valid frame source */ 3048c2ecf20Sopenharmony_ci#define VFAC_CTL1_PHILIPS 0x40 /* select Philips mode */ 3058c2ecf20Sopenharmony_ci#define VFAC_CTL1_MODVINTERPOLCLK 0x80 /* modify vertical interpolation clocl */ 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_ci#define VFAC_CTL2 0xe9 3088c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_VIDDATAVALID 0x01 /* invert video data valid */ 3098c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_GRAPHREADY 0x02 /* invert graphic ready output sig */ 3108c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_DATACLK 0x04 /* invert data clock signal */ 3118c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_HSYNC 0x08 /* invert hsync input */ 3128c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_VSYNC 0x10 /* invert vsync input */ 3138c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_FRAME 0x20 /* invert frame odd/even input */ 3148c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_BLANK 0x40 /* invert blank output */ 3158c2ecf20Sopenharmony_ci#define VFAC_CTL2_INVERT_OVSYNC 0x80 /* invert other vsync input */ 3168c2ecf20Sopenharmony_ci 3178c2ecf20Sopenharmony_ci#define VFAC_CTL3 0xea 3188c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_LARGE_FIFO 0x01 /* large capture fifo */ 3198c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_INTERLACE 0x02 /* capture odd and even fields */ 3208c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_HOLD_4NS 0x00 /* hold capture data for 4ns */ 3218c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_HOLD_2NS 0x04 /* hold capture data for 2ns */ 3228c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_HOLD_6NS 0x08 /* hold capture data for 6ns */ 3238c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_HOLD_0NS 0x0c /* hold capture data for 0ns */ 3248c2ecf20Sopenharmony_ci#define VFAC_CTL3_CHROMAKEY 0x20 /* capture data will be chromakeyed */ 3258c2ecf20Sopenharmony_ci#define VFAC_CTL3_CAP_IRQ 0x40 /* enable capture interrupt */ 3268c2ecf20Sopenharmony_ci 3278c2ecf20Sopenharmony_ci#define CAP_MEM_START 0xeb /* 18 bits */ 3288c2ecf20Sopenharmony_ci#define CAP_MAP_WIDTH 0xed /* high 6 bits */ 3298c2ecf20Sopenharmony_ci#define CAP_PITCH 0xee /* 8 bits */ 3308c2ecf20Sopenharmony_ci 3318c2ecf20Sopenharmony_ci#define CAP_CTL_MISC 0xef 3328c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_HDIV 0x01 3338c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_HDIV4 0x02 3348c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_ODDEVEN 0x04 3358c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_HSYNCDIV2 0x08 3368c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_SYNCTZHIGH 0x10 3378c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_SYNCTZOR 0x20 3388c2ecf20Sopenharmony_ci#define CAP_CTL_MISC_DISPUSED 0x80 3398c2ecf20Sopenharmony_ci 3408c2ecf20Sopenharmony_ci#define REG_BANK 0xfa 3418c2ecf20Sopenharmony_ci#define REG_BANK_X 0x00 3428c2ecf20Sopenharmony_ci#define REG_BANK_Y 0x01 3438c2ecf20Sopenharmony_ci#define REG_BANK_W 0x02 3448c2ecf20Sopenharmony_ci#define REG_BANK_T 0x03 3458c2ecf20Sopenharmony_ci#define REG_BANK_J 0x04 3468c2ecf20Sopenharmony_ci#define REG_BANK_K 0x05 3478c2ecf20Sopenharmony_ci 3488c2ecf20Sopenharmony_ci/* 3498c2ecf20Sopenharmony_ci * Bus-master 3508c2ecf20Sopenharmony_ci */ 3518c2ecf20Sopenharmony_ci#define BM_VID_ADDR_LOW 0xbc040 3528c2ecf20Sopenharmony_ci#define BM_VID_ADDR_HIGH 0xbc044 3538c2ecf20Sopenharmony_ci#define BM_ADDRESS_LOW 0xbc080 3548c2ecf20Sopenharmony_ci#define BM_ADDRESS_HIGH 0xbc084 3558c2ecf20Sopenharmony_ci#define BM_LENGTH 0xbc088 3568c2ecf20Sopenharmony_ci#define BM_CONTROL 0xbc08c 3578c2ecf20Sopenharmony_ci#define BM_CONTROL_ENABLE 0x01 /* enable transfer */ 3588c2ecf20Sopenharmony_ci#define BM_CONTROL_IRQEN 0x02 /* enable IRQ at end of transfer */ 3598c2ecf20Sopenharmony_ci#define BM_CONTROL_INIT 0x04 /* initialise status & count */ 3608c2ecf20Sopenharmony_ci#define BM_COUNT 0xbc090 /* read-only */ 3618c2ecf20Sopenharmony_ci 3628c2ecf20Sopenharmony_ci/* 3638c2ecf20Sopenharmony_ci * TV registers 3648c2ecf20Sopenharmony_ci */ 3658c2ecf20Sopenharmony_ci#define TV_VBLANK_EVEN_START 0xbe43c 3668c2ecf20Sopenharmony_ci#define TV_VBLANK_EVEN_END 0xbe440 3678c2ecf20Sopenharmony_ci#define TV_VBLANK_ODD_START 0xbe444 3688c2ecf20Sopenharmony_ci#define TV_VBLANK_ODD_END 0xbe448 3698c2ecf20Sopenharmony_ci#define TV_SYNC_YGAIN 0xbe44c 3708c2ecf20Sopenharmony_ci#define TV_UV_GAIN 0xbe450 3718c2ecf20Sopenharmony_ci#define TV_PED_UVDET 0xbe454 3728c2ecf20Sopenharmony_ci#define TV_UV_BURST_AMP 0xbe458 3738c2ecf20Sopenharmony_ci#define TV_HSYNC_START 0xbe45c 3748c2ecf20Sopenharmony_ci#define TV_HSYNC_END 0xbe460 3758c2ecf20Sopenharmony_ci#define TV_Y_DELAY1 0xbe464 3768c2ecf20Sopenharmony_ci#define TV_Y_DELAY2 0xbe468 3778c2ecf20Sopenharmony_ci#define TV_UV_DELAY1 0xbe46c 3788c2ecf20Sopenharmony_ci#define TV_BURST_START 0xbe470 3798c2ecf20Sopenharmony_ci#define TV_BURST_END 0xbe474 3808c2ecf20Sopenharmony_ci#define TV_HBLANK_START 0xbe478 3818c2ecf20Sopenharmony_ci#define TV_HBLANK_END 0xbe47c 3828c2ecf20Sopenharmony_ci#define TV_PED_EVEN_START 0xbe480 3838c2ecf20Sopenharmony_ci#define TV_PED_EVEN_END 0xbe484 3848c2ecf20Sopenharmony_ci#define TV_PED_ODD_START 0xbe488 3858c2ecf20Sopenharmony_ci#define TV_PED_ODD_END 0xbe48c 3868c2ecf20Sopenharmony_ci#define TV_VSYNC_EVEN_START 0xbe490 3878c2ecf20Sopenharmony_ci#define TV_VSYNC_EVEN_END 0xbe494 3888c2ecf20Sopenharmony_ci#define TV_VSYNC_ODD_START 0xbe498 3898c2ecf20Sopenharmony_ci#define TV_VSYNC_ODD_END 0xbe49c 3908c2ecf20Sopenharmony_ci#define TV_SCFL 0xbe4a0 3918c2ecf20Sopenharmony_ci#define TV_SCFH 0xbe4a4 3928c2ecf20Sopenharmony_ci#define TV_SCP 0xbe4a8 3938c2ecf20Sopenharmony_ci#define TV_DELAYBYPASS 0xbe4b4 3948c2ecf20Sopenharmony_ci#define TV_EQL_END 0xbe4bc 3958c2ecf20Sopenharmony_ci#define TV_SERR_START 0xbe4c0 3968c2ecf20Sopenharmony_ci#define TV_SERR_END 0xbe4c4 3978c2ecf20Sopenharmony_ci#define TV_CTL 0xbe4dc /* reflects a previous register- MVFCLR, MVPCLR etc P241*/ 3988c2ecf20Sopenharmony_ci#define TV_VSYNC_VGA_HS 0xbe4e8 3998c2ecf20Sopenharmony_ci#define TV_FLICK_XMIN 0xbe514 4008c2ecf20Sopenharmony_ci#define TV_FLICK_XMAX 0xbe518 4018c2ecf20Sopenharmony_ci#define TV_FLICK_YMIN 0xbe51c 4028c2ecf20Sopenharmony_ci#define TV_FLICK_YMAX 0xbe520 4038c2ecf20Sopenharmony_ci 4048c2ecf20Sopenharmony_ci/* 4058c2ecf20Sopenharmony_ci * Graphics Co-processor 4068c2ecf20Sopenharmony_ci */ 4078c2ecf20Sopenharmony_ci#define CO_REG_CONTROL 0xbf011 4088c2ecf20Sopenharmony_ci#define CO_CTRL_BUSY 0x80 4098c2ecf20Sopenharmony_ci#define CO_CTRL_CMDFULL 0x04 4108c2ecf20Sopenharmony_ci#define CO_CTRL_FIFOEMPTY 0x02 4118c2ecf20Sopenharmony_ci#define CO_CTRL_READY 0x01 4128c2ecf20Sopenharmony_ci 4138c2ecf20Sopenharmony_ci#define CO_REG_SRC_WIDTH 0xbf018 4148c2ecf20Sopenharmony_ci#define CO_REG_PIXFMT 0xbf01c 4158c2ecf20Sopenharmony_ci#define CO_PIXFMT_32BPP 0x03 4168c2ecf20Sopenharmony_ci#define CO_PIXFMT_24BPP 0x02 4178c2ecf20Sopenharmony_ci#define CO_PIXFMT_16BPP 0x01 4188c2ecf20Sopenharmony_ci#define CO_PIXFMT_8BPP 0x00 4198c2ecf20Sopenharmony_ci 4208c2ecf20Sopenharmony_ci#define CO_REG_FGMIX 0xbf048 4218c2ecf20Sopenharmony_ci#define CO_FG_MIX_ZERO 0x00 4228c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC_AND_DST 0x01 4238c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC_AND_NDST 0x02 4248c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC 0x03 4258c2ecf20Sopenharmony_ci#define CO_FG_MIX_NSRC_AND_DST 0x04 4268c2ecf20Sopenharmony_ci#define CO_FG_MIX_DST 0x05 4278c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC_XOR_DST 0x06 4288c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC_OR_DST 0x07 4298c2ecf20Sopenharmony_ci#define CO_FG_MIX_NSRC_AND_NDST 0x08 4308c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC_XOR_NDST 0x09 4318c2ecf20Sopenharmony_ci#define CO_FG_MIX_NDST 0x0a 4328c2ecf20Sopenharmony_ci#define CO_FG_MIX_SRC_OR_NDST 0x0b 4338c2ecf20Sopenharmony_ci#define CO_FG_MIX_NSRC 0x0c 4348c2ecf20Sopenharmony_ci#define CO_FG_MIX_NSRC_OR_DST 0x0d 4358c2ecf20Sopenharmony_ci#define CO_FG_MIX_NSRC_OR_NDST 0x0e 4368c2ecf20Sopenharmony_ci#define CO_FG_MIX_ONES 0x0f 4378c2ecf20Sopenharmony_ci 4388c2ecf20Sopenharmony_ci#define CO_REG_FGCOLOUR 0xbf058 4398c2ecf20Sopenharmony_ci#define CO_REG_BGCOLOUR 0xbf05c 4408c2ecf20Sopenharmony_ci#define CO_REG_PIXWIDTH 0xbf060 4418c2ecf20Sopenharmony_ci#define CO_REG_PIXHEIGHT 0xbf062 4428c2ecf20Sopenharmony_ci#define CO_REG_X_PHASE 0xbf078 4438c2ecf20Sopenharmony_ci#define CO_REG_CMD_L 0xbf07c 4448c2ecf20Sopenharmony_ci#define CO_CMD_L_PATTERN_FGCOL 0x8000 4458c2ecf20Sopenharmony_ci#define CO_CMD_L_INC_LEFT 0x0004 4468c2ecf20Sopenharmony_ci#define CO_CMD_L_INC_UP 0x0002 4478c2ecf20Sopenharmony_ci 4488c2ecf20Sopenharmony_ci#define CO_REG_CMD_H 0xbf07e 4498c2ecf20Sopenharmony_ci#define CO_CMD_H_BGSRCMAP 0x8000 /* otherwise bg colour */ 4508c2ecf20Sopenharmony_ci#define CO_CMD_H_FGSRCMAP 0x2000 /* otherwise fg colour */ 4518c2ecf20Sopenharmony_ci#define CO_CMD_H_BLITTER 0x0800 4528c2ecf20Sopenharmony_ci 4538c2ecf20Sopenharmony_ci#define CO_REG_SRC1_PTR 0xbf170 4548c2ecf20Sopenharmony_ci#define CO_REG_SRC2_PTR 0xbf174 4558c2ecf20Sopenharmony_ci#define CO_REG_DEST_PTR 0xbf178 4568c2ecf20Sopenharmony_ci#define CO_REG_DEST_WIDTH 0xbf218 4578c2ecf20Sopenharmony_ci 4588c2ecf20Sopenharmony_ci/* 4598c2ecf20Sopenharmony_ci * Private structure 4608c2ecf20Sopenharmony_ci */ 4618c2ecf20Sopenharmony_cistruct cfb_info; 4628c2ecf20Sopenharmony_ci 4638c2ecf20Sopenharmony_cistruct cyberpro_info { 4648c2ecf20Sopenharmony_ci struct device *dev; 4658c2ecf20Sopenharmony_ci struct i2c_adapter *i2c; 4668c2ecf20Sopenharmony_ci unsigned char __iomem *regs; 4678c2ecf20Sopenharmony_ci char __iomem *fb; 4688c2ecf20Sopenharmony_ci char dev_name[32]; 4698c2ecf20Sopenharmony_ci unsigned int fb_size; 4708c2ecf20Sopenharmony_ci unsigned int chip_id; 4718c2ecf20Sopenharmony_ci unsigned int irq; 4728c2ecf20Sopenharmony_ci 4738c2ecf20Sopenharmony_ci /* 4748c2ecf20Sopenharmony_ci * The following is a pointer to be passed into the 4758c2ecf20Sopenharmony_ci * functions below. The modules outside the main 4768c2ecf20Sopenharmony_ci * cyber2000fb.c driver have no knowledge as to what 4778c2ecf20Sopenharmony_ci * is within this structure. 4788c2ecf20Sopenharmony_ci */ 4798c2ecf20Sopenharmony_ci struct cfb_info *info; 4808c2ecf20Sopenharmony_ci}; 4818c2ecf20Sopenharmony_ci 4828c2ecf20Sopenharmony_ci#define ID_IGA_1682 0 4838c2ecf20Sopenharmony_ci#define ID_CYBERPRO_2000 1 4848c2ecf20Sopenharmony_ci#define ID_CYBERPRO_2010 2 4858c2ecf20Sopenharmony_ci#define ID_CYBERPRO_5000 3 4868c2ecf20Sopenharmony_ci 4878c2ecf20Sopenharmony_ci/* 4888c2ecf20Sopenharmony_ci * Note! Writing to the Cyber20x0 registers from an interrupt 4898c2ecf20Sopenharmony_ci * routine is definitely a bad idea atm. 4908c2ecf20Sopenharmony_ci */ 4918c2ecf20Sopenharmony_ciint cyber2000fb_attach(struct cyberpro_info *info, int idx); 4928c2ecf20Sopenharmony_civoid cyber2000fb_detach(int idx); 4938c2ecf20Sopenharmony_civoid cyber2000fb_enable_extregs(struct cfb_info *cfb); 4948c2ecf20Sopenharmony_civoid cyber2000fb_disable_extregs(struct cfb_info *cfb); 495