iio: addac: ad74413r: correct comparator gpio getters mask usage
authorCosmin Tanislav <demonsingur@gmail.com>
Tue, 11 Jan 2022 07:47:02 +0000 (09:47 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 30 Jan 2022 14:23:33 +0000 (14:23 +0000)
The value of the GPIOs is currently altered using offsets rather
than masks. Make use of __assign_bit and the BIT macro to turn
the offsets into masks.

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-2-cosmin.tanislav@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/addac/ad74413r.c

index 4f4dce4..acd230a 100644 (file)
@@ -134,7 +134,6 @@ struct ad74413r_state {
 #define AD74413R_CH_EN_MASK(x)         BIT(x)
 
 #define AD74413R_REG_DIN_COMP_OUT              0x25
-#define AD74413R_DIN_COMP_OUT_SHIFT_X(x)       x
 
 #define AD74413R_REG_ADC_RESULT_X(x)   (0x26 + (x))
 #define AD74413R_ADC_RESULT_MAX                GENMASK(15, 0)
@@ -316,7 +315,7 @@ static int ad74413r_gpio_get(struct gpio_chip *chip, unsigned int offset)
        if (ret)
                return ret;
 
-       status &= AD74413R_DIN_COMP_OUT_SHIFT_X(real_offset);
+       status &= BIT(real_offset);
 
        return status ? 1 : 0;
 }
@@ -337,8 +336,7 @@ static int ad74413r_gpio_get_multiple(struct gpio_chip *chip,
        for_each_set_bit_from(offset, mask, chip->ngpio) {
                unsigned int real_offset = st->comp_gpio_offsets[offset];
 
-               if (val & BIT(real_offset))
-                       *bits |= offset;
+               __assign_bit(offset, bits, val & BIT(real_offset));
        }
 
        return ret;