Re: [PATCH v4 1/2] iio: light: cm3323: fix reg_conf not being initialized correctly

Jonathan Cameron <[email protected]>
Newsgroups org.kernel.vger.linux-iio,dev.linux.lists.linux-kernel-mentees,org.kernel.vger.linux-kernel
Message-ID <20260727032702.12d1f7bb@jic23-huawei>
On Sun, 26 Jul 2026 13:44:19 +0200
Aldo Conte <[email protected]> wrote:

> On 20/04/26 19:53, Jonathan Cameron wrote:
> > On Tue,  7 Apr 2026 17:17:01 +0200
> > Aldo Conte <[email protected]> wrote:
> >   
> >> The code stores the return value of i2c_smbus_write_word_data()
> >> in data->reg_conf; however, this value represents the result
> >> of the write operation and not the value actually written to
> >> the configuration register. This meant that the contents of
> >> data->reg_conf did not truly reflect the contents
> >> of the hardware register.
> >>
> >> Instead, save the value of the register before the write
> >> and use this value in the I2C write.
> >>
> >> The bug was found by code inspection: i2c_smbus_write_word_data()
> >> returns 0 on success, not the value written to the register.
> >>
> >> Tested using i2c-stub on a Raspberry Pi 3B running a custom 6.19.10
> >> kernel. Before loading the driver, the configuration register 0x00
> >> CM3323_CMD_CONF was populated with 0x0030 using
> >> `i2cset -y 11 0x10 0x00 0x0030 w`, encoding an integration time of 320ms
> >> in bits[6:4].
> >>
> >> Due to incorrect initialization of data->reg_conf in
> >> cm3323_init(), the print of integration_time returns 0.040000
> >> instead of the expected 0.320000. This happens because the read of the
> >> integration_time depends on cm3323_get_it_bits() that is based on the
> >> value of data->reg_conf, which is erroneously set to 0.
> >>
> >> With this fix applied, data->reg_conf correctly saves 0x0030 after init
> >> and the successive integration_time reports 0.320000 as expected.
> >>
> >> Fixes: 8b0544263761 ("iio: light: Add support for Capella CM3323 color sensor")
> >> Cc: [email protected]
> >> Signed-off-by: Aldo Conte <[email protected]>  
> > Applied this patch, but patch 2 will need to wait for this to make its way
> > into upstream - probably middle of the next cycle before that is in place.
> > 
> > thanks,
> > 
> > Jonathan
> >   
> 
> Hi Jonathan,
> 
> The fix this depended on (commit 1f4f0bcc5255 "iio: light: cm3323: fix
> reg_conf not being initialized correctly") has since landed in mainline.
> 
> Is there anything still needed on my side for patch 2 (iio: light: cm3323: use 
> dev_err_probe() in probe path) to proceed?
Good thing you checked - I'd marked it wrong in patchwork and so had lost
track of it :(

Fixed that now and applied to the testing branch of iio.git

Thanks

Jonathan



> 
> Thanks,
> Aldo
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.