Re: [PATCH] iio: adc: ade9000: fix wrong register in CALIBBIAS case

From: Andy Shevchenko

Date: Thu Feb 26 2026 - 08:52:16 EST


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