Re: [PATCH v2] iio: adc: ade9000: fix wrong register in CALIBBIAS case for active power

From: Andy Shevchenko

Date: Thu Feb 26 2026 - 09:41:53 EST


On Thu, Feb 26, 2026 at 06:07:02PM +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.
>
> Reference:ADE9000 datasheet (Rev. B), AWATTOS is the offset correction
> register at 0x00F (p. 44), while AWATT is the total active power
> register at 0x210 (p. 48).

Please, avoid sending a new version earlier than 24h after the previous one!
I think the best who can review this is somebody with HW. Preferably
one from vendor company.

--
With Best Regards,
Andy Shevchenko