Lines Matching +full:sensor +full:- +full:gain
1 // SPDX-License-Identifier: GPL-2.0-only
3 * AL3320A - Dyna Image Ambient Light Sensor
7 * IIO driver for AL3320A (7-bit I2C slave address 0x1C).
11 * will need to be disabled before turning sensor OFF in order to avoid
92 return regmap_write(data->regmap, AL3320A_REG_CONFIG, AL3320A_CONFIG_ENABLE); in al3320a_set_pwr_on()
98 struct device *dev = regmap_get_device(data->regmap); in al3320a_set_pwr_off()
101 ret = regmap_write(data->regmap, AL3320A_REG_CONFIG, AL3320A_CONFIG_DISABLE); in al3320a_set_pwr_off()
108 struct device *dev = regmap_get_device(data->regmap); in al3320a_init()
119 ret = regmap_write(data->regmap, AL3320A_REG_CONFIG_RANGE, in al3320a_init()
124 ret = regmap_write(data->regmap, AL3320A_REG_MEAN_TIME, in al3320a_init()
129 return regmap_write(data->regmap, AL3320A_REG_WAIT, in al3320a_init()
138 int ret, gain, raw; in al3320a_read_raw() local
144 * - low byte of output is stored at AL3320A_REG_DATA_LOW in al3320a_read_raw()
145 * - high byte of output is stored at AL3320A_REG_DATA_LOW + 1 in al3320a_read_raw()
147 ret = regmap_read(data->regmap, AL3320A_REG_DATA_LOW, &raw); in al3320a_read_raw()
155 ret = regmap_read(data->regmap, AL3320A_REG_CONFIG_RANGE, &gain); in al3320a_read_raw()
159 gain = FIELD_GET(AL3320A_GAIN_MASK, gain); in al3320a_read_raw()
160 *val = al3320a_scales[gain][0]; in al3320a_read_raw()
161 *val2 = al3320a_scales[gain][1]; in al3320a_read_raw()
165 return -EINVAL; in al3320a_read_raw()
182 return regmap_write(data->regmap, AL3320A_REG_CONFIG_RANGE, in al3320a_write_raw()
187 return -EINVAL; in al3320a_write_raw()
199 struct device *dev = &client->dev; in al3320a_probe()
205 return -ENOMEM; in al3320a_probe()
210 data->regmap = devm_regmap_init_i2c(client, &al3320a_regmap_config); in al3320a_probe()
211 if (IS_ERR(data->regmap)) in al3320a_probe()
212 return dev_err_probe(dev, PTR_ERR(data->regmap), in al3320a_probe()
215 indio_dev->info = &al3320a_info; in al3320a_probe()
216 indio_dev->name = "al3320a"; in al3320a_probe()
217 indio_dev->channels = al3320a_channels; in al3320a_probe()
218 indio_dev->num_channels = ARRAY_SIZE(al3320a_channels); in al3320a_probe()
219 indio_dev->modes = INDIO_DIRECT_MODE; in al3320a_probe()
280 MODULE_DESCRIPTION("AL3320A Ambient Light Sensor driver");