On Thu, 14 Nov 2024 10:13:23 +0100 Cibil Pankiras <cibil.pankiras@xxxxxxxx> wrote: > According to the datasheet, the chip requires a reset before any data > can be read. This commit moves the device identification logic to > occur after the reset to ensure proper initialization. > > Cc: Kevin Tsai <ktsai@xxxxxxxxxxxxxxxx> > Signed-off-by: Cibil Pankiras <cibil.pankiras@xxxxxxxx> Hi Cibil, This is an interesting corner, because if the ID register isn't going to match, chances are that write just wrote wrong data to something else. Ah well, the firmware should be correct so I'm not sure I care about that change. Applied but to the togreg branch of iio.git, not as a fix because it does make me a little nervous and I'd like to not rush it in! Thanks, Jonathan > --- > drivers/iio/light/cm3232.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/iio/light/cm3232.c b/drivers/iio/light/cm3232.c > index b6288dd25bbf..5b00ad2a014e 100644 > --- a/drivers/iio/light/cm3232.c > +++ b/drivers/iio/light/cm3232.c > @@ -89,6 +89,15 @@ static int cm3232_reg_init(struct cm3232_chip *chip) > > chip->als_info = &cm3232_als_info_default; > > + /* Disable and reset device */ > + chip->regs_cmd = CM3232_CMD_ALS_DISABLE | CM3232_CMD_ALS_RESET; > + ret = i2c_smbus_write_byte_data(client, CM3232_REG_ADDR_CMD, > + chip->regs_cmd); > + if (ret < 0) { > + dev_err(&chip->client->dev, "Error writing reg_cmd\n"); > + return ret; > + } > + > /* Identify device */ > ret = i2c_smbus_read_word_data(client, CM3232_REG_ADDR_ID); > if (ret < 0) { > @@ -99,15 +108,6 @@ static int cm3232_reg_init(struct cm3232_chip *chip) > if ((ret & 0xFF) != chip->als_info->hw_id) > return -ENODEV; > > - /* Disable and reset device */ > - chip->regs_cmd = CM3232_CMD_ALS_DISABLE | CM3232_CMD_ALS_RESET; > - ret = i2c_smbus_write_byte_data(client, CM3232_REG_ADDR_CMD, > - chip->regs_cmd); > - if (ret < 0) { > - dev_err(&chip->client->dev, "Error writing reg_cmd\n"); > - return ret; > - } > - > /* Register default value */ > chip->regs_cmd = chip->als_info->regs_cmd_default; >