aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert MARKLUND <robert.marklund@stericsson.com>2011-12-08 09:34:58 +0100
committerMathieu J. Poirier <mathieu.poirier@linaro.org>2012-03-15 14:36:34 -0600
commit410dc88d192ee2a4c4bc7054f2b23bef0d176657 (patch)
tree84e0d2fb4affd23d07349176c49e27b66c89e420
parent2c0662f3d654fb965a46df591141ef48546b98ba (diff)
cg2900: Change the PMU_EN gpio for snowball
Snowball have the GPIO_EN on GPIO161 diffrent from u8500. Change-Id: I6dddb1e3d7b7b80ce046fbd92a7852a3d0a6c59d Signed-off-by: Robert Marklund <robert.marklund@stericsson.com>
-rw-r--r--arch/arm/mach-ux500/board-mop500-pins.c1
-rw-r--r--drivers/staging/cg2900/board-ux500-cg2900.c47
2 files changed, 42 insertions, 6 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c
index 8f9b02e252f..43d87c1f4df 100644
--- a/arch/arm/mach-ux500/board-mop500-pins.c
+++ b/arch/arm/mach-ux500/board-mop500-pins.c
@@ -235,6 +235,7 @@ static pin_cfg_t snowball_pins[] = {
GPIO165_GPIO | PIN_INPUT_PULLUP, /* MAG_DRDY */
/* WLAN/GBF */
+ GPIO161_GPIO | PIN_OUTPUT_LOW, /* WLAN_PMU_EN */
GPIO171_GPIO | PIN_OUTPUT_HIGH,/* GBF_ENA */
GPIO215_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */
GPIO216_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */
diff --git a/drivers/staging/cg2900/board-ux500-cg2900.c b/drivers/staging/cg2900/board-ux500-cg2900.c
index cd25ff0a277..ca3902b4e2d 100644
--- a/drivers/staging/cg2900/board-ux500-cg2900.c
+++ b/drivers/staging/cg2900/board-ux500-cg2900.c
@@ -32,9 +32,10 @@
#define CG2900_BT_ENABLE_GPIO 170
#define CG2900_GBF_ENA_RESET_GPIO 171
#define WLAN_PMU_EN_GPIO 226
+#define WLAN_PMU_EN_GPIO_SNOWBALL 161
#define WLAN_PMU_EN_GPIO_U9500 AB8500_PIN_GPIO11
-#define CG2900_UX500_BT_CTS_GPIO 0
-#define CG2900_U5500_BT_CTS_GPIO 168
+#define CG2900_UX500_BT_CTS_GPIO 0
+#define CG2900_U5500_BT_CTS_GPIO 168
enum cg2900_gpio_pull_sleep ux500_cg2900_sleep_gpio[21] = {
CG2900_NO_PULL, /* GPIO 0: PTA_CONFX */
@@ -160,6 +161,34 @@ static struct resource cg2900_uart_resources_u8500[] = {
},
};
+static struct resource cg2900_uart_resources_snowball[] = {
+ {
+ .start = CG2900_GBF_ENA_RESET_GPIO,
+ .end = CG2900_GBF_ENA_RESET_GPIO,
+ .flags = IORESOURCE_IO,
+ .name = "gbf_ena_reset",
+ },
+ {
+ .start = WLAN_PMU_EN_GPIO_SNOWBALL,
+ .end = WLAN_PMU_EN_GPIO_SNOWBALL,
+ .flags = IORESOURCE_IO,
+ .name = "pmu_en",
+ },
+ {
+ .start = CG2900_UX500_BT_CTS_GPIO,
+ .end = CG2900_UX500_BT_CTS_GPIO,
+ .flags = IORESOURCE_IO,
+ .name = "cts_gpio",
+ },
+ {
+ .start = NOMADIK_GPIO_TO_IRQ(CG2900_UX500_BT_CTS_GPIO),
+ .end = NOMADIK_GPIO_TO_IRQ(CG2900_UX500_BT_CTS_GPIO),
+ .flags = IORESOURCE_IRQ,
+ .name = "cts_irq",
+ },
+};
+
+
static struct resource cg2900_uart_resources_u9500[] = {
{
.start = CG2900_GBF_ENA_RESET_GPIO,
@@ -275,15 +304,21 @@ static int __init board_cg2900_init(void)
if (machine_is_hrefv60()) {
/* u8500 */
ux500_cg2900_uart_device.num_resources =
- ARRAY_SIZE(cg2900_uart_resources_u8500);
+ ARRAY_SIZE(cg2900_uart_resources_u8500);
+ ux500_cg2900_uart_device.resource =
+ cg2900_uart_resources_u8500;
+ } else if (machine_is_snowball()) {
+ /* snowball have diffrent PMU_EN gpio */
+ ux500_cg2900_uart_device.num_resources =
+ ARRAY_SIZE(cg2900_uart_resources_snowball);
ux500_cg2900_uart_device.resource =
- cg2900_uart_resources_u8500;
+ cg2900_uart_resources_snowball;
} else {
/* u8500 pre v60*/
ux500_cg2900_uart_device.num_resources =
- ARRAY_SIZE(cg2900_uart_resources_pre_v60);
+ ARRAY_SIZE(cg2900_uart_resources_pre_v60);
ux500_cg2900_uart_device.resource =
- cg2900_uart_resources_pre_v60;
+ cg2900_uart_resources_pre_v60;
}
} else if (cpu_is_u5500()) {
/* u5500 */