diff options
Diffstat (limited to 'drivers/hwmon/sht21.c')
| -rw-r--r-- | drivers/hwmon/sht21.c | 67 |
1 files changed, 30 insertions, 37 deletions
diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c index 2c7ba70921f5..627d35070a42 100644 --- a/drivers/hwmon/sht21.c +++ b/drivers/hwmon/sht21.c @@ -1,22 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* Sensirion SHT21 humidity and temperature sensor driver * * Copyright (C) 2010 Urs Fleisch <urs.fleisch@sensirion.com> * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA - * - * Data sheet available at http://www.sensirion.com/file/datasheet_sht21 + * Data sheet available at https://www.sensirion.com/file/datasheet_sht21 */ #include <linux/module.h> @@ -54,7 +41,7 @@ struct sht21 { unsigned long last_update; int temperature; int humidity; - char valid; + bool valid; char eic[18]; }; @@ -118,7 +105,7 @@ static int sht21_update_measurements(struct device *dev) goto out; sht21->humidity = sht21_rh_ticks_to_per_cent_mille(ret); sht21->last_update = jiffies; - sht21->valid = 1; + sht21->valid = true; } out: mutex_unlock(&sht21->lock); @@ -127,7 +114,7 @@ out: } /** - * sht21_show_temperature() - show temperature measurement value in sysfs + * sht21_temperature_show() - show temperature measurement value in sysfs * @dev: device * @attr: device attribute * @buf: sysfs buffer (PAGE_SIZE) where measurement values are written to @@ -135,9 +122,9 @@ out: * Will be called on read access to temp1_input sysfs attribute. * Returns number of bytes written into buffer, negative errno on error. */ -static ssize_t sht21_show_temperature(struct device *dev, - struct device_attribute *attr, - char *buf) +static ssize_t sht21_temperature_show(struct device *dev, + struct device_attribute *attr, + char *buf) { struct sht21 *sht21 = dev_get_drvdata(dev); int ret; @@ -149,7 +136,7 @@ static ssize_t sht21_show_temperature(struct device *dev, } /** - * sht21_show_humidity() - show humidity measurement value in sysfs + * sht21_humidity_show() - show humidity measurement value in sysfs * @dev: device * @attr: device attribute * @buf: sysfs buffer (PAGE_SIZE) where measurement values are written to @@ -157,9 +144,8 @@ static ssize_t sht21_show_temperature(struct device *dev, * Will be called on read access to humidity1_input sysfs attribute. * Returns number of bytes written into buffer, negative errno on error. */ -static ssize_t sht21_show_humidity(struct device *dev, - struct device_attribute *attr, - char *buf) +static ssize_t sht21_humidity_show(struct device *dev, + struct device_attribute *attr, char *buf) { struct sht21 *sht21 = dev_get_drvdata(dev); int ret; @@ -213,10 +199,7 @@ static ssize_t eic_read(struct sht21 *sht21) eic[6] = rx[0]; eic[7] = rx[1]; - ret = snprintf(sht21->eic, sizeof(sht21->eic), - "%02x%02x%02x%02x%02x%02x%02x%02x\n", - eic[0], eic[1], eic[2], eic[3], - eic[4], eic[5], eic[6], eic[7]); + ret = snprintf(sht21->eic, sizeof(sht21->eic), "%8phN\n", eic); out: if (ret < 0) sht21->eic[0] = 0; @@ -251,10 +234,8 @@ static ssize_t eic_show(struct device *dev, } /* sysfs attributes */ -static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, sht21_show_temperature, - NULL, 0); -static SENSOR_DEVICE_ATTR(humidity1_input, S_IRUGO, sht21_show_humidity, - NULL, 0); +static SENSOR_DEVICE_ATTR_RO(temp1_input, sht21_temperature, 0); +static SENSOR_DEVICE_ATTR_RO(humidity1_input, sht21_humidity, 0); static DEVICE_ATTR_RO(eic); static struct attribute *sht21_attrs[] = { @@ -266,8 +247,7 @@ static struct attribute *sht21_attrs[] = { ATTRIBUTE_GROUPS(sht21); -static int sht21_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int sht21_probe(struct i2c_client *client) { struct device *dev = &client->dev; struct device *hwmon_dev; @@ -295,13 +275,26 @@ static int sht21_probe(struct i2c_client *client, /* Device ID table */ static const struct i2c_device_id sht21_id[] = { - { "sht21", 0 }, + { "sht20" }, + { "sht21" }, + { "sht25" }, { } }; MODULE_DEVICE_TABLE(i2c, sht21_id); +static const struct of_device_id sht21_of_match[] = { + { .compatible = "sensirion,sht20" }, + { .compatible = "sensirion,sht21" }, + { .compatible = "sensirion,sht25" }, + { } +}; +MODULE_DEVICE_TABLE(of, sht21_of_match); + static struct i2c_driver sht21_driver = { - .driver.name = "sht21", + .driver = { + .name = "sht21", + .of_match_table = sht21_of_match, + }, .probe = sht21_probe, .id_table = sht21_id, }; |
