Added a condition for a read of IIO_CHAN_INFO_OFFSET to
ensure that an offset is only provided for requests for XADC temperature. The
previous assumption was that only requests for temperature would include a
read of CHAN_INFO_OFFSET. However there is no way to restrict this in calling
functions, such as iio_convert_raw_to_processed_unlocked() which is called when
using the XADC as a device for iio_hwmon.

Signed-off-by: Joshua Lamorie <[email protected]>
---
 drivers/iio/adc/xilinx-xadc-core.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/adc/xilinx-xadc-core.c 
b/drivers/iio/adc/xilinx-xadc-core.c
index 23c152e..2c549ab 100644
--- a/drivers/iio/adc/xilinx-xadc-core.c
+++ b/drivers/iio/adc/xilinx-xadc-core.c
@@ -877,9 +877,13 @@ static int xadc_read_raw(struct iio_dev *indio_dev,
                        return -EINVAL;
                }
        case IIO_CHAN_INFO_OFFSET:
-               /* Only the temperature channel has an offset */
-               *val = -((273150 << 12) / 503975);
-               return IIO_VAL_INT;
+               if (chan->type == IIO_TEMP) {
+                       /* Only the temperature channel has an offset */
+                       *val = -((273150 << 12) / 503975);
+                       return IIO_VAL_INT;
+               } else {
+                       return -EINVAL;
+               }
        case IIO_CHAN_INFO_SAMP_FREQ:
                ret = xadc_read_adc_reg(xadc, XADC_REG_CONF2, &val16);
                if (ret)
-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to