Răsfoiți Sursa

iio: mlx90614: Check for errors in read values

The device uses the MSB of the returned temperature value as an error
flag.  Return a read error when this bit is set.

Signed-off-by: Vianney le Clément de Saint-Marcq <vianney.leclement@essensium.com>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Vianney le Clément de Saint-Marcq 10 ani în urmă
părinte
comite
d02e0f8f62
1 a modificat fișierele cu 5 adăugiri și 0 ștergeri
  1. 5 0
      drivers/iio/temperature/mlx90614.c

+ 5 - 0
drivers/iio/temperature/mlx90614.c

@@ -196,6 +196,11 @@ static int mlx90614_read_raw(struct iio_dev *indio_dev,
 
 		if (ret < 0)
 			return ret;
+
+		/* MSB is an error flag */
+		if (ret & 0x8000)
+			return -EIO;
+
 		*val = ret;
 		return IIO_VAL_INT;
 	case IIO_CHAN_INFO_OFFSET: