On 09/03/16 11:01, Martin Kepplinger wrote:
> This adds support for Freescale's (now NXP's) FXLS8471Q accelerometer.
> 
> We use MMA8451Q's configuration because for what the driver supports,
> FXLS8471Q is the same.
> 
> Support for FXLS8471Q's features (fast SPI interface and a larger FIFO,
> among others) can be added to this driver anytime.
> 
> See it's datasheet for the details:
> http://cache.nxp.com/files/sensors/doc/data_sheet/FXLS8471Q.pdf
> 
> Signed-off-by: Martin Kepplinger <[email protected]>
Applied to the togreg branch of iio.git.  Initially pushed out as testing
for the autobuilders to play with it.

Thanks,

Jonathan
> ---
> revision history:
> v2:
>       forgot to add i2c_device_id to table, for consistency
> 
> 
>  .../devicetree/bindings/iio/accel/mma8452.txt      |  3 ++-
>  drivers/iio/accel/Kconfig                          |  3 ++-
>  drivers/iio/accel/mma8452.c                        | 22 
> ++++++++++++++++++++++
>  3 files changed, 26 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/iio/accel/mma8452.txt 
> b/Documentation/devicetree/bindings/iio/accel/mma8452.txt
> index 165937e..45f5c5c 100644
> --- a/Documentation/devicetree/bindings/iio/accel/mma8452.txt
> +++ b/Documentation/devicetree/bindings/iio/accel/mma8452.txt
> @@ -1,4 +1,4 @@
> -Freescale MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC or MMA8653FC
> +Freescale MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC, MMA8653FC or FXLS8471Q
>  triaxial accelerometer
>  
>  Required properties:
> @@ -9,6 +9,7 @@ Required properties:
>      * "fsl,mma8453"
>      * "fsl,mma8652"
>      * "fsl,mma8653"
> +    * "fsl,fxls8471"
>  
>    - reg: the I2C address of the chip
>  
> diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
> index b0d3ecf..c0f56f4 100644
> --- a/drivers/iio/accel/Kconfig
> +++ b/drivers/iio/accel/Kconfig
> @@ -143,7 +143,8 @@ config MMA8452
>       select IIO_TRIGGERED_BUFFER
>       help
>         Say yes here to build support for the following Freescale 3-axis
> -       accelerometers: MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC, MMA8653FC.
> +       accelerometers: MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC, MMA8653FC,
> +       FXLS8471Q.
>  
>         To compile this driver as a module, choose M here: the module
>         will be called mma8452.
> diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
> index 5ca0d16..305ed0e 100644
> --- a/drivers/iio/accel/mma8452.c
> +++ b/drivers/iio/accel/mma8452.c
> @@ -6,6 +6,7 @@
>   * MMA8453Q (10 bit)
>   * MMA8652FC (12 bit)
>   * MMA8653FC (10 bit)
> + * FXLS8471Q (14 bit)
>   *
>   * Copyright 2015 Martin Kepplinger <[email protected]>
>   * Copyright 2014 Peter Meerwald <[email protected]>
> @@ -92,6 +93,7 @@
>  #define MMA8453_DEVICE_ID                    0x3a
>  #define MMA8652_DEVICE_ID                    0x4a
>  #define MMA8653_DEVICE_ID                    0x5a
> +#define FXLS8471_DEVICE_ID                   0x6a
>  
>  #define MMA8452_AUTO_SUSPEND_DELAY_MS                2000
>  
> @@ -1055,6 +1057,7 @@ enum {
>       mma8453,
>       mma8652,
>       mma8653,
> +     fxls8471,
>  };
>  
>  static const struct mma_chip_info mma_chip_info_table[] = {
> @@ -1146,6 +1149,22 @@ static const struct mma_chip_info 
> mma_chip_info_table[] = {
>               .ev_ths_mask = MMA8452_FF_MT_THS_MASK,
>               .ev_count = MMA8452_FF_MT_COUNT,
>       },
> +     [fxls8471] = {
> +             .chip_id = FXLS8471_DEVICE_ID,
> +             .channels = mma8451_channels,
> +             .num_channels = ARRAY_SIZE(mma8451_channels),
> +             .mma_scales = { {0, 2394}, {0, 4788}, {0, 9577} },
> +             .ev_cfg = MMA8452_TRANSIENT_CFG,
> +             .ev_cfg_ele = MMA8452_TRANSIENT_CFG_ELE,
> +             .ev_cfg_chan_shift = 1,
> +             .ev_src = MMA8452_TRANSIENT_SRC,
> +             .ev_src_xe = MMA8452_TRANSIENT_SRC_XTRANSE,
> +             .ev_src_ye = MMA8452_TRANSIENT_SRC_YTRANSE,
> +             .ev_src_ze = MMA8452_TRANSIENT_SRC_ZTRANSE,
> +             .ev_ths = MMA8452_TRANSIENT_THS,
> +             .ev_ths_mask = MMA8452_TRANSIENT_THS_MASK,
> +             .ev_count = MMA8452_TRANSIENT_COUNT,
> +     },
>  };
>  
>  static struct attribute *mma8452_attributes[] = {
> @@ -1275,6 +1294,7 @@ static const struct of_device_id mma8452_dt_ids[] = {
>       { .compatible = "fsl,mma8453", .data = &mma_chip_info_table[mma8453] },
>       { .compatible = "fsl,mma8652", .data = &mma_chip_info_table[mma8652] },
>       { .compatible = "fsl,mma8653", .data = &mma_chip_info_table[mma8653] },
> +     { .compatible = "fsl,fxls8471", .data = &mma_chip_info_table[fxls8471] 
> },
>       { }
>  };
>  MODULE_DEVICE_TABLE(of, mma8452_dt_ids);
> @@ -1312,6 +1332,7 @@ static int mma8452_probe(struct i2c_client *client,
>       case MMA8453_DEVICE_ID:
>       case MMA8652_DEVICE_ID:
>       case MMA8653_DEVICE_ID:
> +     case FXLS8471_DEVICE_ID:
>               if (ret == data->chip_info->chip_id)
>                       break;
>       default:
> @@ -1518,6 +1539,7 @@ static const struct i2c_device_id mma8452_id[] = {
>       { "mma8453", mma8453 },
>       { "mma8652", mma8652 },
>       { "mma8653", mma8653 },
> +     { "fxls8471", fxls8471 },
>       { }
>  };
>  MODULE_DEVICE_TABLE(i2c, mma8452_id);
> 

Reply via email to