diff options
Diffstat (limited to 'drivers/gpio/gpiolib-of.c')
| -rw-r--r-- | drivers/gpio/gpiolib-of.c | 20 | 
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c index a71a54a3e3f..465f4ca57e8 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -193,7 +193,7 @@ static void of_gpiochip_add_pin_range(struct gpio_chip *chip)  	if (!np)  		return; -	do { +	for (;; index++) {  		ret = of_parse_phandle_with_args(np, "gpio-ranges",  				"#gpio-range-cells", index, &pinspec);  		if (ret) @@ -203,27 +203,15 @@ static void of_gpiochip_add_pin_range(struct gpio_chip *chip)  		if (!pctldev)  			break; -		/* -		 * This assumes that the n GPIO pins are consecutive in the -		 * GPIO number space, and that the pins are also consecutive -		 * in their local number space. Currently it is not possible -		 * to add different ranges for one and the same GPIO chip, -		 * as the code assumes that we have one consecutive range -		 * on both, mapping 1-to-1. -		 * -		 * TODO: make the OF bindings handle multiple sparse ranges -		 * on the same GPIO chip. -		 */  		ret = gpiochip_add_pin_range(chip,  					     pinctrl_dev_get_devname(pctldev), -					     0, /* offset in gpiochip */  					     pinspec.args[0], -					     pinspec.args[1]); +					     pinspec.args[1], +					     pinspec.args[2]);  		if (ret)  			break; - -	} while (index++); +	}  }  #else  |