* [PATCH] iio: adc: ad7124: Enable internal reference
@ 2019-11-14 9:24 Mircea Caprioru
2019-11-16 16:26 ` Jonathan Cameron
0 siblings, 1 reply; 2+ messages in thread
From: Mircea Caprioru @ 2019-11-14 9:24 UTC (permalink / raw)
To: jic23
Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel,
linux-iio, Mircea Caprioru
When the internal reference was selected by a channel it was not enabled.
This patch fixes that and enables it.
Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
---
drivers/iio/adc/ad7124.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
index edc6f1cc90b2..3f03abf100b5 100644
--- a/drivers/iio/adc/ad7124.c
+++ b/drivers/iio/adc/ad7124.c
@@ -39,6 +39,8 @@
#define AD7124_STATUS_POR_FLAG_MSK BIT(4)
/* AD7124_ADC_CONTROL */
+#define AD7124_ADC_CTRL_REF_EN_MSK BIT(8)
+#define AD7124_ADC_CTRL_REF_EN(x) FIELD_PREP(AD7124_ADC_CTRL_REF_EN_MSK, x)
#define AD7124_ADC_CTRL_PWR_MSK GENMASK(7, 6)
#define AD7124_ADC_CTRL_PWR(x) FIELD_PREP(AD7124_ADC_CTRL_PWR_MSK, x)
#define AD7124_ADC_CTRL_MODE_MSK GENMASK(5, 2)
@@ -424,7 +426,10 @@ static int ad7124_init_channel_vref(struct ad7124_state *st,
break;
case AD7124_INT_REF:
st->channel_config[channel_number].vref_mv = 2500;
- break;
+ st->adc_control &= ~AD7124_ADC_CTRL_REF_EN_MSK;
+ st->adc_control |= AD7124_ADC_CTRL_REF_EN(1);
+ return ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL,
+ 2, st->adc_control);
default:
dev_err(&st->sd.spi->dev, "Invalid reference %d\n", refsel);
return -EINVAL;
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] iio: adc: ad7124: Enable internal reference
2019-11-14 9:24 [PATCH] iio: adc: ad7124: Enable internal reference Mircea Caprioru
@ 2019-11-16 16:26 ` Jonathan Cameron
0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Cameron @ 2019-11-16 16:26 UTC (permalink / raw)
To: Mircea Caprioru
Cc: Michael.Hennerich, stefan.popa, lars, gregkh, linux-kernel, linux-iio
On Thu, 14 Nov 2019 11:24:26 +0200
Mircea Caprioru <mircea.caprioru@analog.com> wrote:
> When the internal reference was selected by a channel it was not enabled.
> This patch fixes that and enables it.
>
> Signed-off-by: Mircea Caprioru <mircea.caprioru@analog.com>
Probably want to clearly mark this as a fix in the patch title and
give a fixes tag here.
Seems like it would be awfully broken without this!
Jonathan
> ---
> drivers/iio/adc/ad7124.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c
> index edc6f1cc90b2..3f03abf100b5 100644
> --- a/drivers/iio/adc/ad7124.c
> +++ b/drivers/iio/adc/ad7124.c
> @@ -39,6 +39,8 @@
> #define AD7124_STATUS_POR_FLAG_MSK BIT(4)
>
> /* AD7124_ADC_CONTROL */
> +#define AD7124_ADC_CTRL_REF_EN_MSK BIT(8)
> +#define AD7124_ADC_CTRL_REF_EN(x) FIELD_PREP(AD7124_ADC_CTRL_REF_EN_MSK, x)
> #define AD7124_ADC_CTRL_PWR_MSK GENMASK(7, 6)
> #define AD7124_ADC_CTRL_PWR(x) FIELD_PREP(AD7124_ADC_CTRL_PWR_MSK, x)
> #define AD7124_ADC_CTRL_MODE_MSK GENMASK(5, 2)
> @@ -424,7 +426,10 @@ static int ad7124_init_channel_vref(struct ad7124_state *st,
> break;
> case AD7124_INT_REF:
> st->channel_config[channel_number].vref_mv = 2500;
> - break;
> + st->adc_control &= ~AD7124_ADC_CTRL_REF_EN_MSK;
> + st->adc_control |= AD7124_ADC_CTRL_REF_EN(1);
> + return ad_sd_write_reg(&st->sd, AD7124_ADC_CONTROL,
> + 2, st->adc_control);
> default:
> dev_err(&st->sd.spi->dev, "Invalid reference %d\n", refsel);
> return -EINVAL;
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-11-16 16:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-14 9:24 [PATCH] iio: adc: ad7124: Enable internal reference Mircea Caprioru
2019-11-16 16:26 ` Jonathan Cameron
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).