diff options
Diffstat (limited to 'drivers/pinctrl/stm32')
| -rw-r--r-- | drivers/pinctrl/stm32/pinctrl-stm32.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c index 24764ebcc936..9ed764731570 100644 --- a/drivers/pinctrl/stm32/pinctrl-stm32.c +++ b/drivers/pinctrl/stm32/pinctrl-stm32.c @@ -1251,10 +1251,10 @@ static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl,  		bank_nr = args.args[1] / STM32_GPIO_PINS_PER_BANK;  		bank->gpio_chip.base = args.args[1]; -		npins = args.args[2]; -		while (!of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, -							 ++i, &args)) -			npins += args.args[2]; +		/* get the last defined gpio line (offset + nb of pins) */ +		npins = args.args[0] + args.args[2]; +		while (!of_parse_phandle_with_fixed_args(np, "gpio-ranges", 3, ++i, &args)) +			npins = max(npins, (int)(args.args[0] + args.args[2]));  	} else {  		bank_nr = pctl->nbanks;  		bank->gpio_chip.base = bank_nr * STM32_GPIO_PINS_PER_BANK; |