diff options
author | Chris Lesiak <chris.lesiak@licor.com> | 2015-11-02 16:45:03 -0500 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2015-11-15 07:36:19 -0500 |
commit | 0d2f6fd3ffd5e7a447233a57112246bc00064752 (patch) | |
tree | 8c5882a3e9f69597589d048c9a56dc4d37b0c8fb | |
parent | 8546d2e5b15e454d2d492a1e9625732980e8eb26 (diff) |
iio: si7020: Swap data byte order
The Silicon Labs Si7013, Si7020, and Si7021 family of I2C humidity and
temperature sensors deliver 16 bit data high byte first.
See the datasheet available at:
https://www.silabs.com/Support%20Documents%2fTechnicalDocs%2fSi7020-A20.pdf
But as documented in Documentation/i2c/smbus-protocol,
i2c_smbus_read_word_data() expects the low byte first.
Change the driver to use i2c_smbus_read_word_swapped to get correct byte
order.
Signed-off-by: Chris Lesiak <chris.lesiak@licor.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r-- | drivers/iio/humidity/si7020.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/iio/humidity/si7020.c b/drivers/iio/humidity/si7020.c index fa3b809aff5e..1b6935d99100 100644 --- a/drivers/iio/humidity/si7020.c +++ b/drivers/iio/humidity/si7020.c | |||
@@ -50,10 +50,10 @@ static int si7020_read_raw(struct iio_dev *indio_dev, | |||
50 | 50 | ||
51 | switch (mask) { | 51 | switch (mask) { |
52 | case IIO_CHAN_INFO_RAW: | 52 | case IIO_CHAN_INFO_RAW: |
53 | ret = i2c_smbus_read_word_data(*client, | 53 | ret = i2c_smbus_read_word_swapped(*client, |
54 | chan->type == IIO_TEMP ? | 54 | chan->type == IIO_TEMP ? |
55 | SI7020CMD_TEMP_HOLD : | 55 | SI7020CMD_TEMP_HOLD : |
56 | SI7020CMD_RH_HOLD); | 56 | SI7020CMD_RH_HOLD); |
57 | if (ret < 0) | 57 | if (ret < 0) |
58 | return ret; | 58 | return ret; |
59 | *val = ret >> 2; | 59 | *val = ret >> 2; |