Message ID | 20191217171038.17004-1-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v1] iio: st_gyro: Correct data for LSM9DS0 gyro | expand |
On Tue, 17 Dec 2019 19:10:38 +0200 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > The commit 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") > assumes that gyro in LSM9DS0 is the same as others with 0xd4 WAI ID, > but datasheet tells slight different story, i.e. the first scale factor > for the chip is 245 dps, and not 250 dps. > > Correct this by introducing a separate settings for LSM9DS0. > > Fixes: 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") > Depends-on: 45a4e4220bf4 ("iio: gyro: st_gyro: fix L3GD20H support") > Cc: Leonard Crestez <leonard.crestez@nxp.com> > Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Looks good to me. Will just leave it a bit longer to give others time to check it. Give me a shout if I seem to have missed this by about a week into the new year (to let people get back from holidays etc). Thanks, Jonathan > --- > drivers/iio/gyro/st_gyro_core.c | 75 ++++++++++++++++++++++++++++++++- > 1 file changed, 74 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/gyro/st_gyro_core.c b/drivers/iio/gyro/st_gyro_core.c > index 57be68b291fa..26c50b24bc08 100644 > --- a/drivers/iio/gyro/st_gyro_core.c > +++ b/drivers/iio/gyro/st_gyro_core.c > @@ -138,7 +138,6 @@ static const struct st_sensor_settings st_gyro_sensors_settings[] = { > [2] = LSM330DLC_GYRO_DEV_NAME, > [3] = L3G4IS_GYRO_DEV_NAME, > [4] = LSM330_GYRO_DEV_NAME, > - [5] = LSM9DS0_GYRO_DEV_NAME, > }, > .ch = (struct iio_chan_spec *)st_gyro_16bit_channels, > .odr = { > @@ -208,6 +207,80 @@ static const struct st_sensor_settings st_gyro_sensors_settings[] = { > .multi_read_bit = true, > .bootime = 2, > }, > + { > + .wai = 0xd4, > + .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, > + .sensors_supported = { > + [0] = LSM9DS0_GYRO_DEV_NAME, > + }, > + .ch = (struct iio_chan_spec *)st_gyro_16bit_channels, > + .odr = { > + .addr = 0x20, > + .mask = GENMASK(7, 6), > + .odr_avl = { > + { .hz = 95, .value = 0x00, }, > + { .hz = 190, .value = 0x01, }, > + { .hz = 380, .value = 0x02, }, > + { .hz = 760, .value = 0x03, }, > + }, > + }, > + .pw = { > + .addr = 0x20, > + .mask = BIT(3), > + .value_on = ST_SENSORS_DEFAULT_POWER_ON_VALUE, > + .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, > + }, > + .enable_axis = { > + .addr = ST_SENSORS_DEFAULT_AXIS_ADDR, > + .mask = ST_SENSORS_DEFAULT_AXIS_MASK, > + }, > + .fs = { > + .addr = 0x23, > + .mask = GENMASK(5, 4), > + .fs_avl = { > + [0] = { > + .num = ST_GYRO_FS_AVL_245DPS, > + .value = 0x00, > + .gain = IIO_DEGREE_TO_RAD(8750), > + }, > + [1] = { > + .num = ST_GYRO_FS_AVL_500DPS, > + .value = 0x01, > + .gain = IIO_DEGREE_TO_RAD(17500), > + }, > + [2] = { > + .num = ST_GYRO_FS_AVL_2000DPS, > + .value = 0x02, > + .gain = IIO_DEGREE_TO_RAD(70000), > + }, > + }, > + }, > + .bdu = { > + .addr = 0x23, > + .mask = BIT(7), > + }, > + .drdy_irq = { > + .int2 = { > + .addr = 0x22, > + .mask = BIT(3), > + }, > + /* > + * The sensor has IHL (active low) and open > + * drain settings, but only for INT1 and not > + * for the DRDY line on INT2. > + */ > + .stat_drdy = { > + .addr = ST_SENSORS_DEFAULT_STAT_ADDR, > + .mask = GENMASK(2, 0), > + }, > + }, > + .sim = { > + .addr = 0x23, > + .value = BIT(0), > + }, > + .multi_read_bit = true, > + .bootime = 2, > + }, > { > .wai = 0xd7, > .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
On Mon, Dec 23, 2019 at 12:45:34PM +0000, Jonathan Cameron wrote: > On Tue, 17 Dec 2019 19:10:38 +0200 > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > > The commit 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") > > assumes that gyro in LSM9DS0 is the same as others with 0xd4 WAI ID, > > but datasheet tells slight different story, i.e. the first scale factor > > for the chip is 245 dps, and not 250 dps. > > > > Correct this by introducing a separate settings for LSM9DS0. > > > > Fixes: 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") > > Depends-on: 45a4e4220bf4 ("iio: gyro: st_gyro: fix L3GD20H support") > > Cc: Leonard Crestez <leonard.crestez@nxp.com> > > Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Looks good to me. Will just leave it a bit longer to give others > time to check it. > > Give me a shout if I seem to have missed this by about a week into the new > year (to let people get back from holidays etc). Gentle ping.
On Mon, 13 Jan 2020 15:57:39 +0200 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > On Mon, Dec 23, 2019 at 12:45:34PM +0000, Jonathan Cameron wrote: > > On Tue, 17 Dec 2019 19:10:38 +0200 > > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > > > > The commit 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") > > > assumes that gyro in LSM9DS0 is the same as others with 0xd4 WAI ID, > > > but datasheet tells slight different story, i.e. the first scale factor > > > for the chip is 245 dps, and not 250 dps. > > > > > > Correct this by introducing a separate settings for LSM9DS0. > > > > > > Fixes: 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") > > > Depends-on: 45a4e4220bf4 ("iio: gyro: st_gyro: fix L3GD20H support") > > > Cc: Leonard Crestez <leonard.crestez@nxp.com> > > > Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> > > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Looks good to me. Will just leave it a bit longer to give others > > time to check it. > > > > Give me a shout if I seem to have missed this by about a week into the new > > year (to let people get back from holidays etc). > > Gentle ping. > Thanks. Given timing and the fact the bug is old, I'll pull this into the togreg branch and hopefully get it lined up for the coming merge window. Thanks and sorry for the delay. Jonathan
diff --git a/drivers/iio/gyro/st_gyro_core.c b/drivers/iio/gyro/st_gyro_core.c index 57be68b291fa..26c50b24bc08 100644 --- a/drivers/iio/gyro/st_gyro_core.c +++ b/drivers/iio/gyro/st_gyro_core.c @@ -138,7 +138,6 @@ static const struct st_sensor_settings st_gyro_sensors_settings[] = { [2] = LSM330DLC_GYRO_DEV_NAME, [3] = L3G4IS_GYRO_DEV_NAME, [4] = LSM330_GYRO_DEV_NAME, - [5] = LSM9DS0_GYRO_DEV_NAME, }, .ch = (struct iio_chan_spec *)st_gyro_16bit_channels, .odr = { @@ -208,6 +207,80 @@ static const struct st_sensor_settings st_gyro_sensors_settings[] = { .multi_read_bit = true, .bootime = 2, }, + { + .wai = 0xd4, + .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, + .sensors_supported = { + [0] = LSM9DS0_GYRO_DEV_NAME, + }, + .ch = (struct iio_chan_spec *)st_gyro_16bit_channels, + .odr = { + .addr = 0x20, + .mask = GENMASK(7, 6), + .odr_avl = { + { .hz = 95, .value = 0x00, }, + { .hz = 190, .value = 0x01, }, + { .hz = 380, .value = 0x02, }, + { .hz = 760, .value = 0x03, }, + }, + }, + .pw = { + .addr = 0x20, + .mask = BIT(3), + .value_on = ST_SENSORS_DEFAULT_POWER_ON_VALUE, + .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, + }, + .enable_axis = { + .addr = ST_SENSORS_DEFAULT_AXIS_ADDR, + .mask = ST_SENSORS_DEFAULT_AXIS_MASK, + }, + .fs = { + .addr = 0x23, + .mask = GENMASK(5, 4), + .fs_avl = { + [0] = { + .num = ST_GYRO_FS_AVL_245DPS, + .value = 0x00, + .gain = IIO_DEGREE_TO_RAD(8750), + }, + [1] = { + .num = ST_GYRO_FS_AVL_500DPS, + .value = 0x01, + .gain = IIO_DEGREE_TO_RAD(17500), + }, + [2] = { + .num = ST_GYRO_FS_AVL_2000DPS, + .value = 0x02, + .gain = IIO_DEGREE_TO_RAD(70000), + }, + }, + }, + .bdu = { + .addr = 0x23, + .mask = BIT(7), + }, + .drdy_irq = { + .int2 = { + .addr = 0x22, + .mask = BIT(3), + }, + /* + * The sensor has IHL (active low) and open + * drain settings, but only for INT1 and not + * for the DRDY line on INT2. + */ + .stat_drdy = { + .addr = ST_SENSORS_DEFAULT_STAT_ADDR, + .mask = GENMASK(2, 0), + }, + }, + .sim = { + .addr = 0x23, + .value = BIT(0), + }, + .multi_read_bit = true, + .bootime = 2, + }, { .wai = 0xd7, .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
The commit 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") assumes that gyro in LSM9DS0 is the same as others with 0xd4 WAI ID, but datasheet tells slight different story, i.e. the first scale factor for the chip is 245 dps, and not 250 dps. Correct this by introducing a separate settings for LSM9DS0. Fixes: 41c128cb25ce ("iio: st_gyro: Add lsm9ds0-gyro support") Depends-on: 45a4e4220bf4 ("iio: gyro: st_gyro: fix L3GD20H support") Cc: Leonard Crestez <leonard.crestez@nxp.com> Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/iio/gyro/st_gyro_core.c | 75 ++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-)