Skip to content

Commit

Permalink
iio: addac: ad74413r: correct comparator gpio getters mask usage
Browse files Browse the repository at this point in the history
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: fea251b ("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>
  • Loading branch information
Cosmin Tanislav authored and Jonathan Cameron committed Jan 30, 2022
1 parent 8a3e4a5 commit 4165456
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions drivers/iio/addac/ad74413r.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
Expand Down

0 comments on commit 4165456

Please sign in to comment.