xref: /linux/arch/arm/mach-s3c/regs-gpio-s3c64xx.h (revision c6ff132d4224022ffaa461ec771ec27c5319369c)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
289d043c3SBen Dooks /* linux/arch/arm/plat-s3c64xx/include/mach/regs-gpio.h
389d043c3SBen Dooks  *
489d043c3SBen Dooks  * Copyright 2008 Openmoko, Inc.
589d043c3SBen Dooks  * Copyright 2008 Simtec Electronics
689d043c3SBen Dooks  *      Ben Dooks <ben@simtec.co.uk>
789d043c3SBen Dooks  *      http://armlinux.simtec.co.uk/
889d043c3SBen Dooks  *
989d043c3SBen Dooks  * S3C64XX - GPIO register definitions
1089d043c3SBen Dooks  */
1189d043c3SBen Dooks 
1289d043c3SBen Dooks #ifndef __ASM_PLAT_S3C64XX_REGS_GPIO_H
1389d043c3SBen Dooks #define __ASM_PLAT_S3C64XX_REGS_GPIO_H __FILE__
1489d043c3SBen Dooks 
1589d043c3SBen Dooks /* Base addresses for each of the banks */
1689d043c3SBen Dooks 
1733305373SBen Dooks #define S3C64XX_GPIOREG(reg)	(S3C64XX_VA_GPIO + (reg))
1833305373SBen Dooks 
1933305373SBen Dooks #define S3C64XX_GPA_BASE	S3C64XX_GPIOREG(0x0000)
2033305373SBen Dooks #define S3C64XX_GPB_BASE	S3C64XX_GPIOREG(0x0020)
2133305373SBen Dooks #define S3C64XX_GPC_BASE	S3C64XX_GPIOREG(0x0040)
2233305373SBen Dooks #define S3C64XX_GPD_BASE	S3C64XX_GPIOREG(0x0060)
2333305373SBen Dooks #define S3C64XX_GPE_BASE	S3C64XX_GPIOREG(0x0080)
2433305373SBen Dooks #define S3C64XX_GPF_BASE	S3C64XX_GPIOREG(0x00A0)
2533305373SBen Dooks #define S3C64XX_GPG_BASE	S3C64XX_GPIOREG(0x00C0)
2633305373SBen Dooks #define S3C64XX_GPH_BASE	S3C64XX_GPIOREG(0x00E0)
2733305373SBen Dooks #define S3C64XX_GPI_BASE	S3C64XX_GPIOREG(0x0100)
2833305373SBen Dooks #define S3C64XX_GPJ_BASE	S3C64XX_GPIOREG(0x0120)
2933305373SBen Dooks #define S3C64XX_GPK_BASE	S3C64XX_GPIOREG(0x0800)
3033305373SBen Dooks #define S3C64XX_GPL_BASE	S3C64XX_GPIOREG(0x0810)
3133305373SBen Dooks #define S3C64XX_GPM_BASE	S3C64XX_GPIOREG(0x0820)
3233305373SBen Dooks #define S3C64XX_GPN_BASE	S3C64XX_GPIOREG(0x0830)
3333305373SBen Dooks #define S3C64XX_GPO_BASE	S3C64XX_GPIOREG(0x0140)
3433305373SBen Dooks #define S3C64XX_GPP_BASE	S3C64XX_GPIOREG(0x0160)
3533305373SBen Dooks #define S3C64XX_GPQ_BASE	S3C64XX_GPIOREG(0x0180)
3633305373SBen Dooks 
37e3837071SBen Dooks /* SPCON */
38e3837071SBen Dooks 
39e3837071SBen Dooks #define S3C64XX_SPCON		S3C64XX_GPIOREG(0x1A0)
40e3837071SBen Dooks 
412454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_CAM_MASK		(0x3 << 30)
422454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_CAM_SHIFT		(30)
432454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_CAM_2mA		(0x0 << 30)
442454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_CAM_4mA		(0x1 << 30)
452454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_CAM_7mA		(0x2 << 30)
462454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_CAM_9mA		(0x3 << 30)
472454e524SBen Dooks 
482454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSSPI_MASK		(0x3 << 28)
492454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSSPI_SHIFT	(28)
502454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSSPI_2mA		(0x0 << 28)
512454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSSPI_4mA		(0x1 << 28)
522454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSSPI_7mA		(0x2 << 28)
532454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSSPI_9mA		(0x3 << 28)
542454e524SBen Dooks 
552454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSMMC_MASK		(0x3 << 26)
562454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSMMC_SHIFT	(26)
572454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSMMC_2mA		(0x0 << 26)
582454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSMMC_4mA		(0x1 << 26)
592454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSMMC_7mA		(0x2 << 26)
602454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_HSMMC_9mA		(0x3 << 26)
612454e524SBen Dooks 
622454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_LCD_MASK		(0x3 << 24)
632454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_LCD_SHIFT		(24)
642454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_LCD_2mA		(0x0 << 24)
652454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_LCD_4mA		(0x1 << 24)
662454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_LCD_7mA		(0x2 << 24)
672454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_LCD_9mA		(0x3 << 24)
682454e524SBen Dooks 
692454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_MODEM_MASK		(0x3 << 22)
702454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_MODEM_SHIFT	(22)
712454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_MODEM_2mA		(0x0 << 22)
722454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_MODEM_4mA		(0x1 << 22)
732454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_MODEM_7mA		(0x2 << 22)
742454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_MODEM_9mA		(0x3 << 22)
752454e524SBen Dooks 
762454e524SBen Dooks #define S3C64XX_SPCON_nRSTOUT_OEN		(1 << 21)
772454e524SBen Dooks 
782454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_SPICLK1_MASK	(0x3 << 18)
792454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_SPICLK1_SHIFT	(18)
802454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_SPICLK1_2mA	(0x0 << 18)
812454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_SPICLK1_4mA	(0x1 << 18)
822454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_SPICLK1_7mA	(0x2 << 18)
832454e524SBen Dooks #define S3C64XX_SPCON_DRVCON_SPICLK1_9mA	(0x3 << 18)
842454e524SBen Dooks 
852454e524SBen Dooks #define S3C64XX_SPCON_MEM1_DQS_PUD_MASK		(0x3 << 16)
862454e524SBen Dooks #define S3C64XX_SPCON_MEM1_DQS_PUD_SHIFT	(16)
872454e524SBen Dooks #define S3C64XX_SPCON_MEM1_DQS_PUD_DISABLED	(0x0 << 16)
882454e524SBen Dooks #define S3C64XX_SPCON_MEM1_DQS_PUD_DOWN		(0x1 << 16)
892454e524SBen Dooks #define S3C64XX_SPCON_MEM1_DQS_PUD_UP		(0x2 << 16)
902454e524SBen Dooks 
912454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD1_MASK		(0x3 << 14)
922454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD1_SHIFT		(14)
932454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD1_DISABLED	(0x0 << 14)
942454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD1_DOWN		(0x1 << 14)
952454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD1_UP		(0x2 << 14)
962454e524SBen Dooks 
972454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD0_MASK		(0x3 << 12)
982454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD0_SHIFT		(12)
992454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD0_DISABLED	(0x0 << 12)
1002454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD0_DOWN		(0x1 << 12)
1012454e524SBen Dooks #define S3C64XX_SPCON_MEM1_D_PUD0_UP		(0x2 << 12)
1022454e524SBen Dooks 
1032454e524SBen Dooks #define S3C64XX_SPCON_MEM0_D_PUD_MASK		(0x3 << 8)
1042454e524SBen Dooks #define S3C64XX_SPCON_MEM0_D_PUD_SHIFT		(8)
1052454e524SBen Dooks #define S3C64XX_SPCON_MEM0_D_PUD_DISABLED	(0x0 << 8)
1062454e524SBen Dooks #define S3C64XX_SPCON_MEM0_D_PUD_DOWN		(0x1 << 8)
1072454e524SBen Dooks #define S3C64XX_SPCON_MEM0_D_PUD_UP		(0x2 << 8)
1082454e524SBen Dooks 
1092454e524SBen Dooks #define S3C64XX_SPCON_USBH_DMPD			(1 << 7)
1102454e524SBen Dooks #define S3C64XX_SPCON_USBH_DPPD			(1 << 6)
1112454e524SBen Dooks #define S3C64XX_SPCON_USBH_PUSW2		(1 << 5)
1122454e524SBen Dooks #define S3C64XX_SPCON_USBH_PUSW1		(1 << 4)
1132454e524SBen Dooks #define S3C64XX_SPCON_USBH_SUSPND		(1 << 3)
1142454e524SBen Dooks 
1152454e524SBen Dooks #define S3C64XX_SPCON_LCD_SEL_MASK		(0x3 << 0)
1162454e524SBen Dooks #define S3C64XX_SPCON_LCD_SEL_SHIFT		(0)
1172454e524SBen Dooks #define S3C64XX_SPCON_LCD_SEL_HOST		(0x0 << 0)
1182454e524SBen Dooks #define S3C64XX_SPCON_LCD_SEL_RGB		(0x1 << 0)
1192454e524SBen Dooks #define S3C64XX_SPCON_LCD_SEL_606_656		(0x2 << 0)
1202454e524SBen Dooks 
1212454e524SBen Dooks 
12233305373SBen Dooks /* External interrupt registers */
12333305373SBen Dooks 
12433305373SBen Dooks #define S3C64XX_EINT12CON	S3C64XX_GPIOREG(0x200)
12533305373SBen Dooks #define S3C64XX_EINT34CON	S3C64XX_GPIOREG(0x204)
12633305373SBen Dooks #define S3C64XX_EINT56CON	S3C64XX_GPIOREG(0x208)
12733305373SBen Dooks #define S3C64XX_EINT78CON	S3C64XX_GPIOREG(0x20C)
12833305373SBen Dooks #define S3C64XX_EINT9CON	S3C64XX_GPIOREG(0x210)
12933305373SBen Dooks 
13033305373SBen Dooks #define S3C64XX_EINT12FLTCON	S3C64XX_GPIOREG(0x220)
13133305373SBen Dooks #define S3C64XX_EINT34FLTCON	S3C64XX_GPIOREG(0x224)
13233305373SBen Dooks #define S3C64XX_EINT56FLTCON	S3C64XX_GPIOREG(0x228)
13333305373SBen Dooks #define S3C64XX_EINT78FLTCON	S3C64XX_GPIOREG(0x22C)
13433305373SBen Dooks #define S3C64XX_EINT9FLTCON	S3C64XX_GPIOREG(0x230)
13533305373SBen Dooks 
13633305373SBen Dooks #define S3C64XX_EINT12MASK	S3C64XX_GPIOREG(0x240)
13733305373SBen Dooks #define S3C64XX_EINT34MASK	S3C64XX_GPIOREG(0x244)
13833305373SBen Dooks #define S3C64XX_EINT56MASK	S3C64XX_GPIOREG(0x248)
13933305373SBen Dooks #define S3C64XX_EINT78MASK	S3C64XX_GPIOREG(0x24C)
14033305373SBen Dooks #define S3C64XX_EINT9MASK	S3C64XX_GPIOREG(0x250)
14133305373SBen Dooks 
14233305373SBen Dooks #define S3C64XX_EINT12PEND	S3C64XX_GPIOREG(0x260)
14333305373SBen Dooks #define S3C64XX_EINT34PEND	S3C64XX_GPIOREG(0x264)
14433305373SBen Dooks #define S3C64XX_EINT56PEND	S3C64XX_GPIOREG(0x268)
14533305373SBen Dooks #define S3C64XX_EINT78PEND	S3C64XX_GPIOREG(0x26C)
14633305373SBen Dooks #define S3C64XX_EINT9PEND	S3C64XX_GPIOREG(0x270)
14733305373SBen Dooks 
14833305373SBen Dooks #define S3C64XX_PRIORITY	S3C64XX_GPIOREG(0x280)
14933305373SBen Dooks #define S3C64XX_PRIORITY_ARB(x)	(1 << (x))
15033305373SBen Dooks 
15133305373SBen Dooks #define S3C64XX_SERVICE		S3C64XX_GPIOREG(0x284)
15233305373SBen Dooks #define S3C64XX_SERVICEPEND	S3C64XX_GPIOREG(0x288)
15333305373SBen Dooks 
15433305373SBen Dooks #define S3C64XX_EINT0CON0	S3C64XX_GPIOREG(0x900)
15533305373SBen Dooks #define S3C64XX_EINT0CON1	S3C64XX_GPIOREG(0x904)
15633305373SBen Dooks #define S3C64XX_EINT0FLTCON0	S3C64XX_GPIOREG(0x910)
15733305373SBen Dooks #define S3C64XX_EINT0FLTCON1	S3C64XX_GPIOREG(0x914)
15833305373SBen Dooks #define S3C64XX_EINT0FLTCON2	S3C64XX_GPIOREG(0x918)
15933305373SBen Dooks #define S3C64XX_EINT0FLTCON3	S3C64XX_GPIOREG(0x91C)
16033305373SBen Dooks 
16133305373SBen Dooks #define S3C64XX_EINT0MASK	S3C64XX_GPIOREG(0x920)
16233305373SBen Dooks #define S3C64XX_EINT0PEND	S3C64XX_GPIOREG(0x924)
16389d043c3SBen Dooks 
164e3837071SBen Dooks /* GPIO sleep configuration */
165e3837071SBen Dooks 
166e3837071SBen Dooks #define S3C64XX_SPCONSLP	S3C64XX_GPIOREG(0x880)
167e3837071SBen Dooks 
168e3837071SBen Dooks #define S3C64XX_SPCONSLP_TDO_PULLDOWN	(1 << 14)
169e3837071SBen Dooks #define S3C64XX_SPCONSLP_CKE1INIT	(1 << 5)
170e3837071SBen Dooks 
171e3837071SBen Dooks #define S3C64XX_SPCONSLP_RSTOUT_MASK	(0x3 << 12)
172e3837071SBen Dooks #define S3C64XX_SPCONSLP_RSTOUT_OUT0	(0x0 << 12)
173e3837071SBen Dooks #define S3C64XX_SPCONSLP_RSTOUT_OUT1	(0x1 << 12)
174e3837071SBen Dooks #define S3C64XX_SPCONSLP_RSTOUT_HIZ	(0x2 << 12)
175e3837071SBen Dooks 
176e3837071SBen Dooks #define S3C64XX_SPCONSLP_KPCOL_MASK	(0x3 << 0)
177e3837071SBen Dooks #define S3C64XX_SPCONSLP_KPCOL_OUT0	(0x0 << 0)
178e3837071SBen Dooks #define S3C64XX_SPCONSLP_KPCOL_OUT1	(0x1 << 0)
179e3837071SBen Dooks #define S3C64XX_SPCONSLP_KPCOL_INP	(0x2 << 0)
180e3837071SBen Dooks 
181e3837071SBen Dooks 
182e3837071SBen Dooks #define S3C64XX_SLPEN		S3C64XX_GPIOREG(0x930)
183e3837071SBen Dooks 
184e3837071SBen Dooks #define S3C64XX_SLPEN_USE_xSLP		(1 << 0)
185e3837071SBen Dooks #define S3C64XX_SLPEN_CFG_BYSLPEN	(1 << 1)
186e3837071SBen Dooks 
18789d043c3SBen Dooks #endif /* __ASM_PLAT_S3C64XX_REGS_GPIO_H */
18889d043c3SBen Dooks 
189