diff options
author | Philippe Langlais <philippe.langlais@linaro.org> | 2011-05-09 15:17:39 +0200 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@stericsson.com> | 2011-09-19 15:15:06 +0200 |
commit | 94e82af0cabf2185686291eb50c815fc05160dc9 (patch) | |
tree | 196f7f6e1ae439cf25e9535acc1ba28bc9561a51 /arch/arm/mach-ux500/board-mop500-pins.c | |
parent | 00006146d81e866265eb9536f35aeeb29288289d (diff) |
board-mop500: Add cmdline param for GPIO config
Allows ux500 derived boards to override the default GPIO
configuration by passing in pinsfor= in the kernel
command line.
ST-Ericsson ID: 327707
ST-Ericsson FOSS-OUT ID: Trivial
Change-Id: I81ce4025a8cd9ed80fa3f4543ac35806e093f424
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/20364
Reviewed-by: Pawel SZYSZUK <pawel.szyszuk@stericsson.com>
Reviewed-by: Rabin VINCENT <rabin.vincent@stericsson.com>
Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Tested-by: Chris KIMBER <chris.kimber@stericsson.com>
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Conflicts:
arch/arm/mach-ux500/board-mop500-pins.c
Diffstat (limited to 'arch/arm/mach-ux500/board-mop500-pins.c')
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-pins.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c index 71fafd1edb1..3bfe57ec3c7 100644 --- a/arch/arm/mach-ux500/board-mop500-pins.c +++ b/arch/arm/mach-ux500/board-mop500-pins.c @@ -8,6 +8,7 @@ #include <linux/init.h> #include <linux/gpio.h> #include <linux/io.h> +#include <linux/string.h> #include <asm/mach-types.h> #include <plat/pincfg.h> @@ -17,6 +18,13 @@ #include "pins-db8500.h" +enum custom_pin_cfg_t { + PINS_FOR_DEFAULT, + PINS_FOR_U9500_21, +}; + +static enum custom_pin_cfg_t pinsfor = PINS_FOR_DEFAULT; + static pin_cfg_t mop500_pins_common[] = { /* I2C */ GPIO147_I2C0_SCL, @@ -304,6 +312,11 @@ static pin_cfg_t mop500_pins_hrefv60[] = { GPIO95_GPIO | PIN_INPUT_PULLUP, }; +static pin_cfg_t u9500_21_pins[] = { + GPIO4_U1_RXD | PIN_INPUT_PULLUP, + GPIO5_U1_TXD | PIN_OUTPUT_HIGH, +}; + static pin_cfg_t snowball_pins[] = { /* SSP0, to AB8500 */ GPIO143_SSP0_CLK, @@ -602,6 +615,21 @@ void mop500_pins_suspend_force_mux(void) } +/* + * passing "pinsfor=" in kernel cmdline allows for custom + * configuration of GPIOs on u8500 derived boards. + */ +static int __init early_pinsfor(char *p) +{ + pinsfor = PINS_FOR_DEFAULT; + + if (strcmp(p, "u9500-21") == 0) + pinsfor = PINS_FOR_U9500_21; + + return 0; +} +early_param("pinsfor", early_pinsfor); + void __init mop500_pins_init(void) { nmk_config_pins(mop500_pins_common, @@ -615,4 +643,14 @@ void __init mop500_pins_init(void) else nmk_config_pins(mop500_pins_default, ARRAY_SIZE(mop500_pins_default)); + switch (pinsfor) { + case PINS_FOR_U9500_21: + nmk_config_pins(u9500_21_pins, ARRAY_SIZE(u9500_21_pins)); + break; + + case PINS_FOR_DEFAULT: + default: + break; + } } + |