summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorRaphaël Poggi <poggi.raph@gmail.com>2014-09-08 15:07:57 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-09-09 08:07:46 +0200
commit5dc6c89d84cd6e15549e01b8e4f59087c39db05d (patch)
tree935c3a5cb5d126b01f977e26ccf50e05dc75adb5 /drivers/pinctrl
parent9c885a2a6ff1ad0e4b8acfbb7c149d8b72a347a0 (diff)
downloadbarebox-5dc6c89d84cd6e15549e01b8e4f59087c39db05d.tar.gz
barebox-5dc6c89d84cd6e15549e01b8e4f59087c39db05d.tar.xz
pinctrl: at91: retrieve device id in non dtb probe
We need to retrieve the device id in device tree/non device tree case. Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pinctrl-at91.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index db802979d7..29e54cf6cb 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -620,9 +620,14 @@ static int at91_gpio_probe(struct device_d *dev)
struct at91_gpio_chip *at91_gpio;
struct clk *clk;
int ret;
- int alias_idx = of_alias_get_id(dev->device_node, "gpio");
+ int alias_idx;
- BUG_ON(dev->id > MAX_GPIO_BANKS);
+ if (dev->device_node)
+ alias_idx = of_alias_get_id(dev->device_node, "gpio");
+ else
+ alias_idx = dev->id;
+
+ BUG_ON(alias_idx > MAX_GPIO_BANKS);
at91_gpio = &gpio_chip[alias_idx];
@@ -654,7 +659,7 @@ static int at91_gpio_probe(struct device_d *dev)
at91_gpio->chip.ops = &at91_gpio_ops;
at91_gpio->chip.ngpio = MAX_NB_GPIO_PER_BANK;
at91_gpio->chip.dev = dev;
- at91_gpio->chip.base = dev->id * MAX_NB_GPIO_PER_BANK;
+ at91_gpio->chip.base = alias_idx * MAX_NB_GPIO_PER_BANK;
ret = gpiochip_add(&at91_gpio->chip);
if (ret) {