Lines Matching +full:noa1305 +full:- +full:d
1 // SPDX-License-Identifier: GPL-2.0+
3 * Support for ON Semiconductor NOA1305 ambient light sensor
44 #define NOA1305_DRIVER_NAME "noa1305"
57 ret = regmap_bulk_read(priv->regmap, NOA1305_REG_ALS_DATA_LSB, &data, in noa1305_measure()
70 ret = regmap_read(priv->regmap, NOA1305_REG_INTEGRATION_TIME, &data); in noa1305_scale()
114 return -EINVAL; in noa1305_scale()
132 int ret = -EINVAL; in noa1305_read_raw()
137 switch (chan->type) { in noa1305_read_raw()
149 switch (chan->type) { in noa1305_read_raw()
194 regulator_disable(priv->vin_reg); in noa1305_reg_remove()
207 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*priv)); in noa1305_probe()
209 return -ENOMEM; in noa1305_probe()
213 dev_err(&client->dev, "Regmap initialization failed.\n"); in noa1305_probe()
219 priv->vin_reg = devm_regulator_get(&client->dev, "vin"); in noa1305_probe()
220 if (IS_ERR(priv->vin_reg)) in noa1305_probe()
221 return dev_err_probe(&client->dev, PTR_ERR(priv->vin_reg), in noa1305_probe()
224 ret = regulator_enable(priv->vin_reg); in noa1305_probe()
226 dev_err(&client->dev, "enable regulator vin failed\n"); in noa1305_probe()
230 ret = devm_add_action_or_reset(&client->dev, noa1305_reg_remove, priv); in noa1305_probe()
232 dev_err(&client->dev, "addition of devm action failed\n"); in noa1305_probe()
237 priv->client = client; in noa1305_probe()
238 priv->regmap = regmap; in noa1305_probe()
242 dev_err(&client->dev, "ID reading failed: %d\n", ret); in noa1305_probe()
248 dev_err(&client->dev, "Unknown device ID: 0x%x\n", dev_id); in noa1305_probe()
249 return -ENODEV; in noa1305_probe()
255 dev_err(&client->dev, "Enabling power control failed\n"); in noa1305_probe()
261 dev_err(&client->dev, "Device reset failed\n"); in noa1305_probe()
268 dev_err(&client->dev, "Setting integration time failed\n"); in noa1305_probe()
272 indio_dev->info = &noa1305_info; in noa1305_probe()
273 indio_dev->channels = noa1305_channels; in noa1305_probe()
274 indio_dev->num_channels = ARRAY_SIZE(noa1305_channels); in noa1305_probe()
275 indio_dev->name = NOA1305_DRIVER_NAME; in noa1305_probe()
276 indio_dev->modes = INDIO_DIRECT_MODE; in noa1305_probe()
278 ret = devm_iio_device_register(&client->dev, indio_dev); in noa1305_probe()
280 dev_err(&client->dev, "registering device failed\n"); in noa1305_probe()
286 { .compatible = "onnn,noa1305" },
292 { "noa1305", 0 },
310 MODULE_DESCRIPTION("ON Semiconductor NOA1305 ambient light sensor");