diff mbox

[v4] staging: iio: adc: ad7192: disable burnout currents on misconfig

Message ID 20180118145740.5113-1-alexandru.ardelean@analog.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alexandru Ardelean Jan. 18, 2018, 2:57 p.m. UTC
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>
---

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(-)

Comments

Jonathan Cameron Jan. 20, 2018, 3:26 p.m. UTC | #1
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 mbox

Patch

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)