1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2006-09-06 XuXinming first version 9*10465441SEvalZero * 2006-09-16 Bernard modify according to code style 10*10465441SEvalZero */ 11*10465441SEvalZero 12*10465441SEvalZero #ifndef __S3C44B0_H__ 13*10465441SEvalZero #define __S3C44B0_H__ 14*10465441SEvalZero 15*10465441SEvalZero #ifdef __cplusplus 16*10465441SEvalZero extern "C" { 17*10465441SEvalZero #endif 18*10465441SEvalZero 19*10465441SEvalZero /** 20*10465441SEvalZero * @addtogroup S3C44B0 21*10465441SEvalZero */ 22*10465441SEvalZero /*@{*/ 23*10465441SEvalZero 24*10465441SEvalZero /*------------------------------------------------------------------------ 25*10465441SEvalZero * ASIC Address Definition 26*10465441SEvalZero *----------------------------------------------------------------------*/ 27*10465441SEvalZero #define S3C_REG *(volatile unsigned int *) 28*10465441SEvalZero #define S3C_REGW *(volatile unsigned short *) 29*10465441SEvalZero #define S3C_REGB *(volatile unsigned char *) 30*10465441SEvalZero 31*10465441SEvalZero /* System */ 32*10465441SEvalZero #define SYSCFG (S3C_REG(0x1c00000)) 33*10465441SEvalZero 34*10465441SEvalZero /* Cache */ 35*10465441SEvalZero #define NCACHBE0 (S3C_REG(0x1c00004)) 36*10465441SEvalZero #define NCACHBE1 (S3C_REG(0x1c00008)) 37*10465441SEvalZero 38*10465441SEvalZero /* Bus control */ 39*10465441SEvalZero #define SBUSCON (S3C_REG(0x1c40000)) 40*10465441SEvalZero 41*10465441SEvalZero /* Memory control */ 42*10465441SEvalZero #define BWSCON (S3C_REG(0x1c80000)) 43*10465441SEvalZero #define BANKCON0 (S3C_REG(0x1c80004)) 44*10465441SEvalZero #define BANKCON1 (S3C_REG(0x1c80008)) 45*10465441SEvalZero #define BANKCON2 (S3C_REG(0x1c8000c)) 46*10465441SEvalZero #define BANKCON3 (S3C_REG(0x1c80010)) 47*10465441SEvalZero #define BANKCON4 (S3C_REG(0x1c80014)) 48*10465441SEvalZero #define BANKCON5 (S3C_REG(0x1c80018)) 49*10465441SEvalZero #define BANKCON6 (S3C_REG(0x1c8001c)) 50*10465441SEvalZero #define BANKCON7 (S3C_REG(0x1c80020)) 51*10465441SEvalZero #define REFRESH (S3C_REG(0x1c80024)) 52*10465441SEvalZero #define BANKSIZE (S3C_REG(0x1c80028)) 53*10465441SEvalZero #define MRSRB6 (S3C_REG(0x1c8002c)) 54*10465441SEvalZero #define MRSRB7 (S3C_REG(0x1c80030)) 55*10465441SEvalZero 56*10465441SEvalZero /* UART */ 57*10465441SEvalZero #define ULCON0 (S3C_REG(0x1d00000)) 58*10465441SEvalZero #define ULCON1 (S3C_REG(0x1d04000)) 59*10465441SEvalZero #define UCON0 (S3C_REG(0x1d00004)) 60*10465441SEvalZero #define UCON1 (S3C_REG(0x1d04004)) 61*10465441SEvalZero #define UFCON0 (S3C_REG(0x1d00008)) 62*10465441SEvalZero #define UFCON1 (S3C_REG(0x1d04008)) 63*10465441SEvalZero #define UMCON0 (S3C_REG(0x1d0000c)) 64*10465441SEvalZero #define UMCON1 (S3C_REG(0x1d0400c)) 65*10465441SEvalZero #define UTRSTAT0 (S3C_REG(0x1d00010)) 66*10465441SEvalZero #define UTRSTAT1 (S3C_REG(0x1d04010)) 67*10465441SEvalZero #define UERSTAT0 (S3C_REG(0x1d00014)) 68*10465441SEvalZero #define UERSTAT1 (S3C_REG(0x1d04014)) 69*10465441SEvalZero #define UFSTAT0 (S3C_REG(0x1d00018)) 70*10465441SEvalZero #define UFSTAT1 (S3C_REG(0x1d04018)) 71*10465441SEvalZero #define UMSTAT0 (S3C_REG(0x1d0001c)) 72*10465441SEvalZero #define UMSTAT1 (S3C_REG(0x1d0401c)) 73*10465441SEvalZero #define UBRDIV0 (S3C_REG(0x1d00028)) 74*10465441SEvalZero #define UBRDIV1 (S3C_REG(0x1d04028)) 75*10465441SEvalZero 76*10465441SEvalZero #define UTXH0 (S3C_REGB(0x1d00020)) 77*10465441SEvalZero #define UTXH1 (S3C_REGB(0x1d04020)) 78*10465441SEvalZero #define URXH0 (S3C_REGB(0x1d00024)) 79*10465441SEvalZero #define URXH1 (S3C_REGB(0x1d04024)) 80*10465441SEvalZero 81*10465441SEvalZero /* SIO */ 82*10465441SEvalZero #define SIOCON (S3C_REG(0x1d14000)) 83*10465441SEvalZero #define SIODAT (S3C_REG(0x1d14004)) 84*10465441SEvalZero #define SBRDR (S3C_REG(0x1d14008)) 85*10465441SEvalZero #define IVTCNT (S3C_REG(0x1d1400c)) 86*10465441SEvalZero #define DCNTZ (S3C_REG(0x1d14010)) 87*10465441SEvalZero 88*10465441SEvalZero /* IIS */ 89*10465441SEvalZero #define IISCON (S3C_REG(0x1d18000)) 90*10465441SEvalZero #define IISMOD (S3C_REG(0x1d18004)) 91*10465441SEvalZero #define IISPSR (S3C_REG(0x1d18008)) 92*10465441SEvalZero #define IISFCON (S3C_REG(0x1d1800c)) 93*10465441SEvalZero 94*10465441SEvalZero #define IISFIF (S3C_REQW(0x1d18010)) 95*10465441SEvalZero 96*10465441SEvalZero /* I/O Port */ 97*10465441SEvalZero #define PCONA (S3C_REG(0x1d20000)) 98*10465441SEvalZero #define PDATA (S3C_REG(0x1d20004)) 99*10465441SEvalZero 100*10465441SEvalZero #define PCONB (S3C_REG(0x1d20008)) 101*10465441SEvalZero #define PDATB (S3C_REG(0x1d2000c)) 102*10465441SEvalZero 103*10465441SEvalZero #define PCONC (S3C_REG(0x1d20010)) 104*10465441SEvalZero #define PDATC (S3C_REG(0x1d20014)) 105*10465441SEvalZero #define PUPC (S3C_REG(0x1d20018)) 106*10465441SEvalZero 107*10465441SEvalZero #define PCOND (S3C_REG(0x1d2001c)) 108*10465441SEvalZero #define PDATD (S3C_REG(0x1d20020)) 109*10465441SEvalZero #define PUPD (S3C_REG(0x1d20024)) 110*10465441SEvalZero 111*10465441SEvalZero #define PCONE (S3C_REG(0x1d20028)) 112*10465441SEvalZero #define PDATE (S3C_REG(0x1d2002c)) 113*10465441SEvalZero #define PUPE (S3C_REG(0x1d20030)) 114*10465441SEvalZero 115*10465441SEvalZero #define PCONF (S3C_REG(0x1d20034)) 116*10465441SEvalZero #define PDATF (S3C_REG(0x1d20038)) 117*10465441SEvalZero #define PUPF (S3C_REG(0x1d2003c)) 118*10465441SEvalZero 119*10465441SEvalZero #define PCONG (S3C_REG(0x1d20040)) 120*10465441SEvalZero #define PDATG (S3C_REG(0x1d20044)) 121*10465441SEvalZero #define PUPG (S3C_REG(0x1d20048)) 122*10465441SEvalZero 123*10465441SEvalZero #define SPUCR (S3C_REG(0x1d2004c)) 124*10465441SEvalZero #define EXTINT (S3C_REG(0x1d20050)) 125*10465441SEvalZero #define EXTINTPND (S3C_REG(0x1d20054)) 126*10465441SEvalZero 127*10465441SEvalZero /* Watchdog */ 128*10465441SEvalZero #define WTCON (S3C_REG(0x1d30000)) 129*10465441SEvalZero #define WTDAT (S3C_REG(0x1d30004)) 130*10465441SEvalZero #define WTCNT (S3C_REG(0x1d30008)) 131*10465441SEvalZero 132*10465441SEvalZero /* ADC */ 133*10465441SEvalZero #define ADCCON (S3C_REG(0x1d40000)) 134*10465441SEvalZero #define ADCPSR (S3C_REG(0x1d40004)) 135*10465441SEvalZero #define ADCDAT (S3C_REG(0x1d40008)) 136*10465441SEvalZero 137*10465441SEvalZero /* Timer */ 138*10465441SEvalZero #define TCFG0 (S3C_REG(0x1d50000)) 139*10465441SEvalZero #define TCFG1 (S3C_REG(0x1d50004)) 140*10465441SEvalZero #define TCON (S3C_REG(0x1d50008)) 141*10465441SEvalZero 142*10465441SEvalZero #define TCNTB0 (S3C_REG(0x1d5000c)) 143*10465441SEvalZero #define TCMPB0 (S3C_REG(0x1d50010)) 144*10465441SEvalZero #define TCNTO0 (S3C_REG(0x1d50014)) 145*10465441SEvalZero 146*10465441SEvalZero #define TCNTB1 (S3C_REG(0x1d50018)) 147*10465441SEvalZero #define TCMPB1 (S3C_REG(0x1d5001c)) 148*10465441SEvalZero #define TCNTO1 (S3C_REG(0x1d50020)) 149*10465441SEvalZero 150*10465441SEvalZero #define TCNTB2 (S3C_REG(0x1d50024)) 151*10465441SEvalZero #define TCMPB2 (S3C_REG(0x1d50028)) 152*10465441SEvalZero #define TCNTO2 (S3C_REG(0x1d5002c)) 153*10465441SEvalZero 154*10465441SEvalZero #define TCNTB3 (S3C_REG(0x1d50030)) 155*10465441SEvalZero #define TCMPB3 (S3C_REG(0x1d50034)) 156*10465441SEvalZero #define TCNTO3 (S3C_REG(0x1d50038)) 157*10465441SEvalZero 158*10465441SEvalZero #define TCNTB4 (S3C_REG(0x1d5003c)) 159*10465441SEvalZero #define TCMPB4 (S3C_REG(0x1d50040)) 160*10465441SEvalZero #define TCNTO4 (S3C_REG(0x1d50044)) 161*10465441SEvalZero 162*10465441SEvalZero #define TCNTB5 (S3C_REG(0x1d50048)) 163*10465441SEvalZero #define TCNTO5 (S3C_REG(0x1d5004c)) 164*10465441SEvalZero 165*10465441SEvalZero /* IIC */ 166*10465441SEvalZero #define IICCON (S3C_REG(0x1d60000)) 167*10465441SEvalZero #define IICSTAT (S3C_REG(0x1d60004)) 168*10465441SEvalZero #define IICADD (S3C_REG(0x1d60008)) 169*10465441SEvalZero #define IICDS (S3C_REG(0x1d6000c)) 170*10465441SEvalZero 171*10465441SEvalZero /* RTC */ 172*10465441SEvalZero #define RTCCON (S3C_REGB(0x1d70040) 173*10465441SEvalZero #define RTCALM (S3C_REGB(0x1d70050) 174*10465441SEvalZero #define ALMSEC (S3C_REGB(0x1d70054) 175*10465441SEvalZero #define ALMMIN (S3C_REGB(0x1d70058) 176*10465441SEvalZero #define ALMHOUR (S3C_REGB(0x1d7005c) 177*10465441SEvalZero #define ALMDAY (S3C_REGB(0x1d70060) 178*10465441SEvalZero #define ALMMON (S3C_REGB(0x1d70064) 179*10465441SEvalZero #define ALMYEAR (S3C_REGB(0x1d70068) 180*10465441SEvalZero #define RTCRST (S3C_REGB(0x1d7006c) 181*10465441SEvalZero #define BCDSEC (S3C_REGB(0x1d70070) 182*10465441SEvalZero #define BCDMIN (S3C_REGB(0x1d70074) 183*10465441SEvalZero #define BCDHOUR (S3C_REGB(0x1d70078) 184*10465441SEvalZero #define BCDDAY (S3C_REGB(0x1d7007c) 185*10465441SEvalZero #define BCDDATE (S3C_REGB(0x1d70080) 186*10465441SEvalZero #define BCDMON (S3C_REGB(0x1d70084) 187*10465441SEvalZero #define BCDYEAR (S3C_REGB(0x1d70088) 188*10465441SEvalZero #define TICINT (S3C_REGB(0x1d7008c) 189*10465441SEvalZero 190*10465441SEvalZero /* Clock & Power management */ 191*10465441SEvalZero #define PLLCON (S3C_REG(0x1d80000)) 192*10465441SEvalZero #define CLKCON (S3C_REG(0x1d80004)) 193*10465441SEvalZero #define CLKSLOW (S3C_REG(0x1d80008)) 194*10465441SEvalZero #define LOCKTIME (S3C_REG(0x1d8000c)) 195*10465441SEvalZero 196*10465441SEvalZero /* Interrupt */ 197*10465441SEvalZero #define INTCON (S3C_REG(0x1e00000)) 198*10465441SEvalZero #define INTPND (S3C_REG(0x1e00004)) 199*10465441SEvalZero #define INTMOD (S3C_REG(0x1e00008)) 200*10465441SEvalZero #define INTMSK (S3C_REG(0x1e0000c)) 201*10465441SEvalZero 202*10465441SEvalZero #define I_PSLV (S3C_REG(0x1e00010)) 203*10465441SEvalZero #define I_PMST (S3C_REG(0x1e00014)) 204*10465441SEvalZero #define I_CSLV (S3C_REG(0x1e00018)) 205*10465441SEvalZero #define I_CMST (S3C_REG(0x1e0001c)) 206*10465441SEvalZero #define I_ISPR (S3C_REG(0x1e00020)) 207*10465441SEvalZero #define I_ISPC (S3C_REG(0x1e00024)) 208*10465441SEvalZero 209*10465441SEvalZero #define F_ISPR (S3C_REG(0x1e00038)) 210*10465441SEvalZero #define F_ISPC (S3C_REG(0x1e0003c)) 211*10465441SEvalZero 212*10465441SEvalZero /********************************/ 213*10465441SEvalZero /* LCD Controller Registers */ 214*10465441SEvalZero /********************************/ 215*10465441SEvalZero #define LCDCON1 (S3C_REG(0x300000)) 216*10465441SEvalZero #define LCDCON2 (S3C_REG(0x300004)) 217*10465441SEvalZero #define LCDSADDR1 (S3C_REG(0x300008)) 218*10465441SEvalZero #define LCDSADDR2 (S3C_REG(0x30000c)) 219*10465441SEvalZero #define LCDSADDR3 (S3C_REG(0x300010)) 220*10465441SEvalZero #define REDLUT (S3C_REG(0x300014)) 221*10465441SEvalZero #define GREENLUT (S3C_REG(0x300018)) 222*10465441SEvalZero #define BLUELUT (S3C_REG(0x30001c)) 223*10465441SEvalZero #define DP1_2 (S3C_REG(0x300020)) 224*10465441SEvalZero #define DP4_7 (S3C_REG(0x300024)) 225*10465441SEvalZero #define DP3_5 (S3C_REG(0x300028)) 226*10465441SEvalZero #define DP2_3 (S3C_REG(0x30002c)) 227*10465441SEvalZero #define DP5_7 (S3C_REG(0x300030)) 228*10465441SEvalZero #define DP3_4 (S3C_REG(0x300034)) 229*10465441SEvalZero #define DP4_5 (S3C_REG(0x300038)) 230*10465441SEvalZero #define DP6_7 (S3C_REG(0x30003c)) 231*10465441SEvalZero #define LCDCON3 (S3C_REG(0x300040)) 232*10465441SEvalZero #define DITHMODE (S3C_REG(0x300044)) 233*10465441SEvalZero 234*10465441SEvalZero /* ZDMA0 */ 235*10465441SEvalZero #define ZDCON0 (S3C_REG(0x1e80000)) 236*10465441SEvalZero #define ZDISRC0 (S3C_REG(0x1e80004)) 237*10465441SEvalZero #define ZDIDES0 (S3C_REG(0x1e80008)) 238*10465441SEvalZero #define ZDICNT0 (S3C_REG(0x1e8000c)) 239*10465441SEvalZero #define ZDCSRC0 (S3C_REG(0x1e80010)) 240*10465441SEvalZero #define ZDCDES0 (S3C_REG(0x1e80014)) 241*10465441SEvalZero #define ZDCCNT0 (S3C_REG(0x1e80018)) 242*10465441SEvalZero 243*10465441SEvalZero /* ZDMA1 */ 244*10465441SEvalZero #define ZDCON1 (S3C_REG(0x1e80020)) 245*10465441SEvalZero #define ZDISRC1 (S3C_REG(0x1e80024)) 246*10465441SEvalZero #define ZDIDES1 (S3C_REG(0x1e80028)) 247*10465441SEvalZero #define ZDICNT1 (S3C_REG(0x1e8002c)) 248*10465441SEvalZero #define ZDCSRC1 (S3C_REG(0x1e80030)) 249*10465441SEvalZero #define ZDCDES1 (S3C_REG(0x1e80034)) 250*10465441SEvalZero #define ZDCCNT1 (S3C_REG(0x1e80038)) 251*10465441SEvalZero 252*10465441SEvalZero /* BDMA0 */ 253*10465441SEvalZero #define BDCON0 (S3C_REG(0x1f80000)) 254*10465441SEvalZero #define BDISRC0 (S3C_REG(0x1f80004)) 255*10465441SEvalZero #define BDIDES0 (S3C_REG(0x1f80008)) 256*10465441SEvalZero #define BDICNT0 (S3C_REG(0x1f8000c)) 257*10465441SEvalZero #define BDCSRC0 (S3C_REG(0x1f80010)) 258*10465441SEvalZero #define BDCDES0 (S3C_REG(0x1f80014)) 259*10465441SEvalZero #define BDCCNT0 (S3C_REG(0x1f80018)) 260*10465441SEvalZero 261*10465441SEvalZero /* BDMA1 */ 262*10465441SEvalZero #define BDCON1 (S3C_REG(0x1f80020)) 263*10465441SEvalZero #define BDISRC1 (S3C_REG(0x1f80024)) 264*10465441SEvalZero #define BDIDES1 (S3C_REG(0x1f80028)) 265*10465441SEvalZero #define BDICNT1 (S3C_REG(0x1f8002c)) 266*10465441SEvalZero #define BDCSRC1 (S3C_REG(0x1f80030)) 267*10465441SEvalZero #define BDCDES1 (S3C_REG(0x1f80034)) 268*10465441SEvalZero #define BDCCNT1 (S3C_REG(0x1f80038)) 269*10465441SEvalZero 270*10465441SEvalZero /*****************************/ 271*10465441SEvalZero /* CPU Mode */ 272*10465441SEvalZero /*****************************/ 273*10465441SEvalZero #define USERMODE 0x10 /* User Mode(USR) */ 274*10465441SEvalZero #define FIQMODE 0x11 /* Fast Interrupt Mode (FIQ) */ 275*10465441SEvalZero #define IRQMODE 0x12 /* Interrupt Mode (IRQ) */ 276*10465441SEvalZero #define SVCMODE 0x13 /* Supervisor Mode (SVC) */ 277*10465441SEvalZero #define ABORTMODE 0x17 /* Abort Mode(ABT) */ 278*10465441SEvalZero #define UNDEFMODE 0x1b /* Undefine Mode(UDF) */ 279*10465441SEvalZero #define MODEMASK 0x1f /* Processor Mode Mask */ 280*10465441SEvalZero #define NOINT 0xc0 281*10465441SEvalZero 282*10465441SEvalZero /*****************************/ 283*10465441SEvalZero /* INT Define */ 284*10465441SEvalZero /*****************************/ 285*10465441SEvalZero #define INT_ADC 0x00 286*10465441SEvalZero #define INT_RTC 0x01 287*10465441SEvalZero #define INT_UTXD1 0x02 288*10465441SEvalZero #define INT_UTXD0 0x03 289*10465441SEvalZero #define INT_SIO 0x04 290*10465441SEvalZero #define INT_IIC 0x05 291*10465441SEvalZero #define INT_URXD1 0x06 292*10465441SEvalZero #define INT_URXD0 0x07 293*10465441SEvalZero #define INT_TIMER5 0x08 294*10465441SEvalZero #define INT_TIMER4 0x09 295*10465441SEvalZero #define INT_TIMER3 0x0A 296*10465441SEvalZero #define INT_TIMER2 0x0B 297*10465441SEvalZero #define INT_TIMER1 0x0C 298*10465441SEvalZero #define INT_TIMER0 0x0D 299*10465441SEvalZero #define INT_UERR01 0x0E 300*10465441SEvalZero #define INT_WDT 0x1F 301*10465441SEvalZero #define INT_BDMA1 0x10 302*10465441SEvalZero #define INT_BDMA0 0x11 303*10465441SEvalZero #define INT_ZDMA1 0x12 304*10465441SEvalZero #define INT_ZDMA0 0x13 305*10465441SEvalZero #define INT_TICK 0x14 306*10465441SEvalZero #define INT_EINT4567 0x15 307*10465441SEvalZero #define INT_EINT3 0x16 308*10465441SEvalZero #define INT_EINT2 0x17 309*10465441SEvalZero #define INT_EINT1 0x18 310*10465441SEvalZero #define INT_EINT0 0x19 311*10465441SEvalZero 312*10465441SEvalZero #define INT_GLOBAL 26 313*10465441SEvalZero 314*10465441SEvalZero struct rt_hw_register 315*10465441SEvalZero { 316*10465441SEvalZero unsigned long r0; 317*10465441SEvalZero unsigned long r1; 318*10465441SEvalZero unsigned long r2; 319*10465441SEvalZero unsigned long r3; 320*10465441SEvalZero unsigned long r4; 321*10465441SEvalZero unsigned long r5; 322*10465441SEvalZero unsigned long r6; 323*10465441SEvalZero unsigned long r7; 324*10465441SEvalZero unsigned long r8; 325*10465441SEvalZero unsigned long r9; 326*10465441SEvalZero unsigned long r10; 327*10465441SEvalZero unsigned long fp; 328*10465441SEvalZero unsigned long ip; 329*10465441SEvalZero unsigned long sp; 330*10465441SEvalZero unsigned long lr; 331*10465441SEvalZero unsigned long pc; 332*10465441SEvalZero unsigned long cpsr; 333*10465441SEvalZero unsigned long ORIG_r0; 334*10465441SEvalZero }; 335*10465441SEvalZero 336*10465441SEvalZero /*@}*/ 337*10465441SEvalZero 338*10465441SEvalZero #ifdef __cplusplus 339*10465441SEvalZero } 340*10465441SEvalZero #endif 341*10465441SEvalZero 342*10465441SEvalZero #endif 343