Re: [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support

2020-05-20 Thread Jonathan Albrieux
On Tue, May 19, 2020 at 06:57:11PM +0100, Jonathan Cameron wrote:
> On Tue, 19 May 2020 09:51:00 +0200
> Jonathan Albrieux  wrote:
> 
> > Add mount-matrix binding support. As chip could have different orientations
> > a mount matrix support is needed to correctly translate these differences
> > 
> > Signed-off-by: Jonathan Albrieux 
> Hi Jonathan,
> 
> Looks good to me. I'll pick this up once 1-3 are tidied up and
> we have a device tree review in for the binding doc.  I'm rubbish
> at reviewing those as Rob will certify so may well have missed something!
> 
> Jonathan
> 
>

Thank you! I'm going to work on suggestions now,

Best regards,
Jonathan Albrieux
 
> 
> > ---
> >  drivers/iio/imu/bmi160/bmi160.h  |  1 +
> >  drivers/iio/imu/bmi160/bmi160_core.c | 20 
> >  2 files changed, 21 insertions(+)
> > 
> > diff --git a/drivers/iio/imu/bmi160/bmi160.h 
> > b/drivers/iio/imu/bmi160/bmi160.h
> > index 923c3b274fde..a82e040bd109 100644
> > --- a/drivers/iio/imu/bmi160/bmi160.h
> > +++ b/drivers/iio/imu/bmi160/bmi160.h
> > @@ -9,6 +9,7 @@ struct bmi160_data {
> > struct regmap *regmap;
> > struct iio_trigger *trig;
> > struct regulator_bulk_data supplies[2];
> > +   struct iio_mount_matrix orientation;
> >  };
> >  
> >  extern const struct regmap_config bmi160_regmap_config;
> > diff --git a/drivers/iio/imu/bmi160/bmi160_core.c 
> > b/drivers/iio/imu/bmi160/bmi160_core.c
> > index 9bbe0d8e6720..78c8ca962359 100644
> > --- a/drivers/iio/imu/bmi160/bmi160_core.c
> > +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> > @@ -110,6 +110,7 @@
> > .storagebits = 16,  \
> > .endianness = IIO_LE,   \
> > },  \
> > +   .ext_info = bmi160_ext_info,\
> >  }
> >  
> >  /* scan indexes follow DATA register order */
> > @@ -265,6 +266,20 @@ static const struct  bmi160_odr_item 
> > bmi160_odr_table[] = {
> > },
> >  };
> >  
> > +static const struct iio_mount_matrix *
> > +bmi160_get_mount_matrix(const struct iio_dev *indio_dev,
> > +   const struct iio_chan_spec *chan)
> > +{
> > +   struct bmi160_data *data = iio_priv(indio_dev);
> > +
> > +   return >orientation;
> > +}
> > +
> > +static const struct iio_chan_spec_ext_info bmi160_ext_info[] = {
> > +   IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bmi160_get_mount_matrix),
> > +   { }
> > +};
> > +
> >  static const struct iio_chan_spec bmi160_channels[] = {
> > BMI160_CHANNEL(IIO_ACCEL, X, BMI160_SCAN_ACCEL_X),
> > BMI160_CHANNEL(IIO_ACCEL, Y, BMI160_SCAN_ACCEL_Y),
> > @@ -840,6 +855,11 @@ int bmi160_core_probe(struct device *dev, struct 
> > regmap *regmap,
> > return ret;
> > }
> >  
> > +   ret = iio_read_mount_matrix(dev, "mount-matrix",
> > +   >orientation);
> > +   if (ret)
> > +   return ret;
> > +
> > ret = bmi160_chip_init(data, use_spi);
> > if (ret)
> > return ret;
> 
> 


Re: [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support

2020-05-19 Thread Jonathan Cameron
On Tue, 19 May 2020 09:51:00 +0200
Jonathan Albrieux  wrote:

> Add mount-matrix binding support. As chip could have different orientations
> a mount matrix support is needed to correctly translate these differences
> 
> Signed-off-by: Jonathan Albrieux 
Hi Jonathan,

Looks good to me. I'll pick this up once 1-3 are tidied up and
we have a device tree review in for the binding doc.  I'm rubbish
at reviewing those as Rob will certify so may well have missed something!

Jonathan



> ---
>  drivers/iio/imu/bmi160/bmi160.h  |  1 +
>  drivers/iio/imu/bmi160/bmi160_core.c | 20 
>  2 files changed, 21 insertions(+)
> 
> diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> index 923c3b274fde..a82e040bd109 100644
> --- a/drivers/iio/imu/bmi160/bmi160.h
> +++ b/drivers/iio/imu/bmi160/bmi160.h
> @@ -9,6 +9,7 @@ struct bmi160_data {
>   struct regmap *regmap;
>   struct iio_trigger *trig;
>   struct regulator_bulk_data supplies[2];
> + struct iio_mount_matrix orientation;
>  };
>  
>  extern const struct regmap_config bmi160_regmap_config;
> diff --git a/drivers/iio/imu/bmi160/bmi160_core.c 
> b/drivers/iio/imu/bmi160/bmi160_core.c
> index 9bbe0d8e6720..78c8ca962359 100644
> --- a/drivers/iio/imu/bmi160/bmi160_core.c
> +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> @@ -110,6 +110,7 @@
>   .storagebits = 16,  \
>   .endianness = IIO_LE,   \
>   },  \
> + .ext_info = bmi160_ext_info,\
>  }
>  
>  /* scan indexes follow DATA register order */
> @@ -265,6 +266,20 @@ static const struct  bmi160_odr_item bmi160_odr_table[] 
> = {
>   },
>  };
>  
> +static const struct iio_mount_matrix *
> +bmi160_get_mount_matrix(const struct iio_dev *indio_dev,
> + const struct iio_chan_spec *chan)
> +{
> + struct bmi160_data *data = iio_priv(indio_dev);
> +
> + return >orientation;
> +}
> +
> +static const struct iio_chan_spec_ext_info bmi160_ext_info[] = {
> + IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bmi160_get_mount_matrix),
> + { }
> +};
> +
>  static const struct iio_chan_spec bmi160_channels[] = {
>   BMI160_CHANNEL(IIO_ACCEL, X, BMI160_SCAN_ACCEL_X),
>   BMI160_CHANNEL(IIO_ACCEL, Y, BMI160_SCAN_ACCEL_Y),
> @@ -840,6 +855,11 @@ int bmi160_core_probe(struct device *dev, struct regmap 
> *regmap,
>   return ret;
>   }
>  
> + ret = iio_read_mount_matrix(dev, "mount-matrix",
> + >orientation);
> + if (ret)
> + return ret;
> +
>   ret = bmi160_chip_init(data, use_spi);
>   if (ret)
>   return ret;