gpio/rockchip: rk_gpio correct pin count for each bank

Do 'gpio status -a' will cause system crash, due to the pins number
error for gpio4 (last gpio controller).

Test on RV1126 IOTEST board, which has only 8 pins for GPIO4.

Change-Id: I4150abd0ca97bc4f3043eb7fcae2287818125031
Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
This commit is contained in:
Jianqun Xu 2020-05-28 11:01:58 +08:00 committed by Jianhong Chen
parent 33f8d8a65e
commit 7d13e745d6
1 changed files with 5 additions and 0 deletions

View File

@ -101,6 +101,7 @@ static int rockchip_gpio_probe(struct udevice *dev)
struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
struct rockchip_gpio_priv *priv = dev_get_priv(dev);
char *end;
int pins_num;
int ret;
priv->regs = dev_read_addr_ptr(dev);
@ -114,6 +115,10 @@ static int rockchip_gpio_probe(struct udevice *dev)
priv->name[0] = 'A' + priv->bank;
uc_priv->bank_name = priv->name;
pins_num = pinctrl_get_pins_count(priv->pinctrl);
if ((priv->bank + 1) * ROCKCHIP_GPIOS_PER_BANK >= pins_num)
uc_priv->gpio_count = pins_num - priv->bank * ROCKCHIP_GPIOS_PER_BANK;
return 0;
}