aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-exynos/p10-gpio.c
diff options
context:
space:
mode:
authorcodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-02 13:09:29 +0200
committercodeworkx <daniel.hillenbrand@codeworkx.de>2012-06-02 13:09:29 +0200
commitc6da2cfeb05178a11c6d062a06f8078150ee492f (patch)
treef3b4021d252c52d6463a9b3c1bb7245e399b009c /arch/arm/mach-exynos/p10-gpio.c
parentc6d7c4dbff353eac7919342ae6b3299a378160a6 (diff)
downloadkernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.zip
kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.gz
kernel_samsung_smdk4412-c6da2cfeb05178a11c6d062a06f8078150ee492f.tar.bz2
samsung update 1
Diffstat (limited to 'arch/arm/mach-exynos/p10-gpio.c')
-rw-r--r--arch/arm/mach-exynos/p10-gpio.c580
1 files changed, 580 insertions, 0 deletions
diff --git a/arch/arm/mach-exynos/p10-gpio.c b/arch/arm/mach-exynos/p10-gpio.c
new file mode 100644
index 0000000..3e6c9d3
--- /dev/null
+++ b/arch/arm/mach-exynos/p10-gpio.c
@@ -0,0 +1,580 @@
+/*
+ * linux/arch/arm/mach-exynos/p10-gpio.c
+ *
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com/
+ *
+ * EXYNOS - GPIO setting in set board
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/gpio.h>
+#include <linux/serial_core.h>
+#include <plat/devs.h>
+#include <plat/gpio-cfg.h>
+#include <plat/regs-serial.h>
+#include <mach/gpio-midas.h>
+#include <plat/cpu.h>
+#include <mach/pmu.h>
+
+struct gpio_init_data {
+ uint num;
+ uint cfg;
+ uint val;
+ uint pud;
+ uint drv;
+};
+
+extern int s3c_gpio_slp_cfgpin(unsigned int pin, unsigned int config);
+extern int s3c_gpio_slp_setpull_updown(unsigned int pin, unsigned int config);
+
+/* this is sample code for p10 board */
+static struct gpio_init_data p10_init_gpios[] = {
+
+ /* BT_UART_RXD */
+ {EXYNOS5_GPA0(0), S3C_GPIO_SFN(2), 2, S3C_GPIO_PULL_UP},
+ /* BT_UART_TXD */
+ {EXYNOS5_GPA0(1), S3C_GPIO_SFN(2), 2, S3C_GPIO_PULL_NONE},
+ /* BT_UART_CTS */
+ {EXYNOS5_GPA0(2), S3C_GPIO_SFN(2), 2, S3C_GPIO_PULL_NONE},
+ /* BT_UART_RTS */
+ {EXYNOS5_GPA0(3), S3C_GPIO_SFN(2), 2, S3C_GPIO_PULL_NONE},
+
+ /* UART switch: configure as output */
+ {EXYNOS5_GPE0(5), S3C_GPIO_OUTPUT, 2, S3C_GPIO_PULL_NONE},
+ /* USB switch: configure as output */
+ {EXYNOS5_GPH0(1), S3C_GPIO_OUTPUT, 2, S3C_GPIO_PULL_NONE},
+
+ {EXYNOS5_GPB2(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* CODEC_SDA_1.8V */
+ {EXYNOS5_GPB2(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* CODEC_SCL_1.8V */
+
+ {EXYNOS5_GPX0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* DET_3.5 */
+ {EXYNOS5_GPX0(2), S3C_GPIO_SFN(0xF), S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* AP_PMIC_IRQ */
+
+ {EXYNOS5_GPX2(0), S3C_GPIO_SFN(2), S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* VOL_UP */
+ {EXYNOS5_GPX2(1), S3C_GPIO_SFN(2), S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* VOL_DOWN */
+ {EXYNOS5_GPX2(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* ADC_INT */
+ {EXYNOS5_GPX2(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE,
+ S3C_GPIO_PULL_NONE, S5P_GPIO_DRVSTR_LV1}, /* BT_HOST_WAKE */
+};
+
+/* Initialize gpio set in p10 board */
+void p10_config_gpio_table(void)
+{
+ u32 i, gpio;
+
+ printk(KERN_DEBUG "%s\n", __func__);
+
+ for (i = 0; i < ARRAY_SIZE(p10_init_gpios); i++) {
+ gpio = p10_init_gpios[i].num;
+ s3c_gpio_cfgpin(gpio, p10_init_gpios[i].cfg);
+ s3c_gpio_setpull(gpio, p10_init_gpios[i].pud);
+
+ if (p10_init_gpios[i].val != S3C_GPIO_SETPIN_NONE)
+ gpio_set_value(gpio, p10_init_gpios[i].val);
+
+ s5p_gpio_set_drvstr(gpio, p10_init_gpios[i].drv);
+ }
+}
+
+/* this table only for p10 board */
+static unsigned int exynos5_sleep_gpio_table[][3] = {
+ {EXYNOS4_GPA0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_UP}, /* BT_UART_RXD */
+ {EXYNOS4_GPA0(1), S3C_GPIO_SLP_OUT1,
+ S3C_GPIO_PULL_NONE}, /* BT_UART_TXD */
+ {EXYNOS4_GPA0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* BT_UART_CTS */
+ {EXYNOS4_GPA0(3), S3C_GPIO_SLP_OUT1,
+ S3C_GPIO_PULL_NONE}, /* BT_UART_RTS */
+ {EXYNOS4_GPA0(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* GPS_UART_RXD */
+ {EXYNOS4_GPA0(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* GPS_UART_TXD */
+ {EXYNOS4_GPA0(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* GPS_UART_CTS */
+ {EXYNOS4_GPA0(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* GPS_UART_RTS */
+
+ {EXYNOS4_GPA1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* AP_RXD */
+ {EXYNOS4_GPA1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* AP_TXD */
+ {EXYNOS4_GPA1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* TSP_SDA_1.8V */
+ {EXYNOS4_GPA1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* TSP_SCL_1.8V */
+ {EXYNOS4_GPA1(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* AP_FLM_RXD */
+ {EXYNOS4_GPA1(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* AP_FLM_TXD */
+
+ {EXYNOS5_GPA2(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* CHG_SDA_1.8V */
+ {EXYNOS5_GPA2(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* CHG_SCL_1.8V */
+ {EXYNOS5_GPA2(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* AP_PMIC_SDA */
+ {EXYNOS5_GPA2(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* AP_PMIC_SCL */
+ {EXYNOS5_GPA2(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* 5M_SPI_CLK */
+ {EXYNOS5_GPA2(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* 5M_SPI_CS */
+ {EXYNOS5_GPA2(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* 5M_SPI_DI */
+ {EXYNOS5_GPA2(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* 5M_SPI_DO */
+
+ {EXYNOS5_GPB0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* AP_CP_INT */
+ {EXYNOS5_GPB0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CMC221_CPU_RST */
+ {EXYNOS5_GPB0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CMC_SPI_CLK_REQ */
+ {EXYNOS5_GPB0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPB0(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPB1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* BARO_INT */
+ {EXYNOS5_GPB1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPB1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPB1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPB1(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPB2(0), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* LCD_PWM_IN_1.8V */
+ {EXYNOS5_GPB2(1), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* MOTOR_PWM */
+ {EXYNOS5_GPB2(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* CODEC_SDA_1.8V */
+ {EXYNOS5_GPB2(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* CODEC_SCL_1.8V */
+
+ {EXYNOS5_GPB3(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MHL_DSDA_1.8V */
+ {EXYNOS5_GPB3(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MHL_DSCL_1.8V */
+ {EXYNOS5_GPB3(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* GSENSE_SDA_1.8V */
+ {EXYNOS5_GPB3(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* GSENSE_SCL_1.8V */
+
+ {EXYNOS5_GPC0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_CLK */
+ {EXYNOS5_GPC0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_CMD */
+ {EXYNOS5_GPC0(2), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* eMMC_EN */
+ {EXYNOS5_GPC0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(0) */
+ {EXYNOS5_GPC0(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(1) */
+ {EXYNOS5_GPC0(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(2) */
+ {EXYNOS5_GPC0(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(3) */
+
+ {EXYNOS5_GPC1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPC1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPC1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPC1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(4) */
+ {EXYNOS5_GPC1(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(5) */
+ {EXYNOS5_GPC1(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(6) */
+ {EXYNOS5_GPC1(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NAND_D(7) */
+
+ {EXYNOS5_GPC2(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* T_FLASH_CLK */
+ {EXYNOS5_GPC2(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* T_FLASH_CMD */
+ {EXYNOS5_GPC2(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPC2(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* T_FLASH_D(0) */
+ {EXYNOS5_GPC2(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* T_FLASH_D(1) */
+ {EXYNOS5_GPC2(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* T_FLASH_D(2) */
+ {EXYNOS5_GPC2(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* T_FLASH_D(3) */
+
+ {EXYNOS5_GPC3(0), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* WLAN_SDIO_CLK */
+ {EXYNOS5_GPC3(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* WLAN_SDIO_CMD */
+ {EXYNOS5_GPC3(2), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* OTG_EN */
+ {EXYNOS5_GPC3(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* WLAN_SDIO_D(0) */
+ {EXYNOS5_GPC3(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* WLAN_SDIO_D(1) */
+ {EXYNOS5_GPC3(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* WLAN_SDIO_D(2) */
+ {EXYNOS5_GPC3(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* WLAN_SDIO_D(3) */
+
+ {EXYNOS5_GPD0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* FUEL_SDA_1.8V */
+ {EXYNOS5_GPD0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* FUEL_SCL_1.8V */
+ {EXYNOS5_GPD0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* BSENSE_SDA_1.8V */
+ {EXYNOS5_GPD0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* BSENSE_SCL_1.8V */
+ {EXYNOS5_GPD0(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MHL_SDA_1.8V */
+ {EXYNOS5_GPD0(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MHL_SCL_1.8V */
+ {EXYNOS5_GPD0(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* LCDP_SCL__1.8V */
+ {EXYNOS5_GPD0(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* LCDP_SDA__1.8V */
+
+ {EXYNOS5_GPD1(0), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* HDMI_EN */
+ {EXYNOS5_GPD1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPD1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MOTOR_SDA_1.8V */
+ {EXYNOS5_GPD1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MOTOR_SCL_1.8V */
+ {EXYNOS5_GPD1(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* LCD_ID */
+ {EXYNOS5_GPD1(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CMC_PMIC_PWRON */
+ {EXYNOS5_GPD1(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NFC_EN, NC */
+ {EXYNOS5_GPD1(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NFC_FIRMWARE, NC */
+
+ {EXYNOS5_GPE0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CIS_nRST */
+ {EXYNOS5_GPE0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* CHG_SDA_1.8V */
+ {EXYNOS5_GPE0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* CHG_SCL_1.8V */
+ {EXYNOS5_GPE0(3), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* PDA_ACTIVE */
+ {EXYNOS5_GPE0(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* ACCESSORY_CHECK */
+ {EXYNOS5_GPE0(5), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* UART_SEL */
+ {EXYNOS5_GPE0(6), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* GPS_nRST */
+ {EXYNOS5_GPE0(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* ISP_TXD */
+
+ {EXYNOS5_GPE1(0), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* GPS_EN */
+ {EXYNOS5_GPE1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* ISP_RXD */
+
+ {EXYNOS5_GPF0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* 5M_CAM_SDA_1.8V */
+ {EXYNOS5_GPF0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* 5M_CAM_SCL_1.8V */
+ {EXYNOS5_GPF0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* VT_CAM_SDA_1.8V */
+ {EXYNOS5_GPF0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* VT_CAM_SCL_1.8V */
+
+ {EXYNOS5_GPF1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPF1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPF1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPF1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPG0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* ALS_SDA_1.8V */
+ {EXYNOS5_GPG0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /*ALS_SCL_1.8V */
+ {EXYNOS5_GPG0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* USB3.0_EN */
+ {EXYNOS5_GPG0(3), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* FM34_PWDN */
+ {EXYNOS5_GPG0(4), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* FM34_RESET */
+ {EXYNOS5_GPG0(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* MHL_INT */
+ {EXYNOS5_GPG0(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* MHL_RST */
+
+ {EXYNOS5_GPG1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CAM_FLASH_EN */
+ {EXYNOS5_GPG1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CAM_FLASH_SET */
+ {EXYNOS5_GPG1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* TOUCH_CHG */
+ {EXYNOS5_GPG1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* TOUCH_RESET */
+ {EXYNOS5_GPG1(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* TA_nCHG */
+ {EXYNOS5_GPG1(5), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* TA_EN */
+ {EXYNOS5_GPG1(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CAM_VT_nRST */
+ {EXYNOS5_GPG1(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPG2(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPG2(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* VTCAM_MCLK */
+
+ {EXYNOS5_GPH0(0), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* WLAN_EN */
+ {EXYNOS5_GPH0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* USB_SEL1 */
+ {EXYNOS5_GPH0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPH0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CAM_MCLK */
+
+ {EXYNOS5_GPH1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPH1(1), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* CODEC_LDO_EN */
+ {EXYNOS5_GPH1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* LIGHT_nINT */
+ {EXYNOS5_GPH1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* BT_WAKE */
+ {EXYNOS5_GPH1(4), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* FM34_BYPASS */
+ {EXYNOS5_GPH1(5), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* ACCESSORY_EN */
+ {EXYNOS5_GPH1(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPH1(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* LCD_EN */
+
+ {EXYNOS5_GPV0(0), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* BUCK4_SEL */
+ {EXYNOS5_GPV0(1), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* BUCK3_SEL */
+ {EXYNOS5_GPV0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* 5M_CORE_EN */
+ {EXYNOS5_GPV0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* CAM_IO_EN */
+ {EXYNOS5_GPV0(4), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* BUCK2_SEL */
+ {EXYNOS5_GPV0(5), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* PMIC_DVS3 */
+ {EXYNOS5_GPV0(6), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* PMIC_DVS2 */
+ {EXYNOS5_GPV0(7), S3C_GPIO_SLP_OUT0,
+ S3C_GPIO_PULL_NONE}, /* PMIC_DVS1 */
+
+ {EXYNOS5_GPV1(0), S3C_GPIO_SLP_PREV,
+ S3C_GPIO_PULL_NONE}, /* WLAN_WAKE */
+ {EXYNOS5_GPV1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* HW_REV3 */
+ {EXYNOS5_GPV1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* HW_REV2 */
+ {EXYNOS5_GPV1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* HW_REV1 */
+ {EXYNOS5_GPV1(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* HW_REV0 */
+ {EXYNOS5_GPV1(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV1(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV1(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPV2(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV2(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV2(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV2(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV2(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* HUM_SCL_1.8V */
+ {EXYNOS5_GPV2(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* HUM_SDA_1.8V */
+ {EXYNOS5_GPV2(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MSENSE_SCL_1.8V */
+ {EXYNOS5_GPV2(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* MSENSE_SDA_1.8V */
+
+ {EXYNOS5_GPV3(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* ADC_SCL_1.8V */
+ {EXYNOS5_GPV3(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_NONE}, /* ADC_SDA_1.8V */
+ {EXYNOS5_GPV3(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV3(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV3(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV3(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV3(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPV3(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPY0(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_CSN */
+ {EXYNOS5_GPY0(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY0(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY0(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY0(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_REN */
+ {EXYNOS5_GPY0(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_WEN */
+
+ {EXYNOS5_GPY1(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY1(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY1(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY1(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPY2(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* TF_EN */
+ {EXYNOS5_GPY2(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY2(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY2(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY2(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY2(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPY3(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(0) */
+ {EXYNOS5_GPY3(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(1) */
+ {EXYNOS5_GPY3(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(2) */
+ {EXYNOS5_GPY3(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(3) */
+ {EXYNOS5_GPY3(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(4) */
+ {EXYNOS5_GPY3(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(5) */
+ {EXYNOS5_GPY3(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(6) */
+ {EXYNOS5_GPY3(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(7) */
+
+ {EXYNOS5_GPY4(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(8) */
+ {EXYNOS5_GPY4(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(9) */
+ {EXYNOS5_GPY4(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(10) */
+ {EXYNOS5_GPY4(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(11) */
+ {EXYNOS5_GPY4(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(12) */
+ {EXYNOS5_GPY4(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_A(13) */
+ {EXYNOS5_GPY4(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPY4(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+
+ {EXYNOS5_GPY5(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(0) */
+ {EXYNOS5_GPY5(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(1) */
+ {EXYNOS5_GPY5(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(2) */
+ {EXYNOS5_GPY5(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(3) */
+ {EXYNOS5_GPY5(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(4) */
+ {EXYNOS5_GPY5(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(5) */
+ {EXYNOS5_GPY5(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(6) */
+ {EXYNOS5_GPY5(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(7) */
+
+ {EXYNOS5_GPY6(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(8) */
+ {EXYNOS5_GPY6(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(9) */
+ {EXYNOS5_GPY6(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(10) */
+ {EXYNOS5_GPY6(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(11) */
+ {EXYNOS5_GPY6(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(12) */
+ {EXYNOS5_GPY6(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(13) */
+ {EXYNOS5_GPY6(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(14) */
+ {EXYNOS5_GPY6(7), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* DPRAM_D(15) */
+
+ {EXYNOS5_GPZ(0), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* MM_I2S_CLK */
+ {EXYNOS5_GPZ(1), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPZ(2), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* MM_I2S_SYNC */
+ {EXYNOS5_GPZ(3), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* MM_I2S_DI */
+ {EXYNOS5_GPZ(4), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* MM_I2S_DO */
+ {EXYNOS5_GPZ(5), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+ {EXYNOS5_GPZ(6), S3C_GPIO_SLP_INPUT,
+ S3C_GPIO_PULL_DOWN}, /* NC */
+};
+
+static void config_sleep_gpio_table(int array_size,
+ unsigned int (*gpio_table)[3])
+{
+ u32 i, gpio;
+
+ for (i = 0; i < array_size; i++) {
+ gpio = gpio_table[i][0];
+ s3c_gpio_slp_cfgpin(gpio, gpio_table[i][1]);
+ s3c_gpio_slp_setpull_updown(gpio, gpio_table[i][2]);
+ }
+}
+
+/* To save power consumption, gpio pin set before enterling sleep */
+void p10_config_sleep_gpio_table(void)
+{
+ config_sleep_gpio_table(ARRAY_SIZE(exynos5_sleep_gpio_table),
+ exynos5_sleep_gpio_table);
+}