1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* linux/arch/arm/plat-s3c64xx/include/mach/regs-gpio.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright 2008 Openmoko, Inc. 5*4882a593Smuzhiyun * Copyright 2008 Simtec Electronics 6*4882a593Smuzhiyun * Ben Dooks <ben@simtec.co.uk> 7*4882a593Smuzhiyun * http://armlinux.simtec.co.uk/ 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * S3C64XX - GPIO register definitions 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #ifndef __ASM_PLAT_S3C64XX_REGS_GPIO_H 13*4882a593Smuzhiyun #define __ASM_PLAT_S3C64XX_REGS_GPIO_H __FILE__ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* Base addresses for each of the banks */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define S3C64XX_GPIOREG(reg) (S3C64XX_VA_GPIO + (reg)) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define S3C64XX_GPA_BASE S3C64XX_GPIOREG(0x0000) 20*4882a593Smuzhiyun #define S3C64XX_GPB_BASE S3C64XX_GPIOREG(0x0020) 21*4882a593Smuzhiyun #define S3C64XX_GPC_BASE S3C64XX_GPIOREG(0x0040) 22*4882a593Smuzhiyun #define S3C64XX_GPD_BASE S3C64XX_GPIOREG(0x0060) 23*4882a593Smuzhiyun #define S3C64XX_GPE_BASE S3C64XX_GPIOREG(0x0080) 24*4882a593Smuzhiyun #define S3C64XX_GPF_BASE S3C64XX_GPIOREG(0x00A0) 25*4882a593Smuzhiyun #define S3C64XX_GPG_BASE S3C64XX_GPIOREG(0x00C0) 26*4882a593Smuzhiyun #define S3C64XX_GPH_BASE S3C64XX_GPIOREG(0x00E0) 27*4882a593Smuzhiyun #define S3C64XX_GPI_BASE S3C64XX_GPIOREG(0x0100) 28*4882a593Smuzhiyun #define S3C64XX_GPJ_BASE S3C64XX_GPIOREG(0x0120) 29*4882a593Smuzhiyun #define S3C64XX_GPK_BASE S3C64XX_GPIOREG(0x0800) 30*4882a593Smuzhiyun #define S3C64XX_GPL_BASE S3C64XX_GPIOREG(0x0810) 31*4882a593Smuzhiyun #define S3C64XX_GPM_BASE S3C64XX_GPIOREG(0x0820) 32*4882a593Smuzhiyun #define S3C64XX_GPN_BASE S3C64XX_GPIOREG(0x0830) 33*4882a593Smuzhiyun #define S3C64XX_GPO_BASE S3C64XX_GPIOREG(0x0140) 34*4882a593Smuzhiyun #define S3C64XX_GPP_BASE S3C64XX_GPIOREG(0x0160) 35*4882a593Smuzhiyun #define S3C64XX_GPQ_BASE S3C64XX_GPIOREG(0x0180) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /* SPCON */ 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #define S3C64XX_SPCON S3C64XX_GPIOREG(0x1A0) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_CAM_MASK (0x3 << 30) 42*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_CAM_SHIFT (30) 43*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_CAM_2mA (0x0 << 30) 44*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_CAM_4mA (0x1 << 30) 45*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_CAM_7mA (0x2 << 30) 46*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_CAM_9mA (0x3 << 30) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSSPI_MASK (0x3 << 28) 49*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSSPI_SHIFT (28) 50*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSSPI_2mA (0x0 << 28) 51*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSSPI_4mA (0x1 << 28) 52*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSSPI_7mA (0x2 << 28) 53*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSSPI_9mA (0x3 << 28) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSMMC_MASK (0x3 << 26) 56*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSMMC_SHIFT (26) 57*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSMMC_2mA (0x0 << 26) 58*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSMMC_4mA (0x1 << 26) 59*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSMMC_7mA (0x2 << 26) 60*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_HSMMC_9mA (0x3 << 26) 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_LCD_MASK (0x3 << 24) 63*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_LCD_SHIFT (24) 64*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_LCD_2mA (0x0 << 24) 65*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_LCD_4mA (0x1 << 24) 66*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_LCD_7mA (0x2 << 24) 67*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_LCD_9mA (0x3 << 24) 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_MODEM_MASK (0x3 << 22) 70*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_MODEM_SHIFT (22) 71*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_MODEM_2mA (0x0 << 22) 72*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_MODEM_4mA (0x1 << 22) 73*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_MODEM_7mA (0x2 << 22) 74*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_MODEM_9mA (0x3 << 22) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun #define S3C64XX_SPCON_nRSTOUT_OEN (1 << 21) 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_SPICLK1_MASK (0x3 << 18) 79*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_SPICLK1_SHIFT (18) 80*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_SPICLK1_2mA (0x0 << 18) 81*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_SPICLK1_4mA (0x1 << 18) 82*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_SPICLK1_7mA (0x2 << 18) 83*4882a593Smuzhiyun #define S3C64XX_SPCON_DRVCON_SPICLK1_9mA (0x3 << 18) 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_DQS_PUD_MASK (0x3 << 16) 86*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_DQS_PUD_SHIFT (16) 87*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_DQS_PUD_DISABLED (0x0 << 16) 88*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_DQS_PUD_DOWN (0x1 << 16) 89*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_DQS_PUD_UP (0x2 << 16) 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD1_MASK (0x3 << 14) 92*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD1_SHIFT (14) 93*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD1_DISABLED (0x0 << 14) 94*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD1_DOWN (0x1 << 14) 95*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD1_UP (0x2 << 14) 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD0_MASK (0x3 << 12) 98*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD0_SHIFT (12) 99*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD0_DISABLED (0x0 << 12) 100*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD0_DOWN (0x1 << 12) 101*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM1_D_PUD0_UP (0x2 << 12) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM0_D_PUD_MASK (0x3 << 8) 104*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM0_D_PUD_SHIFT (8) 105*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM0_D_PUD_DISABLED (0x0 << 8) 106*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM0_D_PUD_DOWN (0x1 << 8) 107*4882a593Smuzhiyun #define S3C64XX_SPCON_MEM0_D_PUD_UP (0x2 << 8) 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun #define S3C64XX_SPCON_USBH_DMPD (1 << 7) 110*4882a593Smuzhiyun #define S3C64XX_SPCON_USBH_DPPD (1 << 6) 111*4882a593Smuzhiyun #define S3C64XX_SPCON_USBH_PUSW2 (1 << 5) 112*4882a593Smuzhiyun #define S3C64XX_SPCON_USBH_PUSW1 (1 << 4) 113*4882a593Smuzhiyun #define S3C64XX_SPCON_USBH_SUSPND (1 << 3) 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #define S3C64XX_SPCON_LCD_SEL_MASK (0x3 << 0) 116*4882a593Smuzhiyun #define S3C64XX_SPCON_LCD_SEL_SHIFT (0) 117*4882a593Smuzhiyun #define S3C64XX_SPCON_LCD_SEL_HOST (0x0 << 0) 118*4882a593Smuzhiyun #define S3C64XX_SPCON_LCD_SEL_RGB (0x1 << 0) 119*4882a593Smuzhiyun #define S3C64XX_SPCON_LCD_SEL_606_656 (0x2 << 0) 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /* External interrupt registers */ 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun #define S3C64XX_EINT12CON S3C64XX_GPIOREG(0x200) 125*4882a593Smuzhiyun #define S3C64XX_EINT34CON S3C64XX_GPIOREG(0x204) 126*4882a593Smuzhiyun #define S3C64XX_EINT56CON S3C64XX_GPIOREG(0x208) 127*4882a593Smuzhiyun #define S3C64XX_EINT78CON S3C64XX_GPIOREG(0x20C) 128*4882a593Smuzhiyun #define S3C64XX_EINT9CON S3C64XX_GPIOREG(0x210) 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun #define S3C64XX_EINT12FLTCON S3C64XX_GPIOREG(0x220) 131*4882a593Smuzhiyun #define S3C64XX_EINT34FLTCON S3C64XX_GPIOREG(0x224) 132*4882a593Smuzhiyun #define S3C64XX_EINT56FLTCON S3C64XX_GPIOREG(0x228) 133*4882a593Smuzhiyun #define S3C64XX_EINT78FLTCON S3C64XX_GPIOREG(0x22C) 134*4882a593Smuzhiyun #define S3C64XX_EINT9FLTCON S3C64XX_GPIOREG(0x230) 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define S3C64XX_EINT12MASK S3C64XX_GPIOREG(0x240) 137*4882a593Smuzhiyun #define S3C64XX_EINT34MASK S3C64XX_GPIOREG(0x244) 138*4882a593Smuzhiyun #define S3C64XX_EINT56MASK S3C64XX_GPIOREG(0x248) 139*4882a593Smuzhiyun #define S3C64XX_EINT78MASK S3C64XX_GPIOREG(0x24C) 140*4882a593Smuzhiyun #define S3C64XX_EINT9MASK S3C64XX_GPIOREG(0x250) 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define S3C64XX_EINT12PEND S3C64XX_GPIOREG(0x260) 143*4882a593Smuzhiyun #define S3C64XX_EINT34PEND S3C64XX_GPIOREG(0x264) 144*4882a593Smuzhiyun #define S3C64XX_EINT56PEND S3C64XX_GPIOREG(0x268) 145*4882a593Smuzhiyun #define S3C64XX_EINT78PEND S3C64XX_GPIOREG(0x26C) 146*4882a593Smuzhiyun #define S3C64XX_EINT9PEND S3C64XX_GPIOREG(0x270) 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun #define S3C64XX_PRIORITY S3C64XX_GPIOREG(0x280) 149*4882a593Smuzhiyun #define S3C64XX_PRIORITY_ARB(x) (1 << (x)) 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun #define S3C64XX_SERVICE S3C64XX_GPIOREG(0x284) 152*4882a593Smuzhiyun #define S3C64XX_SERVICEPEND S3C64XX_GPIOREG(0x288) 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun #define S3C64XX_EINT0CON0 S3C64XX_GPIOREG(0x900) 155*4882a593Smuzhiyun #define S3C64XX_EINT0CON1 S3C64XX_GPIOREG(0x904) 156*4882a593Smuzhiyun #define S3C64XX_EINT0FLTCON0 S3C64XX_GPIOREG(0x910) 157*4882a593Smuzhiyun #define S3C64XX_EINT0FLTCON1 S3C64XX_GPIOREG(0x914) 158*4882a593Smuzhiyun #define S3C64XX_EINT0FLTCON2 S3C64XX_GPIOREG(0x918) 159*4882a593Smuzhiyun #define S3C64XX_EINT0FLTCON3 S3C64XX_GPIOREG(0x91C) 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun #define S3C64XX_EINT0MASK S3C64XX_GPIOREG(0x920) 162*4882a593Smuzhiyun #define S3C64XX_EINT0PEND S3C64XX_GPIOREG(0x924) 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun /* GPIO sleep configuration */ 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun #define S3C64XX_SPCONSLP S3C64XX_GPIOREG(0x880) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_TDO_PULLDOWN (1 << 14) 169*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_CKE1INIT (1 << 5) 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_RSTOUT_MASK (0x3 << 12) 172*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_RSTOUT_OUT0 (0x0 << 12) 173*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_RSTOUT_OUT1 (0x1 << 12) 174*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_RSTOUT_HIZ (0x2 << 12) 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_KPCOL_MASK (0x3 << 0) 177*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_KPCOL_OUT0 (0x0 << 0) 178*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_KPCOL_OUT1 (0x1 << 0) 179*4882a593Smuzhiyun #define S3C64XX_SPCONSLP_KPCOL_INP (0x2 << 0) 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun #define S3C64XX_SLPEN S3C64XX_GPIOREG(0x930) 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun #define S3C64XX_SLPEN_USE_xSLP (1 << 0) 185*4882a593Smuzhiyun #define S3C64XX_SLPEN_CFG_BYSLPEN (1 << 1) 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun #endif /* __ASM_PLAT_S3C64XX_REGS_GPIO_H */ 188*4882a593Smuzhiyun 189