mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
iio: light: cm32181: Change reg_init to use a bitmap of which registers to init
This is a preparation patch for reading some ACPI tables which give init values for multiple registers. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
c1e62062ff
commit
7574cb1df4
@ -27,7 +27,7 @@
|
||||
#define CM32181_REG_ADDR_ID 0x07
|
||||
|
||||
/* Number of Configurable Registers */
|
||||
#define CM32181_CONF_REG_NUM 0x01
|
||||
#define CM32181_CONF_REG_NUM 4
|
||||
|
||||
/* CMD register */
|
||||
#define CM32181_CMD_ALS_DISABLE BIT(0)
|
||||
@ -54,10 +54,6 @@
|
||||
|
||||
#define SMBUS_ALERT_RESPONSE_ADDRESS 0x0c
|
||||
|
||||
static const u8 cm32181_reg[CM32181_CONF_REG_NUM] = {
|
||||
CM32181_REG_ADDR_CMD,
|
||||
};
|
||||
|
||||
/* CM3218 Family */
|
||||
static const int cm3218_als_it_bits[] = { 0, 1, 2, 3 };
|
||||
static const int cm3218_als_it_values[] = { 100000, 200000, 400000, 800000 };
|
||||
@ -72,6 +68,7 @@ struct cm32181_chip {
|
||||
struct i2c_client *client;
|
||||
struct mutex lock;
|
||||
u16 conf_regs[CM32181_CONF_REG_NUM];
|
||||
unsigned long init_regs_bitmap;
|
||||
int calibscale;
|
||||
int num_als_it;
|
||||
const int *als_it_bits;
|
||||
@ -116,12 +113,13 @@ static int cm32181_reg_init(struct cm32181_chip *cm32181)
|
||||
/* Default Values */
|
||||
cm32181->conf_regs[CM32181_REG_ADDR_CMD] =
|
||||
CM32181_CMD_ALS_IT_DEFAULT | CM32181_CMD_ALS_SM_DEFAULT;
|
||||
cm32181->init_regs_bitmap = BIT(CM32181_REG_ADDR_CMD);
|
||||
cm32181->calibscale = CM32181_CALIBSCALE_DEFAULT;
|
||||
|
||||
/* Initialize registers*/
|
||||
for (i = 0; i < CM32181_CONF_REG_NUM; i++) {
|
||||
ret = i2c_smbus_write_word_data(client, cm32181_reg[i],
|
||||
cm32181->conf_regs[i]);
|
||||
for_each_set_bit(i, &cm32181->init_regs_bitmap, CM32181_CONF_REG_NUM) {
|
||||
ret = i2c_smbus_write_word_data(client, i,
|
||||
cm32181->conf_regs[i]);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user