diff options
author | Raphaël Poggi <poggi.raph@gmail.com> | 2014-09-08 15:07:57 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-09-09 08:07:46 +0200 |
commit | 5dc6c89d84cd6e15549e01b8e4f59087c39db05d (patch) | |
tree | 935c3a5cb5d126b01f977e26ccf50e05dc75adb5 /drivers/pinctrl | |
parent | 9c885a2a6ff1ad0e4b8acfbb7c149d8b72a347a0 (diff) | |
download | barebox-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.c | 11 |
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) { |