2023-10-22 17:23:22

by Angel Iglesias

[permalink] [raw]
Subject: [PATCH v2 0/5] Add support for BMP390 and various driver cleanups

Add support for the Bosch BMP390 pressure sensors and includes minor
driver code cleanups.
Patches 1 and 2 update I2C and SPI driver matching logic using newer
helper functions available.
Patch 3 fixes minor coding style incoherences.
Patches 4 and 5 introduce support for the new BMP390 sensor allowing
sensor families to have a list of known device IDs to improve detection

This patch series is aggregates patches from various series:
https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/all/[email protected]/
https://lore.kernel.org/all/[email protected]/

Changes in v2:
- Dropped unnecessary register reorder in patch 3.
- Simplified error reporting on patch 4 avoiding string memallocs.
- Added fallback logic on patch 4 to follow firmware configuration
whether device ID matches with any of the known devices IDs.


Angel Iglesias (4):
iio: pressure: bmp280: Use spi_get_device_match_data()
iio: pressure: bmp280: Rearrange vars in reverse xmas tree order
iio: pressure: bmp280: Allow multiple chips id per family of devices
iio: pressure: bmp280: Add support for BMP390

Biju Das (1):
iio: pressure: bmp280: Use i2c_get_match_data()

drivers/iio/pressure/bmp280-core.c | 38 +++++++++++++++++++++++-------
drivers/iio/pressure/bmp280-i2c.c | 8 +++----
drivers/iio/pressure/bmp280-spi.c | 10 +++-----
drivers/iio/pressure/bmp280.h | 4 +++-
4 files changed, 38 insertions(+), 22 deletions(-)


base-commit: 89e2233386a5670d15908628b63e611cb03b0d03
--
2.42.0


2023-10-22 17:23:30

by Angel Iglesias

[permalink] [raw]
Subject: [PATCH v2 1/5] iio: pressure: bmp280: Use i2c_get_match_data()

From: Biju Das <[email protected]>

Replace device_get_match_data() and id lookup for retrieving match data
by i2c_get_match_data().

Signed-off-by: Biju Das <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>

diff --git a/drivers/iio/pressure/bmp280-i2c.c b/drivers/iio/pressure/bmp280-i2c.c
index dbe630ad05b5..b3e069730f97 100644
--- a/drivers/iio/pressure/bmp280-i2c.c
+++ b/drivers/iio/pressure/bmp280-i2c.c
@@ -11,9 +11,7 @@ static int bmp280_i2c_probe(struct i2c_client *client)
const struct bmp280_chip_info *chip_info;
const struct i2c_device_id *id = i2c_client_get_device_id(client);

- chip_info = device_get_match_data(&client->dev);
- if (!chip_info)
- chip_info = (const struct bmp280_chip_info *) id->driver_data;
+ chip_info = i2c_get_match_data(client);

regmap = devm_regmap_init_i2c(client, chip_info->regmap_config);
if (IS_ERR(regmap)) {
--
2.42.0

2023-10-22 17:23:31

by Angel Iglesias

[permalink] [raw]
Subject: [PATCH v2 2/5] iio: pressure: bmp280: Use spi_get_device_match_data()

Use the spi_get_device_match_data() helper instead of
device_get_match_data() and the fallback match_id logic.

Signed-off-by: Angel Iglesias <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>

diff --git a/drivers/iio/pressure/bmp280-spi.c b/drivers/iio/pressure/bmp280-spi.c
index 1dff9bb7c4e9..2eed483a8cc4 100644
--- a/drivers/iio/pressure/bmp280-spi.c
+++ b/drivers/iio/pressure/bmp280-spi.c
@@ -58,9 +58,7 @@ static int bmp280_spi_probe(struct spi_device *spi)
return ret;
}

- chip_info = device_get_match_data(&spi->dev);
- if (!chip_info)
- chip_info = (const struct bmp280_chip_info *) id->driver_data;
+ chip_info = spi_get_device_match_data(spi);

regmap = devm_regmap_init(&spi->dev,
&bmp280_regmap_bus,
--
2.42.0

2023-10-22 17:23:48

by Angel Iglesias

[permalink] [raw]
Subject: [PATCH v2 4/5] iio: pressure: bmp280: Allow multiple chips id per family of devices

Improve device detection in certain chip families known to have various
chip ids.
When no known ids match, gives a warning but follows along what device
said on the firmware and tries to configure it.

Signed-off-by: Angel Iglesias <[email protected]>

diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c
index a2ef1373a274..deb336781b26 100644
--- a/drivers/iio/pressure/bmp280-core.c
+++ b/drivers/iio/pressure/bmp280-core.c
@@ -794,10 +794,12 @@ static int bmp280_chip_config(struct bmp280_data *data)
}

static const int bmp280_oversampling_avail[] = { 1, 2, 4, 8, 16 };
+static const u8 bmp280_chip_ids[] = { BMP280_CHIP_ID };

const struct bmp280_chip_info bmp280_chip_info = {
.id_reg = BMP280_REG_ID,
- .chip_id = BMP280_CHIP_ID,
+ .chip_id = bmp280_chip_ids,
+ .num_chip_id = ARRAY_SIZE(bmp280_chip_ids),
.regmap_config = &bmp280_regmap_config,
.start_up_time = 2000,
.channels = bmp280_channels,
@@ -846,9 +848,12 @@ static int bme280_chip_config(struct bmp280_data *data)
return bmp280_chip_config(data);
}

+static const u8 bme280_chip_ids[] = { BME280_CHIP_ID };
+
const struct bmp280_chip_info bme280_chip_info = {
.id_reg = BMP280_REG_ID,
- .chip_id = BME280_CHIP_ID,
+ .chip_id = bme280_chip_ids,
+ .num_chip_id = ARRAY_SIZE(bme280_chip_ids),
.regmap_config = &bmp280_regmap_config,
.start_up_time = 2000,
.channels = bmp280_channels,
@@ -1220,10 +1225,12 @@ static int bmp380_chip_config(struct bmp280_data *data)

static const int bmp380_oversampling_avail[] = { 1, 2, 4, 8, 16, 32 };
static const int bmp380_iir_filter_coeffs_avail[] = { 1, 2, 4, 8, 16, 32, 64, 128};
+static const u8 bmp380_chip_ids[] = { BMP380_CHIP_ID };

const struct bmp280_chip_info bmp380_chip_info = {
.id_reg = BMP380_REG_ID,
- .chip_id = BMP380_CHIP_ID,
+ .chip_id = bmp380_chip_ids,
+ .num_chip_id = ARRAY_SIZE(bmp380_chip_ids),
.regmap_config = &bmp380_regmap_config,
.start_up_time = 2000,
.channels = bmp380_channels,
@@ -1720,10 +1727,12 @@ static int bmp580_chip_config(struct bmp280_data *data)
}

static const int bmp580_oversampling_avail[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
+static const u8 bmp580_chip_ids[] = { BMP580_CHIP_ID, BMP580_CHIP_ID_ALT };

const struct bmp280_chip_info bmp580_chip_info = {
.id_reg = BMP580_REG_CHIP_ID,
- .chip_id = BMP580_CHIP_ID,
+ .chip_id = bmp580_chip_ids,
+ .num_chip_id = ARRAY_SIZE(bmp580_chip_ids),
.regmap_config = &bmp580_regmap_config,
.start_up_time = 2000,
.channels = bmp380_channels,
@@ -1983,10 +1992,12 @@ static int bmp180_chip_config(struct bmp280_data *data)

static const int bmp180_oversampling_temp_avail[] = { 1 };
static const int bmp180_oversampling_press_avail[] = { 1, 2, 4, 8 };
+static const u8 bmp180_chip_ids[] = { BMP180_CHIP_ID };

const struct bmp280_chip_info bmp180_chip_info = {
.id_reg = BMP280_REG_ID,
- .chip_id = BMP180_CHIP_ID,
+ .chip_id = bmp180_chip_ids,
+ .num_chip_id = ARRAY_SIZE(bmp180_chip_ids),
.regmap_config = &bmp180_regmap_config,
.start_up_time = 2000,
.channels = bmp280_channels,
@@ -2077,6 +2088,7 @@ int bmp280_common_probe(struct device *dev,
struct bmp280_data *data;
struct gpio_desc *gpiod;
unsigned int chip_id;
+ unsigned int i;
int ret;

indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
@@ -2142,12 +2154,19 @@ int bmp280_common_probe(struct device *dev,
ret = regmap_read(regmap, data->chip_info->id_reg, &chip_id);
if (ret < 0)
return ret;
- if (chip_id != data->chip_info->chip_id) {
- dev_err(dev, "bad chip id: expected %x got %x\n",
- data->chip_info->chip_id, chip_id);
- return -EINVAL;
+
+ for (i = 0; i < data->chip_info->num_chip_id; i++) {
+ if (chip_id == data->chip_info->chip_id[i]) {
+ dev_info(dev, "0x%x is a known chip id for %s\n", chip_id, name);
+ break;
+ }
+ dev_warn(dev, "chip id 0x%x does not match known id 0x%x\n",
+ chip_id, data->chip_info->chip_id[i]);
}

+ if (i == data->chip_info->num_chip_id)
+ dev_warn(dev, "bad chip id: 0x%x is not a known chip id\n", chip_id);
+
if (data->chip_info->preinit) {
ret = data->chip_info->preinit(data);
if (ret)
diff --git a/drivers/iio/pressure/bmp280.h b/drivers/iio/pressure/bmp280.h
index 5c0563ce7572..a230fcfc4a85 100644
--- a/drivers/iio/pressure/bmp280.h
+++ b/drivers/iio/pressure/bmp280.h
@@ -418,7 +418,8 @@ struct bmp280_data {

struct bmp280_chip_info {
unsigned int id_reg;
- const unsigned int chip_id;
+ const u8 *chip_id;
+ int num_chip_id;

const struct regmap_config *regmap_config;

--
2.42.0

2023-10-22 17:23:54

by Angel Iglesias

[permalink] [raw]
Subject: [PATCH v2 3/5] iio: pressure: bmp280: Rearrange vars in reverse xmas tree order

Small cleanup reordering local variable declarations following reverse
christmas tree convention.

Signed-off-by: Angel Iglesias <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>

diff --git a/drivers/iio/pressure/bmp280-i2c.c b/drivers/iio/pressure/bmp280-i2c.c
index b3e069730f97..34e3bc758493 100644
--- a/drivers/iio/pressure/bmp280-i2c.c
+++ b/drivers/iio/pressure/bmp280-i2c.c
@@ -7,9 +7,9 @@

static int bmp280_i2c_probe(struct i2c_client *client)
{
- struct regmap *regmap;
- const struct bmp280_chip_info *chip_info;
const struct i2c_device_id *id = i2c_client_get_device_id(client);
+ const struct bmp280_chip_info *chip_info;
+ struct regmap *regmap;

chip_info = i2c_get_match_data(client);

diff --git a/drivers/iio/pressure/bmp280-spi.c b/drivers/iio/pressure/bmp280-spi.c
index 2eed483a8cc4..433d6fac83c4 100644
--- a/drivers/iio/pressure/bmp280-spi.c
+++ b/drivers/iio/pressure/bmp280-spi.c
@@ -14,8 +14,7 @@
static int bmp280_regmap_spi_write(void *context, const void *data,
size_t count)
{
- struct device *dev = context;
- struct spi_device *spi = to_spi_device(dev);
+ struct spi_device *spi = to_spi_device(context);
u8 buf[2];

memcpy(buf, data, 2);
@@ -31,8 +30,7 @@ static int bmp280_regmap_spi_write(void *context, const void *data,
static int bmp280_regmap_spi_read(void *context, const void *reg,
size_t reg_size, void *val, size_t val_size)
{
- struct device *dev = context;
- struct spi_device *spi = to_spi_device(dev);
+ struct spi_device *spi = to_spi_device(context);

return spi_write_then_read(spi, reg, reg_size, val, val_size);
}
--
2.42.0

2023-10-22 17:24:13

by Angel Iglesias

[permalink] [raw]
Subject: [PATCH v2 5/5] iio: pressure: bmp280: Add support for BMP390

Add BMP390 device ID to the supported IDs on bmp380 sensor family

Signed-off-by: Angel Iglesias <[email protected]>

diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c
index deb336781b26..c6c761e84006 100644
--- a/drivers/iio/pressure/bmp280-core.c
+++ b/drivers/iio/pressure/bmp280-core.c
@@ -13,6 +13,7 @@
* https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp280-ds001.pdf
* https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme280-ds002.pdf
* https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp388-ds001.pdf
+ * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp390-ds002.pdf
* https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp581-ds004.pdf
*
* Notice:
@@ -1225,7 +1226,7 @@ static int bmp380_chip_config(struct bmp280_data *data)

static const int bmp380_oversampling_avail[] = { 1, 2, 4, 8, 16, 32 };
static const int bmp380_iir_filter_coeffs_avail[] = { 1, 2, 4, 8, 16, 32, 64, 128};
-static const u8 bmp380_chip_ids[] = { BMP380_CHIP_ID };
+static const u8 bmp380_chip_ids[] = { BMP380_CHIP_ID, BMP390_CHIP_ID };

const struct bmp280_chip_info bmp380_chip_info = {
.id_reg = BMP380_REG_ID,
diff --git a/drivers/iio/pressure/bmp280.h b/drivers/iio/pressure/bmp280.h
index a230fcfc4a85..2971bf58f802 100644
--- a/drivers/iio/pressure/bmp280.h
+++ b/drivers/iio/pressure/bmp280.h
@@ -292,6 +292,7 @@
#define BMP580_CHIP_ID_ALT 0x51
#define BMP180_CHIP_ID 0x55
#define BMP280_CHIP_ID 0x58
+#define BMP390_CHIP_ID 0x60
#define BME280_CHIP_ID 0x60
#define BMP280_SOFT_RESET_VAL 0xB6

--
2.42.0

2023-10-23 11:22:08

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v2 1/5] iio: pressure: bmp280: Use i2c_get_match_data()

On Sun, Oct 22, 2023 at 07:22:17PM +0200, Angel Iglesias wrote:
> From: Biju Das <[email protected]>
>
> Replace device_get_match_data() and id lookup for retrieving match data
> by i2c_get_match_data().
>
> Signed-off-by: Biju Das <[email protected]>
> Reviewed-by: Andy Shevchenko <[email protected]>

Hmm... What tools have you used to format/send this? It seems differs
to what `git format-patch` does.

--
With Best Regards,
Andy Shevchenko


2023-10-23 11:26:23

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] iio: pressure: bmp280: Allow multiple chips id per family of devices

On Sun, Oct 22, 2023 at 07:22:20PM +0200, Angel Iglesias wrote:
> Improve device detection in certain chip families known to have various
> chip ids.
> When no known ids match, gives a warning but follows along what device
> said on the firmware and tries to configure it.

I would rephrase it a bit:

"Improve device detection in certain chip families known to have
various chip IDs. When no ID matches, give a warning but follow
along what device said on the firmware side and try to configure
it."

...

> + for (i = 0; i < data->chip_info->num_chip_id; i++) {
> + if (chip_id == data->chip_info->chip_id[i]) {
> + dev_info(dev, "0x%x is a known chip id for %s\n", chip_id, name);
> + break;
> + }

> + dev_warn(dev, "chip id 0x%x does not match known id 0x%x\n",
> + chip_id, data->chip_info->chip_id[i]);

If the matching ID is not the first one, user will have an unneeded warning here.

> }

--
With Best Regards,
Andy Shevchenko


2023-10-23 14:01:32

by Angel Iglesias

[permalink] [raw]
Subject: Re: [PATCH v2 1/5] iio: pressure: bmp280: Use i2c_get_match_data()

On Mon, 2023-10-23 at 14:21 +0300, Andy Shevchenko wrote:
> On Sun, Oct 22, 2023 at 07:22:17PM +0200, Angel Iglesias wrote:
> > From: Biju Das <[email protected]>
> >
> > Replace device_get_match_data() and id lookup for retrieving match data
> > by i2c_get_match_data().
> >
> > Signed-off-by: Biju Das <[email protected]>
> > Reviewed-by: Andy Shevchenko <[email protected]>
>
> Hmm... What tools have you used to format/send this? It seems differs
> to what `git format-patch` does.
>

I just applied this patch from Biju's series with "git am" and then generated
this series running the following invocation:
"git format-patch -v2 -p -n --thread --cover-letter
[email protected] --base=iio_upstream/togreg HEAD~5"
My work repository is publicly available here:
https://github.com/angiglesias/linux/commits/iio-bmp280-add-bmp390-support

Kind regards,
Angel

2023-10-23 20:05:53

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v2 1/5] iio: pressure: bmp280: Use i2c_get_match_data()

On Mon, Oct 23, 2023 at 04:00:53PM +0200, Angel Iglesias wrote:
> On Mon, 2023-10-23 at 14:21 +0300, Andy Shevchenko wrote:
> > On Sun, Oct 22, 2023 at 07:22:17PM +0200, Angel Iglesias wrote:
> > > From: Biju Das <[email protected]>
> > >
> > > Replace device_get_match_data() and id lookup for retrieving match data
> > > by i2c_get_match_data().
> > >
> > > Signed-off-by: Biju Das <[email protected]>
> > > Reviewed-by: Andy Shevchenko <[email protected]>
> >
> > Hmm... What tools have you used to format/send this? It seems differs
> > to what `git format-patch` does.
>
> I just applied this patch from Biju's series with "git am" and then generated
> this series running the following invocation:
> "git format-patch -v2 -p -n --thread --cover-letter
> [email protected] --base=iio_upstream/togreg HEAD~5"
> My work repository is publicly available here:
> https://github.com/angiglesias/linux/commits/iio-bmp280-add-bmp390-support

Somehow the diffstat is stripped off...

--
With Best Regards,
Andy Shevchenko


2023-10-27 13:41:51

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 3/5] iio: pressure: bmp280: Rearrange vars in reverse xmas tree order

On Sun, 22 Oct 2023 19:22:19 +0200
Angel Iglesias <[email protected]> wrote:

> Small cleanup reordering local variable declarations following reverse
> christmas tree convention.
>
> Signed-off-by: Angel Iglesias <[email protected]>
> Reviewed-by: Andy Shevchenko <[email protected]>
Applied patches 1-3 to the togreg branch of iio.git.
I'll be rebasing that on rc1 once available. In meantime, pushed out
as testing for 0-day to take a poke at it.

Thanks,

Jonathan

>
> diff --git a/drivers/iio/pressure/bmp280-i2c.c b/drivers/iio/pressure/bmp280-i2c.c
> index b3e069730f97..34e3bc758493 100644
> --- a/drivers/iio/pressure/bmp280-i2c.c
> +++ b/drivers/iio/pressure/bmp280-i2c.c
> @@ -7,9 +7,9 @@
>
> static int bmp280_i2c_probe(struct i2c_client *client)
> {
> - struct regmap *regmap;
> - const struct bmp280_chip_info *chip_info;
> const struct i2c_device_id *id = i2c_client_get_device_id(client);
> + const struct bmp280_chip_info *chip_info;
> + struct regmap *regmap;
>
> chip_info = i2c_get_match_data(client);
>
> diff --git a/drivers/iio/pressure/bmp280-spi.c b/drivers/iio/pressure/bmp280-spi.c
> index 2eed483a8cc4..433d6fac83c4 100644
> --- a/drivers/iio/pressure/bmp280-spi.c
> +++ b/drivers/iio/pressure/bmp280-spi.c
> @@ -14,8 +14,7 @@
> static int bmp280_regmap_spi_write(void *context, const void *data,
> size_t count)
> {
> - struct device *dev = context;
> - struct spi_device *spi = to_spi_device(dev);
> + struct spi_device *spi = to_spi_device(context);
> u8 buf[2];
>
> memcpy(buf, data, 2);
> @@ -31,8 +30,7 @@ static int bmp280_regmap_spi_write(void *context, const void *data,
> static int bmp280_regmap_spi_read(void *context, const void *reg,
> size_t reg_size, void *val, size_t val_size)
> {
> - struct device *dev = context;
> - struct spi_device *spi = to_spi_device(dev);
> + struct spi_device *spi = to_spi_device(context);
>
> return spi_write_then_read(spi, reg, reg_size, val, val_size);
> }

2023-10-27 13:43:33

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] iio: pressure: bmp280: Allow multiple chips id per family of devices

On Mon, 23 Oct 2023 14:25:42 +0300
Andy Shevchenko <[email protected]> wrote:

> On Sun, Oct 22, 2023 at 07:22:20PM +0200, Angel Iglesias wrote:
> > Improve device detection in certain chip families known to have various
> > chip ids.
> > When no known ids match, gives a warning but follows along what device
> > said on the firmware and tries to configure it.
>
> I would rephrase it a bit:
>
> "Improve device detection in certain chip families known to have
> various chip IDs. When no ID matches, give a warning but follow
> along what device said on the firmware side and try to configure
> it."
>
> ...
>
> > + for (i = 0; i < data->chip_info->num_chip_id; i++) {
> > + if (chip_id == data->chip_info->chip_id[i]) {
> > + dev_info(dev, "0x%x is a known chip id for %s\n", chip_id, name);
> > + break;
> > + }
>
> > + dev_warn(dev, "chip id 0x%x does not match known id 0x%x\n",
> > + chip_id, data->chip_info->chip_id[i]);
>
> If the matching ID is not the first one, user will have an unneeded warning here.

Could be a dev_dbg() but I'd just drop it entirely.


>
> > }
>

2023-10-27 13:47:22

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] iio: pressure: bmp280: Allow multiple chips id per family of devices

On Fri, 27 Oct 2023 14:42:34 +0100
Jonathan Cameron <[email protected]> wrote:

> On Mon, 23 Oct 2023 14:25:42 +0300
> Andy Shevchenko <[email protected]> wrote:
>
> > On Sun, Oct 22, 2023 at 07:22:20PM +0200, Angel Iglesias wrote:
> > > Improve device detection in certain chip families known to have various
> > > chip ids.
> > > When no known ids match, gives a warning but follows along what device
> > > said on the firmware and tries to configure it.
> >
> > I would rephrase it a bit:
> >
> > "Improve device detection in certain chip families known to have
> > various chip IDs. When no ID matches, give a warning but follow
> > along what device said on the firmware side and try to configure
> > it."
> >
> > ...
> >
> > > + for (i = 0; i < data->chip_info->num_chip_id; i++) {
> > > + if (chip_id == data->chip_info->chip_id[i]) {
> > > + dev_info(dev, "0x%x is a known chip id for %s\n", chip_id, name);
> > > + break;
> > > + }
> >
> > > + dev_warn(dev, "chip id 0x%x does not match known id 0x%x\n",
> > > + chip_id, data->chip_info->chip_id[i]);
> >
> > If the matching ID is not the first one, user will have an unneeded warning here.
>
> Could be a dev_dbg() but I'd just drop it entirely.
>
Given that was all that came up, I've hopefully saved us all time by
dropping the bring and changing the patch description as Andy suggested.

With that done, applied.

Jonathan

>
> >
> > > }
> >
>

2023-10-27 13:49:53

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] iio: pressure: bmp280: Add support for BMP390

On Sun, 22 Oct 2023 19:22:21 +0200
Angel Iglesias <[email protected]> wrote:

> Add BMP390 device ID to the supported IDs on bmp380 sensor family
>
> Signed-off-by: Angel Iglesias <[email protected]>
>
Applied to the togreg branch of iio.git and pushed out as testing for 0-day
to poke at it.

Thanks,

Jonathan

> diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c
> index deb336781b26..c6c761e84006 100644
> --- a/drivers/iio/pressure/bmp280-core.c
> +++ b/drivers/iio/pressure/bmp280-core.c
> @@ -13,6 +13,7 @@
> * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp280-ds001.pdf
> * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme280-ds002.pdf
> * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp388-ds001.pdf
> + * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp390-ds002.pdf
> * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp581-ds004.pdf
> *
> * Notice:
> @@ -1225,7 +1226,7 @@ static int bmp380_chip_config(struct bmp280_data *data)
>
> static const int bmp380_oversampling_avail[] = { 1, 2, 4, 8, 16, 32 };
> static const int bmp380_iir_filter_coeffs_avail[] = { 1, 2, 4, 8, 16, 32, 64, 128};
> -static const u8 bmp380_chip_ids[] = { BMP380_CHIP_ID };
> +static const u8 bmp380_chip_ids[] = { BMP380_CHIP_ID, BMP390_CHIP_ID };
>
> const struct bmp280_chip_info bmp380_chip_info = {
> .id_reg = BMP380_REG_ID,
> diff --git a/drivers/iio/pressure/bmp280.h b/drivers/iio/pressure/bmp280.h
> index a230fcfc4a85..2971bf58f802 100644
> --- a/drivers/iio/pressure/bmp280.h
> +++ b/drivers/iio/pressure/bmp280.h
> @@ -292,6 +292,7 @@
> #define BMP580_CHIP_ID_ALT 0x51
> #define BMP180_CHIP_ID 0x55
> #define BMP280_CHIP_ID 0x58
> +#define BMP390_CHIP_ID 0x60
> #define BME280_CHIP_ID 0x60
> #define BMP280_SOFT_RESET_VAL 0xB6
>

2023-10-28 11:24:15

by Angel Iglesias

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] iio: pressure: bmp280: Allow multiple chips id per family of devices

On Fri, 2023-10-27 at 14:46 +0100, Jonathan Cameron wrote:
> On Fri, 27 Oct 2023 14:42:34 +0100
> Jonathan Cameron <[email protected]> wrote:
>
> > On Mon, 23 Oct 2023 14:25:42 +0300
> > Andy Shevchenko <[email protected]> wrote:
> >
> > > On Sun, Oct 22, 2023 at 07:22:20PM +0200, Angel Iglesias wrote: 
> > > > Improve device detection in certain chip families known to have various
> > > > chip ids.
> > > > When no known ids match, gives a warning but follows along what device
> > > > said on the firmware and tries to configure it.   
> > >
> > > I would rephrase it a bit:
> > >
> > > "Improve device detection in certain chip families known to have
> > > various chip IDs. When no ID matches, give a warning but follow
> > > along what device said on the firmware side and try to configure
> > > it."
> > >
> > > ...
> > >  
> > > > + for (i = 0; i < data->chip_info->num_chip_id; i++) {
> > > > + if (chip_id == data->chip_info->chip_id[i]) {
> > > > + dev_info(dev, "0x%x is a known chip id for
> > > > %s\n", chip_id, name);
> > > > + break;
> > > > + }   
> > >  
> > > > + dev_warn(dev, "chip id 0x%x does not match known id
> > > > 0x%x\n",
> > > > + chip_id, data->chip_info->chip_id[i]);   
> > >
> > > If the matching ID is not the first one, user will have an unneeded
> > > warning here. 
> >
> > Could be a dev_dbg() but I'd just drop it entirely.
> >
> Given that was all that came up, I've hopefully saved us all time by
> dropping the bring and changing the patch description as Andy suggested.
>
> With that done, applied.
>
> Jonathan
>

Sorry for the extra work Jonathan. Next time I'll be quicker checking the inbox.

Thanks for your time guys.

Angel

> >
> > >  
> > > >   }   
> > >  
> >
>

2023-10-28 13:08:15

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] iio: pressure: bmp280: Allow multiple chips id per family of devices

On Sat, 28 Oct 2023 13:23:46 +0200
Angel Iglesias <[email protected]> wrote:

> On Fri, 2023-10-27 at 14:46 +0100, Jonathan Cameron wrote:
> > On Fri, 27 Oct 2023 14:42:34 +0100
> > Jonathan Cameron <[email protected]> wrote:
> >
> > > On Mon, 23 Oct 2023 14:25:42 +0300
> > > Andy Shevchenko <[email protected]> wrote:
> > >
> > > > On Sun, Oct 22, 2023 at 07:22:20PM +0200, Angel Iglesias wrote: 
> > > > > Improve device detection in certain chip families known to have various
> > > > > chip ids.
> > > > > When no known ids match, gives a warning but follows along what device
> > > > > said on the firmware and tries to configure it.   
> > > >
> > > > I would rephrase it a bit:
> > > >
> > > > "Improve device detection in certain chip families known to have
> > > > various chip IDs. When no ID matches, give a warning but follow
> > > > along what device said on the firmware side and try to configure
> > > > it."
> > > >
> > > > ...
> > > >  
> > > > > + for (i = 0; i < data->chip_info->num_chip_id; i++) {
> > > > > + if (chip_id == data->chip_info->chip_id[i]) {
> > > > > + dev_info(dev, "0x%x is a known chip id for
> > > > > %s\n", chip_id, name);
> > > > > + break;
> > > > > + }   
> > > >  
> > > > > + dev_warn(dev, "chip id 0x%x does not match known id
> > > > > 0x%x\n",
> > > > > + chip_id, data->chip_info->chip_id[i]);   
> > > >
> > > > If the matching ID is not the first one, user will have an unneeded
> > > > warning here. 
> > >
> > > Could be a dev_dbg() but I'd just drop it entirely.
> > >
> > Given that was all that came up, I've hopefully saved us all time by
> > dropping the bring and changing the patch description as Andy suggested.
> >
> > With that done, applied.
> >
> > Jonathan
> >
>
> Sorry for the extra work Jonathan. Next time I'll be quicker checking the inbox.
Don't worry about it! It's a bit random when I get to IIO stuff these days
so when I do, I like to clear as much as possible out in one go.

J

>
> Thanks for your time guys.
>
> Angel
>
> > >
> > > >  
> > > > >   }   
> > > >  
> > >
> >
>