Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright (c) 2003-2004 Simtec Electronics <linux@simtec.co.uk>
0004  *  http://www.simtec.co.uk/products/SWLINUX/
0005  *
0006  * S3C2410 GPIO register definitions
0007  */
0008 
0009 
0010 #ifndef __ASM_ARCH_REGS_GPIO_H
0011 #define __ASM_ARCH_REGS_GPIO_H
0012 
0013 #include "map-s3c.h"
0014 
0015 #define S3C24XX_MISCCR      S3C24XX_GPIOREG2(0x80)
0016 
0017 /* general configuration options */
0018 
0019 #define S3C2410_GPIO_LEAVE   (0xFFFFFFFF)
0020 #define S3C2410_GPIO_INPUT   (0xFFFFFFF0)   /* not available on A */
0021 #define S3C2410_GPIO_OUTPUT  (0xFFFFFFF1)
0022 #define S3C2410_GPIO_IRQ     (0xFFFFFFF2)   /* not available for all */
0023 #define S3C2410_GPIO_SFN2    (0xFFFFFFF2)   /* bank A => addr/cs/nand */
0024 #define S3C2410_GPIO_SFN3    (0xFFFFFFF3)   /* not available on A */
0025 
0026 /* register address for the GPIO registers.
0027  * S3C24XX_GPIOREG2 is for the second set of registers in the
0028  * GPIO which move between s3c2410 and s3c2412 type systems */
0029 
0030 #define S3C2410_GPIOREG(x) ((x) + S3C24XX_VA_GPIO)
0031 #define S3C24XX_GPIOREG2(x) ((x) + S3C24XX_VA_GPIO2)
0032 
0033 
0034 /* configure GPIO ports A..G */
0035 
0036 /* port A - S3C2410: 22bits, zero in bit X makes pin X output
0037  * 1 makes port special function, this is default
0038 */
0039 #define S3C2410_GPACON     S3C2410_GPIOREG(0x00)
0040 #define S3C2410_GPADAT     S3C2410_GPIOREG(0x04)
0041 
0042 #define S3C2410_GPA0_ADDR0   (1<<0)
0043 #define S3C2410_GPA1_ADDR16  (1<<1)
0044 #define S3C2410_GPA2_ADDR17  (1<<2)
0045 #define S3C2410_GPA3_ADDR18  (1<<3)
0046 #define S3C2410_GPA4_ADDR19  (1<<4)
0047 #define S3C2410_GPA5_ADDR20  (1<<5)
0048 #define S3C2410_GPA6_ADDR21  (1<<6)
0049 #define S3C2410_GPA7_ADDR22  (1<<7)
0050 #define S3C2410_GPA8_ADDR23  (1<<8)
0051 #define S3C2410_GPA9_ADDR24  (1<<9)
0052 #define S3C2410_GPA10_ADDR25 (1<<10)
0053 #define S3C2410_GPA11_ADDR26 (1<<11)
0054 #define S3C2410_GPA12_nGCS1  (1<<12)
0055 #define S3C2410_GPA13_nGCS2  (1<<13)
0056 #define S3C2410_GPA14_nGCS3  (1<<14)
0057 #define S3C2410_GPA15_nGCS4  (1<<15)
0058 #define S3C2410_GPA16_nGCS5  (1<<16)
0059 #define S3C2410_GPA17_CLE    (1<<17)
0060 #define S3C2410_GPA18_ALE    (1<<18)
0061 #define S3C2410_GPA19_nFWE   (1<<19)
0062 #define S3C2410_GPA20_nFRE   (1<<20)
0063 #define S3C2410_GPA21_nRSTOUT (1<<21)
0064 #define S3C2410_GPA22_nFCE   (1<<22)
0065 
0066 /* 0x08 and 0x0c are reserved on S3C2410 */
0067 
0068 /* S3C2410:
0069  * GPB is 10 IO pins, each configured by 2 bits each in GPBCON.
0070  *   00 = input, 01 = output, 10=special function, 11=reserved
0071 
0072  * bit 0,1 = pin 0, 2,3= pin 1...
0073  *
0074  * CPBUP = pull up resistor control, 1=disabled, 0=enabled
0075 */
0076 
0077 #define S3C2410_GPBCON     S3C2410_GPIOREG(0x10)
0078 #define S3C2410_GPBDAT     S3C2410_GPIOREG(0x14)
0079 #define S3C2410_GPBUP      S3C2410_GPIOREG(0x18)
0080 
0081 /* no i/o pin in port b can have value 3 (unless it is a s3c2443) ! */
0082 
0083 #define S3C2410_GPB0_TOUT0   (0x02 << 0)
0084 
0085 #define S3C2410_GPB1_TOUT1   (0x02 << 2)
0086 
0087 #define S3C2410_GPB2_TOUT2   (0x02 << 4)
0088 
0089 #define S3C2410_GPB3_TOUT3   (0x02 << 6)
0090 
0091 #define S3C2410_GPB4_TCLK0   (0x02 << 8)
0092 #define S3C2410_GPB4_MASK    (0x03 << 8)
0093 
0094 #define S3C2410_GPB5_nXBACK  (0x02 << 10)
0095 #define S3C2443_GPB5_XBACK   (0x03 << 10)
0096 
0097 #define S3C2410_GPB6_nXBREQ  (0x02 << 12)
0098 #define S3C2443_GPB6_XBREQ   (0x03 << 12)
0099 
0100 #define S3C2410_GPB7_nXDACK1 (0x02 << 14)
0101 #define S3C2443_GPB7_XDACK1  (0x03 << 14)
0102 
0103 #define S3C2410_GPB8_nXDREQ1 (0x02 << 16)
0104 
0105 #define S3C2410_GPB9_nXDACK0 (0x02 << 18)
0106 #define S3C2443_GPB9_XDACK0  (0x03 << 18)
0107 
0108 #define S3C2410_GPB10_nXDRE0 (0x02 << 20)
0109 #define S3C2443_GPB10_XDREQ0 (0x03 << 20)
0110 
0111 #define S3C2410_GPB_PUPDIS(x)  (1<<(x))
0112 
0113 /* Port C consits of 16 GPIO/Special function
0114  *
0115  * almost identical setup to port b, but the special functions are mostly
0116  * to do with the video system's sync/etc.
0117 */
0118 
0119 #define S3C2410_GPCCON     S3C2410_GPIOREG(0x20)
0120 #define S3C2410_GPCDAT     S3C2410_GPIOREG(0x24)
0121 #define S3C2410_GPCUP      S3C2410_GPIOREG(0x28)
0122 #define S3C2410_GPC0_LEND   (0x02 << 0)
0123 #define S3C2410_GPC1_VCLK   (0x02 << 2)
0124 #define S3C2410_GPC2_VLINE  (0x02 << 4)
0125 #define S3C2410_GPC3_VFRAME (0x02 << 6)
0126 #define S3C2410_GPC4_VM     (0x02 << 8)
0127 #define S3C2410_GPC5_LCDVF0 (0x02 << 10)
0128 #define S3C2410_GPC6_LCDVF1 (0x02 << 12)
0129 #define S3C2410_GPC7_LCDVF2 (0x02 << 14)
0130 #define S3C2410_GPC8_VD0    (0x02 << 16)
0131 #define S3C2410_GPC9_VD1    (0x02 << 18)
0132 #define S3C2410_GPC10_VD2   (0x02 << 20)
0133 #define S3C2410_GPC11_VD3   (0x02 << 22)
0134 #define S3C2410_GPC12_VD4   (0x02 << 24)
0135 #define S3C2410_GPC13_VD5   (0x02 << 26)
0136 #define S3C2410_GPC14_VD6   (0x02 << 28)
0137 #define S3C2410_GPC15_VD7   (0x02 << 30)
0138 #define S3C2410_GPC_PUPDIS(x)  (1<<(x))
0139 
0140 /*
0141  * S3C2410: Port D consists of 16 GPIO/Special function
0142  *
0143  * almost identical setup to port b, but the special functions are mostly
0144  * to do with the video system's data.
0145  *
0146  * almost identical setup to port c
0147 */
0148 
0149 #define S3C2410_GPDCON     S3C2410_GPIOREG(0x30)
0150 #define S3C2410_GPDDAT     S3C2410_GPIOREG(0x34)
0151 #define S3C2410_GPDUP      S3C2410_GPIOREG(0x38)
0152 
0153 #define S3C2410_GPD0_VD8    (0x02 << 0)
0154 #define S3C2442_GPD0_nSPICS1    (0x03 << 0)
0155 
0156 #define S3C2410_GPD1_VD9    (0x02 << 2)
0157 #define S3C2442_GPD1_SPICLK1    (0x03 << 2)
0158 
0159 #define S3C2410_GPD2_VD10   (0x02 << 4)
0160 
0161 #define S3C2410_GPD3_VD11   (0x02 << 6)
0162 
0163 #define S3C2410_GPD4_VD12   (0x02 << 8)
0164 
0165 #define S3C2410_GPD5_VD13   (0x02 << 10)
0166 
0167 #define S3C2410_GPD6_VD14   (0x02 << 12)
0168 
0169 #define S3C2410_GPD7_VD15   (0x02 << 14)
0170 
0171 #define S3C2410_GPD8_VD16   (0x02 << 16)
0172 #define S3C2440_GPD8_SPIMISO1   (0x03 << 16)
0173 
0174 #define S3C2410_GPD9_VD17   (0x02 << 18)
0175 #define S3C2440_GPD9_SPIMOSI1   (0x03 << 18)
0176 
0177 #define S3C2410_GPD10_VD18  (0x02 << 20)
0178 #define S3C2440_GPD10_SPICLK1   (0x03 << 20)
0179 
0180 #define S3C2410_GPD11_VD19  (0x02 << 22)
0181 
0182 #define S3C2410_GPD12_VD20  (0x02 << 24)
0183 
0184 #define S3C2410_GPD13_VD21  (0x02 << 26)
0185 
0186 #define S3C2410_GPD14_VD22  (0x02 << 28)
0187 #define S3C2410_GPD14_nSS1  (0x03 << 28)
0188 
0189 #define S3C2410_GPD15_VD23  (0x02 << 30)
0190 #define S3C2410_GPD15_nSS0  (0x03 << 30)
0191 
0192 #define S3C2410_GPD_PUPDIS(x)  (1<<(x))
0193 
0194 /* S3C2410:
0195  * Port E consists of 16 GPIO/Special function
0196  *
0197  * again, the same as port B, but dealing with I2S, SDI, and
0198  * more miscellaneous functions
0199  *
0200  * GPIO / interrupt inputs
0201 */
0202 
0203 #define S3C2410_GPECON     S3C2410_GPIOREG(0x40)
0204 #define S3C2410_GPEDAT     S3C2410_GPIOREG(0x44)
0205 #define S3C2410_GPEUP      S3C2410_GPIOREG(0x48)
0206 
0207 #define S3C2410_GPE0_I2SLRCK   (0x02 << 0)
0208 #define S3C2443_GPE0_AC_nRESET (0x03 << 0)
0209 #define S3C2410_GPE0_MASK      (0x03 << 0)
0210 
0211 #define S3C2410_GPE1_I2SSCLK   (0x02 << 2)
0212 #define S3C2443_GPE1_AC_SYNC   (0x03 << 2)
0213 #define S3C2410_GPE1_MASK      (0x03 << 2)
0214 
0215 #define S3C2410_GPE2_CDCLK     (0x02 << 4)
0216 #define S3C2443_GPE2_AC_BITCLK (0x03 << 4)
0217 
0218 #define S3C2410_GPE3_I2SSDI    (0x02 << 6)
0219 #define S3C2443_GPE3_AC_SDI    (0x03 << 6)
0220 #define S3C2410_GPE3_nSS0      (0x03 << 6)
0221 #define S3C2410_GPE3_MASK      (0x03 << 6)
0222 
0223 #define S3C2410_GPE4_I2SSDO    (0x02 << 8)
0224 #define S3C2443_GPE4_AC_SDO    (0x03 << 8)
0225 #define S3C2410_GPE4_I2SSDI    (0x03 << 8)
0226 #define S3C2410_GPE4_MASK      (0x03 << 8)
0227 
0228 #define S3C2410_GPE5_SDCLK     (0x02 << 10)
0229 #define S3C2443_GPE5_SD1_CLK   (0x02 << 10)
0230 #define S3C2443_GPE5_AC_BITCLK (0x03 << 10)
0231 
0232 #define S3C2410_GPE6_SDCMD     (0x02 << 12)
0233 #define S3C2443_GPE6_SD1_CMD   (0x02 << 12)
0234 #define S3C2443_GPE6_AC_SDI    (0x03 << 12)
0235 
0236 #define S3C2410_GPE7_SDDAT0    (0x02 << 14)
0237 #define S3C2443_GPE5_SD1_DAT0  (0x02 << 14)
0238 #define S3C2443_GPE7_AC_SDO    (0x03 << 14)
0239 
0240 #define S3C2410_GPE8_SDDAT1    (0x02 << 16)
0241 #define S3C2443_GPE8_SD1_DAT1  (0x02 << 16)
0242 #define S3C2443_GPE8_AC_SYNC   (0x03 << 16)
0243 
0244 #define S3C2410_GPE9_SDDAT2    (0x02 << 18)
0245 #define S3C2443_GPE9_SD1_DAT2  (0x02 << 18)
0246 #define S3C2443_GPE9_AC_nRESET (0x03 << 18)
0247 
0248 #define S3C2410_GPE10_SDDAT3   (0x02 << 20)
0249 #define S3C2443_GPE10_SD1_DAT3 (0x02 << 20)
0250 
0251 #define S3C2410_GPE11_SPIMISO0 (0x02 << 22)
0252 
0253 #define S3C2410_GPE12_SPIMOSI0 (0x02 << 24)
0254 
0255 #define S3C2410_GPE13_SPICLK0  (0x02 << 26)
0256 
0257 #define S3C2410_GPE14_IICSCL   (0x02 << 28)
0258 #define S3C2410_GPE14_MASK     (0x03 << 28)
0259 
0260 #define S3C2410_GPE15_IICSDA   (0x02 << 30)
0261 #define S3C2410_GPE15_MASK     (0x03 << 30)
0262 
0263 #define S3C2440_GPE0_ACSYNC    (0x03 << 0)
0264 #define S3C2440_GPE1_ACBITCLK  (0x03 << 2)
0265 #define S3C2440_GPE2_ACRESET   (0x03 << 4)
0266 #define S3C2440_GPE3_ACIN      (0x03 << 6)
0267 #define S3C2440_GPE4_ACOUT     (0x03 << 8)
0268 
0269 #define S3C2410_GPE_PUPDIS(x)  (1<<(x))
0270 
0271 /* S3C2410:
0272  * Port F consists of 8 GPIO/Special function
0273  *
0274  * GPIO / interrupt inputs
0275  *
0276  * GPFCON has 2 bits for each of the input pins on port F
0277  *   00 = 0 input, 1 output, 2 interrupt (EINT0..7), 3 undefined
0278  *
0279  * pull up works like all other ports.
0280  *
0281  * GPIO/serial/misc pins
0282 */
0283 
0284 #define S3C2410_GPFCON     S3C2410_GPIOREG(0x50)
0285 #define S3C2410_GPFDAT     S3C2410_GPIOREG(0x54)
0286 #define S3C2410_GPFUP      S3C2410_GPIOREG(0x58)
0287 
0288 #define S3C2410_GPF0_EINT0  (0x02 << 0)
0289 #define S3C2410_GPF1_EINT1  (0x02 << 2)
0290 #define S3C2410_GPF2_EINT2  (0x02 << 4)
0291 #define S3C2410_GPF3_EINT3  (0x02 << 6)
0292 #define S3C2410_GPF4_EINT4  (0x02 << 8)
0293 #define S3C2410_GPF5_EINT5  (0x02 << 10)
0294 #define S3C2410_GPF6_EINT6  (0x02 << 12)
0295 #define S3C2410_GPF7_EINT7  (0x02 << 14)
0296 #define S3C2410_GPF_PUPDIS(x)  (1<<(x))
0297 
0298 /* S3C2410:
0299  * Port G consists of 8 GPIO/IRQ/Special function
0300  *
0301  * GPGCON has 2 bits for each of the input pins on port G
0302  *   00 = 0 input, 1 output, 2 interrupt (EINT0..7), 3 special func
0303  *
0304  * pull up works like all other ports.
0305 */
0306 
0307 #define S3C2410_GPGCON     S3C2410_GPIOREG(0x60)
0308 #define S3C2410_GPGDAT     S3C2410_GPIOREG(0x64)
0309 #define S3C2410_GPGUP      S3C2410_GPIOREG(0x68)
0310 
0311 #define S3C2410_GPG0_EINT8    (0x02 << 0)
0312 
0313 #define S3C2410_GPG1_EINT9    (0x02 << 2)
0314 
0315 #define S3C2410_GPG2_EINT10   (0x02 << 4)
0316 #define S3C2410_GPG2_nSS0     (0x03 << 4)
0317 
0318 #define S3C2410_GPG3_EINT11   (0x02 << 6)
0319 #define S3C2410_GPG3_nSS1     (0x03 << 6)
0320 
0321 #define S3C2410_GPG4_EINT12   (0x02 << 8)
0322 #define S3C2410_GPG4_LCDPWREN (0x03 << 8)
0323 #define S3C2443_GPG4_LCDPWRDN (0x03 << 8)
0324 
0325 #define S3C2410_GPG5_EINT13   (0x02 << 10)
0326 #define S3C2410_GPG5_SPIMISO1 (0x03 << 10)  /* not s3c2443 */
0327 
0328 #define S3C2410_GPG6_EINT14   (0x02 << 12)
0329 #define S3C2410_GPG6_SPIMOSI1 (0x03 << 12)
0330 
0331 #define S3C2410_GPG7_EINT15   (0x02 << 14)
0332 #define S3C2410_GPG7_SPICLK1  (0x03 << 14)
0333 
0334 #define S3C2410_GPG8_EINT16   (0x02 << 16)
0335 
0336 #define S3C2410_GPG9_EINT17   (0x02 << 18)
0337 
0338 #define S3C2410_GPG10_EINT18  (0x02 << 20)
0339 
0340 #define S3C2410_GPG11_EINT19  (0x02 << 22)
0341 #define S3C2410_GPG11_TCLK1   (0x03 << 22)
0342 #define S3C2443_GPG11_CF_nIREQ (0x03 << 22)
0343 
0344 #define S3C2410_GPG12_EINT20  (0x02 << 24)
0345 #define S3C2410_GPG12_XMON    (0x03 << 24)
0346 #define S3C2442_GPG12_nSPICS0 (0x03 << 24)
0347 #define S3C2443_GPG12_nINPACK (0x03 << 24)
0348 
0349 #define S3C2410_GPG13_EINT21  (0x02 << 26)
0350 #define S3C2410_GPG13_nXPON   (0x03 << 26)
0351 #define S3C2443_GPG13_CF_nREG (0x03 << 26)
0352 
0353 #define S3C2410_GPG14_EINT22  (0x02 << 28)
0354 #define S3C2410_GPG14_YMON    (0x03 << 28)
0355 #define S3C2443_GPG14_CF_RESET (0x03 << 28)
0356 
0357 #define S3C2410_GPG15_EINT23  (0x02 << 30)
0358 #define S3C2410_GPG15_nYPON   (0x03 << 30)
0359 #define S3C2443_GPG15_CF_PWR  (0x03 << 30)
0360 
0361 #define S3C2410_GPG_PUPDIS(x)  (1<<(x))
0362 
0363 /* Port H consists of11 GPIO/serial/Misc pins
0364  *
0365  * GPHCON has 2 bits for each of the input pins on port H
0366  *   00 = 0 input, 1 output, 2 interrupt (EINT0..7), 3 special func
0367  *
0368  * pull up works like all other ports.
0369 */
0370 
0371 #define S3C2410_GPHCON     S3C2410_GPIOREG(0x70)
0372 #define S3C2410_GPHDAT     S3C2410_GPIOREG(0x74)
0373 #define S3C2410_GPHUP      S3C2410_GPIOREG(0x78)
0374 
0375 #define S3C2410_GPH0_nCTS0  (0x02 << 0)
0376 #define S3C2416_GPH0_TXD0  (0x02 << 0)
0377 
0378 #define S3C2410_GPH1_nRTS0  (0x02 << 2)
0379 #define S3C2416_GPH1_RXD0  (0x02 << 2)
0380 
0381 #define S3C2410_GPH2_TXD0   (0x02 << 4)
0382 #define S3C2416_GPH2_TXD1   (0x02 << 4)
0383 
0384 #define S3C2410_GPH3_RXD0   (0x02 << 6)
0385 #define S3C2416_GPH3_RXD1   (0x02 << 6)
0386 
0387 #define S3C2410_GPH4_TXD1   (0x02 << 8)
0388 #define S3C2416_GPH4_TXD2   (0x02 << 8)
0389 
0390 #define S3C2410_GPH5_RXD1   (0x02 << 10)
0391 #define S3C2416_GPH5_RXD2   (0x02 << 10)
0392 
0393 #define S3C2410_GPH6_TXD2   (0x02 << 12)
0394 #define S3C2416_GPH6_TXD3   (0x02 << 12)
0395 #define S3C2410_GPH6_nRTS1  (0x03 << 12)
0396 #define S3C2416_GPH6_nRTS2  (0x03 << 12)
0397 
0398 #define S3C2410_GPH7_RXD2   (0x02 << 14)
0399 #define S3C2416_GPH7_RXD3   (0x02 << 14)
0400 #define S3C2410_GPH7_nCTS1  (0x03 << 14)
0401 #define S3C2416_GPH7_nCTS2  (0x03 << 14)
0402 
0403 #define S3C2410_GPH8_UCLK   (0x02 << 16)
0404 #define S3C2416_GPH8_nCTS0  (0x02 << 16)
0405 
0406 #define S3C2410_GPH9_CLKOUT0  (0x02 << 18)
0407 #define S3C2442_GPH9_nSPICS0  (0x03 << 18)
0408 #define S3C2416_GPH9_nRTS0    (0x02 << 18)
0409 
0410 #define S3C2410_GPH10_CLKOUT1 (0x02 << 20)
0411 #define S3C2416_GPH10_nCTS1   (0x02 << 20)
0412 
0413 #define S3C2416_GPH11_nRTS1   (0x02 << 22)
0414 
0415 #define S3C2416_GPH12_EXTUARTCLK (0x02 << 24)
0416 
0417 #define S3C2416_GPH13_CLKOUT0 (0x02 << 26)
0418 
0419 #define S3C2416_GPH14_CLKOUT1 (0x02 << 28)
0420 
0421 /* The S3C2412 and S3C2413 move the GPJ register set to after
0422  * GPH, which means all registers after 0x80 are now offset by 0x10
0423  * for the 2412/2413 from the 2410/2440/2442
0424 */
0425 
0426 /*
0427  * Port J consists of 13 GPIO/Camera pins. GPJCON has 2 bits
0428  * for each of the pins on port J.
0429  *   00 - input, 01 output, 10 - camera
0430  *
0431  * Pull up works like all other ports.
0432  */
0433 
0434 #define S3C2413_GPJCON     S3C2410_GPIOREG(0x80)
0435 #define S3C2413_GPJDAT     S3C2410_GPIOREG(0x84)
0436 #define S3C2413_GPJUP      S3C2410_GPIOREG(0x88)
0437 #define S3C2413_GPJSLPCON  S3C2410_GPIOREG(0x8C)
0438 
0439 /* S3C2443 and above */
0440 #define S3C2440_GPJCON     S3C2410_GPIOREG(0xD0)
0441 #define S3C2440_GPJDAT     S3C2410_GPIOREG(0xD4)
0442 #define S3C2440_GPJUP      S3C2410_GPIOREG(0xD8)
0443 
0444 #define S3C2443_GPKCON     S3C2410_GPIOREG(0xE0)
0445 #define S3C2443_GPKDAT     S3C2410_GPIOREG(0xE4)
0446 #define S3C2443_GPKUP      S3C2410_GPIOREG(0xE8)
0447 
0448 #define S3C2443_GPLCON     S3C2410_GPIOREG(0xF0)
0449 #define S3C2443_GPLDAT     S3C2410_GPIOREG(0xF4)
0450 #define S3C2443_GPLUP      S3C2410_GPIOREG(0xF8)
0451 
0452 #define S3C2443_GPMCON     S3C2410_GPIOREG(0x100)
0453 #define S3C2443_GPMDAT     S3C2410_GPIOREG(0x104)
0454 #define S3C2443_GPMUP      S3C2410_GPIOREG(0x108)
0455 
0456 /* miscellaneous control */
0457 #define S3C2410_MISCCR     S3C2410_GPIOREG(0x80)
0458 
0459 /* see clock.h for dclk definitions */
0460 
0461 /* pullup control on databus */
0462 #define S3C2410_MISCCR_SPUCR_HEN    (0<<0)
0463 #define S3C2410_MISCCR_SPUCR_HDIS   (1<<0)
0464 #define S3C2410_MISCCR_SPUCR_LEN    (0<<1)
0465 #define S3C2410_MISCCR_SPUCR_LDIS   (1<<1)
0466 
0467 #define S3C2410_MISCCR_USBDEV       (0<<3)
0468 #define S3C2410_MISCCR_USBHOST      (1<<3)
0469 
0470 #define S3C2410_MISCCR_CLK0_MPLL    (0<<4)
0471 #define S3C2410_MISCCR_CLK0_UPLL    (1<<4)
0472 #define S3C2410_MISCCR_CLK0_FCLK    (2<<4)
0473 #define S3C2410_MISCCR_CLK0_HCLK    (3<<4)
0474 #define S3C2410_MISCCR_CLK0_PCLK    (4<<4)
0475 #define S3C2410_MISCCR_CLK0_DCLK0   (5<<4)
0476 #define S3C2410_MISCCR_CLK0_MASK    (7<<4)
0477 
0478 #define S3C2412_MISCCR_CLK0_RTC     (2<<4)
0479 
0480 #define S3C2410_MISCCR_CLK1_MPLL    (0<<8)
0481 #define S3C2410_MISCCR_CLK1_UPLL    (1<<8)
0482 #define S3C2410_MISCCR_CLK1_FCLK    (2<<8)
0483 #define S3C2410_MISCCR_CLK1_HCLK    (3<<8)
0484 #define S3C2410_MISCCR_CLK1_PCLK    (4<<8)
0485 #define S3C2410_MISCCR_CLK1_DCLK1   (5<<8)
0486 #define S3C2410_MISCCR_CLK1_MASK    (7<<8)
0487 
0488 #define S3C2412_MISCCR_CLK1_CLKsrc  (0<<8)
0489 
0490 #define S3C2410_MISCCR_USBSUSPND0   (1<<12)
0491 #define S3C2416_MISCCR_SEL_SUSPND   (1<<12)
0492 #define S3C2410_MISCCR_USBSUSPND1   (1<<13)
0493 
0494 #define S3C2410_MISCCR_nRSTCON      (1<<16)
0495 
0496 #define S3C2410_MISCCR_nEN_SCLK0    (1<<17)
0497 #define S3C2410_MISCCR_nEN_SCLK1    (1<<18)
0498 #define S3C2410_MISCCR_nEN_SCLKE    (1<<19) /* not 2412 */
0499 #define S3C2410_MISCCR_SDSLEEP      (7<<17)
0500 
0501 #define S3C2416_MISCCR_FLT_I2C      (1<<24)
0502 #define S3C2416_MISCCR_HSSPI_EN2    (1<<31)
0503 
0504 /* external interrupt control... */
0505 /* S3C2410_EXTINT0 -> irq sense control for EINT0..EINT7
0506  * S3C2410_EXTINT1 -> irq sense control for EINT8..EINT15
0507  * S3C2410_EXTINT2 -> irq sense control for EINT16..EINT23
0508  *
0509  * note S3C2410_EXTINT2 has filtering options for EINT16..EINT23
0510  *
0511  * Samsung datasheet p9-25
0512 */
0513 #define S3C2410_EXTINT0    S3C2410_GPIOREG(0x88)
0514 #define S3C2410_EXTINT1    S3C2410_GPIOREG(0x8C)
0515 #define S3C2410_EXTINT2    S3C2410_GPIOREG(0x90)
0516 
0517 #define S3C24XX_EXTINT0    S3C24XX_GPIOREG2(0x88)
0518 #define S3C24XX_EXTINT1    S3C24XX_GPIOREG2(0x8C)
0519 #define S3C24XX_EXTINT2    S3C24XX_GPIOREG2(0x90)
0520 
0521 /* interrupt filtering control for EINT16..EINT23 */
0522 #define S3C2410_EINFLT0    S3C2410_GPIOREG(0x94)
0523 #define S3C2410_EINFLT1    S3C2410_GPIOREG(0x98)
0524 #define S3C2410_EINFLT2    S3C2410_GPIOREG(0x9C)
0525 #define S3C2410_EINFLT3    S3C2410_GPIOREG(0xA0)
0526 
0527 #define S3C24XX_EINFLT0    S3C24XX_GPIOREG2(0x94)
0528 #define S3C24XX_EINFLT1    S3C24XX_GPIOREG2(0x98)
0529 #define S3C24XX_EINFLT2    S3C24XX_GPIOREG2(0x9C)
0530 #define S3C24XX_EINFLT3    S3C24XX_GPIOREG2(0xA0)
0531 
0532 /* values for interrupt filtering */
0533 #define S3C2410_EINTFLT_PCLK        (0x00)
0534 #define S3C2410_EINTFLT_EXTCLK      (1<<7)
0535 #define S3C2410_EINTFLT_WIDTHMSK(x) ((x) & 0x3f)
0536 
0537 /* removed EINTxxxx defs from here, not meant for this */
0538 
0539 /* GSTATUS have miscellaneous information in them
0540  *
0541  * These move between s3c2410 and s3c2412 style systems.
0542  */
0543 
0544 #define S3C2410_GSTATUS0   S3C2410_GPIOREG(0x0AC)
0545 #define S3C2410_GSTATUS1   S3C2410_GPIOREG(0x0B0)
0546 #define S3C2410_GSTATUS2   S3C2410_GPIOREG(0x0B4)
0547 #define S3C2410_GSTATUS3   S3C2410_GPIOREG(0x0B8)
0548 #define S3C2410_GSTATUS4   S3C2410_GPIOREG(0x0BC)
0549 
0550 #define S3C2412_GSTATUS0   S3C2410_GPIOREG(0x0BC)
0551 #define S3C2412_GSTATUS1   S3C2410_GPIOREG(0x0C0)
0552 #define S3C2412_GSTATUS2   S3C2410_GPIOREG(0x0C4)
0553 #define S3C2412_GSTATUS3   S3C2410_GPIOREG(0x0C8)
0554 #define S3C2412_GSTATUS4   S3C2410_GPIOREG(0x0CC)
0555 
0556 #define S3C24XX_GSTATUS0   S3C24XX_GPIOREG2(0x0AC)
0557 #define S3C24XX_GSTATUS1   S3C24XX_GPIOREG2(0x0B0)
0558 #define S3C24XX_GSTATUS2   S3C24XX_GPIOREG2(0x0B4)
0559 #define S3C24XX_GSTATUS3   S3C24XX_GPIOREG2(0x0B8)
0560 #define S3C24XX_GSTATUS4   S3C24XX_GPIOREG2(0x0BC)
0561 
0562 #define S3C2410_GSTATUS0_nWAIT     (1<<3)
0563 #define S3C2410_GSTATUS0_NCON      (1<<2)
0564 #define S3C2410_GSTATUS0_RnB       (1<<1)
0565 #define S3C2410_GSTATUS0_nBATTFLT  (1<<0)
0566 
0567 #define S3C2410_GSTATUS1_IDMASK    (0xffff0000)
0568 #define S3C2410_GSTATUS1_2410      (0x32410000)
0569 #define S3C2410_GSTATUS1_2412      (0x32412001)
0570 #define S3C2410_GSTATUS1_2416      (0x32416003)
0571 #define S3C2410_GSTATUS1_2440      (0x32440000)
0572 #define S3C2410_GSTATUS1_2442      (0x32440aaa)
0573 /* some 2416 CPUs report this value also */
0574 #define S3C2410_GSTATUS1_2450      (0x32450003)
0575 
0576 #define S3C2410_GSTATUS2_WTRESET   (1<<2)
0577 #define S3C2410_GSTATUS2_OFFRESET  (1<<1)
0578 #define S3C2410_GSTATUS2_PONRESET  (1<<0)
0579 
0580 /* 2412/2413 sleep configuration registers */
0581 
0582 #define S3C2412_GPBSLPCON   S3C2410_GPIOREG(0x1C)
0583 #define S3C2412_GPCSLPCON   S3C2410_GPIOREG(0x2C)
0584 #define S3C2412_GPDSLPCON   S3C2410_GPIOREG(0x3C)
0585 #define S3C2412_GPFSLPCON   S3C2410_GPIOREG(0x5C)
0586 #define S3C2412_GPGSLPCON   S3C2410_GPIOREG(0x6C)
0587 #define S3C2412_GPHSLPCON   S3C2410_GPIOREG(0x7C)
0588 
0589 /* definitions for each pin bit */
0590 #define S3C2412_GPIO_SLPCON_LOW  ( 0x00 )
0591 #define S3C2412_GPIO_SLPCON_HIGH ( 0x01 )
0592 #define S3C2412_GPIO_SLPCON_IN   ( 0x02 )
0593 #define S3C2412_GPIO_SLPCON_PULL ( 0x03 )
0594 
0595 #define S3C2412_SLPCON_LOW(x)   ( 0x00 << ((x) * 2))
0596 #define S3C2412_SLPCON_HIGH(x)  ( 0x01 << ((x) * 2))
0597 #define S3C2412_SLPCON_IN(x)    ( 0x02 << ((x) * 2))
0598 #define S3C2412_SLPCON_PULL(x)  ( 0x03 << ((x) * 2))
0599 #define S3C2412_SLPCON_EINT(x)  ( 0x02 << ((x) * 2))  /* only IRQ pins */
0600 #define S3C2412_SLPCON_MASK(x)  ( 0x03 << ((x) * 2))
0601 
0602 #define S3C2412_SLPCON_ALL_LOW  (0x0)
0603 #define S3C2412_SLPCON_ALL_HIGH (0x11111111 | 0x44444444)
0604 #define S3C2412_SLPCON_ALL_IN   (0x22222222 | 0x88888888)
0605 #define S3C2412_SLPCON_ALL_PULL (0x33333333)
0606 
0607 #endif  /* __ASM_ARCH_REGS_GPIO_H */
0608