Lines Matching +full:humidity +full:- +full:sensor

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * This is a non-complete driver implementation for the
4 * HS3001 humidity and temperature sensor and compatibles. It does not include
6 * during power-up.
10 * Author: Andre Werner <andre.werner@systec-electronic.com>
48 u32 humidity; /* in milli % */ member
56 temp /= (1 << 14) - 1; in hs3001_extract_temperature()
58 return (int)temp - 40 * HS3001_FIXPOINT_ARITH; in hs3001_extract_temperature()
65 return hum / (1 << 14) - 1; in hs3001_extract_humidity()
77 ret = ret < 0 ? ret : -EIO; in hs3001_data_fetch_command()
78 dev_dbg(&client->dev, in hs3001_data_fetch_command()
85 dev_dbg(&client->dev, "Sensor busy.\n"); in hs3001_data_fetch_command()
86 return -EBUSY; in hs3001_data_fetch_command()
89 dev_dbg(&client->dev, "Data invalid.\n"); in hs3001_data_fetch_command()
90 return -EIO; in hs3001_data_fetch_command()
93 data->humidity = in hs3001_data_fetch_command()
95 data->temperature = in hs3001_data_fetch_command()
104 /* Both, humidity and temperature can only be read. */ in hs3001_is_visible()
112 struct i2c_client *client = data->client; in hs3001_read()
115 mutex_lock(&data->i2c_lock); in hs3001_read()
118 mutex_unlock(&data->i2c_lock); in hs3001_read()
123 * Sensor needs some time to process measurement depending on in hs3001_read()
126 fsleep(data->wait_time); in hs3001_read()
129 mutex_unlock(&data->i2c_lock); in hs3001_read()
138 *val = data->temperature; in hs3001_read()
141 return -EINVAL; in hs3001_read()
147 *val = data->humidity; in hs3001_read()
150 return -EINVAL; in hs3001_read()
154 return -EINVAL; in hs3001_read()
162 HWMON_CHANNEL_INFO(humidity, HWMON_H_INPUT),
195 struct device *dev = &client->dev; in hs3001_probe()
197 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) in hs3001_probe()
198 return -EOPNOTSUPP; in hs3001_probe()
202 return -ENOMEM; in hs3001_probe()
204 data->client = client; in hs3001_probe()
207 * Measurement time = wake-up time + measurement time temperature in hs3001_probe()
208 * + measurement time humidity. This is currently static, because in hs3001_probe()
211 data->wait_time = (HS3001_WAKEUP_TIME + HS3001_14BIT_RESOLUTION + in hs3001_probe()
214 mutex_init(&data->i2c_lock); in hs3001_probe()
217 client->name, in hs3001_probe()
240 MODULE_AUTHOR("Andre Werner <andre.werner@systec-electronic.com>");
241 MODULE_DESCRIPTION("HS3001 humidity and temperature sensor base driver");