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

Aldo Conte <[email protected]> Sun, 26 Jul 2026 13:44:19 +0200
Newsgroups dev.linux.lists.linux-kernel-mentees,org.kernel.vger.linux-iio,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
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?

Thanks,
Aldo