public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: adc: ade9000: fix wrong register in CALIBBIAS case
@ 2026-02-26 13:37 Giorgi Tchankvetadze
  2026-02-26 13:44 ` Andy Shevchenko
  0 siblings, 1 reply; 3+ messages in thread
From: Giorgi Tchankvetadze @ 2026-02-26 13:37 UTC (permalink / raw)
  To: antoniu.miclaus
  Cc: lars, Michael.Hennerich, jic23, dlechner, nuno.sa, andy,
	linux-iio, linux-kernel, Giorgi Tchankvetadze

The switch statement in ade9000_write_raw() attempts to match
chan->address against ADE9000_REG_AWATTOS (0x00F) to dispatch
the calibration offset write for active power channels. However,
chan->address is set via ADE9000_ADDR_ADJUST(ADE9000_REG_AWATT,
num), so after masking the phase bits, tmp holds
ADE9000_REG_AWATT (0x210), which never matches 0x00F.

As a result, writing IIO_CHAN_INFO_CALIBBIAS for IIO_POWER always
falls through to the default case and returns -EINVAL, making
active power offset calibration silently broken.

Fix this by matching against ADE9000_REG_AWATT instead, which is
the actual base address stored in chan->address for watt channels.

Signed-off-by: Giorgi Tchankvetadze <giorgitchankvetadze1997@gmail.com>
---
 drivers/iio/adc/ade9000.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ade9000.c b/drivers/iio/adc/ade9000.c
index 5dcc26a08970..1499fb1c718a 100644
--- a/drivers/iio/adc/ade9000.c
+++ b/drivers/iio/adc/ade9000.c
@@ -1123,7 +1123,7 @@ static int ade9000_write_raw(struct iio_dev *indio_dev,
 			tmp &= ~ADE9000_PHASE_C_POS_BIT;
 
 			switch (tmp) {
-			case ADE9000_REG_AWATTOS:
+			case ADE9000_REG_AWATT:
 				return regmap_write(st->regmap,
 						    ADE9000_ADDR_ADJUST(ADE9000_REG_AWATTOS,
 									chan->channel), val);
-- 
2.52.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] iio: adc: ade9000: fix wrong register in CALIBBIAS case
  2026-02-26 13:37 [PATCH] iio: adc: ade9000: fix wrong register in CALIBBIAS case Giorgi Tchankvetadze
@ 2026-02-26 13:44 ` Andy Shevchenko
  2026-02-26 14:05   ` Giorgi Tchankvetadze
  0 siblings, 1 reply; 3+ messages in thread
From: Andy Shevchenko @ 2026-02-26 13:44 UTC (permalink / raw)
  To: Giorgi Tchankvetadze
  Cc: antoniu.miclaus, lars, Michael.Hennerich, jic23, dlechner,
	nuno.sa, andy, linux-iio, linux-kernel

On Thu, Feb 26, 2026 at 05:37:42PM +0400, Giorgi Tchankvetadze wrote:
> The switch statement in ade9000_write_raw() attempts to match
> chan->address against ADE9000_REG_AWATTOS (0x00F) to dispatch
> the calibration offset write for active power channels. However,
> chan->address is set via ADE9000_ADDR_ADJUST(ADE9000_REG_AWATT,
> num), so after masking the phase bits, tmp holds
> ADE9000_REG_AWATT (0x210), which never matches 0x00F.
> 
> As a result, writing IIO_CHAN_INFO_CALIBBIAS for IIO_POWER always
> falls through to the default case and returns -EINVAL, making
> active power offset calibration silently broken.
> 
> Fix this by matching against ADE9000_REG_AWATT instead, which is
> the actual base address stored in chan->address for watt channels.

Sounds like a good fix, but:
- needs a Fixes tag
- needs a reference to datasheet section / table / et cetera to prove the point

Also, how did you found this? Code inspection? Testing on real HW?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] iio: adc: ade9000: fix wrong register in CALIBBIAS case
  2026-02-26 13:44 ` Andy Shevchenko
@ 2026-02-26 14:05   ` Giorgi Tchankvetadze
  0 siblings, 0 replies; 3+ messages in thread
From: Giorgi Tchankvetadze @ 2026-02-26 14:05 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: antoniu.miclaus, lars, Michael.Hennerich, jic23, dlechner,
	nuno.sa, andy, linux-iio, linux-kernel

On Thu, Feb 26, 2026 at 5:44 PM Andy Shevchenko
<andriy.shevchenko@intel.com> wrote:
> Sounds like a good fix, but:
> - needs a Fixes tag
> - needs a reference to datasheet section / table / et cetera to prove the point

Added both in v2.

> Also, how did you found this? Code inspection? Testing on real HW?

Code inspection. Unfortunately, I do not have a real hardware yet

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-02-26 14:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-26 13:37 [PATCH] iio: adc: ade9000: fix wrong register in CALIBBIAS case Giorgi Tchankvetadze
2026-02-26 13:44 ` Andy Shevchenko
2026-02-26 14:05   ` Giorgi Tchankvetadze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox