Skip to content

Commit

Permalink
iio: accel: bmc150: Fix bma222 scale unit
Browse files Browse the repository at this point in the history
commit 6e2a90a upstream.

According to sysfs-bus-iio documentation the unit for accelerometer
values after applying scale/offset should be m/s^2, not g, which explains
why the scale values for the other variants in bmc150-accel do not match
exactly the values given in the datasheet.

To get the correct values, we need to multiply the BMA222 scale values
by g = 9.80665 m/s^2.

Fixes: a1a210b ("iio: accel: bmc150-accel: Add support for BMA222")
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20210611080903.14384-2-stephan@gerhold.net
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
stephan-gh authored and gregkh committed Jul 14, 2021
1 parent 0deff8d commit bcb312e
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions drivers/iio/accel/bmc150-accel-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1177,11 +1177,12 @@ static const struct bmc150_accel_chip_info bmc150_accel_chip_info_tbl[] = {
/*
* The datasheet page 17 says:
* 15.6, 31.3, 62.5 and 125 mg per LSB.
* IIO unit is m/s^2 so multiply by g = 9.80665 m/s^2.
*/
.scale_table = { {156000, BMC150_ACCEL_DEF_RANGE_2G},
{313000, BMC150_ACCEL_DEF_RANGE_4G},
{625000, BMC150_ACCEL_DEF_RANGE_8G},
{1250000, BMC150_ACCEL_DEF_RANGE_16G} },
.scale_table = { {152984, BMC150_ACCEL_DEF_RANGE_2G},
{306948, BMC150_ACCEL_DEF_RANGE_4G},
{612916, BMC150_ACCEL_DEF_RANGE_8G},
{1225831, BMC150_ACCEL_DEF_RANGE_16G} },
},
[bma222e] = {
.name = "BMA222E",
Expand Down

0 comments on commit bcb312e

Please sign in to comment.