[BACK]Return to s3c2800reg.h CVS log [TXT][DIR] Up to [local] / sys / arch / arm / s3c2xx0

Annotation of sys/arch/arm/s3c2xx0/s3c2800reg.h, Revision 1.1.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