diff options
| author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2020-07-13 18:44:29 +0300 | 
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2020-07-16 15:07:18 +0200 | 
| commit | 761b5c30c206ba1788c6ceb23e5812f319548b52 (patch) | |
| tree | bbbfb850a0bad01e0a564ff291cde2cbc6627cae /drivers/gpio/gpio-mmio.c | |
| parent | 4dc5794cf207a2f9992a91426fe0413aab77e1cd (diff) | |
gpio: mmio: replace open-coded for_each_set_bit()
Use for_each_set_bit() instead of open-coding it to simplify the code.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20200713154429.23662-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-mmio.c')
| -rw-r--r-- | drivers/gpio/gpio-mmio.c | 20 | 
1 files changed, 7 insertions, 13 deletions
| diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c index b778f33cc6af..c335a0309ba3 100644 --- a/drivers/gpio/gpio-mmio.c +++ b/drivers/gpio/gpio-mmio.c @@ -195,8 +195,7 @@ static int bgpio_get_multiple_be(struct gpio_chip *gc, unsigned long *mask,  	*bits &= ~*mask;  	/* Create a mirrored mask */ -	bit = -1; -	while ((bit = find_next_bit(mask, gc->ngpio, bit + 1)) < gc->ngpio) +	for_each_set_bit(bit, mask, gc->ngpio)  		readmask |= bgpio_line2mask(gc, bit);  	/* Read the register */ @@ -206,8 +205,7 @@ static int bgpio_get_multiple_be(struct gpio_chip *gc, unsigned long *mask,  	 * Mirror the result into the "bits" result, this will give line 0  	 * in bit 0 ... line 31 in bit 31 for a 32bit register.  	 */ -	bit = -1; -	while ((bit = find_next_bit(&val, gc->ngpio, bit + 1)) < gc->ngpio) +	for_each_set_bit(bit, &val, gc->ngpio)  		*bits |= bgpio_line2mask(gc, bit);  	return 0; @@ -272,15 +270,11 @@ static void bgpio_multiple_get_masks(struct gpio_chip *gc,  	*set_mask = 0;  	*clear_mask = 0; -	for (i = 0; i < gc->bgpio_bits; i++) { -		if (*mask == 0) -			break; -		if (__test_and_clear_bit(i, mask)) { -			if (test_bit(i, bits)) -				*set_mask |= bgpio_line2mask(gc, i); -			else -				*clear_mask |= bgpio_line2mask(gc, i); -		} +	for_each_set_bit(i, mask, gc->bgpio_bits) { +		if (test_bit(i, bits)) +			*set_mask |= bgpio_line2mask(gc, i); +		else +			*clear_mask |= bgpio_line2mask(gc, i);  	}  } | 
