2021-07-19 07:22:31

by Matthias Schiffer

[permalink] [raw]
Subject: [PATCH 1/2] power: supply: sbs-battery: relax voltage limit

The Smart Battery Data Specification allows for values 0..65535 mV,
there is no reason to limit the value to 20000.

Signed-off-by: Matthias Schiffer <[email protected]>
---
drivers/power/supply/sbs-battery.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
index f84dbaab283a..3d6b8247d450 100644
--- a/drivers/power/supply/sbs-battery.c
+++ b/drivers/power/supply/sbs-battery.c
@@ -102,7 +102,7 @@ static const struct chip_data {
[REG_TEMPERATURE] =
SBS_DATA(POWER_SUPPLY_PROP_TEMP, 0x08, 0, 65535),
[REG_VOLTAGE] =
- SBS_DATA(POWER_SUPPLY_PROP_VOLTAGE_NOW, 0x09, 0, 20000),
+ SBS_DATA(POWER_SUPPLY_PROP_VOLTAGE_NOW, 0x09, 0, 65535),
[REG_CURRENT_NOW] =
SBS_DATA(POWER_SUPPLY_PROP_CURRENT_NOW, 0x0A, -32768, 32767),
[REG_CURRENT_AVG] =
--
2.17.1


2021-07-19 07:23:55

by Matthias Schiffer

[permalink] [raw]
Subject: [PATCH 2/2] power: supply: sbs-battery: add support for time_to_empty_now attribute

As defined by the Smart Battery Data Specification.

An _AVG suffix is added to the enum values REG_TIME_TO_EMPTY and
REG_TIME_TO_FULL to make the distinction clear.

Signed-off-by: Matthias Schiffer <[email protected]>
---
drivers/power/supply/sbs-battery.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
index 3d6b8247d450..c4a95b01463a 100644
--- a/drivers/power/supply/sbs-battery.c
+++ b/drivers/power/supply/sbs-battery.c
@@ -31,8 +31,9 @@ enum {
REG_CURRENT_AVG,
REG_MAX_ERR,
REG_CAPACITY,
- REG_TIME_TO_EMPTY,
- REG_TIME_TO_FULL,
+ REG_TIME_TO_EMPTY_NOW,
+ REG_TIME_TO_EMPTY_AVG,
+ REG_TIME_TO_FULL_AVG,
REG_STATUS,
REG_CAPACITY_LEVEL,
REG_CYCLE_COUNT,
@@ -119,9 +120,11 @@ static const struct chip_data {
SBS_DATA(POWER_SUPPLY_PROP_ENERGY_FULL, 0x10, 0, 65535),
[REG_FULL_CHARGE_CAPACITY_CHARGE] =
SBS_DATA(POWER_SUPPLY_PROP_CHARGE_FULL, 0x10, 0, 65535),
- [REG_TIME_TO_EMPTY] =
+ [REG_TIME_TO_EMPTY_NOW] =
+ SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, 0x11, 0, 65535),
+ [REG_TIME_TO_EMPTY_AVG] =
SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG, 0x12, 0, 65535),
- [REG_TIME_TO_FULL] =
+ [REG_TIME_TO_FULL_AVG] =
SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_FULL_AVG, 0x13, 0, 65535),
[REG_CHARGE_CURRENT] =
SBS_DATA(POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, 0x14, 0, 65535),
@@ -165,6 +168,7 @@ static const enum power_supply_property sbs_properties[] = {
POWER_SUPPLY_PROP_CAPACITY,
POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN,
POWER_SUPPLY_PROP_TEMP,
+ POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG,
POWER_SUPPLY_PROP_TIME_TO_FULL_AVG,
POWER_SUPPLY_PROP_SERIAL_NUMBER,
@@ -748,6 +752,7 @@ static void sbs_unit_adjustment(struct i2c_client *client,
val->intval -= TEMP_KELVIN_TO_CELSIUS;
break;

+ case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
case POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG:
case POWER_SUPPLY_PROP_TIME_TO_FULL_AVG:
/* sbs provides time to empty and time to full in minutes.
@@ -966,6 +971,7 @@ static int sbs_get_property(struct power_supply *psy,
case POWER_SUPPLY_PROP_CURRENT_NOW:
case POWER_SUPPLY_PROP_CURRENT_AVG:
case POWER_SUPPLY_PROP_TEMP:
+ case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
case POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG:
case POWER_SUPPLY_PROP_TIME_TO_FULL_AVG:
case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
--
2.17.1

2021-08-07 00:18:49

by Sebastian Reichel

[permalink] [raw]
Subject: Re: [PATCH 1/2] power: supply: sbs-battery: relax voltage limit

Hi,

On Mon, Jul 19, 2021 at 09:20:18AM +0200, Matthias Schiffer wrote:
> The Smart Battery Data Specification allows for values 0..65535 mV,
> there is no reason to limit the value to 20000.
>
> Signed-off-by: Matthias Schiffer <[email protected]>
> ---

Thanks, queued.

-- Sebastian

> drivers/power/supply/sbs-battery.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
> index f84dbaab283a..3d6b8247d450 100644
> --- a/drivers/power/supply/sbs-battery.c
> +++ b/drivers/power/supply/sbs-battery.c
> @@ -102,7 +102,7 @@ static const struct chip_data {
> [REG_TEMPERATURE] =
> SBS_DATA(POWER_SUPPLY_PROP_TEMP, 0x08, 0, 65535),
> [REG_VOLTAGE] =
> - SBS_DATA(POWER_SUPPLY_PROP_VOLTAGE_NOW, 0x09, 0, 20000),
> + SBS_DATA(POWER_SUPPLY_PROP_VOLTAGE_NOW, 0x09, 0, 65535),
> [REG_CURRENT_NOW] =
> SBS_DATA(POWER_SUPPLY_PROP_CURRENT_NOW, 0x0A, -32768, 32767),
> [REG_CURRENT_AVG] =
> --
> 2.17.1
>


Attachments:
(No filename) (1.03 kB)
signature.asc (849.00 B)
Download all attachments

2021-08-07 00:19:51

by Sebastian Reichel

[permalink] [raw]
Subject: Re: [PATCH 2/2] power: supply: sbs-battery: add support for time_to_empty_now attribute

Hi,

On Mon, Jul 19, 2021 at 09:20:19AM +0200, Matthias Schiffer wrote:
> As defined by the Smart Battery Data Specification.
>
> An _AVG suffix is added to the enum values REG_TIME_TO_EMPTY and
> REG_TIME_TO_FULL to make the distinction clear.
>
> Signed-off-by: Matthias Schiffer <[email protected]>
> ---

Thanks, queued.

-- Sebastian

> drivers/power/supply/sbs-battery.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
> index 3d6b8247d450..c4a95b01463a 100644
> --- a/drivers/power/supply/sbs-battery.c
> +++ b/drivers/power/supply/sbs-battery.c
> @@ -31,8 +31,9 @@ enum {
> REG_CURRENT_AVG,
> REG_MAX_ERR,
> REG_CAPACITY,
> - REG_TIME_TO_EMPTY,
> - REG_TIME_TO_FULL,
> + REG_TIME_TO_EMPTY_NOW,
> + REG_TIME_TO_EMPTY_AVG,
> + REG_TIME_TO_FULL_AVG,
> REG_STATUS,
> REG_CAPACITY_LEVEL,
> REG_CYCLE_COUNT,
> @@ -119,9 +120,11 @@ static const struct chip_data {
> SBS_DATA(POWER_SUPPLY_PROP_ENERGY_FULL, 0x10, 0, 65535),
> [REG_FULL_CHARGE_CAPACITY_CHARGE] =
> SBS_DATA(POWER_SUPPLY_PROP_CHARGE_FULL, 0x10, 0, 65535),
> - [REG_TIME_TO_EMPTY] =
> + [REG_TIME_TO_EMPTY_NOW] =
> + SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, 0x11, 0, 65535),
> + [REG_TIME_TO_EMPTY_AVG] =
> SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG, 0x12, 0, 65535),
> - [REG_TIME_TO_FULL] =
> + [REG_TIME_TO_FULL_AVG] =
> SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_FULL_AVG, 0x13, 0, 65535),
> [REG_CHARGE_CURRENT] =
> SBS_DATA(POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, 0x14, 0, 65535),
> @@ -165,6 +168,7 @@ static const enum power_supply_property sbs_properties[] = {
> POWER_SUPPLY_PROP_CAPACITY,
> POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN,
> POWER_SUPPLY_PROP_TEMP,
> + POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
> POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG,
> POWER_SUPPLY_PROP_TIME_TO_FULL_AVG,
> POWER_SUPPLY_PROP_SERIAL_NUMBER,
> @@ -748,6 +752,7 @@ static void sbs_unit_adjustment(struct i2c_client *client,
> val->intval -= TEMP_KELVIN_TO_CELSIUS;
> break;
>
> + case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
> case POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG:
> case POWER_SUPPLY_PROP_TIME_TO_FULL_AVG:
> /* sbs provides time to empty and time to full in minutes.
> @@ -966,6 +971,7 @@ static int sbs_get_property(struct power_supply *psy,
> case POWER_SUPPLY_PROP_CURRENT_NOW:
> case POWER_SUPPLY_PROP_CURRENT_AVG:
> case POWER_SUPPLY_PROP_TEMP:
> + case POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW:
> case POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG:
> case POWER_SUPPLY_PROP_TIME_TO_FULL_AVG:
> case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
> --
> 2.17.1
>


Attachments:
(No filename) (2.71 kB)
signature.asc (849.00 B)
Download all attachments