summaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/board-mop500-pins.c
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@stericsson.com>2011-10-17 09:23:45 +0200
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 08:54:35 +0100
commit0907edbcbaf97d47de3dcd33984777048c31c470 (patch)
tree656f1c570a49092b2d9954719f5c587e7ba211c9 /arch/arm/mach-ux500/board-mop500-pins.c
parentf4bd9341573e2117c8f03a7ca23ff779bf7c79a7 (diff)
u9500: GPIO conflicts with external modem
On 8500, GPIO226 is used to set WLAN_PMU_EN for startup. More details in CR 326583. On 9500, GPIO226 is reserved for HSIT_CAWAKE0, and WLAN_PMU_EN is mapped on AB_GPIO11. WLAN_IRQ has been moved from GPIO04 on 8500 to GPIO144 on 9500 because GPIO04 is used for UART1 RX. ST-Ericsson ID: 354110 ST-Ericsson FOSS-OUT ID: Trivial ST-Ericsson Linux next: NA
Diffstat (limited to 'arch/arm/mach-ux500/board-mop500-pins.c')
-rw-r--r--arch/arm/mach-ux500/board-mop500-pins.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c
index 120b3db1a78..726cc13fbee 100644
--- a/arch/arm/mach-ux500/board-mop500-pins.c
+++ b/arch/arm/mach-ux500/board-mop500-pins.c
@@ -22,10 +22,10 @@
enum custom_pin_cfg_t {
PINS_FOR_DEFAULT,
- PINS_FOR_U9500_21,
+ PINS_FOR_U9500,
};
-static enum custom_pin_cfg_t pinsfor = PINS_FOR_DEFAULT;
+static enum custom_pin_cfg_t pinsfor;
static pin_cfg_t mop500_pins_common[] = {
/* MSP0 */
@@ -93,7 +93,6 @@ static pin_cfg_t mop500_pins_default[] = {
static pin_cfg_t hrefv60_pins[] = {
/* WLAN */
- GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */
GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */
/* XENON Flashgun INTERFACE */
@@ -174,9 +173,16 @@ static pin_cfg_t hrefv60_pins[] = {
GPIO95_GPIO | PIN_INPUT_PULLUP,
};
-static pin_cfg_t u9500_21_pins[] = {
+static pin_cfg_t u9500_pins[] = {
GPIO4_U1_RXD | PIN_INPUT_PULLUP,
GPIO5_U1_TXD | PIN_OUTPUT_HIGH,
+ GPIO144_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */
+ GPIO226_GPIO | PIN_OUTPUT_HIGH, /* HSI AC_WAKE0 */
+};
+
+static pin_cfg_t u8500_pins[] = {
+ GPIO226_GPIO | PIN_OUTPUT_LOW, /* WLAN_PMU_EN */
+ GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */
};
static pin_cfg_t snowball_pins[] = {
@@ -885,12 +891,20 @@ static int __init early_pinsfor(char *p)
pinsfor = PINS_FOR_DEFAULT;
if (strcmp(p, "u9500-21") == 0)
- pinsfor = PINS_FOR_U9500_21;
+ pinsfor = PINS_FOR_U9500;
return 0;
}
early_param("pinsfor", early_pinsfor);
+int pins_for_u9500(void)
+{
+ if (pinsfor == PINS_FOR_U9500)
+ return 1;
+
+ return 0;
+}
+
void __init mop500_pins_init(void)
{
nmk_config_pins(mop500_pins_common,
@@ -902,11 +916,12 @@ void __init mop500_pins_init(void)
ux500_pins_add(mop500_pins, ARRAY_SIZE(mop500_pins));
switch (pinsfor) {
- case PINS_FOR_U9500_21:
- nmk_config_pins(u9500_21_pins, ARRAY_SIZE(u9500_21_pins));
+ case PINS_FOR_U9500:
+ nmk_config_pins(u9500_pins, ARRAY_SIZE(u9500_pins));
break;
case PINS_FOR_DEFAULT:
+ nmk_config_pins(u8500_pins, ARRAY_SIZE(u8500_pins));
default:
break;
}