Messages in this thread | | | From | Andy Shevchenko <> | Date | Sun, 19 Jun 2022 12:55:41 +0200 | Subject | Re: [PATCH v3 11/16] iio: adc: axp20x_adc: Add support for AXP192 |
| |
On Sat, Jun 18, 2022 at 11:40 PM Aidan MacDonald <aidanmacdonald.0x0@gmail.com> wrote: > > The AXP192 is identical to the AXP20x, except for the addition of > two more GPIO ADC channels.
...
> +static int axp192_write_raw(struct iio_dev *indio_dev, > + struct iio_chan_spec const *chan, int val, int val2, > + long mask) > +{ > + struct axp20x_adc_iio *info = iio_priv(indio_dev); > + unsigned int regmask, regval; > + > + /* > + * The AXP192 PMIC allows the user to choose between 0V and 0.7V offsets > + * for (independently) GPIO0-3 when in ADC mode. > + */ > + if (mask != IIO_CHAN_INFO_OFFSET) > + return -EINVAL; > + > + if (val != 0 && val != 700000) > + return -EINVAL;
> + regval = val ? 1 : 0; > +
As per comment against the previous patch use !!val directly?
> + switch (chan->channel) { > + case AXP192_GPIO0_V: > + regmask = AXP192_GPIO30_IN_RANGE_GPIO0; > + regval = FIELD_PREP(AXP192_GPIO30_IN_RANGE_GPIO0, regval); > + break; > + > + case AXP192_GPIO1_V: > + regmask = AXP192_GPIO30_IN_RANGE_GPIO1; > + regval = FIELD_PREP(AXP192_GPIO30_IN_RANGE_GPIO1, regval); > + break; > + > + case AXP192_GPIO2_V: > + regmask = AXP192_GPIO30_IN_RANGE_GPIO2; > + regval = FIELD_PREP(AXP192_GPIO30_IN_RANGE_GPIO2, regval); > + break; > + > + case AXP192_GPIO3_V: > + regmask = AXP192_GPIO30_IN_RANGE_GPIO3; > + regval = FIELD_PREP(AXP192_GPIO30_IN_RANGE_GPIO3, regval); > + break; > + > + default: > + return -EINVAL; > + } > + > + return regmap_update_bits(info->regmap, AXP192_GPIO30_IN_RANGE, regmask, regval); > +}
-- With Best Regards, Andy Shevchenko
| |