Message ID | 20180118145740.5113-1-alexandru.ardelean@analog.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 18 Jan 2018 16:57:40 +0200 <alexandru.ardelean@analog.com> wrote: > From: Alexandru Ardelean <alexandru.ardelean@analog.com> > > The burnout currents can be enabled only if buffer is enabled > and CHOP is disabled. > > So, if neither of these conditions are met, then > we should disable the burnout currents in the driver as well, > and warn the user. > > This change doesn't fix anything. > The burnout currents simply won't work if CHOP is enabled > or buffer is disabled. > The intent is to provide the user with some feedback > instead of silently not working inside the chip. > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. Thanks, Jonathan > --- > > Changes v3 -> v4: > * need to check if `pdata->burnout_curr_en` is positive on the > else path, otherwise a false warning may be thrown > > drivers/staging/iio/adc/ad7192.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c > index d11c6de9c777..9287b50b7870 100644 > --- a/drivers/staging/iio/adc/ad7192.c > +++ b/drivers/staging/iio/adc/ad7192.c > @@ -291,8 +291,12 @@ static int ad7192_setup(struct ad7192_state *st, > if (pdata->unipolar_en) > st->conf |= AD7192_CONF_UNIPOLAR; > > - if (pdata->burnout_curr_en) > + if (pdata->burnout_curr_en && pdata->buf_en && !pdata->chop_en) { > st->conf |= AD7192_CONF_BURN; > + } else if (pdata->burnout_curr_en) { > + dev_warn(&st->sd.spi->dev, > + "Can't enable burnout currents: see CHOP or buffer\n"); > + } > > ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode); > if (ret) -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c index d11c6de9c777..9287b50b7870 100644 --- a/drivers/staging/iio/adc/ad7192.c +++ b/drivers/staging/iio/adc/ad7192.c @@ -291,8 +291,12 @@ static int ad7192_setup(struct ad7192_state *st, if (pdata->unipolar_en) st->conf |= AD7192_CONF_UNIPOLAR; - if (pdata->burnout_curr_en) + if (pdata->burnout_curr_en && pdata->buf_en && !pdata->chop_en) { st->conf |= AD7192_CONF_BURN; + } else if (pdata->burnout_curr_en) { + dev_warn(&st->sd.spi->dev, + "Can't enable burnout currents: see CHOP or buffer\n"); + } ret = ad_sd_write_reg(&st->sd, AD7192_REG_MODE, 3, st->mode); if (ret)