Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /* sm501-regs.h
0003  *
0004  * Copyright 2006 Simtec Electronics
0005  *
0006  * Silicon Motion SM501 register definitions
0007 */
0008 
0009 /* System Configuration area */
0010 /* System config base */
0011 #define SM501_SYS_CONFIG        (0x000000)
0012 
0013 /* config 1 */
0014 #define SM501_SYSTEM_CONTROL        (0x000000)
0015 
0016 #define SM501_SYSCTRL_PANEL_TRISTATE    (1<<0)
0017 #define SM501_SYSCTRL_MEM_TRISTATE  (1<<1)
0018 #define SM501_SYSCTRL_CRT_TRISTATE  (1<<2)
0019 
0020 #define SM501_SYSCTRL_PCI_SLAVE_BURST_MASK (3<<4)
0021 #define SM501_SYSCTRL_PCI_SLAVE_BURST_1 (0<<4)
0022 #define SM501_SYSCTRL_PCI_SLAVE_BURST_2 (1<<4)
0023 #define SM501_SYSCTRL_PCI_SLAVE_BURST_4 (2<<4)
0024 #define SM501_SYSCTRL_PCI_SLAVE_BURST_8 (3<<4)
0025 
0026 #define SM501_SYSCTRL_PCI_CLOCK_RUN_EN  (1<<6)
0027 #define SM501_SYSCTRL_PCI_RETRY_DISABLE (1<<7)
0028 #define SM501_SYSCTRL_PCI_SUBSYS_LOCK   (1<<11)
0029 #define SM501_SYSCTRL_PCI_BURST_READ_EN (1<<15)
0030 
0031 #define SM501_SYSCTRL_2D_ENGINE_STATUS  (1<<19)
0032 
0033 /* miscellaneous control */
0034 
0035 #define SM501_MISC_CONTROL      (0x000004)
0036 
0037 #define SM501_MISC_BUS_SH       (0x0)
0038 #define SM501_MISC_BUS_PCI      (0x1)
0039 #define SM501_MISC_BUS_XSCALE       (0x2)
0040 #define SM501_MISC_BUS_NEC      (0x6)
0041 #define SM501_MISC_BUS_MASK     (0x7)
0042 
0043 #define SM501_MISC_VR_62MB      (1<<3)
0044 #define SM501_MISC_CDR_RESET        (1<<7)
0045 #define SM501_MISC_USB_LB       (1<<8)
0046 #define SM501_MISC_USB_SLAVE        (1<<9)
0047 #define SM501_MISC_BL_1         (1<<10)
0048 #define SM501_MISC_MC           (1<<11)
0049 #define SM501_MISC_DAC_POWER        (1<<12)
0050 #define SM501_MISC_IRQ_INVERT       (1<<16)
0051 #define SM501_MISC_SH           (1<<17)
0052 
0053 #define SM501_MISC_HOLD_EMPTY       (0<<18)
0054 #define SM501_MISC_HOLD_8       (1<<18)
0055 #define SM501_MISC_HOLD_16      (2<<18)
0056 #define SM501_MISC_HOLD_24      (3<<18)
0057 #define SM501_MISC_HOLD_32      (4<<18)
0058 #define SM501_MISC_HOLD_MASK        (7<<18)
0059 
0060 #define SM501_MISC_FREQ_12      (1<<24)
0061 #define SM501_MISC_PNL_24BIT        (1<<25)
0062 #define SM501_MISC_8051_LE      (1<<26)
0063 
0064 
0065 
0066 #define SM501_GPIO31_0_CONTROL      (0x000008)
0067 #define SM501_GPIO63_32_CONTROL     (0x00000C)
0068 #define SM501_DRAM_CONTROL      (0x000010)
0069 
0070 /* command list */
0071 #define SM501_ARBTRTN_CONTROL       (0x000014)
0072 
0073 /* command list */
0074 #define SM501_COMMAND_LIST_STATUS   (0x000024)
0075 
0076 /* interrupt debug */
0077 #define SM501_RAW_IRQ_STATUS        (0x000028)
0078 #define SM501_RAW_IRQ_CLEAR     (0x000028)
0079 #define SM501_IRQ_STATUS        (0x00002C)
0080 #define SM501_IRQ_MASK          (0x000030)
0081 #define SM501_DEBUG_CONTROL     (0x000034)
0082 
0083 /* power management */
0084 #define SM501_POWERMODE_P2X_SRC     (1<<29)
0085 #define SM501_POWERMODE_V2X_SRC     (1<<20)
0086 #define SM501_POWERMODE_M_SRC       (1<<12)
0087 #define SM501_POWERMODE_M1_SRC      (1<<4)
0088 
0089 #define SM501_CURRENT_GATE      (0x000038)
0090 #define SM501_CURRENT_CLOCK     (0x00003C)
0091 #define SM501_POWER_MODE_0_GATE     (0x000040)
0092 #define SM501_POWER_MODE_0_CLOCK    (0x000044)
0093 #define SM501_POWER_MODE_1_GATE     (0x000048)
0094 #define SM501_POWER_MODE_1_CLOCK    (0x00004C)
0095 #define SM501_SLEEP_MODE_GATE       (0x000050)
0096 #define SM501_POWER_MODE_CONTROL    (0x000054)
0097 
0098 /* power gates for units within the 501 */
0099 #define SM501_GATE_HOST         (0)
0100 #define SM501_GATE_MEMORY       (1)
0101 #define SM501_GATE_DISPLAY      (2)
0102 #define SM501_GATE_2D_ENGINE        (3)
0103 #define SM501_GATE_CSC          (4)
0104 #define SM501_GATE_ZVPORT       (5)
0105 #define SM501_GATE_GPIO         (6)
0106 #define SM501_GATE_UART0        (7)
0107 #define SM501_GATE_UART1        (8)
0108 #define SM501_GATE_SSP          (10)
0109 #define SM501_GATE_USB_HOST     (11)
0110 #define SM501_GATE_USB_GADGET       (12)
0111 #define SM501_GATE_UCONTROLLER      (17)
0112 #define SM501_GATE_AC97         (18)
0113 
0114 /* panel clock */
0115 #define SM501_CLOCK_P2XCLK      (24)
0116 /* crt clock */
0117 #define SM501_CLOCK_V2XCLK      (16)
0118 /* main clock */
0119 #define SM501_CLOCK_MCLK        (8)
0120 /* SDRAM controller clock */
0121 #define SM501_CLOCK_M1XCLK      (0)
0122 
0123 /* config 2 */
0124 #define SM501_PCI_MASTER_BASE       (0x000058)
0125 #define SM501_ENDIAN_CONTROL        (0x00005C)
0126 #define SM501_DEVICEID          (0x000060)
0127 /* 0x050100A0 */
0128 
0129 #define SM501_DEVICEID_SM501        (0x05010000)
0130 #define SM501_DEVICEID_IDMASK       (0xffff0000)
0131 #define SM501_DEVICEID_REVMASK      (0x000000ff)
0132 
0133 #define SM501_PLLCLOCK_COUNT        (0x000064)
0134 #define SM501_MISC_TIMING       (0x000068)
0135 #define SM501_CURRENT_SDRAM_CLOCK   (0x00006C)
0136 
0137 #define SM501_PROGRAMMABLE_PLL_CONTROL  (0x000074)
0138 
0139 /* GPIO base */
0140 #define SM501_GPIO          (0x010000)
0141 #define SM501_GPIO_DATA_LOW     (0x00)
0142 #define SM501_GPIO_DATA_HIGH        (0x04)
0143 #define SM501_GPIO_DDR_LOW      (0x08)
0144 #define SM501_GPIO_DDR_HIGH     (0x0C)
0145 #define SM501_GPIO_IRQ_SETUP        (0x10)
0146 #define SM501_GPIO_IRQ_STATUS       (0x14)
0147 #define SM501_GPIO_IRQ_RESET        (0x14)
0148 
0149 /* I2C controller base */
0150 #define SM501_I2C           (0x010040)
0151 #define SM501_I2C_BYTE_COUNT        (0x00)
0152 #define SM501_I2C_CONTROL       (0x01)
0153 #define SM501_I2C_STATUS        (0x02)
0154 #define SM501_I2C_RESET         (0x02)
0155 #define SM501_I2C_SLAVE_ADDRESS     (0x03)
0156 #define SM501_I2C_DATA          (0x04)
0157 
0158 /* SSP base */
0159 #define SM501_SSP           (0x020000)
0160 
0161 /* Uart 0 base */
0162 #define SM501_UART0         (0x030000)
0163 
0164 /* Uart 1 base */
0165 #define SM501_UART1         (0x030020)
0166 
0167 /* USB host port base */
0168 #define SM501_USB_HOST          (0x040000)
0169 
0170 /* USB slave/gadget base */
0171 #define SM501_USB_GADGET        (0x060000)
0172 
0173 /* USB slave/gadget data port base */
0174 #define SM501_USB_GADGET_DATA       (0x070000)
0175 
0176 /* Display controller/video engine base */
0177 #define SM501_DC            (0x080000)
0178 
0179 /* common defines for the SM501 address registers */
0180 #define SM501_ADDR_FLIP         (1<<31)
0181 #define SM501_ADDR_EXT          (1<<27)
0182 #define SM501_ADDR_CS1          (1<<26)
0183 #define SM501_ADDR_MASK         (0x3f << 26)
0184 
0185 #define SM501_FIFO_MASK         (0x3 << 16)
0186 #define SM501_FIFO_1            (0x0 << 16)
0187 #define SM501_FIFO_3            (0x1 << 16)
0188 #define SM501_FIFO_7            (0x2 << 16)
0189 #define SM501_FIFO_11           (0x3 << 16)
0190 
0191 /* common registers for panel and the crt */
0192 #define SM501_OFF_DC_H_TOT      (0x000)
0193 #define SM501_OFF_DC_V_TOT      (0x008)
0194 #define SM501_OFF_DC_H_SYNC     (0x004)
0195 #define SM501_OFF_DC_V_SYNC     (0x00C)
0196 
0197 #define SM501_DC_PANEL_CONTROL      (0x000)
0198 
0199 #define SM501_DC_PANEL_CONTROL_FPEN (1<<27)
0200 #define SM501_DC_PANEL_CONTROL_BIAS (1<<26)
0201 #define SM501_DC_PANEL_CONTROL_DATA (1<<25)
0202 #define SM501_DC_PANEL_CONTROL_VDD  (1<<24)
0203 #define SM501_DC_PANEL_CONTROL_DP   (1<<23)
0204 
0205 #define SM501_DC_PANEL_CONTROL_TFT_888  (0<<21)
0206 #define SM501_DC_PANEL_CONTROL_TFT_333  (1<<21)
0207 #define SM501_DC_PANEL_CONTROL_TFT_444  (2<<21)
0208 
0209 #define SM501_DC_PANEL_CONTROL_DE   (1<<20)
0210 
0211 #define SM501_DC_PANEL_CONTROL_LCD_TFT  (0<<18)
0212 #define SM501_DC_PANEL_CONTROL_LCD_STN8 (1<<18)
0213 #define SM501_DC_PANEL_CONTROL_LCD_STN12 (2<<18)
0214 
0215 #define SM501_DC_PANEL_CONTROL_CP   (1<<14)
0216 #define SM501_DC_PANEL_CONTROL_VSP  (1<<13)
0217 #define SM501_DC_PANEL_CONTROL_HSP  (1<<12)
0218 #define SM501_DC_PANEL_CONTROL_CK   (1<<9)
0219 #define SM501_DC_PANEL_CONTROL_TE   (1<<8)
0220 #define SM501_DC_PANEL_CONTROL_VPD  (1<<7)
0221 #define SM501_DC_PANEL_CONTROL_VP   (1<<6)
0222 #define SM501_DC_PANEL_CONTROL_HPD  (1<<5)
0223 #define SM501_DC_PANEL_CONTROL_HP   (1<<4)
0224 #define SM501_DC_PANEL_CONTROL_GAMMA    (1<<3)
0225 #define SM501_DC_PANEL_CONTROL_EN   (1<<2)
0226 
0227 #define SM501_DC_PANEL_CONTROL_8BPP (0<<0)
0228 #define SM501_DC_PANEL_CONTROL_16BPP    (1<<0)
0229 #define SM501_DC_PANEL_CONTROL_32BPP    (2<<0)
0230 
0231 
0232 #define SM501_DC_PANEL_PANNING_CONTROL  (0x004)
0233 #define SM501_DC_PANEL_COLOR_KEY    (0x008)
0234 #define SM501_DC_PANEL_FB_ADDR      (0x00C)
0235 #define SM501_DC_PANEL_FB_OFFSET    (0x010)
0236 #define SM501_DC_PANEL_FB_WIDTH     (0x014)
0237 #define SM501_DC_PANEL_FB_HEIGHT    (0x018)
0238 #define SM501_DC_PANEL_TL_LOC       (0x01C)
0239 #define SM501_DC_PANEL_BR_LOC       (0x020)
0240 #define SM501_DC_PANEL_H_TOT        (0x024)
0241 #define SM501_DC_PANEL_H_SYNC       (0x028)
0242 #define SM501_DC_PANEL_V_TOT        (0x02C)
0243 #define SM501_DC_PANEL_V_SYNC       (0x030)
0244 #define SM501_DC_PANEL_CUR_LINE     (0x034)
0245 
0246 #define SM501_DC_VIDEO_CONTROL      (0x040)
0247 #define SM501_DC_VIDEO_FB0_ADDR     (0x044)
0248 #define SM501_DC_VIDEO_FB_WIDTH     (0x048)
0249 #define SM501_DC_VIDEO_FB0_LAST_ADDR    (0x04C)
0250 #define SM501_DC_VIDEO_TL_LOC       (0x050)
0251 #define SM501_DC_VIDEO_BR_LOC       (0x054)
0252 #define SM501_DC_VIDEO_SCALE        (0x058)
0253 #define SM501_DC_VIDEO_INIT_SCALE   (0x05C)
0254 #define SM501_DC_VIDEO_YUV_CONSTANTS    (0x060)
0255 #define SM501_DC_VIDEO_FB1_ADDR     (0x064)
0256 #define SM501_DC_VIDEO_FB1_LAST_ADDR    (0x068)
0257 
0258 #define SM501_DC_VIDEO_ALPHA_CONTROL    (0x080)
0259 #define SM501_DC_VIDEO_ALPHA_FB_ADDR    (0x084)
0260 #define SM501_DC_VIDEO_ALPHA_FB_OFFSET  (0x088)
0261 #define SM501_DC_VIDEO_ALPHA_FB_LAST_ADDR   (0x08C)
0262 #define SM501_DC_VIDEO_ALPHA_TL_LOC (0x090)
0263 #define SM501_DC_VIDEO_ALPHA_BR_LOC (0x094)
0264 #define SM501_DC_VIDEO_ALPHA_SCALE  (0x098)
0265 #define SM501_DC_VIDEO_ALPHA_INIT_SCALE (0x09C)
0266 #define SM501_DC_VIDEO_ALPHA_CHROMA_KEY (0x0A0)
0267 #define SM501_DC_VIDEO_ALPHA_COLOR_LOOKUP   (0x0A4)
0268 
0269 #define SM501_DC_PANEL_HWC_BASE     (0x0F0)
0270 #define SM501_DC_PANEL_HWC_ADDR     (0x0F0)
0271 #define SM501_DC_PANEL_HWC_LOC      (0x0F4)
0272 #define SM501_DC_PANEL_HWC_COLOR_1_2    (0x0F8)
0273 #define SM501_DC_PANEL_HWC_COLOR_3  (0x0FC)
0274 
0275 #define SM501_HWC_EN            (1<<31)
0276 
0277 #define SM501_OFF_HWC_ADDR      (0x00)
0278 #define SM501_OFF_HWC_LOC       (0x04)
0279 #define SM501_OFF_HWC_COLOR_1_2     (0x08)
0280 #define SM501_OFF_HWC_COLOR_3       (0x0C)
0281 
0282 #define SM501_DC_ALPHA_CONTROL      (0x100)
0283 #define SM501_DC_ALPHA_FB_ADDR      (0x104)
0284 #define SM501_DC_ALPHA_FB_OFFSET    (0x108)
0285 #define SM501_DC_ALPHA_TL_LOC       (0x10C)
0286 #define SM501_DC_ALPHA_BR_LOC       (0x110)
0287 #define SM501_DC_ALPHA_CHROMA_KEY   (0x114)
0288 #define SM501_DC_ALPHA_COLOR_LOOKUP (0x118)
0289 
0290 #define SM501_DC_CRT_CONTROL        (0x200)
0291 
0292 #define SM501_DC_CRT_CONTROL_TVP    (1<<15)
0293 #define SM501_DC_CRT_CONTROL_CP     (1<<14)
0294 #define SM501_DC_CRT_CONTROL_VSP    (1<<13)
0295 #define SM501_DC_CRT_CONTROL_HSP    (1<<12)
0296 #define SM501_DC_CRT_CONTROL_VS     (1<<11)
0297 #define SM501_DC_CRT_CONTROL_BLANK  (1<<10)
0298 #define SM501_DC_CRT_CONTROL_SEL    (1<<9)
0299 #define SM501_DC_CRT_CONTROL_TE     (1<<8)
0300 #define SM501_DC_CRT_CONTROL_PIXEL_MASK (0xF << 4)
0301 #define SM501_DC_CRT_CONTROL_GAMMA  (1<<3)
0302 #define SM501_DC_CRT_CONTROL_ENABLE (1<<2)
0303 
0304 #define SM501_DC_CRT_CONTROL_8BPP   (0<<0)
0305 #define SM501_DC_CRT_CONTROL_16BPP  (1<<0)
0306 #define SM501_DC_CRT_CONTROL_32BPP  (2<<0)
0307 
0308 #define SM501_DC_CRT_FB_ADDR        (0x204)
0309 #define SM501_DC_CRT_FB_OFFSET      (0x208)
0310 #define SM501_DC_CRT_H_TOT      (0x20C)
0311 #define SM501_DC_CRT_H_SYNC     (0x210)
0312 #define SM501_DC_CRT_V_TOT      (0x214)
0313 #define SM501_DC_CRT_V_SYNC     (0x218)
0314 #define SM501_DC_CRT_SIGNATURE_ANALYZER (0x21C)
0315 #define SM501_DC_CRT_CUR_LINE       (0x220)
0316 #define SM501_DC_CRT_MONITOR_DETECT (0x224)
0317 
0318 #define SM501_DC_CRT_HWC_BASE       (0x230)
0319 #define SM501_DC_CRT_HWC_ADDR       (0x230)
0320 #define SM501_DC_CRT_HWC_LOC        (0x234)
0321 #define SM501_DC_CRT_HWC_COLOR_1_2  (0x238)
0322 #define SM501_DC_CRT_HWC_COLOR_3    (0x23C)
0323 
0324 #define SM501_DC_PANEL_PALETTE      (0x400)
0325 
0326 #define SM501_DC_VIDEO_PALETTE      (0x800)
0327 
0328 #define SM501_DC_CRT_PALETTE        (0xC00)
0329 
0330 /* Zoom Video port base */
0331 #define SM501_ZVPORT            (0x090000)
0332 
0333 /* AC97/I2S base */
0334 #define SM501_AC97          (0x0A0000)
0335 
0336 /* 8051 micro controller base */
0337 #define SM501_UCONTROLLER       (0x0B0000)
0338 
0339 /* 8051 micro controller SRAM base */
0340 #define SM501_UCONTROLLER_SRAM      (0x0C0000)
0341 
0342 /* DMA base */
0343 #define SM501_DMA           (0x0D0000)
0344 
0345 /* 2d engine base */
0346 #define SM501_2D_ENGINE         (0x100000)
0347 #define SM501_2D_SOURCE         (0x00)
0348 #define SM501_2D_DESTINATION        (0x04)
0349 #define SM501_2D_DIMENSION      (0x08)
0350 #define SM501_2D_CONTROL        (0x0C)
0351 #define SM501_2D_PITCH          (0x10)
0352 #define SM501_2D_FOREGROUND     (0x14)
0353 #define SM501_2D_BACKGROUND     (0x18)
0354 #define SM501_2D_STRETCH        (0x1C)
0355 #define SM501_2D_COLOR_COMPARE      (0x20)
0356 #define SM501_2D_COLOR_COMPARE_MASK     (0x24)
0357 #define SM501_2D_MASK           (0x28)
0358 #define SM501_2D_CLIP_TL        (0x2C)
0359 #define SM501_2D_CLIP_BR        (0x30)
0360 #define SM501_2D_MONO_PATTERN_LOW   (0x34)
0361 #define SM501_2D_MONO_PATTERN_HIGH  (0x38)
0362 #define SM501_2D_WINDOW_WIDTH       (0x3C)
0363 #define SM501_2D_SOURCE_BASE        (0x40)
0364 #define SM501_2D_DESTINATION_BASE   (0x44)
0365 #define SM501_2D_ALPHA          (0x48)
0366 #define SM501_2D_WRAP           (0x4C)
0367 #define SM501_2D_STATUS         (0x50)
0368 
0369 #define SM501_CSC_Y_SOURCE_BASE     (0xC8)
0370 #define SM501_CSC_CONSTANTS     (0xCC)
0371 #define SM501_CSC_Y_SOURCE_X        (0xD0)
0372 #define SM501_CSC_Y_SOURCE_Y        (0xD4)
0373 #define SM501_CSC_U_SOURCE_BASE     (0xD8)
0374 #define SM501_CSC_V_SOURCE_BASE     (0xDC)
0375 #define SM501_CSC_SOURCE_DIMENSION  (0xE0)
0376 #define SM501_CSC_SOURCE_PITCH      (0xE4)
0377 #define SM501_CSC_DESTINATION       (0xE8)
0378 #define SM501_CSC_DESTINATION_DIMENSION (0xEC)
0379 #define SM501_CSC_DESTINATION_PITCH (0xF0)
0380 #define SM501_CSC_SCALE_FACTOR      (0xF4)
0381 #define SM501_CSC_DESTINATION_BASE  (0xF8)
0382 #define SM501_CSC_CONTROL       (0xFC)
0383 
0384 /* 2d engine data port base */
0385 #define SM501_2D_ENGINE_DATA        (0x110000)