mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
iio: light: cm3232: Reset before reading HW ID
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@capellamicro.com> Signed-off-by: Cibil Pankiras <cibil.pankiras@aerq.com> Link: https://patch.msgid.link/20241114091323.7415-1-cibil.pankiras@aerq.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
2d69419329
commit
df81f90c50
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user