Annotation of sys/arch/arm/s3c2xx0/s3c2800reg.h, Revision 1.1
1.1 ! nbrk 1: /* $NetBSD: s3c2800reg.h,v 1.6 2005/12/11 12:16:51 christos Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2002, 2003 Fujitsu Component Limited
! 5: * Copyright (c) 2002, 2003, 2005 Genetec Corporation
! 6: * All rights reserved.
! 7: *
! 8: * Redistribution and use in source and binary forms, with or without
! 9: * modification, are permitted provided that the following conditions
! 10: * are met:
! 11: * 1. Redistributions of source code must retain the above copyright
! 12: * notice, this list of conditions and the following disclaimer.
! 13: * 2. Redistributions in binary form must reproduce the above copyright
! 14: * notice, this list of conditions and the following disclaimer in the
! 15: * documentation and/or other materials provided with the distribution.
! 16: * 3. Neither the name of The Fujitsu Component Limited nor the name of
! 17: * Genetec corporation may not be used to endorse or promote products
! 18: * derived from this software without specific prior written permission.
! 19: *
! 20: * THIS SOFTWARE IS PROVIDED BY FUJITSU COMPONENT LIMITED AND GENETEC
! 21: * CORPORATION ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
! 22: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
! 23: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
! 24: * DISCLAIMED. IN NO EVENT SHALL FUJITSU COMPONENT LIMITED OR GENETEC
! 25: * CORPORATION BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
! 26: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
! 27: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
! 28: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
! 29: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
! 30: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
! 31: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 32: * SUCH DAMAGE.
! 33: */
! 34:
! 35: /*
! 36: * Samsung S3C2800 processor is ARM920T based integrated CPU
! 37: *
! 38: * Reference:
! 39: * S3C2800 User's Manual
! 40: */
! 41: #ifndef _ARM_S3C2XX0_S3C2800REG_H_
! 42: #define _ARM_S3C2XX0_S3C2800REG_H_
! 43:
! 44: /* common definitions for S3C2800, S3C2400 and S3C2410 */
! 45: #include <arm/s3c2xx0/s3c2xx0reg.h>
! 46:
! 47: /*
! 48: * Memory Map
! 49: */
! 50:
! 51: /* ROM/SRAM/FLASH */
! 52: #define S3C2800_SBANK0_START 0x00000000
! 53: #define S3C2800_SBANK1_START 0x02000000
! 54: #define S3C2800_SBANK2_START 0x04000000
! 55: #define S3C2800_SBANK3_START 0x06000000
! 56: #define S3C2800_SBANK4_START 0x08000000
! 57:
! 58: /* DRAM */
! 59: #define S3C2800_DBANK0_START 0x08000000
! 60: #define S3C2800_DBANK1_START 0x0a000000
! 61: #define S3C2800_DBANK2_START 0x0c000000
! 62: #define S3C2800_DBANK3_START 0x0e000000
! 63: #define S3C2800_DBANK_SIZE 0x02000000 /* 32MB */
! 64:
! 65: /*
! 66: * Physical address of integrated peripherals
! 67: */
! 68: #define S3C2800_PERIPHERALS 0x10000000
! 69: #define S3C2800_PERIPHERALS_SIZE 0x200000 /* 2MBytes */
! 70: #define S3C2800_CLKMAN_BASE 0x10000000 /* clock & power management */
! 71: #define S3C2800_CLKMAN_SIZE 0x18
! 72: #define S3C2800_MEMCTL_BASE 0x10010000 /* memory controller */
! 73: #define S3C2800_MEMCTL_SIZE 0x20
! 74: #define S3C2800_DMA0_BASE 0x10030000
! 75: #define S3C2800_DMA1_BASE 0x10040000
! 76: #define S3C2800_DMA2_BASE 0x10050000
! 77: #define S3C2800_DMA3_BASE 0x10060000
! 78: #define S3C2800_PCICTL_BASE 0x10080000
! 79: #define S3C2800_PCICTL_SIZE 0x58
! 80: #define S3C2800_GPIO_BASE 0x10100000
! 81: #define S3C2800_GPIO_SIZE 0x50
! 82: #define S3C2800_TIMER0_BASE 0x10130000
! 83: #define S3C2800_TIMER1_BASE 0x10140000
! 84: #define S3C2800_TIMER2_BASE 0x10150000
! 85: #define S3C2800_TIMER_SIZE 0x10
! 86: #define S3C2800_UART0_BASE 0x10170000
! 87: #define S3C2800_UART1_BASE 0x10180000
! 88: #define S3C2800_UART_SIZE 0x2c
! 89: #define S3C2800_IIC0_BASE 0x10190000
! 90: #define S3C2800_IIC1_BASE 0x101a0000
! 91: #define S3C2800_IIC_SIZE 0x10
! 92: #define S3C2800_INTCTL_BASE 0x10020000
! 93: #define S3C2800_INTCTL_SIZE 0x14
! 94: #define S3C2800_WDT_BASE 0x10120000
! 95: #define S3C2800_WDT_SIZE 0x0c
! 96:
! 97:
! 98: /* width of interrupt controller */
! 99: #define ICU_LEN 29
! 100: #define ICU_INT_HWMASK 0x1fffffff
! 101:
! 102: /* Clock & power manager */
! 103: #define CLKMAN_PLLCON 0x00
! 104:
! 105: /* MDIV, PDIV, SDIV */
! 106: #define PLLCON_MDIV_SHIFT 12
! 107: #define PLLCON_MDIV_MASK (0xff<<PLLCON_MDIV_SHIFT)
! 108: #define PLLCON_PDIV_SHIFT 4
! 109: #define PLLCON_PDIV_MASK (0x3f<<PLLCON_PDIV_SHIFT)
! 110: #define PLLCON_SDIV_SHIFT 0
! 111: #define PLLCON_SDIV_MASK (0x03<<PLLCON_SDIV_SHIFT)
! 112:
! 113: #define CLKMAN_CLKCON 0x04
! 114: #define CLKCON_PCLK (1<<12) /* APB clock division ratio */
! 115: #define CLKCON_HCLK (1<<11) /* AHB clock division ratio */
! 116: #define CLKCON_PCI (1<<10) /* FCLK into PCI */
! 117: #define CLKCON_IIC1 (1<<9) /* PCLK to I2C1 */
! 118: #define CLKCON_IIC0 (1<<8) /* PCLK to I2C0 */
! 119: #define CLKCON_RTC (1<<7) /* PCLK to RTC */
! 120: #define CLKCON_UART1 (1<<6) /* PCLK to UART1 */
! 121: #define CLKCON_UART0 (1<<5) /* PCLK to UART0 */
! 122: #define CLKCON_DMA23 (1<<4) /* PCLK to DMA2,3 */
! 123: #define CLKCON_DMA01 (1<<3) /* PCLK to DMA0,1 */
! 124: #define CLKCON_TIMER (1<<2) /* PCLK to TIMER */
! 125: #define CLKCON_IDLE (1<<1) /* Enter IDLE Mode */
! 126:
! 127: #define CLKMAN_CLKSLOW 0x08 /* slow clock controll */
! 128: #define CLKSLOW_SLOW (1<<4) /* 1: Enable SLOW mode */
! 129: #define CLKSLOW_VAL_MASK 0x0f /* divider value for slow clock */
! 130:
! 131: #define CLKMAN_LOCKTIME 0x0c /* PLL lock time */
! 132:
! 133: #define CLKMAN_SWRCON 0x10 /* Software reset control */
! 134: #define SWRCON_SWR (1<<0) /* 1: Invoke software reset */
! 135:
! 136: #define CLKMAN_RSTSR 0x14 /* Reset status register */
! 137: #define RSTSR_WDR (1<<2) /* watchdog reset */
! 138: #define RSTSR_SWR (1<<1) /* Software reset */
! 139: #define RSTSR_HWR (1<<0) /* Hardware reset */
! 140:
! 141: /* memory controller */
! 142: #define MEMCTL_ENDIAN 0x00 /* Endian control (read-only) */
! 143: #define MEMCTL_SMBCON0 0x04 /* SBank0 control register for static */
! 144: #define MEMCTL_SMBCON1 0x08 /* SBank0 control register for static */
! 145: #define MEMCTL_SMBCON2 0x0c /* SBank0 control register for static */
! 146: #define MEMCTL_SMBCON3 0x10 /* SBank0 control register for static */
! 147: #define SMBCON_WS (1<<20) /* Wait status */
! 148: #define SMBCON_ST (1<<19) /* use UB/LB */
! 149: #define SMBCON_TACS_SHIFT 12 /* address setup time before nSCSn */
! 150: #define SMBCON_TACS (3<<SMBCON_TACS_SHIFT)
! 151: #define SMBCON_TCOS_SHIFT 10 /* CS setup time before nOE */
! 152: #define SMBCON_TCOS (3<<SMBCON_TCOS_SHIFT)
! 153: #define SMBCON_TOCH_SHIFT 8 /* CS hold time after nOE */
! 154: #define SMBCON_TOCH (3<<SMBCON_TOCH_SHIFT)
! 155: #define SMBCON_TACC_SHIFT 4 /* Access cycle */
! 156: #define SMBCON_TACC (0x0f<<SMBCON_TOCH_SHIFT)
! 157: #define SMBCON_TACC_1CLK (0x00<<SMBCON_TOCH_SHIFT)
! 158: #define SMBCON_TACC_2CLK (0x01<<SMBCON_TOCH_SHIFT)
! 159: #define SMBCON_TACC_3CLK (0x02<<SMBCON_TOCH_SHIFT)
! 160: #define SMBCON_TACC_4CLK (0x03<<SMBCON_TOCH_SHIFT)
! 161: #define SMBCON_TACC_6CLK (0x04<<SMBCON_TOCH_SHIFT)
! 162: #define SMBCON_TACC_7CLK (0x05<<SMBCON_TOCH_SHIFT)
! 163: #define SMBCON_TACC_8CLK (0x06<<SMBCON_TOCH_SHIFT)
! 164: #define SMBCON_TACC_9CLK (0x07<<SMBCON_TOCH_SHIFT)
! 165: #define SMBCON_TACC_10CLK (0x08<<SMBCON_TOCH_SHIFT)
! 166: #define SMBCON_TACC_12CLK (0x09<<SMBCON_TOCH_SHIFT)
! 167: #define SMBCON_TACC_14CLK (0x0a<<SMBCON_TOCH_SHIFT)
! 168: #define SMBCON_TCAH_SHIFT 2 /* Address hold time after nSCSn */
! 169: #define SMBCON_SDW 0x03
! 170: #define SMBCON_SDW_8BIT 0
! 171: #define SMBCON_SDW_16BIT 1
! 172: #define SMBCON_SDW_32BIT 2
! 173: #define MEMCTL_REFRESH 0x14 /* DRAM/SDRAM refresh control */
! 174: #define REFRESH_REFEN (1<<23)
! 175: #define REFRESH_REFMD (1<<22)
! 176: #define REFRESH_TRP (3<<20)
! 177: #define REFRESH_TRC (3<<16)
! 178: #define REFRESH_TCHR (3<<12) /* CAS hold time */
! 179: #define REFRESH_COUNTER 0x7ff
! 180: #define MEMCTL_DMTMCON 0x18 /* timing control for dynamic memory */
! 181: #define DMTMCON_DW_SHIFT 16
! 182: #define DMTMCON_DW (3<<DMTMCON_DW_SHIFT) /* bus width */
! 183: #define DMTMCON_MT (3<<10) /* dynamic memory type */
! 184: #define DMTMCON_TRCD (3<<8) /* DRAM RAS to CAS delay */
! 185: #define DMTMCON_TCAS (3<<6) /* CAS pulse width */
! 186: #define DMTMCON_TCP (3<<4) /* CAS pre charge */
! 187: #define DMTMCON_CAN (3<<2) /* column address number */
! 188: #define DMTMCON_STRCD (3<<0) /* SDRAM RAS to CAS delay */
! 189: #define MEMCTL_MRSR 0x1c /* SDRAM mode register */
! 190: #define MRSR_CL_SHIFT 4
! 191: #define MRSR_CL (7<<MRSR_CL_SHIFT) /* CAS latency */
! 192:
! 193: /* GPIO */
! 194: #define GPIO_PCONA 0x00 /* port A configuration */
! 195: #define PCON_INPUT 0 /* Input port */
! 196: #define PCON_OUTPUT 1 /* Output port */
! 197: #define PCON_ALTFUN 2 /* Alternate function */
! 198: #define GPIO_PDATA 0x04 /* port A data */
! 199: #define GPIO_PUPA 0x08 /* port A pull-up */
! 200: #define GPIO_PCONB 0x0c
! 201: #define GPIO_PDATB 0x10
! 202: #define GPIO_PCONC 0x18
! 203: #define GPIO_PDATC 0x1c
! 204: #define GPIO_PUPC 0x20
! 205: #define GPIO_PCOND 0x24
! 206: #define GPIO_PDATD 0x28
! 207: #define GPIO_PUPD 0x2c
! 208: #define GPIO_PCONE 0x30
! 209: #define GPIO_PDATE 0x34
! 210: #define GPIO_PUPE 0x38
! 211: #define GPIO_PCONF 0x3c
! 212: #define GPIO_PDATF 0x40
! 213: #define GPIO_PUPF 0x44
! 214:
! 215: #define GPIO_EXTINTR 0x48 /* external interrupt control */
! 216: #define EXTINTR_LOW 0x00
! 217: #define EXTINTR_HIGH 0x01
! 218: #define EXTINTR_FALLING 0x02
! 219: #define EXTINTR_RISING 0x04
! 220: #define EXTINTR_BOTH 0x06
! 221:
! 222: #define GPIO_SPUCR 0x4c /* special pull-up control */
! 223: #define SPUCR1 (1<<1) /* pull-up for data[31:16] */
! 224: #define SPUCR0 (1<<0) /* pull-up for data[15:0] */
! 225:
! 226: /* Timer */
! 227: #define TIMER_TMCON 0x00 /* control register */
! 228: #define TMCON_MUX (3<<2) /* MUX input */
! 229: #define TMCON_MUX_DIV4 (0<<2)
! 230: #define TMCON_MUX_DIV8 (1<<2)
! 231: #define TMCON_MUX_DIV16 (2<<2)
! 232: #define TMCON_MUX_DIV32 (3<<2)
! 233: #define TMCON_INTENA (1<<1) /* Interrupt/DMA enable */
! 234: #define TMCON_ENABLE (1<<0) /* Count enable */
! 235: #define TIMER_TMDAT 0x04 /* data register */
! 236: #define TMDAT_PRESCALER (0xff<<16)
! 237: #define TMDAT_DATA 0xffff
! 238: #define TIMER_TMCNT 0x08 /* down counter */
! 239:
! 240: /* UART (Small diffs to S3C2400's UART) */
! 241: #define UMCON_AFC (1<<1) /* auto flow control */
! 242: #define UMSTAT_DCTS (1<<4) /* CTS change */
! 243: #define ULCON_IR (1<<7)
! 244: #define ULCON_PARITY_SHIFT 4
! 245:
! 246: /* Interrupt controller */
! 247: #define INTCTL_IRQPND 0x0c /* IRQ pending */
! 248: #define INTCTL_FIQPND 0x10 /* FIQ pending */
! 249:
! 250: /* Interrupt source */
! 251: #define S3C2800_INT_RTC 28 /* RTC alarm */
! 252: #define S3C2800_INT_TICK 27 /* RTC tick */
! 253: #define S3C2800_INT_FULL 26 /* Remocon data FIFO full */
! 254: #define S3C2800_INT_RMT 25 /* Remocon data input */
! 255: #define S3C2800_INT_UERR1 24 /* UART1 error */
! 256: #define S3C2800_INT_UERR0 23 /* UART0 error */
! 257: #define S3C2800_INT_TXD1 22 /* UART1 Tx */
! 258: #define S3C2800_INT_TXD0 21 /* UART0 Tx */
! 259: #define S3C2800_INT_RXD1 20 /* UART1 Rx */
! 260: #define S3C2800_INT_RXD0 19 /* UART0 Rx*/
! 261: #define S3C2800_INT_IIC1 18
! 262: #define S3C2800_INT_IIC0 17
! 263: #define S3C2800_INT_TIMER2 16
! 264: #define S3C2800_INT_TIMER1 15
! 265: #define S3C2800_INT_TIMER0 14
! 266: #define S3C2800_INT_DMA3 13
! 267: #define S3C2800_INT_DMA2 12
! 268: #define S3C2800_INT_DMA1 11
! 269: #define S3C2800_INT_DMA0 10
! 270: #define S3C2800_INT_PCI 8 /* PCI interrupt */
! 271: #define S3C2800_INT_EXT(n) (n) /* External interrupt [7:0] */
! 272:
! 273:
! 274: /* PCI space */
! 275: #define S3C2800_PCI_BASE 0x20000000
! 276: #define S3C2800_PCI_MEMSPACE_BASE 0x20000000 /* Memory space */
! 277: #define S3C2800_PCI_MEMSPACE_SIZE 0x08000000
! 278: #define S3C2800_PCI_CONF0_BASE 0x28000000 /* Config type 0 space */
! 279: #define S3C2800_PCI_CONF0_SIZE 0x0000b000
! 280: #define S3C2800_PCI_CONF1_BASE 0x2a000000 /* Config type 1 space */
! 281: #define S3C2800_PCI_CONF1_SIZE 0x02000000
! 282: #define S3C2800_PCI_IOSPACE_BASE 0x2e000000
! 283: #define S3C2800_PCI_IOSPACE_SIZE 0x00100000
! 284:
! 285: #define PCICTL_PCICON 0x0100 /* control and status */
! 286: #define PCICON_INT (1<<31) /* internal interrupt status */
! 287: #define PCICON_MBS (1<<29) /* PCI master interface busy */
! 288: #define PCICON_TBS (1<<28) /* PCI target interface busy */
! 289: #define PCICON_CRS (1<<27) /* ARM CPU reset status */
! 290: #define PCICON_RDY (1<<9) /* Enable PCI target read */
! 291: #define PCICON_CFD (1<<8) /* Configuration done */
! 292: #define PCICON_ATS (1<<4) /* Enable address translation */
! 293: #define PCICON_ARB (1<<1) /* Enable internal arbiter */
! 294: #define PCICON_HST (1<<0) /* bridge/adaptor */
! 295:
! 296: #define PCICTL_PCISET 0x104 /* PCI command, read count, DAC */
! 297: #define PCISET_CMD_SHIFT 17
! 298: #define PCISET_DAC_MASK 0xff
! 299:
! 300: #define PCICTL_PCIINTEN 0x108 /* interrupt enable */
! 301: #define PCICTL_PCIINTST 0x10c /* interrupt status */
! 302:
! 303: #define PCIINTEN_BAP (1<<31) /* INTA# in adapter mode */
! 304: #define PCIINTST_WDE (1<<31) /* master fatal error in read */
! 305: #define PCIINTST_RDE (1<<30) /* master fatal error in write */
! 306: #define PCIINT_INA (1<<10) /* INTA# enable */
! 307: #define PCIINT_SER (1<<9) /* SERR# interrupt enable */
! 308: #define PCIINT_TPE (1<<4) /* target parity error */
! 309: #define PCIINT_MPE (1<<3) /* master parity error */
! 310: #define PCIINT_MFE (1<<2) /* master fatal error */
! 311: #define PCIINT_PRA (1<<1) /* reset assert interrupt */
! 312: #define PCIINT_PRD (1<<0) /* reset de-assert interrupt */
! 313:
! 314: #define PCICTL_PCIBATPA0 0x140 /* address translation PCI to AHB BAR0 */
! 315: #define PCICTL_PCIBAM0 0x144 /* BAR0 mask */
! 316: #define PCICTL_PCIBATPA1 0x148 /* address translation PCI to AHB BAR1 */
! 317: #define PCICTL_PCIBAM1 0x14c /* BAR0 mask */
! 318: #define PCICTL_PCIBATPA2 0x150 /* address translation PCI to AHB BAR2 */
! 319: #define PCICTL_PCIBAM2 0x154 /* BAR0 mask */
! 320:
! 321: /* Watch dog timer */
! 322: #define WDT_WTPSCLR 0x00
! 323: #define WDT_WTCON 0x04
! 324: #define WTCON_WDTSTOP 0xa5
! 325: #define WDT_WTCNT 0x08
! 326:
! 327: #endif /* _ARM_S3C2XX0_S3C2800REG_H_ */
CVSweb