Lines Matching +full:voc +full:- +full:sensor
1 // SPDX-License-Identifier: GPL-2.0+
3 * ams-iaq-core.c - Support for AMS iAQ-Core VOC sensors
61 struct i2c_client *client = data->client; in ams_iaqcore_read_measurement()
65 .addr = client->addr, in ams_iaqcore_read_measurement()
66 .flags = client->flags | I2C_M_RD, in ams_iaqcore_read_measurement()
68 .buf = (char *) &data->buffer, in ams_iaqcore_read_measurement()
71 ret = i2c_transfer(client->adapter, &msg, 1); in ams_iaqcore_read_measurement()
80 /* sensor can only be polled once a second max per datasheet */ in ams_iaqcore_get_measurement()
81 if (!time_after(jiffies, data->last_update + HZ)) in ams_iaqcore_get_measurement()
88 data->last_update = jiffies; in ams_iaqcore_get_measurement()
101 return -EINVAL; in ams_iaqcore_read_raw()
103 mutex_lock(&data->lock); in ams_iaqcore_read_raw()
109 switch (chan->address) { in ams_iaqcore_read_raw()
112 *val2 = be16_to_cpu(data->buffer.co2_ppm); in ams_iaqcore_read_raw()
116 *val = be32_to_cpu(data->buffer.resistance); in ams_iaqcore_read_raw()
121 *val2 = be16_to_cpu(data->buffer.voc_ppb); in ams_iaqcore_read_raw()
125 ret = -EINVAL; in ams_iaqcore_read_raw()
129 mutex_unlock(&data->lock); in ams_iaqcore_read_raw()
143 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in ams_iaqcore_probe()
145 return -ENOMEM; in ams_iaqcore_probe()
149 data->client = client; in ams_iaqcore_probe()
152 data->last_update = jiffies - HZ; in ams_iaqcore_probe()
153 mutex_init(&data->lock); in ams_iaqcore_probe()
155 indio_dev->info = &ams_iaqcore_info; in ams_iaqcore_probe()
156 indio_dev->name = dev_name(&client->dev); in ams_iaqcore_probe()
157 indio_dev->modes = INDIO_DIRECT_MODE; in ams_iaqcore_probe()
159 indio_dev->channels = ams_iaqcore_channels; in ams_iaqcore_probe()
160 indio_dev->num_channels = ARRAY_SIZE(ams_iaqcore_channels); in ams_iaqcore_probe()
162 return devm_iio_device_register(&client->dev, indio_dev); in ams_iaqcore_probe()
166 { "ams-iaq-core" },
172 { .compatible = "ams,iaq-core" },
179 .name = "ams-iaq-core",
188 MODULE_DESCRIPTION("AMS iAQ-Core VOC sensors");