On 30/07/15 10:25, Ludovic Tancerel wrote:
Signed-off-by: Ludovic Tancerel <ludovic.tancerel@maplehightech.com>
Little bits inline.
A nice looking patch set. I was unsure the division made sense between the
core and the drivers, but it seems to work well.
Will be interesting to see what other parts measurement specialties comes out
with in the future!
Jonathan
---
Documentation/ABI/testing/sysfs-bus-iio-meas-spec | 1 +
drivers/iio/humidity/htu21.c | 32 ++++++++++++++++++++---
drivers/iio/pressure/Kconfig | 13 +++++++++
drivers/iio/pressure/ms5637.c | 6 ++++-
4 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-meas-spec b/Documentation/ABI/testing/sysfs-bus-iio-meas-spec
index 7b09d3a..df70dda6 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio-meas-spec
+++ b/Documentation/ABI/testing/sysfs-bus-iio-meas-spec
@@ -12,3 +12,4 @@ Description:
Enable or disable heater function by writing either
'1' or '0'.
Same reading values apply
+ This ABI is available for htu21, ms8607
diff --git a/drivers/iio/humidity/htu21.c b/drivers/iio/humidity/htu21.c
index 870b631..4720cbc 100644
--- a/drivers/iio/humidity/htu21.c
+++ b/drivers/iio/humidity/htu21.c
@@ -1,6 +1,7 @@
/*
* htu21.c - Support for Measurement-Specialties
* htu21 temperature & humidity sensor
+ * and humidity part of MS8607 sensor
*
* Copyright (c) 2014 Measurement-Specialties
*
@@ -10,6 +11,8 @@
*
* Datasheet:
* http://www.meas-spec.com/downloads/HTU21D.pdf
+ * Datasheet:
+ * http://www.meas-spec.com/downloads/MS8607-02BA01.pdf
*
*/
@@ -25,6 +28,11 @@
#define HTU21_RESET 0xFE
+enum {
+ HTU21,
+ MS8607
+};
+
static const int htu21_samp_freq[4] = { 20, 40, 70, 120 };
/* String copy of the above const for readability purpose */
static const char htu21_show_samp_freq[] = "20 40 70 120";
@@ -107,6 +115,17 @@ static const struct iio_chan_spec htu21_channels[] = {
}
};
+/* Meas Spec recommendation is to not read temperature
/*
* Meas
+ * on this driver part for MS8607
+ */
+static const struct iio_chan_spec ms8607_channels[] = {
+ {
+ .type = IIO_HUMIDITYRELATIVE,
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_PROCESSED),
+ .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_SAMP_FREQ),
+ }
+};
+
static ssize_t htu21_show_battery_low(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -189,8 +208,14 @@ int htu21_probe(struct i2c_client *client,
indio_dev->name = id->name;
indio_dev->dev.parent = &client->dev;
indio_dev->modes = INDIO_DIRECT_MODE;
- indio_dev->channels = htu21_channels;
- indio_dev->num_channels = ARRAY_SIZE(htu21_channels);
+
+ if (id->driver_data == MS8607) {
+ indio_dev->channels = ms8607_channels;
+ indio_dev->num_channels = ARRAY_SIZE(ms8607_channels);
+ } else {
+ indio_dev->channels = htu21_channels;
+ indio_dev->num_channels = ARRAY_SIZE(htu21_channels);
+ }
i2c_set_clientdata(client, indio_dev);
@@ -207,7 +232,8 @@ int htu21_probe(struct i2c_client *client,
}
static const struct i2c_device_id htu21_id[] = {
- {"htu21", 0},
+ {"htu21", HTU21},
+ {"ms8607-h", MS8607},
perhaps -humidity for clarity if not already in use out in the field.