Commit 7574cb1d authored by Hans de Goede's avatar Hans de Goede Committed by Jonathan Cameron
Browse files

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: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent c1e62062
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -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,11 +113,12 @@ 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],
	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;