aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorBrian Swetland <swetland@google.com>2010-10-14 01:39:01 -0700
committerArve Hjønnevåg <arve@android.com>2011-11-16 19:56:19 -0800
commitff69d46219acf0610b122aee1c3ec36b513010e4 (patch)
tree23eccf9133c67eec4e998e941256b1cf6b1f3a5a /arch/arm
parent092257a234be209941caeccb62da02fcdefefb21 (diff)
downloadkernel_samsung_crespo-ff69d46219acf0610b122aee1c3ec36b513010e4.zip
kernel_samsung_crespo-ff69d46219acf0610b122aee1c3ec36b513010e4.tar.gz
kernel_samsung_crespo-ff69d46219acf0610b122aee1c3ec36b513010e4.tar.bz2
S5PC110: HERRING: Modified herring dependent code.
Change-Id: I6cb71ed89b5d22d38c409bdfbeab0c99900e93d9 Signed-off-by: Jaecheol Lee <jc.lee@samsung.com> Signed-off-by: Janghyuck Kim <janghyuck.kim@samsung.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-s5pv210/mach-herring.c3144
1 files changed, 3140 insertions, 4 deletions
diff --git a/arch/arm/mach-s5pv210/mach-herring.c b/arch/arm/mach-s5pv210/mach-herring.c
index f74374d..25e0971 100644
--- a/arch/arm/mach-s5pv210/mach-herring.c
+++ b/arch/arm/mach-s5pv210/mach-herring.c
@@ -12,6 +12,14 @@
#include <linux/types.h>
#include <linux/init.h>
#include <linux/serial_core.h>
+#include <linux/gpio.h>
+#include <linux/i2c.h>
+#include <linux/i2c-gpio.h>
+#include <linux/regulator/max8998.h>
+#include <linux/i2c/qt602240_ts.h>
+#include <linux/delay.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_gpio.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -20,11 +28,43 @@
#include <mach/map.h>
#include <mach/regs-clock.h>
+#include <mach/gpio.h>
+#include <mach/gpio-herring.h>
#include <plat/regs-serial.h>
#include <plat/s5pv210.h>
#include <plat/devs.h>
#include <plat/cpu.h>
+#include <plat/fb.h>
+#include <plat/iic.h>
+
+#include <plat/gpio-cfg.h>
+
+struct class *sec_class;
+EXPORT_SYMBOL(sec_class);
+
+struct device *switch_dev;
+EXPORT_SYMBOL(switch_dev);
+
+void (*sec_set_param_value)(int idx, void *value);
+EXPORT_SYMBOL(sec_set_param_value);
+
+void (*sec_get_param_value)(int idx, void *value);
+EXPORT_SYMBOL(sec_get_param_value);
+
+static void jupiter_switch_init(void)
+{
+ sec_class = class_create(THIS_MODULE, "sec");
+
+ if (IS_ERR(sec_class))
+ pr_err("Failed to create class(sec)!\n");
+
+ switch_dev = device_create(sec_class, NULL, 0, NULL, "switch");
+
+ if (IS_ERR(switch_dev))
+ pr_err("Failed to create device(switch)!\n");
+
+};
/* Following are default values for UCON, ULCON and UFCON UART registers */
#define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
@@ -40,6 +80,8 @@
S5PV210_UFCON_TXTRIG4 | \
S5PV210_UFCON_RXTRIG4)
+extern void s5pv210_reserve_bootmem(void);
+
static struct s3c2410_uartcfg herring_uartcfgs[] __initdata = {
[0] = {
.hwport = 0,
@@ -71,22 +113,2722 @@ static struct s3c2410_uartcfg herring_uartcfgs[] __initdata = {
},
};
+#if defined(CONFIG_TOUCHSCREEN_QT602240)
+static struct platform_device s3c_device_qtts = {
+ .name = "qt602240-ts",
+ .id = -1,
+};
+#endif
+
+/* PMIC */
+static struct regulator_consumer_supply dcdc1_consumers[] = {
+ {
+ .supply = "vddarm",
+ },
+};
+
+static struct regulator_init_data max8998_dcdc1_data = {
+ .constraints = {
+ .name = "VCC_ARM",
+ .min_uV = 750000,
+ .max_uV = 1500000,
+ .always_on = 1,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
+ },
+ .num_consumer_supplies = ARRAY_SIZE(dcdc1_consumers),
+ .consumer_supplies = dcdc1_consumers,
+};
+
+static struct regulator_consumer_supply dcdc2_consumers[] = {
+ {
+ .supply = "vddint",
+ },
+};
+
+static struct regulator_init_data max8998_dcdc2_data = {
+ .constraints = {
+ .name = "VCC_INTERNAL",
+ .min_uV = 750000,
+ .max_uV = 1500000,
+ .always_on = 1,
+// .apply_uV = 1,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
+ },
+ .num_consumer_supplies = ARRAY_SIZE(dcdc2_consumers),
+ .consumer_supplies = dcdc2_consumers,
+};
+static struct regulator_init_data max8998_ldo4_data = {
+ .constraints = {
+ .name = "VCC_DAC",
+ .min_uV = 3300000,
+ .max_uV = 3300000,
+ .always_on = 1,
+ .apply_uV = 1,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
+ },
+};
+
+
+
+
+static struct regulator_init_data max8998_ldo7_data = {
+ .constraints = {
+ .name = "VCC_LCD",
+ .min_uV = 1600000,
+ .max_uV = 3600000,
+ .always_on = 1,
+ //.apply_uV = 1,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
+ },
+};
+
+static struct regulator_init_data max8998_ldo17_data = {
+ .constraints = {
+ .name = "PM_LVDS_VDD",
+ .min_uV = 1600000,
+ .max_uV = 3600000,
+ .always_on = 1,
+ //.apply_uV = 1,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
+ },
+};
+static struct max8998_subdev_data universal_regulators[] = {
+ { MAX8998_DCDC1, &max8998_dcdc1_data },
+ { MAX8998_DCDC2, &max8998_dcdc2_data },
+// { MAX8998_DCDC4, &max8998_dcdc4_data },
+ { MAX8998_LDO4, &max8998_ldo4_data },
+// { MAX8998_LDO11, &max8998_ldo11_data },
+// { MAX8998_LDO12, &max8998_ldo12_data },
+// { MAX8998_LDO13, &max8998_ldo13_data },
+// { MAX8998_LDO14, &max8998_ldo14_data },
+// { MAX8998_LDO15, &max8998_ldo15_data },
+ { MAX8998_LDO7, &max8998_ldo7_data },
+ { MAX8998_LDO17, &max8998_ldo17_data },
+};
+
+static struct max8998_platform_data max8998_platform_data = {
+ .num_regulators = ARRAY_SIZE(universal_regulators),
+ .regulators = universal_regulators,
+};
+
+#if 0
+/* I2C2 */
+static struct i2c_board_info i2c_devs2[] __initdata = {
+ {
+ /* The address is 0xCC used since SRAD = 0 */
+ I2C_BOARD_INFO("max8998", (0xCC >> 1)),
+ .platform_data = &max8998_platform_data,
+ },
+};
+#endif
+struct platform_device sec_device_dpram = {
+ .name = "dpram-device",
+ .id = -1,
+};
+struct platform_device s3c_device_8998consumer = {
+ .name = "max8998-consumer",
+ .id = 0,
+ .dev = { .platform_data = &max8998_platform_data },
+};
+
+
+static void tl2796_cfg_gpio(struct platform_device *pdev)
+{
+ int i;
+
+
+ /* Temporarry code for SLSI boot loader */
+ //max8998_ldo_set_voltage_direct(MAX8998_LDO7,1800000, 1800000);
+ //max8998_ldo_set_voltage_direct(MAX8998_LDO17,3000000,3000000);
+
+ for (i = 0; i < 8; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF0(i), S3C_GPIO_SFN(2));
+ s3c_gpio_setpull(S5PV210_GPF0(i), S3C_GPIO_PULL_NONE);
+ }
+
+ for (i = 0; i < 8; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF1(i), S3C_GPIO_SFN(2));
+ s3c_gpio_setpull(S5PV210_GPF1(i), S3C_GPIO_PULL_NONE);
+ }
+
+ for (i = 0; i < 8; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF2(i), S3C_GPIO_SFN(2));
+ s3c_gpio_setpull(S5PV210_GPF2(i), S3C_GPIO_PULL_NONE);
+ }
+
+ for (i = 0; i < 4; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF3(i), S3C_GPIO_SFN(2));
+ s3c_gpio_setpull(S5PV210_GPF3(i), S3C_GPIO_PULL_NONE);
+ }
+
+ /* mDNIe SEL: why we shall write 0x2 ? */
+#ifdef CONFIG_FB_S3C_MDNIE
+ writel(0x1, S5P_MDNIE_SEL);
+#else
+ writel(0x2, S5P_MDNIE_SEL);
+#endif
+#if 0
+ /* drive strength to max */
+ writel(0xffffffff, S5PC_VA_GPIO + 0x12c);
+ writel(0xffffffff, S5PC_VA_GPIO + 0x14c);
+ writel(0xffffffff, S5PC_VA_GPIO + 0x16c);
+ writel(0x000000ff, S5PC_VA_GPIO + 0x18c);
+#endif
+
+ /* DISPLAY_CS */
+ s3c_gpio_cfgpin(S5PV210_MP01(1), S3C_GPIO_SFN(1));
+ /* DISPLAY_CLK */
+ s3c_gpio_cfgpin(S5PV210_MP04(1), S3C_GPIO_SFN(1));
+ /* DISPLAY_SO */
+ s3c_gpio_cfgpin(S5PV210_MP04(2), S3C_GPIO_SFN(1));
+ /* DISPLAY_SI */
+ s3c_gpio_cfgpin(S5PV210_MP04(3), S3C_GPIO_SFN(1));
+
+ /* DISPLAY_CS */
+ s3c_gpio_setpull(S5PV210_MP01(1), S3C_GPIO_PULL_NONE);
+ /* DISPLAY_CLK */
+ s3c_gpio_setpull(S5PV210_MP04(1), S3C_GPIO_PULL_NONE);
+ /* DISPLAY_SO */
+ s3c_gpio_setpull(S5PV210_MP04(2), S3C_GPIO_PULL_NONE);
+ /* DISPLAY_SI */
+ s3c_gpio_setpull(S5PV210_MP04(3), S3C_GPIO_PULL_NONE);
+
+ /*KGVS : configuring GPJ2(4) as FM interrupt */
+ //s3c_gpio_cfgpin(S5PV210_GPJ2(4), S5PV210_GPJ2_4_GPIO_INT20_4);
+
+}
+
+
+void lcd_cfg_gpio_early_suspend(void)
+{
+
+ int i;
+ printk("[%s]\n", __func__);
+
+ for (i = 0; i < 8; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF0(i), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPF0(i), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPF0(i), 0);
+ }
+
+ for (i = 0; i < 8; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF1(i), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPF1(i), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPF1(i), 0);
+ }
+
+ for (i = 0; i < 8; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF2(i), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPF2(i), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPF2(i), 0);
+ }
+
+ for (i = 0; i < 4; i++) {
+ s3c_gpio_cfgpin(S5PV210_GPF3(i), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPF3(i), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPF3(i), 0);
+ }
+ // drive strength to min
+ writel(0x00000000, S5P_VA_GPIO + 0x12c); // GPF0DRV
+ writel(0x00000000, S5P_VA_GPIO + 0x14c); // GPF1DRV
+ writel(0x00000000, S5P_VA_GPIO + 0x16c); // GPF2DRV
+ writel(0x00000000, S5P_VA_GPIO + 0x18c); // GPF3DRV
+
+ // OLED_DET
+ s3c_gpio_cfgpin(GPIO_OLED_DET, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_OLED_DET, S3C_GPIO_PULL_NONE);
+ gpio_set_value(GPIO_OLED_DET, 0);
+
+ // LCD_RST
+ s3c_gpio_cfgpin(GPIO_MLCD_RST, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_MLCD_RST, S3C_GPIO_PULL_NONE);
+ gpio_set_value(GPIO_MLCD_RST, 0);
+
+ /* DISPLAY_CS */
+ s3c_gpio_cfgpin(GPIO_DISPLAY_CS, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_DISPLAY_CS, S3C_GPIO_PULL_NONE);
+ gpio_set_value(GPIO_DISPLAY_CS, 0);
+
+ /* DISPLAY_CLK */
+ s3c_gpio_cfgpin(GPIO_DISPLAY_CLK, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_DISPLAY_CLK, S3C_GPIO_PULL_NONE);
+ gpio_set_value(GPIO_DISPLAY_CLK, 0);
+ /* DISPLAY_SO */
+ //s3c_gpio_cfgpin(S5PV210_MP04(2), S3C_GPIO_INPUT);
+ //s3c_gpio_setpull(S5PV210_MP04(2), S3C_GPIO_PULL_DOWN);
+ /* DISPLAY_SI */
+ s3c_gpio_cfgpin(GPIO_DISPLAY_SI, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_DISPLAY_SI, S3C_GPIO_PULL_NONE);
+ gpio_set_value(GPIO_DISPLAY_SI, 0);
+
+ // OLED_ID
+ s3c_gpio_cfgpin(GPIO_OLED_ID, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(GPIO_OLED_ID, S3C_GPIO_PULL_DOWN);
+// gpio_set_value(GPIO_OLED_ID, 0);
+
+ // DIC_ID
+ s3c_gpio_cfgpin(GPIO_DIC_ID, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(GPIO_DIC_ID, S3C_GPIO_PULL_DOWN);
+// gpio_set_value(GPIO_DIC_ID, 0);
+
+}
+EXPORT_SYMBOL(lcd_cfg_gpio_early_suspend);
+
+void lcd_cfg_gpio_late_resume(void)
+{
+ printk("[%s]\n", __func__);
+
+ // OLED_DET
+ s3c_gpio_cfgpin(GPIO_OLED_DET, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(GPIO_OLED_DET, S3C_GPIO_PULL_NONE);
+ // OLED_ID
+ s3c_gpio_cfgpin(GPIO_OLED_ID, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_OLED_ID, S3C_GPIO_PULL_NONE);
+// gpio_set_value(GPIO_OLED_ID, 0);
+ // DIC_ID
+ s3c_gpio_cfgpin(GPIO_DIC_ID, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_DIC_ID, S3C_GPIO_PULL_NONE);
+// gpio_set_value(GPIO_DIC_ID, 0);
+}
+EXPORT_SYMBOL(lcd_cfg_gpio_late_resume);
+
+
+
+
+static int tl2796_reset_lcd(struct platform_device *pdev)
+{
+ int err;
+
+// Ver1 & Ver2 universal board kyoungheon
+ err = gpio_request(S5PV210_MP05(5), "MLCD_RST");
+ if (err) {
+ printk(KERN_ERR "failed to request MP0(5) for "
+ "lcd reset control\n");
+ return err;
+ }
+
+ gpio_direction_output(S5PV210_MP05(5), 1);
+ msleep(10);
+
+ gpio_set_value(S5PV210_MP05(5), 0);
+ msleep(10);
+
+ gpio_set_value(S5PV210_MP05(5), 1);
+ msleep(10);
+
+ gpio_free(S5PV210_MP05(5));
+
+ return 0;
+}
+
+static int tl2796_backlight_on(struct platform_device *pdev)
+{
+
+}
+
+static struct s3c_platform_fb tl2796_data __initdata = {
+ .hw_ver = 0x62,
+ .clk_name = "sclk_fimd",
+ .nr_wins = 5,
+ .default_win = CONFIG_FB_S3C_DEFAULT_WINDOW,
+ .swap = FB_SWAP_HWORD | FB_SWAP_WORD,
+
+ .cfg_gpio = tl2796_cfg_gpio,
+ .backlight_on = tl2796_backlight_on,
+ .reset_lcd = tl2796_reset_lcd,
+};
+
+#define LCD_BUS_NUM 3
+#define DISPLAY_CS S5PV210_MP01(1)
+#define SUB_DISPLAY_CS S5PV210_MP01(2)
+#define DISPLAY_CLK S5PV210_MP04(1)
+#define DISPLAY_SI S5PV210_MP04(3)
+
+
+static struct spi_board_info spi_board_info[] __initdata = {
+ {
+ .modalias = "tl2796",
+ .platform_data = NULL,
+ .max_speed_hz = 1200000,
+ .bus_num = LCD_BUS_NUM,
+ .chip_select = 0,
+ .mode = SPI_MODE_3,
+ .controller_data = (void *)DISPLAY_CS,
+ },
+};
+
+static struct spi_gpio_platform_data tl2796_spi_gpio_data = {
+ .sck = DISPLAY_CLK,
+ .mosi = DISPLAY_SI,
+ .miso = 0,
+ .num_chipselect = 2,
+};
+
+static struct platform_device s3c_device_spi_gpio = {
+ .name = "spi_gpio",
+ .id = LCD_BUS_NUM,
+ .dev = {
+ .parent = &s3c_device_fb.dev,
+ .platform_data = &tl2796_spi_gpio_data,
+ },
+};
+
+
+
+static struct i2c_gpio_platform_data herring_i2c4_platdata = {
+ .sda_pin = GPIO_AP_SDA_18V,
+ .scl_pin = GPIO_AP_SCL_18V,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c4_device = {
+ .name = "i2c-gpio",
+ .id = 4,
+ .dev.platform_data = &herring_i2c4_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c5_platdata = {
+ .sda_pin = GPIO_AP_SDA_28V,
+ .scl_pin = GPIO_AP_SCL_28V,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c5_device = {
+ .name = "i2c-gpio",
+ .id = 5,
+ .dev.platform_data = &herring_i2c5_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c6_platdata = {
+ .sda_pin = GPIO_AP_PMIC_SDA,
+ .scl_pin = GPIO_AP_PMIC_SCL,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c6_device = {
+ .name = "i2c-gpio",
+ .id = 6,
+ .dev.platform_data = &herring_i2c6_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c7_platdata = {
+ .sda_pin = GPIO_USB_SDA_28V,
+ .scl_pin = GPIO_USB_SCL_28V,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c7_device = {
+ .name = "i2c-gpio",
+ .id = 7,
+ .dev.platform_data = &herring_i2c7_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c8_platdata = {
+ .sda_pin = GPIO_FM_SDA_28V,
+ .scl_pin = GPIO_FM_SCL_28V,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c8_device = {
+ .name = "i2c-gpio",
+ .id = 8,
+ .dev.platform_data = &herring_i2c8_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c9_platdata = {
+ .sda_pin = FUEL_SDA_18V,
+ .scl_pin = FUEL_SCL_18V,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c9_device = {
+ .name = "i2c-gpio",
+ .id = 9,
+ .dev.platform_data = &herring_i2c9_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c10_platdata = {
+ .sda_pin = _3_TOUCH_SDA_28V,
+ .scl_pin = _3_TOUCH_SCL_28V,
+ .udelay = 0, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c10_device = {
+ .name = "i2c-gpio",
+ .id = 10,
+ .dev.platform_data = &herring_i2c10_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c11_platdata = {
+ .sda_pin = GPIO_ALS_SDA_28V,
+ .scl_pin = GPIO_ALS_SCL_28V,
+ .udelay = 2, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c11_device = {
+ .name = "i2c-gpio",
+ .id = 11,
+ .dev.platform_data = &herring_i2c11_platdata,
+};
+
+static struct i2c_gpio_platform_data herring_i2c12_platdata = {
+ .sda_pin = GPIO_MSENSE_SDA_28V,
+ .scl_pin = GPIO_MSENSE_SCL_28V,
+ .udelay = 0, /* 250KHz */
+ .sda_is_open_drain = 0,
+ .scl_is_open_drain = 0,
+ .scl_is_output_only = 0,
+};
+
+static struct platform_device herring_i2c12_device = {
+ .name = "i2c-gpio",
+ .id = 12,
+ .dev.platform_data = &herring_i2c12_platdata,
+};
+
+
+#ifdef CONFIG_S5PV210_ADCTS
+static struct s3c_adcts_plat_info s3c_adcts_cfgs __initdata = {
+ .channel = {
+ { /* 0 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 1 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 2 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 3 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 4 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 5 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 6 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },{ /* 7 */
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },
+ },
+};
+#endif
+
+#ifdef CONFIG_TOUCHSCREEN_S3C
+static struct s3c_ts_mach_info s3c_ts_platform __initdata = {
+ .adcts = {
+ .delay = 0xFF,
+ .presc = 49,
+ .resol = S3C_ADCCON_RESSEL_12BIT,
+ },
+ .sampling_time = 18,
+ .sampling_interval_ms = 20,
+ .x_coor_min = 180,
+ .x_coor_max = 4000,
+ .x_coor_fuzz = 32,
+ .y_coor_min = 300,
+ .y_coor_max = 3900,
+ .y_coor_fuzz = 32,
+ .use_tscal = false,
+ .tscal = {0, 0, 0, 0, 0, 0, 0},
+};
+#endif
+
+#if 0
+#ifndef CONFIG_S5PV210_ADCTS
+static struct s3c_adc_mach_info s3c_adc_platform __initdata = {
+ /* s5pc110 support 12-bit resolution */
+ .delay = 10000,
+ .presc = 49,
+ .resolution = 12,
+};
+#endif
+#endif
+#ifdef CONFIG_S5P_ADC
+static struct s3c_adc_mach_info s3c_adc_platform __initdata = {
+ /* s5pc110 support 12-bit resolution */
+ .delay = 10000,
+ .presc = 65,
+ .resolution = 12,
+};
+#endif
+
+#ifdef CONFIG_VIDEO_FIMC
+/*
+ * Guide for Camera Configuration for Aries
+*/
+
+#ifdef CONFIG_VIDEO_CE147
+/*
+ * Guide for Camera Configuration for Jupiter board
+ * ITU CAM CH A: CE147
+*/
+static void ce147_ldo_en(bool onoff)
+{
+ int err;
+
+ //For Emul Rev0.1
+ // Because B4, B5 do not use this GPIO, this GPIO is enabled in all HW version
+ /* CAM_IO_EN - GPB(7) */
+ err = gpio_request(GPIO_GPB7, "GPB7");
+ if(err) {
+ printk(KERN_ERR "failed to request GPB7 for camera control\n");
+ return;
+ }
+
+ if(onoff == TRUE) { //power on
+ // Turn CAM_ISP_1.2V on
+ Set_MAX8998_PM_OUTPUT_Voltage(BUCK4, VCC_1p300);
+
+ Set_MAX8998_PM_REG(EN4, 1);
+
+ mdelay(1);
+
+ // Turn CAM_AF_2.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO11, VCC_2p800);
+
+ Set_MAX8998_PM_REG(ELDO11, 1);
+
+ // Turn CAM_SENSOR_1.2V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO12, VCC_1p200);
+
+ Set_MAX8998_PM_REG(ELDO12, 1);
+
+ // Turn CAM_SENSOR_A2.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO13, VCC_2p800);
+
+ Set_MAX8998_PM_REG(ELDO13, 1);
+
+ // Turn CAM_ISP_1.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO14, VCC_1p800);
+
+ Set_MAX8998_PM_REG(ELDO14, 1);
+
+ // Turn CAM_ISP_2.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO15, VCC_2p800);
+
+ Set_MAX8998_PM_REG(ELDO15, 1);
+
+ // Turn CAM_SENSOR_1.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO16, VCC_1p800);
+
+ Set_MAX8998_PM_REG(ELDO16, 1);
+
+ // Turn CAM_ISP_SYS_2.8V on
+ gpio_direction_output(GPIO_GPB7, 0);
+
+ gpio_set_value(GPIO_GPB7, 1);
+ }
+
+ else { // power off
+ // Turn CAM_ISP_SYS_2.8V off
+ gpio_direction_output(GPIO_GPB7, 1);
+
+ gpio_set_value(GPIO_GPB7, 0);
+
+ // Turn CAM_AF_2.8V off
+ Set_MAX8998_PM_REG(ELDO11, 0);
+
+ // Turn CAM_SENSOR_1.2V off
+ Set_MAX8998_PM_REG(ELDO12, 0);
+
+ // Turn CAM_SENSOR_A2.8V off
+ Set_MAX8998_PM_REG(ELDO13, 0);
+
+ // Turn CAM_ISP_1.8V off
+ Set_MAX8998_PM_REG(ELDO14, 0);
+
+ // Turn CAM_ISP_2.8V off
+ Set_MAX8998_PM_REG(ELDO15, 0);
+
+ // Turn CAM_SENSOR_1.8V off
+ Set_MAX8998_PM_REG(ELDO16, 0);
+
+ mdelay(1);
+
+ // Turn CAM_ISP_1.2V off
+ Set_MAX8998_PM_REG(EN4, 0);
+ }
+
+ gpio_free(GPIO_GPB7);
+}
+
+static int ce147_power_on(void)
+{
+ int err;
+
+ /* CAM_MEGA_EN - GPJ0(6) */
+ err = gpio_request(GPIO_CAM_MEGA_EN, "GPJ0");
+ if(err) {
+ printk(KERN_ERR "failed to request GPJ0 for camera control\n");
+ return err;
+ }
+
+ /* CAM_MEGA_nRST - GPJ1(5) */
+ err = gpio_request(GPIO_CAM_MEGA_nRST, "GPJ1");
+ if(err) {
+ printk(KERN_ERR "failed to request GPJ1 for camera control\n");
+ return err;
+ }
+
+ /* CAM_VGA_nSTBY - GPB(0) */
+ err = gpio_request(GPIO_CAM_VGA_nSTBY, "GPB0");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB0 for camera control\n");
+ return err;
+ }
+
+ /* CAM_VGA_nRST - GPB(2) */
+ err = gpio_request(GPIO_CAM_VGA_nRST, "GPB2");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB2 for camera control\n");
+ return err;
+ }
+
+ ce147_ldo_en(TRUE);
+
+ mdelay(1);
+
+ // CAM_VGA_nSTBY HIGH
+ gpio_direction_output(GPIO_CAM_VGA_nSTBY, 0);
+
+ gpio_set_value(GPIO_CAM_VGA_nSTBY, 1);
+
+ mdelay(1);
+
+ // Mclk enable
+ s3c_gpio_cfgpin(GPIO_CAM_MCLK, S5PV210_GPE1_3_CAM_A_CLKOUT);
+
+ mdelay(1);
+
+ // CAM_VGA_nRST HIGH
+ gpio_direction_output(GPIO_CAM_VGA_nRST, 0);
+
+ gpio_set_value(GPIO_CAM_VGA_nRST, 1);
+
+ mdelay(1);
+
+ // CAM_VGA_nSTBY LOW
+ gpio_direction_output(GPIO_CAM_VGA_nSTBY, 1);
+
+ gpio_set_value(GPIO_CAM_VGA_nSTBY, 0);
+
+ mdelay(1);
+
+ // CAM_MEGA_EN HIGH
+ gpio_direction_output(GPIO_CAM_MEGA_EN, 0);
+
+ gpio_set_value(GPIO_CAM_MEGA_EN, 1);
+
+ mdelay(1);
+
+ // CAM_MEGA_nRST HIGH
+ gpio_direction_output(GPIO_CAM_MEGA_nRST, 0);
+
+ gpio_set_value(GPIO_CAM_MEGA_nRST, 1);
+
+ gpio_free(GPIO_CAM_MEGA_EN);
+
+ gpio_free(GPIO_CAM_MEGA_nRST);
+
+ gpio_free(GPIO_CAM_VGA_nSTBY);
+
+ gpio_free(GPIO_CAM_VGA_nRST);
+
+ return 0;
+}
+
+static int ce147_power_off(void)
+{
+ int err;
+
+ /* CAM_MEGA_EN - GPJ0(6) */
+ err = gpio_request(GPIO_CAM_MEGA_EN, "GPJ0");
+ if(err) {
+ printk(KERN_ERR "failed to request GPJ0 for camera control\n");
+ return err;
+ }
+
+ /* CAM_MEGA_nRST - GPJ1(5) */
+ err = gpio_request(GPIO_CAM_MEGA_nRST, "GPJ1");
+ if(err) {
+ printk(KERN_ERR "failed to request GPJ1 for camera control\n");
+ return err;
+ }
+
+ /* CAM_VGA_nRST - GPB(2) */
+ err = gpio_request(GPIO_CAM_VGA_nRST, "GPB2");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB2 for camera control\n");
+ return err;
+ }
+
+ // CAM_VGA_nRST LOW
+ gpio_direction_output(GPIO_CAM_VGA_nRST, 1);
+ gpio_set_value(GPIO_CAM_VGA_nRST, 0);
+ mdelay(1);
+
+ // CAM_MEGA_nRST - GPJ1(5) LOW
+ gpio_direction_output(GPIO_CAM_MEGA_nRST, 1);
+ gpio_set_value(GPIO_CAM_MEGA_nRST, 0);
+ mdelay(1);
+
+ // Mclk disable
+ s3c_gpio_cfgpin(GPIO_CAM_MCLK, 0);
+ mdelay(1);
+
+ // CAM_MEGA_EN - GPJ0(6) LOW
+ gpio_direction_output(GPIO_CAM_MEGA_EN, 1);
+ gpio_set_value(GPIO_CAM_MEGA_EN, 0);
+ mdelay(1);
+
+ ce147_ldo_en(FALSE);
+ mdelay(1);
+
+ gpio_free(GPIO_CAM_MEGA_EN);
+ gpio_free(GPIO_CAM_MEGA_nRST);
+ gpio_free(GPIO_CAM_VGA_nRST);
+
+ return 0;
+}
+
+static int ce147_power_en(int onoff)
+{
+ if(onoff == 1) {
+ ce147_power_on();
+ } else {
+ ce147_power_off();
+ s3c_i2c0_force_stop();
+ }
+
+ return 0;
+}
+
+/* External camera module setting */
+static struct ce147_platform_data ce147_plat = {
+ .default_width = 640,
+ .default_height = 480,
+ .pixelformat = V4L2_PIX_FMT_UYVY,
+ .freq = 24000000,
+ .is_mipi = 0,
+};
+
+static struct i2c_board_info ce147_i2c_info = {
+ I2C_BOARD_INFO("CE147", 0x78>>1),
+ .platform_data = &ce147_plat,
+};
+
+static struct s3c_platform_camera ce147 = {
+ .id = CAMERA_PAR_A,
+ .type = CAM_TYPE_ITU,
+ .fmt = ITU_601_YCBCR422_8BIT,
+ .order422 = CAM_ORDER422_8BIT_CBYCRY,
+ .i2c_busnum = 0,
+ .info = &ce147_i2c_info,
+ .pixelformat = V4L2_PIX_FMT_UYVY,
+ .srclk_name = "xusbxti",
+ .clk_name = "sclk_cam0",
+ .clk_rate = 24000000,
+ .line_length = 1920,
+ .width = 640,
+ .height = 480,
+ .window = {
+ .left = 0,
+ .top = 0,
+ .width = 640,
+ .height = 480,
+ },
+
+ /* Polarity */
+ .inv_pclk = 0,
+ .inv_vsync = 1,
+ .inv_href = 0,
+ .inv_hsync = 0,
+
+ .initialized = 0,
+ .cam_power = ce147_power_en,
+};
+#endif
+
+/* External camera module setting */
+#ifdef CONFIG_VIDEO_S5KA3DFX
+
+static int s5ka3dfx_power_on(void)
+{
+ int err;
+
+ /* CAM_VGA_nSTBY - GPB(0) */
+ err = gpio_request(GPIO_CAM_VGA_nSTBY, "GPB0");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB0 for camera control\n");
+ return err;
+ }
+
+ /* CAM_VGA_nRST - GPB(2) */
+ err = gpio_request(GPIO_CAM_VGA_nRST, "GPB2");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB2 for camera control\n");
+ return err;
+ }
+
+ /* CAM_IO_EN - GPB(7) */
+ err = gpio_request(GPIO_GPB7, "GPB7");
+ if(err) {
+ printk(KERN_ERR "failed to request GPB7 for camera control\n");
+ return err;
+ }
+
+ // Turn CAM_ISP_SYS_2.8V on
+ gpio_direction_output(GPIO_GPB7, 0);
+ gpio_set_value(GPIO_GPB7, 1);
+
+ mdelay(1);
+
+ // Turn CAM_SENSOR_A2.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO13, VCC_2p800);
+ Set_MAX8998_PM_REG(ELDO13, 1);
+
+ mdelay(1);
+
+ // Turn CAM_ISP_HOST_2.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO15, VCC_2p800);
+ Set_MAX8998_PM_REG(ELDO15, 1);
+
+ mdelay(1);
+
+ // Turn CAM_ISP_RAM_1.8V on
+ Set_MAX8998_PM_OUTPUT_Voltage(LDO14, VCC_1p800);
+ Set_MAX8998_PM_REG(ELDO14, 1);
+
+ mdelay(1);
+
+ gpio_free(GPIO_GPB7);
+
+ mdelay(1);
+
+ // CAM_VGA_nSTBY HIGH
+ gpio_direction_output(GPIO_CAM_VGA_nSTBY, 0);
+ gpio_set_value(GPIO_CAM_VGA_nSTBY, 1);
+
+ mdelay(1);
+
+ // Mclk enable
+ s3c_gpio_cfgpin(GPIO_CAM_MCLK, S5PV210_GPE1_3_CAM_A_CLKOUT);
+
+ mdelay(1);
+
+ // CAM_VGA_nRST HIGH
+ gpio_direction_output(GPIO_CAM_VGA_nRST, 0);
+ gpio_set_value(GPIO_CAM_VGA_nRST, 1);
+
+ mdelay(4);
+
+ gpio_free(GPIO_CAM_VGA_nSTBY);
+ gpio_free(GPIO_CAM_VGA_nRST);
+
+ return 0;
+}
+
+static int s5ka3dfx_power_off(void)
+{
+ int err;
+
+ printk(KERN_ERR "s5ka3dfx_power_off\n");
+
+ /* CAM_VGA_nSTBY - GPB(0) */
+ err = gpio_request(GPIO_CAM_VGA_nSTBY, "GPB0");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB for camera control\n");
+ return err;
+ }
+
+ /* CAM_VGA_nRST - GPB(2) */
+ err = gpio_request(GPIO_CAM_VGA_nRST, "GPB2");
+ if (err) {
+ printk(KERN_ERR "failed to request GPB for camera control\n");
+ return err;
+ }
+
+
+ // CAM_VGA_nRST LOW
+ gpio_direction_output(GPIO_CAM_VGA_nRST, 1);
+ gpio_set_value(GPIO_CAM_VGA_nRST, 0);
+
+ mdelay(1);
+
+ // Mclk disable
+ s3c_gpio_cfgpin(GPIO_CAM_MCLK, 0);
+
+ mdelay(1);
+
+ // CAM_VGA_nSTBY LOW
+ gpio_direction_output(GPIO_CAM_VGA_nSTBY, 1);
+ gpio_set_value(GPIO_CAM_VGA_nSTBY, 0);
+
+ mdelay(1);
+
+ /* CAM_IO_EN - GPB(7) */
+ err = gpio_request(GPIO_GPB7, "GPB7");
+ if(err) {
+ printk(KERN_ERR "failed to request GPB for camera control\n");
+ return err;
+ }
+
+ // Turn CAM_ISP_HOST_2.8V off
+ Set_MAX8998_PM_REG(ELDO15, 0);
+
+ mdelay(1);
+
+ // Turn CAM_SENSOR_A2.8V off
+ Set_MAX8998_PM_REG(ELDO13, 0);
+
+ // Turn CAM_ISP_RAM_1.8V off
+ Set_MAX8998_PM_REG(ELDO14, 0);
+
+ // Turn CAM_ISP_SYS_2.8V off
+ gpio_direction_output(GPIO_GPB7, 1);
+ gpio_set_value(GPIO_GPB7, 0);
+
+ gpio_free(GPIO_GPB7);
+
+ gpio_free(GPIO_CAM_VGA_nSTBY);
+ gpio_free(GPIO_CAM_VGA_nRST);
+
+ return 0;
+}
+
+static int s5ka3dfx_power_en(int onoff)
+{
+ if(onoff){
+ s5ka3dfx_power_on();
+ } else {
+ s5ka3dfx_power_off();
+ s3c_i2c0_force_stop();
+ }
+
+ return 0;
+}
+
+static struct s5ka3dfx_platform_data s5ka3dfx_plat = {
+ .default_width = 640,
+ .default_height = 480,
+ .pixelformat = V4L2_PIX_FMT_UYVY,
+ .freq = 24000000,
+ .is_mipi = 0,
+};
+
+static struct i2c_board_info s5ka3dfx_i2c_info = {
+ I2C_BOARD_INFO("S5KA3DFX", 0xc4>>1),
+ .platform_data = &s5ka3dfx_plat,
+};
+
+static struct s3c_platform_camera s5ka3dfx = {
+ .id = CAMERA_PAR_A,
+ .type = CAM_TYPE_ITU,
+ .fmt = ITU_601_YCBCR422_8BIT,
+ .order422 = CAM_ORDER422_8BIT_CBYCRY,
+ .i2c_busnum = 0,
+ .info = &s5ka3dfx_i2c_info,
+ .pixelformat = V4L2_PIX_FMT_UYVY,
+ .srclk_name = "xusbxti",
+ .clk_name = "sclk_cam0",
+ .clk_rate = 24000000,
+ .line_length = 480,
+ .width = 640,
+ .height = 480,
+ .window = {
+ .left = 0,
+ .top = 0,
+ .width = 640,
+ .height = 480,
+ },
+
+ /* Polarity */
+ .inv_pclk = 0,
+ .inv_vsync = 1,
+ .inv_href = 0,
+ .inv_hsync = 0,
+
+ .initialized = 0,
+ .cam_power = s5ka3dfx_power_en,
+};
+#endif
+
+
+/* Interface setting */
+static struct s3c_platform_fimc fimc_plat = {
+ .srclk_name = "mout_mpll",
+ .clk_name = "sclk_fimc_lclk",
+ .clk_rate = 166750000,
+ .default_cam = CAMERA_PAR_A,
+ .camera = {
+#ifdef CONFIG_VIDEO_CE147
+ &ce147,
+#endif
+#ifdef CONFIG_VIDEO_S5KA3DFX
+ &s5ka3dfx,
+#endif
+ },
+ .hw_ver = 0x43,
+};
+#endif
+
+#if defined(CONFIG_HAVE_PWM)
+static struct platform_pwm_backlight_data smdk_backlight_data = {
+ .pwm_id = 3,
+ .max_brightness = 255,
+ .dft_brightness = 255,
+ .pwm_period_ns = 78770,
+};
+
+static struct platform_device smdk_backlight_device = {
+ .name = "pwm-backlight",
+ .id = -1,
+ .dev = {
+ .parent = &s3c_device_timer[3].dev,
+ .platform_data = &smdk_backlight_data,
+ },
+};
+static void __init smdk_backlight_register(void)
+{
+ int ret = platform_device_register(&smdk_backlight_device);
+ if (ret)
+ printk(KERN_ERR "smdk: failed to register backlight device: %d\n", ret);
+}
+#endif
+
+#if defined(CONFIG_BLK_DEV_IDE_S3C)
+static struct s3c_ide_platdata smdkv210_ide_pdata __initdata = {
+ .setup_gpio = s3c_ide_setup_gpio,
+};
+#endif
+
+/* I2C0 */
+static struct i2c_board_info i2c_devs0[] __initdata = {
+};
+
+static struct i2c_board_info i2c_devs4[] __initdata = {
+#ifdef CONFIG_SND_SOC_WM8580
+ {
+ I2C_BOARD_INFO("wm8580", 0x1b),
+ },
+#endif
+#ifdef CONFIG_SND_SOC_WM8994
+ {
+ I2C_BOARD_INFO("wm8994", (0x34>>1)),
+ },
+#endif
+};
+
+
+/* I2C1 */
+static struct i2c_board_info i2c_devs1[] __initdata = {
+};
+
+/* i2c board & device info. */
+static struct qt602240_platform_data qt602240_p1_platform_data = {
+ .x_line = 19,
+ .y_line = 11,
+ .x_size = 1024,
+ .y_size = 1024,
+ .blen = 0x41,
+ .threshold = 0x30,
+ .orient = QT602240_VERTICAL_FLIP,
+};
+
+/* I2C2 */
+static struct i2c_board_info i2c_devs2[] __initdata = {
+ {
+ I2C_BOARD_INFO("qt602240_ts", 0x4a),
+ .platform_data = &qt602240_p1_platform_data,
+ },
+};
+
+
+
+/* I2C2 */
+static struct i2c_board_info i2c_devs10[] __initdata = {
+ {
+ I2C_BOARD_INFO("melfas_touchkey", 0x20),
+ // .platform_data = &qt602240_p1_platform_data,
+ },
+};
+
+static struct i2c_board_info i2c_devs7[] __initdata = {
+ {
+ I2C_BOARD_INFO("fsa9480", 0x4A >> 1),
+ },
+};
+
+
+static struct i2c_board_info i2c_devs6[] __initdata = {
+#ifdef CONFIG_REGULATOR_MAX8998
+ {
+ /* The address is 0xCC used since SRAD = 0 */
+ I2C_BOARD_INFO("max8998", (0xCC >> 1)),
+ .platform_data = &max8998_platform_data,
+ },
+ {
+ I2C_BOARD_INFO("rtc_max8998", (0x0D >> 1)),
+ },
+#endif
+};
+
+
+#ifdef CONFIG_DM9000
+static void __init smdkv210_dm9000_set(void)
+{
+ unsigned int tmp;
+
+ tmp = ((0<<28)|(0<<24)|(5<<16)|(0<<12)|(0<<8)|(0<<4)|(0<<0));
+ __raw_writel(tmp, (S5P_SROM_BW+0x18));
+
+ tmp = __raw_readl(S5P_SROM_BW);
+ tmp &= ~(0xf << 20);
+
+#ifdef CONFIG_DM9000_16BIT
+ tmp |= (0x1 << 20);
+#else
+ tmp |= (0x2 << 20);
+#endif
+ __raw_writel(tmp, S5P_SROM_BW);
+
+ tmp = __raw_readl(S5PV210_MP01CON);
+ tmp &= ~(0xf << 20);
+ tmp |= (2 << 20);
+
+ __raw_writel(tmp, S5PV210_MP01CON);
+}
+#endif
+
+#ifdef CONFIG_ANDROID_PMEM
+static struct android_pmem_platform_data pmem_pdata = {
+ .name = "pmem",
+ .no_allocator = 1,
+ .cached = 1,
+ .start = 0, // will be set during proving pmem driver.
+ .size = 0 // will be set during proving pmem driver.
+};
+
+static struct android_pmem_platform_data pmem_gpu1_pdata = {
+ .name = "pmem_gpu1",
+ .no_allocator = 1,
+ .cached = 1,
+ .buffered = 1,
+ .start = 0,
+ .size = 0,
+};
+
+static struct android_pmem_platform_data pmem_adsp_pdata = {
+ .name = "pmem_adsp",
+ .no_allocator = 1,
+ .cached = 1,
+ .buffered = 1,
+ .start = 0,
+ .size = 0,
+};
+
+static struct platform_device pmem_device = {
+ .name = "android_pmem",
+ .id = 0,
+ .dev = { .platform_data = &pmem_pdata },
+};
+
+static struct platform_device pmem_gpu1_device = {
+ .name = "android_pmem",
+ .id = 1,
+ .dev = { .platform_data = &pmem_gpu1_pdata },
+};
+
+static struct platform_device pmem_adsp_device = {
+ .name = "android_pmem",
+ .id = 2,
+ .dev = { .platform_data = &pmem_adsp_pdata },
+};
+
+static void __init android_pmem_set_platdata(void)
+{
+ pmem_pdata.start = (u32)s3c_get_media_memory_bank(S3C_MDEV_PMEM, 0);
+ pmem_pdata.size = (u32)s3c_get_media_memsize_bank(S3C_MDEV_PMEM, 0);
+
+ pmem_gpu1_pdata.start = (u32)s3c_get_media_memory_bank(S3C_MDEV_PMEM_GPU1, 0);
+ pmem_gpu1_pdata.size = (u32)s3c_get_media_memsize_bank(S3C_MDEV_PMEM_GPU1, 0);
+
+ pmem_adsp_pdata.start = (u32)s3c_get_media_memory_bank(S3C_MDEV_PMEM_ADSP, 0);
+ pmem_adsp_pdata.size = (u32)s3c_get_media_memsize_bank(S3C_MDEV_PMEM_ADSP, 0);
+}
+#endif
+struct platform_device sec_device_battery = {
+ .name = "sec-fake-battery",
+ .id = -1,
+};
+
+/*Adding gpio settings during bootup and sleep*/
+
+
+#define S3C_GPIO_SETPIN_ZERO 0
+#define S3C_GPIO_SETPIN_ONE 1
+#define S3C_GPIO_SETPIN_NONE 2 // dont set the data pin.
+
+/*
+ *
+ * GPIO Initialization table. It has the following format
+ * { pin number, pin configuration, pin value, pullup/down config,
+ * driver strength, slew rate, sleep mode pin conf, sleep mode pullup/down config }
+ *
+ * The table can be modified with the appropriate value for each pin.
+ */
+static unsigned int jupiter_gpio_table[][8] = {
+ /* Off part */
+ // GPA0 ~ GPA1 : is done by UART driver early, so not modifying.
+#if 0
+ {S5PV210_GPA0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA0(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ // uart2 rx and tx.. done by uboot. So not modifying
+ //{S5PV210_GPA1(0), 2, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ // S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ //{S5PV210_GPA1(1), 2, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ // S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPA1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+#endif
+ {S5PV210_GPB(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPC0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPC1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPD0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPD1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD1(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPE0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPE1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+#if 0 // trb
+ {S5PV210_GPF0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPF1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF1(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPF2(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF2(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPF3(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF3(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF3(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF3(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+#endif // trb
+ {S5PV210_GPF3(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF3(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPG0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG0(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG0(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPG1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG1(2), S3C_GPIO_OUTPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG1(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG1(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPG2(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG2(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG2(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG2(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG2(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG2(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG2(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPG3(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ /* Alive part */
+ {S5PV210_GPH0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH0(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+
+ {S5PV210_GPH1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH1(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+
+ {S5PV210_GPH2(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH2(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+
+ {S5PV210_GPH3(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+ {S5PV210_GPH3(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, 0, 0},
+
+
+ /* Alive part ending and off part start*/
+ {S5PV210_GPI(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPJ0(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPJ1(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ1(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ1(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ1(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ1(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ1(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPJ2(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ2(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPJ3(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ3(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPJ4(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ4(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ4(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ4(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ4(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ /* memory part */
+ {S5PV210_MP01(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP02(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP02(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP02(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP02(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP03(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP04(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP05(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP06(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP07(0), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(1), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(2), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(3), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(4), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(5), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(6), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(7), S3C_GPIO_INPUT, S3C_GPIO_SETPIN_NONE, S3C_GPIO_PULL_DOWN,
+ S3C_GPIO_DRVSTR_1X, S3C_GPIO_SLEWRATE_FAST, S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ /* Memory part ending and off part ending */
+
+};
+
+
+void s3c_config_gpio_table(int array_size, unsigned int (*gpio_table)[8])
+{
+ u32 i, gpio;
+ for (i = 0; i < array_size; i++) {
+ gpio = gpio_table[i][0];
+ /* Off part */
+ if((gpio <= S5PV210_GPG3(6)) ||
+ ((gpio <= S5PV210_GPJ4(7)) && (gpio >= S5PV210_GPI(0)))) {
+
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(gpio_table[i][1]));
+ s3c_gpio_setpull(gpio, gpio_table[i][3]);
+
+ if (gpio_table[i][2] != S3C_GPIO_SETPIN_NONE)
+ gpio_set_value(gpio, gpio_table[i][2]);
+
+ s3c_gpio_set_drvstrength(gpio, gpio_table[i][4]);
+ s3c_gpio_set_slewrate(gpio, gpio_table[i][5]);
+
+ //s3c_gpio_slp_cfgpin(gpio, gpio_table[i][6]);
+ //s3c_gpio_slp_setpull_updown(gpio, gpio_table[i][7]);
+
+ }
+#if 1
+ /* Alive part */
+ else if((gpio <= S5PV210_GPH3(7)) && (gpio >= S5PV210_GPH0(0))) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(gpio_table[i][1]));
+ s3c_gpio_setpull(gpio, gpio_table[i][3]);
+
+ if (gpio_table[i][2] != S3C_GPIO_SETPIN_NONE)
+ gpio_set_value(gpio, gpio_table[i][2]);
+
+ s3c_gpio_set_drvstrength(gpio, gpio_table[i][4]);
+ s3c_gpio_set_slewrate(gpio, gpio_table[i][5]);
+ }
+#endif
+#if 0
+ /* Memory part */
+ else if((gpio > S5PV210_GPJ4(4)) && (gpio <= S5PV210_MP07(7))) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(gpio_table[i][1]));
+ s3c_gpio_setpull(gpio, gpio_table[i][3]);
+
+ if (gpio_table[i][2] != S3C_GPIO_SETPIN_NONE)
+ gpio_set_value(gpio, gpio_table[i][2]);
+
+ s3c_gpio_set_drvstrength(gpio, gpio_table[i][4]);
+ s3c_gpio_set_slewrate(gpio, gpio_table[i][5]);
+
+ //s3c_gpio_slp_cfgpin(gpio, gpio_table[i][6]);
+ //s3c_gpio_slp_setpull_updown(gpio, gpio_table[i][7]);
+
+ }
+#endif
+ }
+
+}
+
+
+
+
+
+
+#define S5PV210_PS_HOLD_CONTROL_REG (S3C_VA_SYS+0xE81C)
+
+static void herring_power_off (void)
+{
+
+#if 1
+
+ printk("herring_power_off\n");
+
+ /* temporary power off code */
+ /*PS_HOLD high PS_HOLD_CONTROL, R/W, 0xE010_E81C*/
+ writel(readl(S5PV210_PS_HOLD_CONTROL_REG) & 0xFFFFFEFF, S5PV210_PS_HOLD_CONTROL_REG);
+
+
+#else
+ int mode = REBOOT_MODE_NONE;
+ //char reset_mode = 'r';
+ //int cnt = 0;
+
+ if (maxim_chg_status()) { /* Reboot Charging */
+ mode = REBOOT_MODE_CHARGING;
+ if (sec_set_param_value)
+ sec_set_param_value(__REBOOT_MODE, &mode);
+ /* Watchdog Reset */
+ printk(KERN_EMERG "%s: TA is connected, rebooting...\n", __func__);
+#ifdef CONFIG_KERNEL_DEBUG_SEC // trb - rebasing error
+ kernel_sec_hw_reset(TRUE);
+#endif
+ printk(KERN_EMERG "%s: waiting for reset!\n", __func__);
+ }
+ else { /* Power Off or Reboot */
+
+// if (sec_set_param_value)
+// sec_set_param_value(__REBOOT_MODE, &mode);
+
+#if 0 //if JIG is connected, reset
+ if (get_usb_cable_state() & (JIG_UART_ON | JIG_UART_OFF | JIG_USB_OFF | JIG_USB_ON)) {
+ /* Watchdog Reset */
+ printk(KERN_EMERG "%s: JIG is connected, rebooting...\n", __func__);
+ arch_reset(reset_mode);
+ printk(KERN_EMERG "%s: waiting for reset!\n", __func__);
+ }
+ else {
+#endif
+ /* POWER_N -> Input */
+ gpio_direction_input(GPIO_N_POWER);
+ /* PHONE_ACTIVE -> Input */
+ gpio_direction_input(GPIO_PHONE_ACTIVE);
+ /* Check Power Off Condition */
+ if (!gpio_get_value(GPIO_N_POWER) || gpio_get_value(GPIO_PHONE_ACTIVE)) {
+ /* Wait Power Button Release */
+ printk(KERN_EMERG "%s: waiting for GPIO_POWER_N high.\n", __func__);
+
+#if 0 // add later for checking of nPower and Phone_active
+ while (!gpio_get_value(GPIO_N_POWER));
+
+ /* Wait Phone Power Off */
+ printk(KERN_EMERG "%s: waiting for GPIO_PHONE_ACTIVE low.\n", __func__);
+ while (gpio_get_value(GPIO_PHONE_ACTIVE)) {
+ if (cnt++ < 5) {
+ printk(KERN_EMERG "%s: GPIO_PHONE_ACTIVE is high(%d)\n", __func__, cnt);
+ mdelay(1000);
+ } else {
+ printk(KERN_EMERG "%s: GPIO_PHONE_ACTIVE TIMED OUT!!!\n", __func__);
+ break;
+ }
+ }
+#endif
+ }
+ /* PS_HOLD -> Output Low */
+ printk(KERN_EMERG "%s: setting GPIO_PDA_PS_HOLD low.\n", __func__);
+
+ /*PS_HOLD high PS_HOLD_CONTROL, R/W, 0xE010_E81C*/
+ writel(readl(S5PV210_PS_HOLD_CONTROL_REG) & 0xFFFFFEFF, S5PV210_PS_HOLD_CONTROL_REG);
+ //gpio_direction_output(GPIO_AP_PS_HOLD, 1);
+ //s3c_gpio_setpull(GPIO_AP_PS_HOLD, S3C_GPIO_PULL_NONE);
+ //gpio_set_value(GPIO_AP_PS_HOLD, 0);
+
+ printk(KERN_EMERG "%s: should not reach here!\n", __func__);
+// }
+ }
+#endif
+
+ while (1);
+
+}
+
+
+/* this table only for B4 board */
+
+static unsigned int jupiter_sleep_gpio_table[][3] = {
+#if 0 //for herring
+
+ {S5PV210_GPA0(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA0(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPA1(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPA1(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA1(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPA1(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPB(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPB(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPB(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPB(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPB(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPB(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPB(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPB(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPC0(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC0(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC0(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC0(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC0(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC1(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC1(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPC1(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC1(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPC1(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPD0(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD0(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPD0(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPD0(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPD1(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPD1(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPD1(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPD1(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPD1(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPD1(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPE0(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE0(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_GPE1(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPE1(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPE1(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF0(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF0(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPF1(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF1(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPF2(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF2(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPF3(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF3(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF3(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF3(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPF3(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPF3(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+
+ {S5PV210_GPG0(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG0(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG0(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG0(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG0(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG0(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG0(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPG1(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG1(1),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG1(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG1(3),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG1(4),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG1(5),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG1(6),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPG2(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG2(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG2(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG2(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG2(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG2(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG2(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPG3(0),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG3(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG3(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPG3(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG3(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG3(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPG3(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ /* Alive part ending and off part start*/
+#if 1
+ {S5PV210_GPI(0),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPI(1),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPI(2),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPI(3),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPI(4),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPI(5),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPI(6),
+ S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+#else
+
+
+ {S5PV210_GPI(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPI(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+
+#endif
+ {S5PV210_GPJ0(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ0(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ0(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ0(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ0(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ0(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ0(6),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ0(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPJ1(0),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ1(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ1(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_GPJ1(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ1(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ1(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPJ2(0),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ2(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+
+ {S5PV210_GPJ3(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ3(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_GPJ4(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ4(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ4(2),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ4(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_GPJ4(4),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+
+ /* memory part */
+
+ {S5PV210_MP01(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP01(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(4),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP01(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP01(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP02(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP02(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP02(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP02(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP03(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(2),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP03(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP03(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP03(5),
+ S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP03(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP03(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP04(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(1),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP04(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(3),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP04(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP04(6),
+ //S3C_GPIO_SLP_OUT1, S3C_GPIO_PULL_NONE},
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP04(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP05(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP05(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP05(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP05(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP05(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(5),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+ {S5PV210_MP05(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP05(7),
+ S3C_GPIO_SLP_OUT0, S3C_GPIO_PULL_NONE},
+
+ {S5PV210_MP06(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP06(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ {S5PV210_MP07(0),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(1),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(2),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(3),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(4),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(5),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(6),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+ {S5PV210_MP07(7),
+ S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_DOWN},
+
+ /* Memory part ending and off part ending */
+#endif //for herring
+};
+
+void s3c_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]);
+ }
+}
+
+
+
+
+
+
+
+
+// just for ref..
+//
+void s3c_config_sleep_gpio(void)
+{
+
+ // setting the alive mode registers
+
+ s3c_gpio_cfgpin(S5PV210_GPH0(1), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(1), S3C_GPIO_PULL_DOWN);
+ //gpio_set_value(S5PV210_GPH0(1), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH0(2), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(2), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH0(2), 0);
+ s3c_gpio_cfgpin(S5PV210_GPH0(3), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(3), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH0(3), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH0(4), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(4), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH0(4), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH0(5), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(5), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH0(5), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH0(6), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(6), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH0(6), 0);
+
+ //s3c_gpio_cfgpin(S5PV210_GPH0(7), S3C_GPIO_INPUT);
+ //s3c_gpio_setpull(S5PV210_GPH0(7), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH0(0), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH1(0), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(0), S3C_GPIO_PULL_DOWN);
+ //gpio_set_value(S5PV210_GPH1(1), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH1(1), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(1), S3C_GPIO_PULL_DOWN);
+ //gpio_set_value(S5PV210_GPH1(1), 0);
+ //
+ s3c_gpio_cfgpin(S5PV210_GPH1(2), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(2), S3C_GPIO_PULL_DOWN);
+ //gpio_set_value(S5PV210_GPH1(2), 0);
+
+#if 0 // kt.hur on 100104
+ s3c_gpio_cfgpin(S5PV210_GPH1(3), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(3), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH1(3), 0);
+#endif
+
+ s3c_gpio_cfgpin(S5PV210_GPH1(4), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(4), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH1(4), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH1(5), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(5), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH1(5),0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH1(6), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(6), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH1(6), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH1(7), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH1(7), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH1(7), 0);
+
+
+ s3c_gpio_cfgpin(S5PV210_GPH2(0), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(0), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH2(0), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH2(1), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(1), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH2(1), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH2(2), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(2), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH2(2), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH2(3), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(3), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH2(3), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH2(4), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(4), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH2(4), 0);
+
+#if 0 // bluetooth
+ s3c_gpio_cfgpin(S5PV210_GPH2(5), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(5), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH2(5), 0);
+#endif
+
+ //s3c_gpio_cfgpin(S5PV210_GPH2(6), S3C_GPIO_INPUT);
+ //s3c_gpio_setpull(S5PV210_GPH2(6), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH2(6), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH2(7), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH2(7), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH2(7), 0);
+
+
+#if 0 // keypad
+ s3c_gpio_cfgpin(S5PV210_GPH3(0), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(0), S3C_GPIO_PULL_UP);
+// gpio_set_value(S5PV210_GPH3(0), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(1), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(1), S3C_GPIO_PULL_UP);
+// gpio_set_value(S5PV210_GPH3(1), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(2), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(2), S3C_GPIO_PULL_UP);
+// gpio_set_value(S5PV210_GPH3(2), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(3), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(3), S3C_GPIO_PULL_UP);
+// gpio_set_value(S5PV210_GPH3(3), 0);
+
+#endif
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(3), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(3), S3C_GPIO_PULL_NONE);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(4), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(4), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH3(4), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(5), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(5), S3C_GPIO_PULL_NONE);
+ //gpio_set_value(S5PV210_GPH3(5), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(6), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(6), S3C_GPIO_PULL_NONE);
+ gpio_set_value(S5PV210_GPH3(6), 0);
+
+ s3c_gpio_cfgpin(S5PV210_GPH3(7), S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(S5PV210_GPH3(7), S3C_GPIO_PULL_UP);
+ gpio_set_value(S5PV210_GPH3(7), 1);
+
+ //s3c_config_sleep_gpio_table(ARRAY_SIZE(jupiter_sleep_gpio_table),
+ // jupiter_sleep_gpio_table);
+}
+
+EXPORT_SYMBOL(s3c_config_sleep_gpio);
+
+
static struct platform_device *herring_devices[] __initdata = {
&s5pv210_device_iis0,
&s5pv210_device_ac97,
&s3c_device_wdt,
+
+#ifdef CONFIG_REGULATOR_MAX8998
+ &s3c_device_8998consumer,
+#endif
+#ifdef CONFIG_FB_S3C
+ &s3c_device_fb,
+#endif
+#ifdef CONFIG_FB_S3C_TL2796
+ &s3c_device_spi_gpio,
+#endif
+ &s3c_device_i2c0,
+#if defined(CONFIG_S3C_DEV_I2C1)
+ &s3c_device_i2c1,
+#endif
+
+#if defined(CONFIG_S3C_DEV_I2C2)
+ &s3c_device_i2c2,
+#endif
+ &herring_i2c4_device,
+ &herring_i2c6_device,
};
+unsigned int HWREV=0;
+EXPORT_SYMBOL(HWREV);
+
+static int read_hwversion(void)
+{
+ int err;
+ int hwver = -1;
+ int hwver_0 = -1;
+ int hwver_1 = -1;
+ int hwver_2 = -1;
+
+ err = gpio_request(S5PV210_GPJ0(2), "HWREV_MODE0");
+
+ if (err) {
+ printk(KERN_ERR "failed to request GPJ0(2) for "
+ "HWREV_MODE0\n");
+ return err;
+ }
+ err = gpio_request(S5PV210_GPJ0(3), "HWREV_MODE1");
+
+ if (err) {
+ printk(KERN_ERR "failed to request GPJ0(3) for "
+ "HWREV_MODE1\n");
+ return err;
+ }
+ err = gpio_request(S5PV210_GPJ0(4), "HWREV_MODE2");
+
+ if (err) {
+ printk(KERN_ERR "failed to request GPJ0(4) for "
+ "HWREV_MODE2\n");
+ return err;
+ }
+
+ gpio_direction_input(S5PV210_GPJ0(2));
+ gpio_direction_input(S5PV210_GPJ0(3));
+ gpio_direction_input(S5PV210_GPJ0(4));
+
+ hwver_0 = gpio_get_value(S5PV210_GPJ0(2));
+ hwver_1 = gpio_get_value(S5PV210_GPJ0(3));
+ hwver_2 = gpio_get_value(S5PV210_GPJ0(4));
+
+ gpio_free(S5PV210_GPJ0(2));
+ gpio_free(S5PV210_GPJ0(3));
+ gpio_free(S5PV210_GPJ0(4));
+
+ if((hwver_0 == 0)&&(hwver_1 == 1)&&(hwver_2 == 0)){
+ hwver = 2;
+ printk("+++++++++[I9000 Rev0.1 board]++++++++ hwver_0: %d, hwver_1: %d, hwver_2: %d\n", hwver_0, hwver_1, hwver_2);
+ }
+ else if((hwver_0 == 1)&&(hwver_1 == 0)&&(hwver_2 == 1)){
+ hwver = 2;
+ printk("+++++++++[B5 board]++++++++ hwver_0: %d, hwver_1: %d, hwver_2: %d\n", hwver_0, hwver_1, hwver_2);
+ }
+ else if((hwver_0 == 0)&&(hwver_1 == 1)&&(hwver_2 == 1)){
+ hwver = 2;
+ printk("+++++++++[ARIES B5 board]++++++++ hwver_0: %d, hwver_1: %d, hwver_2: %d\n", hwver_0, hwver_1, hwver_2);
+ }
+ else{
+ hwver = 0;
+ //printk("+++++++++[B2, B3 board]++++++++ hwver_0: %d, hwver_1: %d, hwver_2: %d\n", hwver_0, hwver_1, hwver_2);
+ }
+
+ return hwver;
+}
+
static void __init herring_map_io(void)
{
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
s3c24xx_init_clocks(24000000);
s3c24xx_init_uarts(herring_uartcfgs, ARRAY_SIZE(herring_uartcfgs));
-}
+ s5pv210_reserve_bootmem();
-static void __init herring_machine_init(void)
-{
- platform_add_devices(herring_devices, ARRAY_SIZE(herring_devices));
+#ifdef CONFIG_MTD_ONENAND
+ s3c_device_onenand.name = "s5pc110-onenand";
+#endif
}
static void __init herring_fixup(struct machine_desc *desc,
@@ -104,6 +2846,349 @@ static void __init herring_fixup(struct machine_desc *desc,
mi->nr_banks = 3;
}
+#ifdef CONFIG_S3C_SAMSUNG_PMEM
+static void __init s3c_pmem_set_platdata(void)
+{
+ pmem_pdata.start = s3c_get_media_memory_bank(S3C_MDEV_PMEM, 1);
+ pmem_pdata.size = s3c_get_media_memsize_bank(S3C_MDEV_PMEM, 1);
+}
+#endif
+
+#ifdef CONFIG_FB_S3C_LTE480WV
+static struct s3c_platform_fb lte480wv_fb_data __initdata = {
+ .hw_ver = 0x62,
+ .nr_wins = 5,
+ .default_win = CONFIG_FB_S3C_DEFAULT_WINDOW,
+ .swap = FB_SWAP_WORD | FB_SWAP_HWORD,
+};
+#endif
+/* this function are used to detect s5pc110 chip version temporally */
+
+int s5pc110_version ;
+
+void _hw_version_check(void)
+{
+ void __iomem * phy_address ;
+ int temp;
+
+ phy_address = ioremap (0x40,1);
+
+ temp = __raw_readl(phy_address);
+
+
+ if (temp == 0xE59F010C)
+ {
+ s5pc110_version = 0;
+ }
+ else
+ {
+ s5pc110_version=1 ;
+ }
+ printk("S5PC110 Hardware version : EVT%d \n",s5pc110_version);
+
+ iounmap(phy_address);
+}
+
+/* Temporally used
+ * return value 0 -> EVT 0
+ * value 1 -> evt 1
+ */
+
+int hw_version_check(void)
+{
+ return s5pc110_version ;
+}
+EXPORT_SYMBOL(hw_version_check);
+
+/* touch screen device init */
+static void __init qt_touch_init(void)
+{
+ int gpio, irq;
+
+ /* qt602240 TSP */
+ qt602240_p1_platform_data.blen = 0x1;
+ qt602240_p1_platform_data.threshold = 0x13;
+ qt602240_p1_platform_data.orient = QT602240_VERTICAL_FLIP;
+
+ gpio = S5PV210_GPG3(6); /* XMMC3DATA_3 */
+ gpio_request(gpio, "TOUCH_EN");
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_OUTPUT);
+ gpio_direction_output(gpio, 1);
+ gpio_free(gpio);
+
+ gpio = S5PV210_GPJ0(5); /* XMSMADDR_5 */
+ gpio_request(gpio, "TOUCH_INT");
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(0xf));
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ irq = gpio_to_irq(gpio);
+ gpio_free(gpio);
+
+ i2c_devs2[1].irq = irq;
+}
+
+
+extern void set_pmic_gpio(void);
+static void jupiter_init_gpio(void)
+{
+ s3c_config_gpio_table(ARRAY_SIZE(jupiter_gpio_table),
+ jupiter_gpio_table);
+ s3c_config_sleep_gpio_table(ARRAY_SIZE(jupiter_sleep_gpio_table),
+ jupiter_sleep_gpio_table);
+
+ /*Adding pmic gpio(GPH3, GPH4, GPH5) initialisation*/
+#if defined(CONFIG_CPU_FREQ)
+ set_pmic_gpio();
+#endif
+}
+
+static void __init herring_machine_init(void)
+{
+ platform_add_devices(herring_devices, ARRAY_SIZE(herring_devices));
+ /* Find out S5PC110 chip version */
+ _hw_version_check();
+
+ pm_power_off = herring_power_off ;
+
+
+ s3c_gpio_cfgpin(GPIO_HWREV_MODE0, S3C_GPIO_INPUT);
+ s3c_gpio_setpull( GPIO_HWREV_MODE0, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_HWREV_MODE1, S3C_GPIO_INPUT);
+ s3c_gpio_setpull( GPIO_HWREV_MODE1, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_HWREV_MODE2, S3C_GPIO_INPUT);
+ s3c_gpio_setpull( GPIO_HWREV_MODE2, S3C_GPIO_PULL_NONE);
+ HWREV = gpio_get_value(GPIO_HWREV_MODE0);
+ HWREV = HWREV | (gpio_get_value(GPIO_HWREV_MODE1) <<1);
+ HWREV = HWREV | (gpio_get_value(GPIO_HWREV_MODE2) <<2);
+ s3c_gpio_cfgpin(GPIO_HWREV_MODE3, S3C_GPIO_INPUT);
+ s3c_gpio_setpull( GPIO_HWREV_MODE3, S3C_GPIO_PULL_NONE);
+ HWREV = HWREV | (gpio_get_value(GPIO_HWREV_MODE3) <<3);
+ printk("HWREV is 0x%x\n", HWREV);
+
+ /*initialise the gpio's*/
+#if 0 // temporary removed for herring. jc.lee
+ jupiter_init_gpio();
+#endif
+
+ /* OneNAND */
+#ifdef CONFIG_MTD_ONENAND
+ //s3c_device_onenand.dev.platform_data = &s5p_onenand_data;
+#endif
+
+
+ qt_touch_init();
+
+#ifdef CONFIG_DM9000
+ smdkv210_dm9000_set();
+#endif
+
+#ifdef CONFIG_ANDROID_PMEM
+ android_pmem_set_platdata();
+#endif
+ {
+ int tint = GPIO_TOUCH_INT;
+ s3c_gpio_cfgpin(tint, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(tint, S3C_GPIO_PULL_UP);
+ }
+
+ /* i2c */
+ s3c_i2c0_set_platdata(NULL);
+ s3c_i2c1_set_platdata(NULL);
+ s3c_i2c2_set_platdata(NULL);
+ i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
+ i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
+ i2c_register_board_info(2, i2c_devs2, ARRAY_SIZE(i2c_devs2));
+ i2c_register_board_info(4, i2c_devs4, ARRAY_SIZE(i2c_devs4));
+ i2c_register_board_info(6, i2c_devs6, ARRAY_SIZE(i2c_devs6));
+ i2c_register_board_info(10, i2c_devs10, ARRAY_SIZE(i2c_devs10)); /* for touchkey */
+ i2c_register_board_info(7, i2c_devs7, ARRAY_SIZE(i2c_devs7)); /* for fsa9480 */
+
+#ifdef CONFIG_FB_S3C_LTE480WV
+ s3cfb_set_platdata(&lte480wv_fb_data);
+#endif
+
+#if defined(CONFIG_BLK_DEV_IDE_S3C)
+ s3c_ide_set_platdata(&smdkv210_ide_pdata);
+#endif
+
+#if defined(CONFIG_TOUCHSCREEN_S3C)
+ s3c_ts_set_platdata(&s3c_ts_platform);
+#endif
+
+#ifdef CONFIG_FB_S3C_TL2796
+ spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
+ s3cfb_set_platdata(&tl2796_data);
+#endif
+
+#if defined(CONFIG_S5PV210_ADCTS)
+ s3c_adcts_set_platdata(&s3c_adcts_cfgs);
+#endif
+
+#if defined(CONFIG_S5P_ADC)
+ s3c_adc_set_platdata(&s3c_adc_platform);
+#endif
+
+#if defined(CONFIG_PM)
+ s3c_pm_init();
+// s5pc11x_pm_init();
+#endif
+#ifdef CONFIG_VIDEO_FIMC
+ /* fimc */
+ s3c_fimc0_set_platdata(&fimc_plat);
+ s3c_fimc1_set_platdata(&fimc_plat);
+ s3c_fimc2_set_platdata(&fimc_plat);
+ s3c_csis_set_platdata(NULL);
+#endif
+
+#ifdef CONFIG_VIDEO_MFC50
+ /* mfc */
+ s3c_mfc_set_platdata(NULL);
+#endif
+
+#ifdef CONFIG_S3C_DEV_HSMMC
+ s5pv210_default_sdhci0();
+#endif
+#ifdef CONFIG_S3C_DEV_HSMMC1
+ s5pv210_default_sdhci1();
+#endif
+#ifdef CONFIG_S3C_DEV_HSMMC2
+ s5pv210_default_sdhci2();
+#endif
+#ifdef CONFIG_S3C_DEV_HSMMC3
+ s5pv210_default_sdhci3();
+#endif
+#ifdef CONFIG_S5PV210_SETUP_SDHCI
+ s3c_sdhci_set_platdata();
+#endif
+
+#if defined(CONFIG_HAVE_PWM)
+ smdk_backlight_register();
+#endif
+ jupiter_switch_init();
+}
+
+#ifdef CONFIG_USB_SUPPORT
+/* Initializes OTG Phy. */
+void otg_phy_init(void)
+{
+ __raw_writel(__raw_readl(S5P_USB_PHY_CONTROL)
+ |(0x1<<0), S5P_USB_PHY_CONTROL); /*USB PHY0 Enable */
+ __raw_writel((__raw_readl(S3C_USBOTG_PHYPWR)
+ &~(0x3<<3)&~(0x1<<0))|(0x1<<5), S3C_USBOTG_PHYPWR);
+ __raw_writel((__raw_readl(S3C_USBOTG_PHYCLK)
+ &~(0x5<<2))|(0x3<<0), S3C_USBOTG_PHYCLK);
+ __raw_writel((__raw_readl(S3C_USBOTG_RSTCON)
+ &~(0x3<<1))|(0x1<<0), S3C_USBOTG_RSTCON);
+ udelay(10);
+ __raw_writel(__raw_readl(S3C_USBOTG_RSTCON)
+ &~(0x7<<0), S3C_USBOTG_RSTCON);
+ udelay(10);
+}
+EXPORT_SYMBOL(otg_phy_init);
+
+/* USB Control request data struct must be located here for DMA transfer */
+struct usb_ctrlrequest usb_ctrl __attribute__((aligned(64)));
+EXPORT_SYMBOL(usb_ctrl);
+
+/* OTG PHY Power Off */
+void otg_phy_off(void)
+{
+ __raw_writel(__raw_readl(S3C_USBOTG_PHYPWR)
+ |(0x3<<3), S3C_USBOTG_PHYPWR);
+ __raw_writel(__raw_readl(S5P_USB_PHY_CONTROL)
+ &~(1<<0), S5P_USB_PHY_CONTROL);
+}
+EXPORT_SYMBOL(otg_phy_off);
+
+void usb_host_phy_init(void)
+{
+ struct clk *otg_clk;
+
+ otg_clk = clk_get(NULL, "usbotg");
+ clk_enable(otg_clk);
+
+ if (readl(S5P_USB_PHY_CONTROL) & (0x1<<1))
+ return;
+
+ __raw_writel(__raw_readl(S5P_USB_PHY_CONTROL)
+ |(0x1<<1), S5P_USB_PHY_CONTROL);
+ __raw_writel((__raw_readl(S3C_USBOTG_PHYPWR)
+ &~(0x1<<7)&~(0x1<<6))|(0x1<<8)|(0x1<<5), S3C_USBOTG_PHYPWR);
+ __raw_writel((__raw_readl(S3C_USBOTG_PHYCLK)
+ &~(0x1<<7))|(0x3<<0), S3C_USBOTG_PHYCLK);
+ __raw_writel((__raw_readl(S3C_USBOTG_RSTCON))
+ |(0x1<<4)|(0x1<<3), S3C_USBOTG_RSTCON);
+ __raw_writel(__raw_readl(S3C_USBOTG_RSTCON)
+ &~(0x1<<4)&~(0x1<<3), S3C_USBOTG_RSTCON);
+}
+EXPORT_SYMBOL(usb_host_phy_init);
+
+void usb_host_phy_off(void)
+{
+ __raw_writel(__raw_readl(S3C_USBOTG_PHYPWR)
+ |(0x1<<7)|(0x1<<6), S3C_USBOTG_PHYPWR);
+ __raw_writel(__raw_readl(S5P_USB_PHY_CONTROL)
+ &~(1<<1), S5P_USB_PHY_CONTROL);
+}
+EXPORT_SYMBOL(usb_host_phy_off);
+#endif
+
+#if defined(CONFIG_KEYPAD_S3C) || defined(CONFIG_KEYPAD_S3C_MODULE)
+#if defined(CONFIG_KEYPAD_S3C_MSM)
+void s3c_setup_keypad_cfg_gpio(void)
+{
+ unsigned int gpio;
+ unsigned int end;
+
+ /* gpio setting for KP_COL0 */
+ s3c_gpio_cfgpin(S5PV210_GPJ1(5), S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(S5PV210_GPJ1(5), S3C_GPIO_PULL_NONE);
+
+ /* gpio setting for KP_COL1 ~ KP_COL7 and KP_ROW0 */
+ end = S5PV210_GPJ2(8);
+ for (gpio = S5PV210_GPJ2(0); gpio < end; gpio++) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
+ }
+
+ /* gpio setting for KP_ROW1 ~ KP_ROW8 */
+ end = S5PV210_GPJ3(8);
+ for (gpio = S5PV210_GPJ3(0); gpio < end; gpio++) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
+ }
+
+ /* gpio setting for KP_ROW9 ~ KP_ROW13 */
+ end = S5PV210_GPJ4(5);
+ for (gpio = S5PV210_GPJ4(0); gpio < end; gpio++) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
+ }
+}
+#else
+void s3c_setup_keypad_cfg_gpio(int rows, int columns)
+{
+ unsigned int gpio;
+ unsigned int end;
+
+ end = S5PV210_GPH3(rows);
+
+ /* Set all the necessary GPH2 pins to special-function 0 */
+ for (gpio = S5PV210_GPH3(0); gpio < end; gpio++) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ }
+
+ end = S5PV210_GPH2(columns);
+
+ /* Set all the necessary GPK pins to special-function 0 */
+ for (gpio = S5PV210_GPH2(0); gpio < end; gpio++) {
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(3));
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE);
+ }
+}
+#endif /* if defined(CONFIG_KEYPAD_S3C_MSM)*/
+EXPORT_SYMBOL(s3c_setup_keypad_cfg_gpio);
+#endif
MACHINE_START(HERRING, "herring")
.boot_params = S5P_PA_SDRAM + 0x100,
@@ -113,3 +3198,54 @@ MACHINE_START(HERRING, "herring")
.init_machine = herring_machine_init,
.timer = &s5p_systimer,
MACHINE_END
+
+void s3c_setup_uart_cfg_gpio(unsigned char port)
+{
+ switch(port)
+ {
+ case 0:
+ s3c_gpio_cfgpin(GPIO_BT_RXD, S3C_GPIO_SFN(GPIO_BT_RXD_AF));
+ s3c_gpio_setpull(GPIO_BT_RXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_BT_TXD, S3C_GPIO_SFN(GPIO_BT_TXD_AF));
+ s3c_gpio_setpull(GPIO_BT_TXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_BT_CTS, S3C_GPIO_SFN(GPIO_BT_CTS_AF));
+ s3c_gpio_setpull(GPIO_BT_CTS, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_BT_RTS, S3C_GPIO_SFN(GPIO_BT_RTS_AF));
+ s3c_gpio_setpull(GPIO_BT_RTS, S3C_GPIO_PULL_NONE);
+ s3c_gpio_slp_cfgpin(GPIO_BT_RXD, S3C_GPIO_SLP_PREV);
+ s3c_gpio_slp_setpull_updown(GPIO_BT_RXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_slp_cfgpin(GPIO_BT_TXD, S3C_GPIO_SLP_PREV);
+ s3c_gpio_slp_setpull_updown(GPIO_BT_TXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_slp_cfgpin(GPIO_BT_CTS, S3C_GPIO_SLP_PREV);
+ s3c_gpio_slp_setpull_updown(GPIO_BT_CTS, S3C_GPIO_PULL_NONE);
+ s3c_gpio_slp_cfgpin(GPIO_BT_RTS, S3C_GPIO_SLP_PREV);
+ s3c_gpio_slp_setpull_updown(GPIO_BT_RTS, S3C_GPIO_PULL_NONE);
+ break;
+ case 1:
+ s3c_gpio_cfgpin(GPIO_GPS_RXD, S3C_GPIO_SFN(GPIO_GPS_RXD_AF));
+ s3c_gpio_setpull(GPIO_GPS_RXD, S3C_GPIO_PULL_UP);
+ s3c_gpio_cfgpin(GPIO_GPS_TXD, S3C_GPIO_SFN(GPIO_GPS_TXD_AF));
+ s3c_gpio_setpull(GPIO_GPS_TXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_GPS_CTS, S3C_GPIO_SFN(GPIO_GPS_CTS_AF));
+ s3c_gpio_setpull(GPIO_GPS_CTS, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_GPS_RTS, S3C_GPIO_SFN(GPIO_GPS_RTS_AF));
+ s3c_gpio_setpull(GPIO_GPS_RTS, S3C_GPIO_PULL_NONE);
+ break;
+ case 2:
+ s3c_gpio_cfgpin(GPIO_AP_RXD, S3C_GPIO_SFN(GPIO_AP_RXD_AF));
+ s3c_gpio_setpull(GPIO_AP_RXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_AP_TXD, S3C_GPIO_SFN(GPIO_AP_TXD_AF));
+ s3c_gpio_setpull(GPIO_AP_TXD, S3C_GPIO_PULL_NONE);
+ break;
+ case 3:
+ s3c_gpio_cfgpin(GPIO_FLM_RXD, S3C_GPIO_SFN(GPIO_FLM_RXD_AF));
+ s3c_gpio_setpull(GPIO_FLM_RXD, S3C_GPIO_PULL_NONE);
+ s3c_gpio_cfgpin(GPIO_FLM_TXD, S3C_GPIO_SFN(GPIO_FLM_TXD_AF));
+ s3c_gpio_setpull(GPIO_FLM_TXD, S3C_GPIO_PULL_NONE);
+ break;
+ default:
+ break;
+ }
+}
+
+EXPORT_SYMBOL(s3c_setup_uart_cfg_gpio);