FAILED: patch "[PATCH] iio: accel: bma180: Fix BMA25x bandwidth register values" failed to apply to 5.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8090d67421ddab0ae932abab5a60200598bf0bbb Mon Sep 17 00:00:00 2001
From: Stephan Gerhold <[email protected]>
Date: Wed, 26 May 2021 11:44:07 +0200
Subject: [PATCH] iio: accel: bma180: Fix BMA25x bandwidth register values
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
According to the BMA253 datasheet [1] and BMA250 datasheet [2] the bandwidth value for BMA25x should be set as 01xxx:
"Settings 00xxx result in a bandwidth of 7.81 Hz; [...]
It is recommended [...] to use the range from ´01000b´ to ´01111b´ only in order to be compatible with future products."
However, at the moment the drivers sets bandwidth values from 0 to 6, which is not recommended and always results into 7.81 Hz bandwidth according to the datasheet.
Fix this by introducing a bw_offset = 8 = 01000b for BMA25x, so the additional bit is always set for BMA25x.
[1]: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bma253-ds000.pdf
[2]: https://datasheet.octopart.com/BMA250-Bosch-datasheet-15540103.pdf
drivers/iio/accel/bma180.c +7 -2
@@ -55,7 +55,7 @@ struct bma180_part_info {u8 int_reset_reg, int_reset_mask;u8 sleep_reg, sleep_mask; -u8 bw_reg, bw_mask; +u8 bw_reg, bw_mask, bw_offset;u8 scale_reg, scale_mask;u8 power_reg, power_mask, lowpower_val;u8 int_enable_reg, int_enable_mask;
@@ -127,6 +127,7 @@ struct bma180_part_info {#define BMA250_RANGE_MASK GENMASK(3, 0)/* Range of accel values */ #define BMA250_BW_MASK GENMASK(4, 0)/* Accel bandwidth */ +#define BMA250_BW_OFFSET 8#define BMA250_SUSPEND_MASK BIT(7)/* chip will sleep */ #define BMA250_LOWPOWER_MASK BIT(6)#define BMA250_DATA_INTEN_MASK BIT(4)
@@ -143,6 +144,7 @@ struct bma180_part_info {#define BMA254_RANGE_MASK GENMASK(3, 0)/* Range of accel values */ #define BMA254_BW_MASK GENMASK(4, 0)/* Accel bandwidth */ +#define BMA254_BW_OFFSET 8#define BMA254_SUSPEND_MASK BIT(7)/* chip will sleep */ #define BMA254_LOWPOWER_MASK BIT(6)#define BMA254_DATA_INTEN_MASK BIT(4)
@@ -287,7 +289,8 @@ static int bma180_set_bw(struct bma180_data *data, int val)for (i =0 ; i < data->part_info->num_bw; ++i) {if (data->part_info->bw_table[i] == val) { ret =bma180_set_bits (data, data->part_info->bw_reg, - data->part_info->bw_mask, i); + data->part_info->bw_mask, + i + data->part_info->bw_offset);if (ret) {dev_err (&data->client->dev,"failed to set bandwidth\n" );
@@ -880,6 +883,7 @@ static const struct bma180_part_info bma180_part_info[] = { .sleep_mask = BMA250_SUSPEND_MASK, .bw_reg = BMA250_BW_REG, .bw_mask = BMA250_BW_MASK, + .bw_offset = BMA250_BW_OFFSET, .scale_reg = BMA250_RANGE_REG, .scale_mask = BMA250_RANGE_MASK, .power_reg = BMA250_POWER_REG,
@@ -909,6 +913,7 @@ static const struct bma180_part_info bma180_part_info[] = { .sleep_mask = BMA254_SUSPEND_MASK, .bw_reg = BMA254_BW_REG, .bw_mask = BMA254_BW_MASK, + .bw_offset = BMA254_BW_OFFSET, .scale_reg = BMA254_RANGE_REG, .scale_mask = BMA254_RANGE_MASK, .power_reg = BMA254_POWER_REG,
Sudip Mukherjee
Reviewed-by Linus WalleijHi Greg,
Quoted 5 lines · On Sun, Jul 11, 2021 at 03:01:27PM +0200, [email protected] wrote:
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Here is the backport along with 9436abc40139 ("iio: accel: bma180: Use explicit member assignment") which makes the backporting a little easier. This will apply to all branches till 4.4-stable.
--
Regards
Sudip
From 1ed1fa336683b5866b1accd67dc5bd126c9d014e Mon Sep 17 00:00:00 2001
From: Linus Walleij <[email protected]>
Date: Wed, 11 Dec 2019 22:38:18 +0100
Subject: [PATCH 1/2] iio: accel: bma180: Use explicit member assignment
commit 9436abc40139503a7cea22a96437697d048f31c0 upstream
This uses the C99 explicit .member assignment for the variant data in struct bma180_part_info. This makes it easier to understand and add new variants.
--- drivers/iio/accel/bma180.c | 68 ++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 24 deletions(-)
drivers/iio/accel/bma180.c +44 -24
@@ -633,32 +633,52 @@ static const struct iio_chan_spec bma250_channels[] = {static const struct bma180_part_info bma180_part_info[] = { [BMA180 ] = { - bma180_channels,ARRAY_SIZE (bma180_channels), - bma180_scale_table,ARRAY_SIZE (bma180_scale_table), - bma180_bw_table,ARRAY_SIZE (bma180_bw_table), -BMA180_CTRL_REG0 ,BMA180_RESET_INT , -BMA180_CTRL_REG0 ,BMA180_SLEEP , -BMA180_BW_TCS ,BMA180_BW , -BMA180_OFFSET_LSB1 ,BMA180_RANGE , -BMA180_TCO_Z ,BMA180_MODE_CONFIG ,BMA180_LOW_POWER , -BMA180_CTRL_REG3 ,BMA180_NEW_DATA_INT , -BMA180_RESET , - bma180_chip_config, - bma180_chip_disable, + .channels = bma180_channels, + .num_channels =ARRAY_SIZE (bma180_channels), + .scale_table = bma180_scale_table, + .num_scales =ARRAY_SIZE (bma180_scale_table), + .bw_table = bma180_bw_table, + .num_bw =ARRAY_SIZE (bma180_bw_table), + .int_reset_reg =BMA180_CTRL_REG0 , + .int_reset_mask =BMA180_RESET_INT , + .sleep_reg =BMA180_CTRL_REG0 , + .sleep_mask =BMA180_SLEEP , + .bw_reg =BMA180_BW_TCS , + .bw_mask =BMA180_BW , + .scale_reg =BMA180_OFFSET_LSB1 , + .scale_mask =BMA180_RANGE , + .power_reg =BMA180_TCO_Z , + .power_mask =BMA180_MODE_CONFIG , + .lowpower_val =BMA180_LOW_POWER , + .int_enable_reg =BMA180_CTRL_REG3 , + .int_enable_mask =BMA180_NEW_DATA_INT , + .softreset_reg =BMA180_RESET , + .chip_config = bma180_chip_config, + .chip_disable = bma180_chip_disable, }, [BMA250 ] = { - bma250_channels,ARRAY_SIZE (bma250_channels), - bma250_scale_table,ARRAY_SIZE (bma250_scale_table), - bma250_bw_table,ARRAY_SIZE (bma250_bw_table), -BMA250_INT_RESET_REG ,BMA250_INT_RESET_MASK , -BMA250_POWER_REG ,BMA250_SUSPEND_MASK , -BMA250_BW_REG ,BMA250_BW_MASK , -BMA250_RANGE_REG ,BMA250_RANGE_MASK , -BMA250_POWER_REG ,BMA250_LOWPOWER_MASK ,1 , -BMA250_INT_ENABLE_REG ,BMA250_DATA_INTEN_MASK , -BMA250_RESET_REG , - bma250_chip_config, - bma250_chip_disable, + .channels = bma250_channels, + .num_channels =ARRAY_SIZE (bma250_channels), + .scale_table = bma250_scale_table, + .num_scales =ARRAY_SIZE (bma250_scale_table), + .bw_table = bma250_bw_table, + .num_bw =ARRAY_SIZE (bma250_bw_table), + .int_reset_reg =BMA250_INT_RESET_REG , + .int_reset_mask =BMA250_INT_RESET_MASK , + .sleep_reg =BMA250_POWER_REG , + .sleep_mask =BMA250_SUSPEND_MASK , + .bw_reg =BMA250_BW_REG , + .bw_mask =BMA250_BW_MASK , + .scale_reg =BMA250_RANGE_REG , + .scale_mask =BMA250_RANGE_MASK , + .power_reg =BMA250_POWER_REG , + .power_mask =BMA250_LOWPOWER_MASK , + .lowpower_val =1 , + .int_enable_reg =BMA250_INT_ENABLE_REG , + .int_enable_mask =BMA250_DATA_INTEN_MASK , + .softreset_reg =BMA250_RESET_REG , + .chip_config = bma250_chip_config, + .chip_disable = bma250_chip_disable, }, };
Signature · 1 line
2.30.2
From a56bbb39c183206a3093b8d9ee09b89cc6a45589 Mon Sep 17 00:00:00 2001
From: Stephan Gerhold <[email protected]>
Date: Wed, 26 May 2021 11:44:07 +0200
Subject: [PATCH 2/2] iio: accel: bma180: Fix BMA25x bandwidth register values
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
commit 8090d67421ddab0ae932abab5a60200598bf0bbb upstream
According to the BMA253 datasheet [1] and BMA250 datasheet [2] the bandwidth value for BMA25x should be set as 01xxx:
"Settings 00xxx result in a bandwidth of 7.81 Hz; [...]
It is recommended [...] to use the range from ´01000b´ to ´01111b´ only in order to be compatible with future products."
However, at the moment the drivers sets bandwidth values from 0 to 6, which is not recommended and always results into 7.81 Hz bandwidth according to the datasheet.
Fix this by introducing a bw_offset = 8 = 01000b for BMA25x, so the additional bit is always set for BMA25x.
[1]: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bma253-ds000.pdf
[2]: https://datasheet.octopart.com/BMA250-Bosch-datasheet-15540103.pdf
--- drivers/iio/accel/bma180.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/iio/accel/bma180.c +5 -2
@@ -47,7 +47,7 @@ struct bma180_part_info {u8 int_reset_reg, int_reset_mask;u8 sleep_reg, sleep_mask; -u8 bw_reg, bw_mask; +u8 bw_reg, bw_mask, bw_offset;u8 scale_reg, scale_mask;u8 power_reg, power_mask, lowpower_val;u8 int_enable_reg, int_enable_mask;
@@ -103,6 +103,7 @@ struct bma180_part_info {#define BMA250_RANGE_MASK GENMASK(3, 0)/* Range of accel values */ #define BMA250_BW_MASK GENMASK(4, 0)/* Accel bandwidth */ +#define BMA250_BW_OFFSET 8#define BMA250_SUSPEND_MASK BIT(7)/* chip will sleep */ #define BMA250_LOWPOWER_MASK BIT(6)#define BMA250_DATA_INTEN_MASK BIT(4)
@@ -241,7 +242,8 @@ static int bma180_set_bw(struct bma180_data *data, int val)for (i =0 ; i < data->part_info->num_bw; ++i) {if (data->part_info->bw_table[i] == val) { ret =bma180_set_bits (data, data->part_info->bw_reg, - data->part_info->bw_mask, i); + data->part_info->bw_mask, + i + data->part_info->bw_offset);if (ret) {dev_err (&data->client->dev,"failed to set bandwidth\n" );
@@ -669,6 +671,7 @@ static const struct bma180_part_info bma180_part_info[] = { .sleep_mask = BMA250_SUSPEND_MASK, .bw_reg = BMA250_BW_REG, .bw_mask = BMA250_BW_MASK, + .bw_offset = BMA250_BW_OFFSET, .scale_reg = BMA250_RANGE_REG, .scale_mask = BMA250_RANGE_MASK, .power_reg = BMA250_POWER_REG,
Signature · 1 line
2.30.2
Greg KH
maintainerQuoted 4 lines · Sudip Mukherjee
Hi Greg,
Quoted 1 line · On Sun, Jul 11, 2021 at 03:01:27PM +0200, [email protected] wrote:
Quoted 9 lines
Quoted 4 lines
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Here is the backport along with
9436abc40139("iio: accel: bma180: Use explicit member assignment") which makes the backporting a little easier. This will apply to all branches till 4.4-stable.
Thanks, both now queued up.
greg k-h