linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1] iio: st_gyro: Correct data for LSM9DS0 gyro
@ 2019-12-17 17:10 Andy Shevchenko
  2019-12-23 12:45 ` Jonathan Cameron
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Shevchenko @ 2019-12-17 17:10 UTC (permalink / raw)
  To: Jonathan Cameron, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler, Denis Ciocca
  Cc: Andy Shevchenko, Leonard Crestez, Lorenzo Bianconi

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(-)

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,
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v1] iio: st_gyro: Correct data for LSM9DS0 gyro
  2019-12-17 17:10 [PATCH v1] iio: st_gyro: Correct data for LSM9DS0 gyro Andy Shevchenko
@ 2019-12-23 12:45 ` Jonathan Cameron
  2020-01-13 13:57   ` Andy Shevchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Cameron @ 2019-12-23 12:45 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler, Denis Ciocca, Leonard Crestez,
	Lorenzo Bianconi

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,


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v1] iio: st_gyro: Correct data for LSM9DS0 gyro
  2019-12-23 12:45 ` Jonathan Cameron
@ 2020-01-13 13:57   ` Andy Shevchenko
  2020-01-13 21:49     ` Jonathan Cameron
  0 siblings, 1 reply; 4+ messages in thread
From: Andy Shevchenko @ 2020-01-13 13:57 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler, Denis Ciocca, Leonard Crestez,
	Lorenzo Bianconi

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.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v1] iio: st_gyro: Correct data for LSM9DS0 gyro
  2020-01-13 13:57   ` Andy Shevchenko
@ 2020-01-13 21:49     ` Jonathan Cameron
  0 siblings, 0 replies; 4+ messages in thread
From: Jonathan Cameron @ 2020-01-13 21:49 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler, Denis Ciocca, Leonard Crestez,
	Lorenzo Bianconi

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-01-13 21:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-17 17:10 [PATCH v1] iio: st_gyro: Correct data for LSM9DS0 gyro Andy Shevchenko
2019-12-23 12:45 ` Jonathan Cameron
2020-01-13 13:57   ` Andy Shevchenko
2020-01-13 21:49     ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).