iio: lps331ap: Fix wrong in_pressure_scale output value
authorJacek Anaszewski <j.anaszewski@samsung.com>
Tue, 2 Jul 2013 10:13:00 +0000 (11:13 +0100)
committerJonathan Cameron <jic23@kernel.org>
Tue, 16 Jul 2013 07:51:57 +0000 (08:51 +0100)
This patch fixes improper in_pressure_scale output that is
returned by the lps331ap barometer sensor driver. According
to the documentation the pressure after applying the scale has to
be expressed in kilopascal units. With erroneous implementation
the scale value larger by two orders of magnitude is returned -
2441410 instead of 24414.

Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Denis Ciocca <denis.ciocca@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/pressure/st_pressure_core.c

index 9c343b40665ebc0b28bb291a6b4fdf33556b7d49..3ffbc56917b48256d1654145e899556d7f191ba5 100644 (file)
@@ -28,7 +28,9 @@
 #include <linux/iio/common/st_sensors.h>
 #include "st_pressure.h"
 
-#define ST_PRESS_MBAR_TO_KPASCAL(x)            (x * 10)
+#define ST_PRESS_LSB_PER_MBAR                  4096UL
+#define ST_PRESS_KPASCAL_NANO_SCALE            (100000000UL / \
+                                                ST_PRESS_LSB_PER_MBAR)
 #define ST_PRESS_NUMBER_DATA_CHANNELS          1
 
 /* DEFAULT VALUE FOR SENSORS */
@@ -51,8 +53,8 @@
 #define ST_PRESS_1_FS_ADDR                     0x23
 #define ST_PRESS_1_FS_MASK                     0x30
 #define ST_PRESS_1_FS_AVL_1260_VAL             0x00
-#define ST_PRESS_1_FS_AVL_1260_GAIN            ST_PRESS_MBAR_TO_KPASCAL(244141)
 #define ST_PRESS_1_FS_AVL_TEMP_GAIN            2083000
+#define ST_PRESS_1_FS_AVL_1260_GAIN            ST_PRESS_KPASCAL_NANO_SCALE
 #define ST_PRESS_1_BDU_ADDR                    0x20
 #define ST_PRESS_1_BDU_MASK                    0x04
 #define ST_PRESS_1_DRDY_IRQ_ADDR               0x22