summaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/board-mop500-pins.c
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@linaro.org>2011-05-09 15:17:39 +0200
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 15:15:06 +0200
commit94e82af0cabf2185686291eb50c815fc05160dc9 (patch)
tree196f7f6e1ae439cf25e9535acc1ba28bc9561a51 /arch/arm/mach-ux500/board-mop500-pins.c
parent00006146d81e866265eb9536f35aeeb29288289d (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.c38
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;
+ }
}
+