aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-s5pv210/include/mach/gpio-herring.h49
-rw-r--r--[-rwxr-xr-x]arch/arm/mach-s5pv210/mach-herring.c98
2 files changed, 118 insertions, 29 deletions
diff --git a/arch/arm/mach-s5pv210/include/mach/gpio-herring.h b/arch/arm/mach-s5pv210/include/mach/gpio-herring.h
index bc1be08..b55d0f0 100644
--- a/arch/arm/mach-s5pv210/include/mach/gpio-herring.h
+++ b/arch/arm/mach-s5pv210/include/mach/gpio-herring.h
@@ -73,23 +73,23 @@
#define GPIO_REC_PCM_OUT S5PV210_GPC0(4)
#define GPIO_REC_PCM_OUT_AF 3
-#define BLOW_PCM_CLK S5PV210_GPC1(0)
+#define GPIO_WIMAX_PM_SDA S5PV210_GPC1(0)
-#define GPIO_GPC11 S5PV210_GPC1(1)
+#define GPIO_WIMAX_I2C_CON S5PV210_GPC1(1)
-#define GPIO_GPC12 S5PV210_GPC1(2)
+#define GPIO_WIMAX_PM_SCL S5PV210_GPC1(2)
#define GPIO_GPC13 S5PV210_GPC1(3)
#define GPIO_GPC14 S5PV210_GPC1(4)
-#define GPIO_GPD00 S5PV210_GPD0(0)
+#define GPIO_WIMAX_DBGEN_28V S5PV210_GPD0(0)
#define GPIO_VIBTONE_PWM S5PV210_GPD0(1)
#define GPIO_VIBTONE_PWM1 S5PV210_GPD0(2)
-#define GPIO_GPD03 S5PV210_GPD0(3)
+#define GPIO_WIMAX_RESET_N S5PV210_GPD0(3)
#define GPIO_CAM_SDA_29V S5PV210_GPD1(0)
#define GPIO_CAM_SDA_29V_AF 2
@@ -269,25 +269,19 @@
#define GPIO_NAND_D7 S5PV210_GPG1(6)
#define GPIO_NAND_D7_AF 3
-#define GPIO_T_FLASH_CLK S5PV210_GPG2(0)
-#define GPIO_T_FLASH_CLK_AF 2
+#define GPIO_WIMAX_SDIO_CLK S5PV210_GPG2(0)
-#define GPIO_T_FLASH_CMD S5PV210_GPG2(1)
-#define GPIO_T_FLASH_CMD_AF 2
+#define GPIO_WIMAX_SDIO_CMD S5PV210_GPG2(1)
#define GPIO_ALS_SDA_28V S5PV210_GPG2(2)
-#define GPIO_T_FLASH_D0 S5PV210_GPG2(3)
-#define GPIO_T_FLASH_D0_AF 2
+#define GPIO_WIMAX_SDIO_D0 S5PV210_GPG2(3)
-#define GPIO_T_FLASH_D1 S5PV210_GPG2(4)
-#define GPIO_T_FLASH_D1_AF 2
+#define GPIO_WIMAX_SDIO_D1 S5PV210_GPG2(4)
-#define GPIO_T_FLASH_D2 S5PV210_GPG2(5)
-#define GPIO_T_FLASH_D2_AF 2
+#define GPIO_WIMAX_SDIO_D2 S5PV210_GPG2(5)
-#define GPIO_T_FLASH_D3 S5PV210_GPG2(6)
-#define GPIO_T_FLASH_D3_AF 2
+#define GPIO_WIMAX_SDIO_D3 S5PV210_GPG2(6)
#define GPIO_WLAN_SDIO_CLK S5PV210_GPG3(0)
#define GPIO_WLAN_SDIO_CLK_AF 2
@@ -328,11 +322,12 @@
#define GPIO_AP_PMIC_IRQ S5PV210_GPH0(7)
#define GPIO_AP_PMIC_IRQ_AF 0xFF
-#define GPIO_GPH10 S5PV210_GPH1(0)
+#define GPIO_WIMAX_EN S5PV210_GPH1(0)
#define GPIO_PDA_ACTIVE S5PV210_GPH1(1)
-#define GPIO_GPH12 S5PV210_GPH1(2)
+#define GPIO_WIMAX_WAKEUP S5PV210_GPH1(2)
+
#define GPIO_nINT_ONEDRAM_AP S5PV210_GPH1(3)
#define GPIO_nINT_ONEDRAM_AP_AF 0xF
@@ -424,7 +419,11 @@
#define GPIO_VIBTONE_EN1 S5PV210_GPJ1(1)
+#define GPIO_USB_HS_SEL S5PV210_GPJ2(0)
+#define GPIO_PHONE_ON S5PV210_GPJ2(1)
+
#define GPIO_EAR_SEL S5PV210_GPJ2(3)
+#define GPIO_UART_SEL1 S5PV210_GPJ2(4)
#define GPIO_FLASH_EN S5PV210_GPJ1(2)
#define GPIO_TOUCH_EN S5PV210_GPJ1(3)
@@ -471,7 +470,7 @@
#define GPIO_DISPLAY_CS S5PV210_MP01(1)
-#define GPIO_SUB_DISPLAY_CS S5PV210_MP01(2)
+#define GPIO_WIMAX_CON0 S5PV210_MP01(2)
#define GPIO_OLED_ID S5PV210_MP01(3)
@@ -512,7 +511,7 @@
#define GPIO_DISPLAY_CLK S5PV210_MP04(1)
-#define GPIO_MP042 S5PV210_MP04(2)
+#define GPIO_WIMAX_IF_MODE0 S5PV210_MP04(2)
#define GPIO_DISPLAY_SI S5PV210_MP04(3)
@@ -522,7 +521,7 @@
#define GPIO_GPS_CLK_EN S5PV210_MP04(6)
-#define GPIO_MHL_RST S5PV210_MP04(7)
+#define GPIO_WIMAX_CON1 S5PV210_MP04(7)
#define FUEL_SCL_18V S5PV210_MP05(0)
#define FUEL_SDA_18V S5PV210_MP05(1)
@@ -531,14 +530,16 @@
#define GPIO_AP_SDA_18V S5PV210_MP05(3)
-#define GPIO_MP054 S5PV210_MP05(4)
+#define GPIO_WIMAX_IF_MODE1 S5PV210_MP05(4)
#define GPIO_MLCD_RST S5PV210_MP05(5)
-#define GPIO_MP056 S5PV210_MP05(6)
+#define GPIO_WIMAX_CON2 S5PV210_MP05(6)
#define GPIO_UART_SEL S5PV210_MP05(7)
+#define GPOI_WIMAX_WAKEUP S5PV210_MP06(5)
+
#define AP_I2C_SDA S5PV210_MP05(3)
#define AP_I2C_SCL S5PV210_MP05(2)
#define AP_I2C_SDA_28V S5PV210_GPJ3(6)
diff --git a/arch/arm/mach-s5pv210/mach-herring.c b/arch/arm/mach-s5pv210/mach-herring.c
index 2595e91..460065d 100755..100644
--- a/arch/arm/mach-s5pv210/mach-herring.c
+++ b/arch/arm/mach-s5pv210/mach-herring.c
@@ -199,11 +199,31 @@ static void uart_switch_init(void)
}
s3c_gpio_setpull(GPIO_UART_SEL, S3C_GPIO_PULL_NONE);
s3c_gpio_cfgpin(GPIO_UART_SEL, S3C_GPIO_OUTPUT);
- gpio_direction_output(GPIO_UART_SEL, 1);
+
+ if (is_cdma_wimax_dev())
+ gpio_direction_output(GPIO_UART_SEL, 0);
+ else
+ gpio_direction_output(GPIO_UART_SEL, 1);
gpio_export(GPIO_UART_SEL, 1);
gpio_export_link(uartswitch_dev, "UART_SEL", GPIO_UART_SEL);
+
+ if (is_cdma_wimax_dev()) {
+ ret = gpio_request(GPIO_UART_SEL1, "UART_SEL1");
+ if (ret < 0) {
+ pr_err("Failed to request GPIO_UART_SEL1!\n");
+ gpio_free(GPIO_UART_SEL);
+ return;
+ }
+
+ s3c_gpio_cfgpin(GPIO_UART_SEL1, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_UART_SEL1, S3C_GPIO_PULL_NONE);
+ gpio_direction_output(GPIO_UART_SEL1, 0);
+
+ gpio_export(GPIO_UART_SEL1, 1);
+ gpio_export_link(uartswitch_dev, "UART_SEL1", GPIO_UART_SEL1);
+ }
}
static void herring_switch_init(void)
@@ -3522,9 +3542,9 @@ static struct gpio_init_data herring_init_gpios[] = {
.drv = S3C_GPIO_DRVSTR_1X,
}, {
.num = S5PV210_GPJ2(1),
- .cfg = S3C_GPIO_INPUT,
+ .cfg = S3C_GPIO_OUTPUT,
.val = S3C_GPIO_SETPIN_NONE,
- .pud = S3C_GPIO_PULL_DOWN,
+ .pud = S3C_GPIO_PULL_NONE,
.drv = S3C_GPIO_DRVSTR_1X,
}, {
.num = S5PV210_GPJ2(2),
@@ -3808,6 +3828,38 @@ void s3c_config_gpio_table(void)
s3c_gpio_set_drvstrength(gpio, herring_init_gpios[i].drv);
}
}
+
+ if (is_cdma_wimax_dev()) {
+ gpio = S5PV210_GPC1(1);
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ gpio_set_value(gpio, S3C_GPIO_SETPIN_ONE);
+ s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_4X);
+
+ gpio = S5PV210_GPC1(3);
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ gpio_set_value(gpio, S3C_GPIO_SETPIN_NONE);
+ s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_4X);
+
+ gpio = S5PV210_GPC1(4);
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ gpio_set_value(gpio, S3C_GPIO_SETPIN_NONE);
+ s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_4X);
+
+ gpio = S5PV210_MP05(2);
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ gpio_set_value(gpio, S3C_GPIO_SETPIN_NONE);
+ s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_4X);
+
+ gpio = S5PV210_MP05(3);
+ s3c_gpio_cfgpin(gpio, S3C_GPIO_INPUT);
+ s3c_gpio_setpull(gpio, S3C_GPIO_PULL_UP);
+ gpio_set_value(gpio, S3C_GPIO_SETPIN_NONE);
+ s3c_gpio_set_drvstrength(gpio, S3C_GPIO_DRVSTR_4X);
+ }
}
#define S5PV210_PS_HOLD_CONTROL_REG (S3C_VA_SYS+0xE81C)
@@ -4083,6 +4135,26 @@ static unsigned int herring_sleep_gpio_table[][3] = {
/* Memory part ending and off part ending */
};
+static unsigned int herring_cdma_wimax_sleep_gpio_table[][3] = {
+ { S5PV210_GPC1(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPC1(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPD0(3), S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG0(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(0), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(1), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(2), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(3), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(4), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(5), S3C_GPIO_SLP_INPUT, S3C_GPIO_PULL_NONE},
+ { S5PV210_GPG2(6), S3C_GPIO_SLP_INPUT, 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_MP04(0), S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ { S5PV210_MP04(7), S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ { S5PV210_MP05(4), S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+ { S5PV210_MP05(6), S3C_GPIO_SLP_PREV, S3C_GPIO_PULL_NONE},
+};
+
void s3c_config_sleep_gpio_table(int array_size, unsigned int (*gpio_table)[3])
{
u32 i, gpio;
@@ -4100,6 +4172,11 @@ void s3c_config_sleep_gpio(void)
s3c_gpio_cfgpin(S5PV210_GPH0(1), S3C_GPIO_INPUT);
s3c_gpio_setpull(S5PV210_GPH0(1), S3C_GPIO_PULL_NONE);
+ if (is_cdma_wimax_dev()) {
+ s3c_gpio_cfgpin(S5PV210_GPH0(1), S3C_GPIO_INPUT);
+ s3c_gpio_setpull(S5PV210_GPH0(1), S3C_GPIO_PULL_NONE);
+ }
+
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);
@@ -4551,12 +4628,23 @@ static void herring_init_gpio(void)
s3c_config_gpio_table();
s3c_config_sleep_gpio_table(ARRAY_SIZE(herring_sleep_gpio_table),
herring_sleep_gpio_table);
+ if (is_cdma_wimax_dev())
+ s3c_config_sleep_gpio_table(
+ ARRAY_SIZE(herring_cdma_wimax_sleep_gpio_table),
+ herring_cdma_wimax_sleep_gpio_table);
+
}
static void __init fsa9480_gpio_init(void)
{
- s3c_gpio_cfgpin(GPIO_USB_SEL, S3C_GPIO_OUTPUT);
- s3c_gpio_setpull(GPIO_USB_SEL, S3C_GPIO_PULL_NONE);
+ if (is_cdma_wimax_dev()) {
+ s3c_gpio_cfgpin(GPIO_USB_HS_SEL, S3C_GPIO_OUTPUT);
+ gpio_set_value(GPIO_USB_HS_SEL, 1);
+ } else {
+ s3c_gpio_cfgpin(GPIO_USB_SEL, S3C_GPIO_OUTPUT);
+ s3c_gpio_setpull(GPIO_USB_SEL, S3C_GPIO_PULL_NONE);
+ }
+
s3c_gpio_cfgpin(GPIO_UART_SEL, S3C_GPIO_OUTPUT);
s3c_gpio_setpull(GPIO_UART_SEL, S3C_GPIO_PULL_NONE);