Lines Matching refs:cm32181

91 static int cm32181_read_als_it(struct cm32181_chip *cm32181, int *val2);
140 static void cm32181_acpi_parse_cpm_tables(struct cm32181_chip *cm32181)
143 struct device *dev = cm32181->dev;
152 cm32181->init_regs_bitmap = vals[CPM0_REGS_BITMAP];
153 cm32181->init_regs_bitmap &= GENMASK(count - 1, 0);
154 for_each_set_bit(i, &cm32181->init_regs_bitmap, count)
155 cm32181->conf_regs[i] = vals[CPM0_HEADER_SIZE + i];
161 cm32181->lux_per_bit = vals[CPM1_LUX_PER_BIT];
167 cm32181->calibscale = vals[CPM1_CALIBSCALE];
169 cm32181_read_als_it(cm32181, &cm32181->lux_per_bit_base_it);
172 static void cm32181_acpi_parse_cpm_tables(struct cm32181_chip *cm32181)
179 * @cm32181: pointer of struct cm32181.
185 static int cm32181_reg_init(struct cm32181_chip *cm32181)
187 struct i2c_client *client = cm32181->client;
198 cm32181->num_als_it = ARRAY_SIZE(cm3218_als_it_bits);
199 cm32181->als_it_bits = cm3218_als_it_bits;
200 cm32181->als_it_values = cm3218_als_it_values;
204 cm32181->num_als_it = ARRAY_SIZE(cm32181_als_it_bits);
205 cm32181->als_it_bits = cm32181_als_it_bits;
206 cm32181->als_it_values = cm32181_als_it_values;
213 cm32181->conf_regs[CM32181_REG_ADDR_CMD] =
215 cm32181->init_regs_bitmap = BIT(CM32181_REG_ADDR_CMD);
216 cm32181->calibscale = CM32181_CALIBSCALE_DEFAULT;
217 cm32181->lux_per_bit = CM32181_LUX_PER_BIT;
218 cm32181->lux_per_bit_base_it = CM32181_LUX_PER_BIT_BASE_IT;
220 if (ACPI_HANDLE(cm32181->dev))
221 cm32181_acpi_parse_cpm_tables(cm32181);
224 for_each_set_bit(i, &cm32181->init_regs_bitmap, CM32181_CONF_REG_NUM) {
226 cm32181->conf_regs[i]);
236 * @cm32181: pointer of struct cm32181
243 static int cm32181_read_als_it(struct cm32181_chip *cm32181, int *val2)
248 als_it = cm32181->conf_regs[CM32181_REG_ADDR_CMD];
251 for (i = 0; i < cm32181->num_als_it; i++) {
252 if (als_it == cm32181->als_it_bits[i]) {
253 *val2 = cm32181->als_it_values[i];
263 * @cm32181: pointer of struct cm32181.
270 static int cm32181_write_als_it(struct cm32181_chip *cm32181, int val)
272 struct i2c_client *client = cm32181->client;
276 n = cm32181->num_als_it;
278 if (val <= cm32181->als_it_values[i])
283 als_it = cm32181->als_it_bits[i];
286 mutex_lock(&cm32181->lock);
287 cm32181->conf_regs[CM32181_REG_ADDR_CMD] &=
289 cm32181->conf_regs[CM32181_REG_ADDR_CMD] |=
292 cm32181->conf_regs[CM32181_REG_ADDR_CMD]);
293 mutex_unlock(&cm32181->lock);
300 * @cm32181: pointer of struct cm32181.
307 static int cm32181_get_lux(struct cm32181_chip *cm32181)
309 struct i2c_client *client = cm32181->client;
314 ret = cm32181_read_als_it(cm32181, &als_it);
318 lux = cm32181->lux_per_bit;
319 lux *= cm32181->lux_per_bit_base_it;
327 lux *= cm32181->calibscale;
341 struct cm32181_chip *cm32181 = iio_priv(indio_dev);
346 ret = cm32181_get_lux(cm32181);
352 *val = cm32181->calibscale;
356 ret = cm32181_read_als_it(cm32181, val2);
367 struct cm32181_chip *cm32181 = iio_priv(indio_dev);
372 cm32181->calibscale = val;
375 ret = cm32181_write_als_it(cm32181, val2);
395 struct cm32181_chip *cm32181 = iio_priv(dev_to_iio_dev(dev));
398 n = cm32181->num_als_it;
400 len += sprintf(buf + len, "0.%06u ", cm32181->als_it_values[i]);
443 struct cm32181_chip *cm32181;
447 indio_dev = devm_iio_device_alloc(dev, sizeof(*cm32181));
477 cm32181 = iio_priv(indio_dev);
478 cm32181->client = client;
479 cm32181->dev = dev;
481 mutex_init(&cm32181->lock);
488 ret = cm32181_reg_init(cm32181);
505 struct cm32181_chip *cm32181 = iio_priv(dev_get_drvdata(dev));
506 struct i2c_client *client = cm32181->client;
514 struct cm32181_chip *cm32181 = iio_priv(dev_get_drvdata(dev));
515 struct i2c_client *client = cm32181->client;
518 cm32181->conf_regs[CM32181_REG_ADDR_CMD]);
525 { .compatible = "capella,cm32181" },
540 .name = "cm32181",