iio: addac: ad74413r: use ngpio size when iterating over mask
authorCosmin Tanislav <demonsingur@gmail.com>
Tue, 11 Jan 2022 07:47:01 +0000 (09:47 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 30 Jan 2022 14:22:21 +0000 (14:22 +0000)
ngpio is the actual number of GPIOs handled by the GPIO chip,
as opposed to the max number of GPIOs.

Fixes: fea251b6a5db ("iio: addac: add AD74413R driver")
Signed-off-by: Cosmin Tanislav <cosmin.tanislav@analog.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20220111074703.3677392-1-cosmin.tanislav@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/addac/ad74413r.c

index aba9a64..4f4dce4 100644 (file)
@@ -288,7 +288,7 @@ static void ad74413r_gpio_set_multiple(struct gpio_chip *chip,
        unsigned int offset = 0;
        int ret;
 
-       for_each_set_bit_from(offset, mask, AD74413R_CHANNEL_MAX) {
+       for_each_set_bit_from(offset, mask, chip->ngpio) {
                unsigned int real_offset = st->gpo_gpio_offsets[offset];
 
                ret = ad74413r_set_gpo_config(st, real_offset,
@@ -334,7 +334,7 @@ static int ad74413r_gpio_get_multiple(struct gpio_chip *chip,
        if (ret)
                return ret;
 
-       for_each_set_bit_from(offset, mask, AD74413R_CHANNEL_MAX) {
+       for_each_set_bit_from(offset, mask, chip->ngpio) {
                unsigned int real_offset = st->comp_gpio_offsets[offset];
 
                if (val & BIT(real_offset))