diff mbox series

[2/3] iio: accel: bmc150-accel: Add support for BMA222

Message ID 20201101122833.1111424-2-linus.walleij@linaro.org (mailing list archive)
State New, archived
Headers show
Series [1/3] iio: accel: bmc150-accel: Add DT bindings | expand

Commit Message

Linus Walleij Nov. 1, 2020, 12:28 p.m. UTC
This adds support for the BMA222 version of this sensor,
found in for example the Samsung GT-I9070 mobile phone.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/iio/accel/bmc150-accel-core.c | 17 +++++++++++++++++
 drivers/iio/accel/bmc150-accel-i2c.c  |  4 ++++
 drivers/iio/accel/bmc150-accel-spi.c  |  2 ++
 drivers/iio/accel/bmc150-accel.h      |  1 +
 4 files changed, 24 insertions(+)

Comments

Jonathan Cameron Nov. 1, 2020, 8:47 p.m. UTC | #1
On Sun,  1 Nov 2020 13:28:32 +0100
Linus Walleij <linus.walleij@linaro.org> wrote:

> This adds support for the BMA222 version of this sensor,
> found in for example the Samsung GT-I9070 mobile phone.
> 
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Looks good to me.

Jonathan

> ---
>  drivers/iio/accel/bmc150-accel-core.c | 17 +++++++++++++++++
>  drivers/iio/accel/bmc150-accel-i2c.c  |  4 ++++
>  drivers/iio/accel/bmc150-accel-spi.c  |  2 ++
>  drivers/iio/accel/bmc150-accel.h      |  1 +
>  4 files changed, 24 insertions(+)
> 
> diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
> index 48435865fdaf..0dafe4052856 100644
> --- a/drivers/iio/accel/bmc150-accel-core.c
> +++ b/drivers/iio/accel/bmc150-accel-core.c
> @@ -5,6 +5,7 @@
>   *  - BMI055
>   *  - BMA255
>   *  - BMA250E
> + *  - BMA222
>   *  - BMA222E
>   *  - BMA280
>   *
> @@ -1013,6 +1014,8 @@ static const struct iio_event_spec bmc150_accel_event = {
>  	IIO_CHAN_SOFT_TIMESTAMP(3),					\
>  }
>  
> +static const struct iio_chan_spec bma222_accel_channels[] =
> +	BMC150_ACCEL_CHANNELS(8);
>  static const struct iio_chan_spec bma222e_accel_channels[] =
>  	BMC150_ACCEL_CHANNELS(8);
>  static const struct iio_chan_spec bma250e_accel_channels[] =
> @@ -1063,6 +1066,20 @@ static const struct bmc150_accel_chip_info bmc150_accel_chip_info_tbl[] = {
>  				 {153277, BMC150_ACCEL_DEF_RANGE_8G},
>  				 {306457, BMC150_ACCEL_DEF_RANGE_16G} },
>  	},
> +	[bma222] = {
> +		.name = "BMA222",
> +		.chip_id = 0x03,
> +		.channels = bma222_accel_channels,
> +		.num_channels = ARRAY_SIZE(bma222_accel_channels),
> +		/*
> +		 * The datasheet page 17 says:
> +		 * 15.6, 31.3, 62.5 and 125 mg per LSB.
> +		 */
> +		.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} },
> +	},
>  	[bma222e] = {
>  		.name = "BMA222E",
>  		.chip_id = 0xF8,
> diff --git a/drivers/iio/accel/bmc150-accel-i2c.c b/drivers/iio/accel/bmc150-accel-i2c.c
> index 06021c8685a7..bba92dd33179 100644
> --- a/drivers/iio/accel/bmc150-accel-i2c.c
> +++ b/drivers/iio/accel/bmc150-accel-i2c.c
> @@ -5,6 +5,7 @@
>   *  - BMI055
>   *  - BMA255
>   *  - BMA250E
> + *  - BMA222
>   *  - BMA222E
>   *  - BMA280
>   *
> @@ -54,6 +55,7 @@ static const struct acpi_device_id bmc150_accel_acpi_match[] = {
>  	{"BMI055A",	bmi055},
>  	{"BMA0255",	bma255},
>  	{"BMA250E",	bma250e},
> +	{"BMA222",	bma222},
>  	{"BMA222E",	bma222e},
>  	{"BMA0280",	bma280},
>  	{"BOSC0200"},
> @@ -66,6 +68,7 @@ static const struct i2c_device_id bmc150_accel_id[] = {
>  	{"bmi055_accel",	bmi055},
>  	{"bma255",		bma255},
>  	{"bma250e",		bma250e},
> +	{"bma222",		bma222},
>  	{"bma222e",		bma222e},
>  	{"bma280",		bma280},
>  	{}
> @@ -78,6 +81,7 @@ static const struct of_device_id bmc150_accel_of_match[] = {
>  	{ .compatible = "bosch,bmi055_accel" },
>  	{ .compatible = "bosch,bma255" },
>  	{ .compatible = "bosch,bma250e" },
> +	{ .compatible = "bosch,bma222" },
>  	{ .compatible = "bosch,bma222e" },
>  	{ .compatible = "bosch,bma280" },
>  	{ },
> diff --git a/drivers/iio/accel/bmc150-accel-spi.c b/drivers/iio/accel/bmc150-accel-spi.c
> index 2a8c311d6f5a..74a8aee4f612 100644
> --- a/drivers/iio/accel/bmc150-accel-spi.c
> +++ b/drivers/iio/accel/bmc150-accel-spi.c
> @@ -39,6 +39,7 @@ static const struct acpi_device_id bmc150_accel_acpi_match[] = {
>  	{"BMI055A",	bmi055},
>  	{"BMA0255",	bma255},
>  	{"BMA250E",	bma250e},
> +	{"BMA222",	bma222},
>  	{"BMA222E",	bma222e},
>  	{"BMA0280",	bma280},
>  	{ },
> @@ -50,6 +51,7 @@ static const struct spi_device_id bmc150_accel_id[] = {
>  	{"bmi055_accel",	bmi055},
>  	{"bma255",		bma255},
>  	{"bma250e",		bma250e},
> +	{"bma222",		bma222},
>  	{"bma222e",		bma222e},
>  	{"bma280",		bma280},
>  	{}
> diff --git a/drivers/iio/accel/bmc150-accel.h b/drivers/iio/accel/bmc150-accel.h
> index ae6118ae11b1..f5427103574d 100644
> --- a/drivers/iio/accel/bmc150-accel.h
> +++ b/drivers/iio/accel/bmc150-accel.h
> @@ -9,6 +9,7 @@ enum {
>  	bmi055,
>  	bma255,
>  	bma250e,
> +	bma222,
>  	bma222e,
>  	bma280,
>  };
diff mbox series

Patch

diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
index 48435865fdaf..0dafe4052856 100644
--- a/drivers/iio/accel/bmc150-accel-core.c
+++ b/drivers/iio/accel/bmc150-accel-core.c
@@ -5,6 +5,7 @@ 
  *  - BMI055
  *  - BMA255
  *  - BMA250E
+ *  - BMA222
  *  - BMA222E
  *  - BMA280
  *
@@ -1013,6 +1014,8 @@  static const struct iio_event_spec bmc150_accel_event = {
 	IIO_CHAN_SOFT_TIMESTAMP(3),					\
 }
 
+static const struct iio_chan_spec bma222_accel_channels[] =
+	BMC150_ACCEL_CHANNELS(8);
 static const struct iio_chan_spec bma222e_accel_channels[] =
 	BMC150_ACCEL_CHANNELS(8);
 static const struct iio_chan_spec bma250e_accel_channels[] =
@@ -1063,6 +1066,20 @@  static const struct bmc150_accel_chip_info bmc150_accel_chip_info_tbl[] = {
 				 {153277, BMC150_ACCEL_DEF_RANGE_8G},
 				 {306457, BMC150_ACCEL_DEF_RANGE_16G} },
 	},
+	[bma222] = {
+		.name = "BMA222",
+		.chip_id = 0x03,
+		.channels = bma222_accel_channels,
+		.num_channels = ARRAY_SIZE(bma222_accel_channels),
+		/*
+		 * The datasheet page 17 says:
+		 * 15.6, 31.3, 62.5 and 125 mg per LSB.
+		 */
+		.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} },
+	},
 	[bma222e] = {
 		.name = "BMA222E",
 		.chip_id = 0xF8,
diff --git a/drivers/iio/accel/bmc150-accel-i2c.c b/drivers/iio/accel/bmc150-accel-i2c.c
index 06021c8685a7..bba92dd33179 100644
--- a/drivers/iio/accel/bmc150-accel-i2c.c
+++ b/drivers/iio/accel/bmc150-accel-i2c.c
@@ -5,6 +5,7 @@ 
  *  - BMI055
  *  - BMA255
  *  - BMA250E
+ *  - BMA222
  *  - BMA222E
  *  - BMA280
  *
@@ -54,6 +55,7 @@  static const struct acpi_device_id bmc150_accel_acpi_match[] = {
 	{"BMI055A",	bmi055},
 	{"BMA0255",	bma255},
 	{"BMA250E",	bma250e},
+	{"BMA222",	bma222},
 	{"BMA222E",	bma222e},
 	{"BMA0280",	bma280},
 	{"BOSC0200"},
@@ -66,6 +68,7 @@  static const struct i2c_device_id bmc150_accel_id[] = {
 	{"bmi055_accel",	bmi055},
 	{"bma255",		bma255},
 	{"bma250e",		bma250e},
+	{"bma222",		bma222},
 	{"bma222e",		bma222e},
 	{"bma280",		bma280},
 	{}
@@ -78,6 +81,7 @@  static const struct of_device_id bmc150_accel_of_match[] = {
 	{ .compatible = "bosch,bmi055_accel" },
 	{ .compatible = "bosch,bma255" },
 	{ .compatible = "bosch,bma250e" },
+	{ .compatible = "bosch,bma222" },
 	{ .compatible = "bosch,bma222e" },
 	{ .compatible = "bosch,bma280" },
 	{ },
diff --git a/drivers/iio/accel/bmc150-accel-spi.c b/drivers/iio/accel/bmc150-accel-spi.c
index 2a8c311d6f5a..74a8aee4f612 100644
--- a/drivers/iio/accel/bmc150-accel-spi.c
+++ b/drivers/iio/accel/bmc150-accel-spi.c
@@ -39,6 +39,7 @@  static const struct acpi_device_id bmc150_accel_acpi_match[] = {
 	{"BMI055A",	bmi055},
 	{"BMA0255",	bma255},
 	{"BMA250E",	bma250e},
+	{"BMA222",	bma222},
 	{"BMA222E",	bma222e},
 	{"BMA0280",	bma280},
 	{ },
@@ -50,6 +51,7 @@  static const struct spi_device_id bmc150_accel_id[] = {
 	{"bmi055_accel",	bmi055},
 	{"bma255",		bma255},
 	{"bma250e",		bma250e},
+	{"bma222",		bma222},
 	{"bma222e",		bma222e},
 	{"bma280",		bma280},
 	{}
diff --git a/drivers/iio/accel/bmc150-accel.h b/drivers/iio/accel/bmc150-accel.h
index ae6118ae11b1..f5427103574d 100644
--- a/drivers/iio/accel/bmc150-accel.h
+++ b/drivers/iio/accel/bmc150-accel.h
@@ -9,6 +9,7 @@  enum {
 	bmi055,
 	bma255,
 	bma250e,
+	bma222,
 	bma222e,
 	bma280,
 };