Annotation of sys/arch/arm/s3c2xx0/s3c24x0reg.h, Revision 1.1
1.1 ! nbrk 1: /* $NetBSD: s3c24x0reg.h,v 1.8 2005/12/11 12:16:51 christos Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2003 Genetec corporation All rights reserved.
! 5: * Written by Hiroyuki Bessho for Genetec corporation.
! 6: *
! 7: * Redistribution and use in source and binary forms, with or without
! 8: * modification, are permitted provided that the following conditions
! 9: * are met:
! 10: * 1. Redistributions of source code must retain the above copyright
! 11: * notice, this list of conditions and the following disclaimer.
! 12: * 2. Redistributions in binary form must reproduce the above copyright
! 13: * notice, this list of conditions and the following disclaimer in the
! 14: * documentation and/or other materials provided with the distribution.
! 15: * 3. The name of Genetec corporation may not be used to endorse
! 16: * or promote products derived from this software without specific prior
! 17: * written permission.
! 18: *
! 19: * THIS SOFTWARE IS PROVIDED BY GENETEC CORP. ``AS IS'' AND
! 20: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
! 21: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! 22: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENETEC CORP.
! 23: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 24: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 25: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 26: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 27: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 28: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 29: * POSSIBILITY OF SUCH DAMAGE.
! 30: */
! 31:
! 32:
! 33: /*
! 34: * Samsung S3C2410X/2400 processor is ARM920T based integrated CPU
! 35: *
! 36: * Reference:
! 37: * S3C2410X User's Manual
! 38: * S3C2400 User's Manual
! 39: */
! 40: #ifndef _ARM_S3C2XX0_S3C24X0REG_H_
! 41: #define _ARM_S3C2XX0_S3C24X0REG_H_
! 42:
! 43: /* Memory controller */
! 44: #define MEMCTL_BWSCON 0x00 /* Bus width and wait status */
! 45: #define BWSCON_DW0_SHIFT 1 /* bank0 is odd */
! 46: #define BWSCON_BANK_SHIFT(n) (4*(n)) /* for bank 1..7 */
! 47: #define BWSCON_DW_MASK 0x03
! 48: #define BWSCON_DW_8 0
! 49: #define BWSCON_DW_16 1
! 50: #define BWSCON_DW_32 2
! 51: #define BWSCON_WS 0x04 /* WAIT enable for the bank */
! 52: #define BWSCON_ST 0x08 /* SRAM use UB/LB for the bank */
! 53:
! 54: #define MEMCTL_BANKCON0 0x04 /* Boot ROM control */
! 55: #define MEMCTL_BANKCON(n) (0x04+4*(n)) /* BANKn control */
! 56: #define BANKCON_MT_SHIFT 15
! 57: #define BANKCON_MT_ROM (0<<BANKCON_MT_SHIFT)
! 58: #define BANKCON_MT_DRAM (3<<BANKCON_MT_SHIFT)
! 59: #define BANKCON_TACS_SHIFT 13 /* address set-up time to nGCS */
! 60: #define BANKCON_TCOS_SHIFT 11 /* CS set-up to nOE */
! 61: #define BANKCON_TACC_SHIFT 8 /* CS set-up to nOE */
! 62: #define BANKCON_TOCH_SHIFT 6 /* CS hold time from OE */
! 63: #define BANKCON_TCAH_SHIFT 4 /* address hold time from OE */
! 64: #define BANKCON_TACP_SHIFT 2 /* page mode access cycle */
! 65: #define BANKCON_TACP_2 (0<<BANKCON_TACP_SHIFT)
! 66: #define BANKCON_TACP_3 (1<<BANKCON_TACP_SHIFT)
! 67: #define BANKCON_TACP_4 (2<<BANKCON_TACP_SHIFT)
! 68: #define BANKCON_TACP_6 (3<<BANKCON_TACP_SHIFT)
! 69: #define BANKCON_PMC_4 (1<<0)
! 70: #define BANKCON_PMC_8 (2<<0)
! 71: #define BANKCON_PMC_16 (3<<0)
! 72: #define BANKCON_TRCD_SHIFT 2 /* RAS to CAS delay */
! 73: #define BANKCON_TRCD_2 (0<<2)
! 74: #define BANKCON_TRCD_3 (1<<2)
! 75: #define BANKCON_TRCD_4 (2<<2)
! 76: #define BANKCON_SCAN_8 (0<<0) /* Column address number */
! 77: #define BANKCON_SCAN_9 (1<<0)
! 78: #define BANKCON_SCAN_10 (2<<0)
! 79: #define MEMCTL_REFRESH 0x24 /* DRAM?SDRAM Refresh */
! 80: #define REFRESH_REFEN (1<<23)
! 81: #define REFRESH_TREFMD (1<<22) /* 1=self refresh */
! 82: #define REFRESH_TRP_2 (0<<20)
! 83: #define REFRESH_TRP_3 (1<<20)
! 84: #define REFRESH_TRP_4 (2<<20)
! 85: #define REFRESH_TRC_4 (0<<18)
! 86: #define REFRESH_TRC_5 (1<<18)
! 87: #define REFRESH_TRC_6 (2<<18)
! 88: #define REFRESH_TRC_7 (3<<18)
! 89: #define REFRESH_COUNTER_MASK 0x3ff
! 90: #define MEMCTL_BANKSIZE 0x28 /* Flexible Bank size */
! 91: #define MEMCTL_MRSRB6 0x2c /* SDRAM Mode register */
! 92: #define MEMCTL_MRSRB7 0x30
! 93: #define MRSR_CL_SHIFT 4 /* CAS Latency */
! 94:
! 95: #define S3C24X0_MEMCTL_SIZE 0x34
! 96:
! 97: /* USB Host controller */
! 98: #define S3C24X0_USBHC_SIZE 0x5c
! 99:
! 100: /* Interrupt controller */
! 101: #define INTCTL_PRIORITY 0x0c /* IRQ Priority control */
! 102: #define INTCTL_INTPND 0x10 /* Interrupt request status */
! 103: #define INTCTL_INTOFFSET 0x14 /* Interrupt request source */
! 104:
! 105: /* Interrupt source */
! 106: #define S3C24X0_INT_ADCTC 31 /* ADC (and TC for 2410 */
! 107: #define S3C24X0_INT_RTC 30 /* RTC alarm */
! 108: #define S3C2400_INT_UTXD1 29 /* UART1 Tx INT (2400 only) */
! 109: #define S3C2410_INT_SPI1 29 /* SPI 1 (2410 only) */
! 110: #define S3C2400_INT_UTXD0 28 /* UART0 Tx INT (2400 only) */
! 111: #define S3C2410_INT_UART0 28 /* UART0 (2410 only) */
! 112: #define S3C24X0_INT_IIC 27
! 113: #define S3C24X0_INT_USBH 26 /* USB Host */
! 114: #define S3C24X0_INT_USBD 25 /* USB Device */
! 115: #define S3C2400_INT_URXD1 24 /* UART1 Rx INT (2400 only) */
! 116: #define S3C2400_INT_URXD0 23 /* UART0 Rx INT (2400 only) */
! 117: #define S3C2410_INT_UART1 23 /* UART0 (2410 only) */
! 118: #define S3C24X0_INT_SPI0 22 /* SPI 0 */
! 119: #define S3C2400_INT_MMC 21
! 120: #define S3C2410_INT_SDI 21
! 121: #define S3C24X0_INT_DMA3 20
! 122: #define S3C24X0_INT_DMA2 19
! 123: #define S3C24X0_INT_DMA1 18
! 124: #define S3C24X0_INT_DMA0 17
! 125: #define S3C2410_INT_LCD 16
! 126:
! 127: #define S3C2400_INT_UERR 15 /* UART 0/1 Error int (2400) */
! 128: #define S3C2410_INT_UART2 15 /* UART2 int (2410) */
! 129: #define S3C24X0_INT_TIMER4 14
! 130: #define S3C24X0_INT_TIMER3 13
! 131: #define S3C24X0_INT_TIMER2 12
! 132: #define S3C24X0_INT_TIMER1 11
! 133: #define S3C24X0_INT_TIMER0 10
! 134: #define S3C24X0_INT_TIMER(n) (10+(n)) /* timer interrupt [4:0] */
! 135: #define S3C24X0_INT_WDT 9 /* Watch dog timer */
! 136: #define S3C24X0_INT_TICK 8
! 137: #define S3C2410_INT_BFLT 7 /* Battery fault */
! 138: #define S3C2410_INT_8_23 5 /* Ext int 8..23 */
! 139: #define S3C2410_INT_4_7 4 /* Ext int 4..7 */
! 140: #define S3C24X0_INT_EXT(n) (n) /* External interrupt [7:0] for 2400,
! 141: * [3:0] for 2410 */
! 142: /* DMA controller */
! 143: /* XXX */
! 144:
! 145: /* Clock & power manager */
! 146: #define CLKMAN_LOCKTIME 0x00 /* PLL lock time */
! 147: #define CLKMAN_MPLLCON 0x04 /* MPLL control */
! 148: #define CLKMAN_UPLLCON 0x08 /* UPLL control */
! 149: #define PLLCON_MDIV_SHIFT 12
! 150: #define PLLCON_MDIV_MASK (0xff<<PLLCON_MDIV_SHIFT)
! 151: #define PLLCON_PDIV_SHIFT 4
! 152: #define PLLCON_PDIV_MASK (0x3f<<PLLCON_PDIV_SHIFT)
! 153: #define PLLCON_SDIV_SHIFT 0
! 154: #define PLLCON_SDIV_MASK (0x03<<PLLCON_SDIV_SHIFT)
! 155: #define CLKMAN_CLKCON 0x0c
! 156:
! 157: #define CLKMAN_CLKSLOW 0x10 /* slow clock controll */
! 158: #define CLKSLOW_UCLK (1<<7) /* 1=UPLL off */
! 159: #define CLKSLOW_MPLL (1<<5) /* 1=PLL off */
! 160: #define CLKSLOW_SLOW (1<<4) /* 1: Enable SLOW mode */
! 161: #define CLKSLOW_VAL_MASK 0x0f /* divider value for slow clock */
! 162:
! 163: #define CLKMAN_CLKDIVN 0x14 /* Software reset control */
! 164: #define CLKDIVN_HDIVN (1<<1)
! 165: #define CLKDIVN_PDIVN (1<<0)
! 166:
! 167: #define S3C24X0_CLKMAN_SIZE 0x18
! 168:
! 169: /* LCD controller */
! 170: #define LCDC_LCDCON1 0x00 /* control 1 */
! 171: #define LCDCON1_ENVID (1<<0) /* enable video */
! 172: #define LCDCON1_BPPMODE_SHIFT 1
! 173: #define LCDCON1_BPPMODE_MASK (0x0f<<LCDCON1_BPPMODE_SHIFT)
! 174: #define LCDCON1_BPPMODE_STN1 (0x0<<LCDCON1_BPPMODE_SHIFT)
! 175: #define LCDCON1_BPPMODE_STN2 (0x1<<LCDCON1_BPPMODE_SHIFT)
! 176: #define LCDCON1_BPPMODE_STN4 (0x2<<LCDCON1_BPPMODE_SHIFT)
! 177: #define LCDCON1_BPPMODE_STN8 (0x3<<LCDCON1_BPPMODE_SHIFT)
! 178: #define LCDCON1_BPPMODE_STN12 (0x4<<LCDCON1_BPPMODE_SHIFT)
! 179: #define LCDCON1_BPPMODE_TFT1 (0x8<<LCDCON1_BPPMODE_SHIFT)
! 180: #define LCDCON1_BPPMODE_TFT2 (0x9<<LCDCON1_BPPMODE_SHIFT)
! 181: #define LCDCON1_BPPMODE_TFT4 (0xa<<LCDCON1_BPPMODE_SHIFT)
! 182: #define LCDCON1_BPPMODE_TFT8 (0xb<<LCDCON1_BPPMODE_SHIFT)
! 183: #define LCDCON1_BPPMODE_TFT16 (0xc<<LCDCON1_BPPMODE_SHIFT)
! 184: #define LCDCON1_BPPMODE_TFT24 (0xd<<LCDCON1_BPPMODE_SHIFT)
! 185: #define LCDCON1_BPPMODE_TFTX (0x8<<LCDCON1_BPPMODE_SHIFT)
! 186:
! 187: #define LCDCON1_PNRMODE_SHIFT 5
! 188: #define LCDCON1_PNRMODE_MASK (0x3<<LCDCON1_PNRMODE_SHIFT)
! 189: #define LCDCON1_PNRMODE_DUALSTN4 (0x0<<LCDCON1_PNRMODE_SHIFT)
! 190: #define LCDCON1_PNRMODE_SINGLESTN4 (0x1<<LCDCON1_PNRMODE_SHIFT)
! 191: #define LCDCON1_PNRMODE_SINGLESTN8 (0x2<<LCDCON1_PNRMODE_SHIFT)
! 192: #define LCDCON1_PNRMODE_TFT (0x3<<LCDCON1_PNRMODE_SHIFT)
! 193:
! 194: #define LCDCON1_MMODE (1<<7) /* VM toggle rate */
! 195: #define LCDCON1_CLKVAL_SHIFT 8
! 196: #define LCDCON1_CLKVAL_MASK (0x3ff<<LCDCON1_CLKVAL_SHIFT)
! 197: #define LCDCON1_LINCNT_SHIFT 18
! 198: #define LCDCON1_LINCNT_MASK (0x3ff<<LCDCON1_LINCNT_SHIFT)
! 199:
! 200: #define LCDC_LCDCON2 0x04 /* control 2 */
! 201: #define LCDCON2_VPSW_SHIFT 0 /* TFT Vsync pulse width */
! 202: #define LCDCON2_VPSW_MASK (0x3f<<LCDCON2_VPSW_SHIFT)
! 203: #define LCDCON2_VFPD_SHIFT 6 /* TFT V front porch */
! 204: #define LCDCON2_VFPD_MASK (0xff<<LCDCON2_VFPD_SHIFT)
! 205: #define LCDCON2_LINEVAL_SHIFT 14 /* Vertical size */
! 206: #define LCDCON2_LINEVAL_MASK (0x3ff<<LCDCON2_LINEVAL_SHIFT)
! 207: #define LCDCON2_VBPD_SHIFT 24 /* TFT V back porch */
! 208: #define LCDCON2_VBPD_MASK (0xff<<LCDCON2_VBPD_SHIFT)
! 209:
! 210: #define LCDC_LCDCON3 0x08 /* control 2 */
! 211: #define LCDCON3_HFPD_SHIFT 0 /* TFT H front porch */
! 212: #define LCDCON3_HFPD_MASK (0xff<<LCDCON3_VPFD_SHIFT)
! 213: #define LCDCON3_LINEBLANK_SHIFT 0 /* STN H blank time */
! 214: #define LCDCON3_LINEBLANK_MASK (0xff<<LCDCON3_LINEBLANK_SHIFT)
! 215: #define LCDCON3_HOZVAL_SHIFT 8 /* Horizontal size */
! 216: #define LCDCON3_HOZVAL_MASK (0x7ff<<LCDCON3_HOZVAL_SHIFT)
! 217: #define LCDCON3_HBPD_SHIFT 19 /* TFT H back porch */
! 218: #define LCDCON3_HBPD_MASK (0x7f<<LCDCON3_HPBD_SHIFT)
! 219: #define LCDCON3_WDLY_SHIFT 19 /* STN vline delay */
! 220: #define LCDCON3_WDLY_MASK (0x03<<LCDCON3_WDLY_SHIFT)
! 221: #define LCDCON3_WDLY_16 (0x00<<LCDCON3_WDLY_SHIFT)
! 222: #define LCDCON3_WDLY_32 (0x01<<LCDCON3_WDLY_SHIFT)
! 223: #define LCDCON3_WDLY_64 (0x02<<LCDCON3_WDLY_SHIFT)
! 224: #define LCDCON3_WDLY_128 (0x03<<LCDCON3_WDLY_SHIFT)
! 225:
! 226: #define LCDC_LCDCON4 0x0c /* control 4 */
! 227: #define LCDCON4_HPSW_SHIFT 0 /* TFT Hsync pulse width */
! 228: #define LCDCON4_HPSW_MASK (0xff<<LCDCON4_HPSW_SHIFT)
! 229: #define LCDCON4_WLH_SHIFT 0 /* STN VLINE high width */
! 230: #define LCDCON4_WLH_MASK (0x03<<LCDCON4_WLH_SHIFT)
! 231: #define LCDCON4_WLH_16 (0x00<<LCDCON4_WLH_SHIFT)
! 232: #define LCDCON4_WLH_32 (0x01<<LCDCON4_WLH_SHIFT)
! 233: #define LCDCON4_WLH_64 (0x02<<LCDCON4_WLH_SHIFT)
! 234: #define LCDCON4_WLH_128 (0x03<<LCDCON4_WLH_SHIFT)
! 235:
! 236: #define LCDCON4_MVAL_SHIFT 8 /* STN VM toggle rate */
! 237: #define LCDCON4_MVAL_MASK (0xff<<LCDCON4_MVAL_SHIFT)
! 238:
! 239: #define LCDC_LCDCON5 0x10 /* control 5 */
! 240: #define LCDCON5_HWSWP (1<<0) /* half-word swap */
! 241: #define LCDCON5_BSWP (1<<1) /* byte swap */
! 242: #define LCDCON5_ENLEND (1<<2) /* TFT: enable LEND signal */
! 243: #define LCDCON5_PWREN (1<<3) /* enable PWREN signale */
! 244: #define LCDCON5_INVLEND (1<<4) /* TFT: LEND signal polarity */
! 245: #define LCDCON5_INVPWREN (1<<5) /* PWREN signal polarity */
! 246: #define LCDCON5_INVVDEN (1<<6) /* VDEN signal polarity */
! 247: #define LCDCON5_INVVD (1<<7) /* video data signal polarity */
! 248: #define LCDCON5_INVVFRAME (1<<8) /* VFRAME/VSYNC signal polarity */
! 249: #define LCDCON5_INVVLINE (1<<9) /* VLINE/HSYNC signal polarity */
! 250: #define LCDCON5_INVVCLK (1<<10) /* VCLK signal polarity */
! 251: #define LCDCON5_INVVCLK_RISING LCDCON5_INVVCLK
! 252: #define LCDCON5_INVVCLK_FALLING 0
! 253: #define LCDCON5_FRM565 (1<<11) /* RGB:565 format*/
! 254: #define LCDCON5_FRM555I 0 /* RGBI:5551 format */
! 255: #define LCDCON5_BPP24BL (1<<12) /* bit order for bpp24 */
! 256:
! 257: #define LCDCON5_HSTATUS_SHIFT 17 /* TFT: horizontal status */
! 258: #define LCDCON5_HSTATUS_MASK (0x03<<LCDCON5_HSTATUS_SHIFT)
! 259: #define LCDCON5_HSTATUS_HSYNC (0x00<<LCDCON5_HSTATUS_SHIFT)
! 260: #define LCDCON5_HSTATUS_BACKP (0x01<<LCDCON5_HSTATUS_SHIFT)
! 261: #define LCDCON5_HSTATUS_ACTIVE (0x02<<LCDCON5_HSTATUS_SHIFT)
! 262: #define LCDCON5_HSTATUS_FRONTP (0x03<<LCDCON5_HSTATUS_SHIFT)
! 263:
! 264: #define LCDCON5_VSTATUS_SHIFT 19 /* TFT: vertical status */
! 265: #define LCDCON5_VSTATUS_MASK (0x03<<LCDCON5_VSTATUS_SHIFT)
! 266: #define LCDCON5_VSTATUS_HSYNC (0x00<<LCDCON5_VSTATUS_SHIFT)
! 267: #define LCDCON5_VSTATUS_BACKP (0x01<<LCDCON5_VSTATUS_SHIFT)
! 268: #define LCDCON5_VSTATUS_ACTIVE (0x02<<LCDCON5_VSTATUS_SHIFT)
! 269: #define LCDCON5_VSTATUS_FRONTP (0x03<<LCDCON5_VSTATUS_SHIFT)
! 270:
! 271: #define LCDC_LCDSADDR1 0x14 /* frame buffer start address */
! 272: #define LCDC_LCDSADDR2 0x18
! 273: #define LCDC_LCDSADDR3 0x1c
! 274: #define LCDSADDR3_OFFSIZE_SHIFT 11
! 275: #define LCDSADDR3_PAGEWIDTH_SHIFT 0
! 276:
! 277: #define LCDC_REDLUT 0x20 /* STN: red lookup table */
! 278: #define LCDC_GREENLUT 0x24 /* STN: green lookup table */
! 279: #define LCDC_BLUELUT 0x28 /* STN: blue lookup table */
! 280: #define LCDC_DITHMODE 0x4c /* STN: dithering mode */
! 281:
! 282: #define LCDC_TPAL 0x50 /* TFT: temporary palette */
! 283: #define TPAL_TPALEN (1<<24)
! 284: #define TPAL_RED_SHIFT 16
! 285: #define TPAL_GREEN_SHIFT 8
! 286: #define TPAL_BLUE_SHIFT 0
! 287:
! 288: #define LCDC_LCDINTPND 0x54
! 289: #define LCDC_LCDSRCPND 0x58
! 290: #define LCDC_LCDINTMSK 0x5c
! 291: #define LCDINT_FICNT (1<<0) /* FIFO trigger interrupt pending */
! 292: #define LCDINT_FRSYN (1<<1) /* frame sync interrupt pending */
! 293: #define LCDINT_FIWSEL (1<<2) /* FIFO trigger level: 1=8 words, 0=4 words*/
! 294:
! 295: #define LCDC_LPCSEL 0x60 /* LPC3600 mode */
! 296: #define LPCSEL_LPC_EN (1<<0) /* enable LPC3600 mode */
! 297: #define LPCSEL_RES_SEL (1<<1) /* 1=240x320 0=320x240 */
! 298: #define LPCSEL_MODE_SEL (1<<2)
! 299: #define LPCSEL_CPV_SEL (1<<3)
! 300:
! 301:
! 302: #define LCDC_PALETTE 0x0400
! 303: #define LCDC_PALETTE_SIZE 0x0400
! 304:
! 305: #define S3C24X0_LCDC_SIZE (LCDC_PALETTE+LCDC_PALETTE_SIZE)
! 306:
! 307: /* Timer */
! 308: #define TIMER_TCFG0 0x00 /* Timer configuration */
! 309: #define TIMER_TCFG1 0x04
! 310: #define TCFG1_MUX_SHIFT(n) (4*(n))
! 311: #define TCFG1_MUX_MASK(n) (0x0f << TCFG1_MUX_SHIFT(n))
! 312: #define TCFG1_MUX_DIV2 0
! 313: #define TCFG1_MUX_DIV4 1
! 314: #define TCFG1_MUX_DIV8 2
! 315: #define TCFG1_MUX_DIV16 3
! 316: #define TCFG1_MUX_EXT 4
! 317: #define TIMER_TCON 0x08 /* control */
! 318: #define TCON_SHIFT(n) (4 * ((n)==0 ? 0 : (n)+1))
! 319: #define TCON_START(n) (1 << TCON_SHIFT(n))
! 320: #define TCON_MANUALUPDATE(n) (1 << (TCON_SHIFT(n) + 1))
! 321: #define TCON_INVERTER(n) (1 << (TCON_SHIFT(n) + 2))
! 322: #define __TCON_AUTORELOAD(n) (1 << (TCON_SHIFT(n) + 3)) /* n=0..3 */
! 323: #define TCON_AUTORELOAD4 (1<<22) /* stupid hardware design */
! 324: #define TCON_AUTORELOAD(n) ((n)==4 ? TCON_AUTORELOAD4 : __TCON_AUTORELOAD(n))
! 325: #define TCON_MASK(n) (0x0f << TCON_SHIFT(n))
! 326: #define TIMER_TCNTB(n) (0x0c+0x0c*(n)) /* count buffer */
! 327: #define TIMER_TCMPB(n) (0x10+0x0c*(n)) /* compare buffer */
! 328: #define __TIMER_TCNTO(n) (0x14+0x0c*(n)) /* count observation */
! 329: #define TIMER_TCNTO4 0x40
! 330: #define TIMER_TCNTO(n) ((n)==4 ? TIMER_TCNTO4 : __TIMER_TCNTO(n))
! 331:
! 332: #define S3C24X0_TIMER_SIZE 0x44
! 333:
! 334: /* UART */
! 335: /* diffs to s3c2800 */
! 336: #define UMCON_AFC (1<<4) /* auto flow control */
! 337: #define UMSTAT_DCTS (1<<2) /* CTS change */
! 338: #define ULCON_IR (1<<6)
! 339: #define ULCON_PARITY_SHIFT 3
! 340:
! 341: #define S3C24X0_UART_SIZE 0x2c
! 342:
! 343: /* USB device */
! 344: /* XXX */
! 345:
! 346: /* Watch dog timer */
! 347: #define WDT_WTCON 0x00 /* WDT mode */
! 348: #define WTCON_PRESCALE_SHIFT 8
! 349: #define WTCON_PRESCALE (0xff<<WTCON_PRESCALE_SHIFT)
! 350: #define WTCON_ENABLE (1<<5)
! 351: #define WTCON_CLKSEL (3<<3)
! 352: #define WTCON_CLKSEL_16 (0<<3)
! 353: #define WTCON_CLKSEL_32 (1<<3)
! 354: #define WTCON_CLKSEL_64 (2<<3)
! 355: #define WTCON_CLKSEL_128 (3<<3)
! 356: #define WTCON_ENINT (1<<2)
! 357: #define WTCON_ENRST (1<<0)
! 358:
! 359: #define WTCON_WDTSTOP 0
! 360:
! 361: #define WDT_WTDAT 0x04 /* timer data */
! 362: #define WDT_WTCNT 0x08 /* timer count */
! 363:
! 364: #define S3C24X0_WDT_SIZE 0x0c
! 365:
! 366: /* IIC */ /* XXX */
! 367: #define S3C24X0_IIC_SIZE 0x0c
! 368:
! 369:
! 370: /* IIS */ /* XXX */
! 371: #define S3C24X0_IIS_SIZE 0x14
! 372:
! 373: /* RTC */ /* XXX */
! 374:
! 375: /* SPI */
! 376: #define S3C24X0_SPI_SIZE 0x20
! 377:
! 378: #define SPI_SPCON 0x00
! 379: #define SPCON_TAGD (1<<0) /* Tx auto garbage */
! 380: #define SPCON_CPHA (1<<1)
! 381: #define SPCON_CPOL (1<<2)
! 382: #define SPCON_IDLELOW_RISING (0|0)
! 383: #define SPCON_IDLELOW_FALLING (0|SPCON_CPHA)
! 384: #define SPCON_IDLEHIGH_FALLING (SPCON_CPOL|0)
! 385: #define SPCON_IDLEHIGH_RISING (SPCON_CPOL|SPCON_CPHA)
! 386: #define SPCON_MSTR (1<<3)
! 387: #define SPCON_ENSCK (1<<4)
! 388: #define SPCON_SMOD_SHIFT 5
! 389: #define SPCON_SMOD_MASK (0x03<<SPCON_SMOD_SHIFT)
! 390: #define SPCON_SMOD_POLL (0x00<<SPCON_SMOD_SHIFT)
! 391: #define SPCON_SMOD_INT (0x01<<SPCON_SMOD_SHIFT)
! 392: #define SPCON_SMOD_DMA (0x02<<SPCON_SMOD_SHIFT)
! 393:
! 394: #define SPI_SPSTA 0x04 /* status register */
! 395: #define SPSTA_REDY (1<<0) /* ready */
! 396: #define SPSTA_MULF (1<<1) /* multi master error */
! 397: #define SPSTA_DCOL (1<<2) /* Data collision error */
! 398:
! 399: #define SPI_SPPIN 0x08
! 400: #define SPPIN_KEEP (1<<0)
! 401: #define SPPIN_ENMUL (1<<2) /* multi master error detect */
! 402:
! 403: #define SPI_SPPRE 0x0c /* prescaler */
! 404: #define SPI_SPTDAT 0x10 /* tx data */
! 405: #define SPI_SPRDAT 0x14 /* rx data */
! 406:
! 407:
! 408: #endif /* _ARM_S3C2XX0_S3C24X0REG_H_ */
CVSweb