iio:bma180: Prepare for accelerometer channels with different resolutions
authorPeter Meerwald <pmeerw@pmeerw.net>
Tue, 19 Aug 2014 22:43:00 +0000 (23:43 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sun, 14 Sep 2014 19:26:08 +0000 (20:26 +0100)
allow to specify channels resolution and compute shift assuming
16-bit registers and MSB allocation

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
Cc: Oleksandr Kravchenko <o.v.kravchenko@globallogic.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/accel/bma180.c

index 9336455..f4d2804 100644 (file)
@@ -476,7 +476,7 @@ static const struct iio_chan_spec_ext_info bma180_ext_info[] = {
        { },
 };
 
-#define BMA180_ACC_CHANNEL(_axis) {                                    \
+#define BMA180_ACC_CHANNEL(_axis, _bits) {                             \
        .type = IIO_ACCEL,                                              \
        .modified = 1,                                                  \
        .channel2 = IIO_MOD_##_axis,                                    \
@@ -486,9 +486,9 @@ static const struct iio_chan_spec_ext_info bma180_ext_info[] = {
        .scan_index = AXIS_##_axis,                                     \
        .scan_type = {                                                  \
                .sign = 's',                                            \
-               .realbits = 14,                                         \
+               .realbits = _bits,                                      \
                .storagebits = 16,                                      \
-               .shift = 2,                                             \
+               .shift = 16 - _bits,                                    \
        },                                                              \
        .ext_info = bma180_ext_info,                                    \
 }
@@ -506,9 +506,9 @@ static const struct iio_chan_spec_ext_info bma180_ext_info[] = {
 }
 
 static const struct iio_chan_spec bma180_channels[] = {
-       BMA180_ACC_CHANNEL(X),
-       BMA180_ACC_CHANNEL(Y),
-       BMA180_ACC_CHANNEL(Z),
+       BMA180_ACC_CHANNEL(X, 14),
+       BMA180_ACC_CHANNEL(Y, 14),
+       BMA180_ACC_CHANNEL(Z, 14),
        BMA180_TEMP_CHANNEL,
        IIO_CHAN_SOFT_TIMESTAMP(4),
 };