[PATCH 2/5] power: supply: cw2015: Add support for dual-cell configurations

Chris Morgan
2024-07-26T19:52:29Z

From: Chris Morgan <macromorgan@hotmail.com>

The Cellwise cw2015 datasheet reports that it can handle two cells
in a series configuration. Allow a device tree parameter to note
this condition so that the driver reports the correct voltage values
to userspace.

Signed-off-by: Chris Morgan <macromorgan@hotmail.com>
---
drivers/power/supply/cw2015_battery.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/power/supply/cw2015_battery.c b/drivers/power/supply/cw2015_battery.c
index f63c3c410451..b23a6d4fa4fa 100644
--- a/drivers/power/supply/cw2015_battery.c
+++ b/drivers/power/supply/cw2015_battery.c
@@ -77,6 +77,8 @@ struct cw_battery {
u32 poll_interval_ms;
u8 alert_level;

+ bool dual_cell;
+
unsigned int read_errors;
unsigned int charge_stuck_cnt;
};
@@ -325,6 +327,9 @@ static int cw_get_voltage(struct cw_battery *cw_bat)
*/
voltage_mv = avg * 312 / 1024;

+ if (cw_bat->dual_cell)
+ voltage_mv *= 2;
+
dev_dbg(cw_bat->dev, "Read voltage: %d mV, raw=0x%04x\n",
voltage_mv, reg_val);
return voltage_mv;
@@ -587,6 +592,8 @@ static int cw2015_parse_properties(struct cw_battery *cw_bat)
return ret;
}

+ cw_bat->dual_cell = device_property_read_bool(dev, "cellwise,dual-cell");
+
ret = device_property_read_u32(dev, "cellwise,monitor-interval-ms",
&cw_bat->poll_interval_ms);
if (ret) {
--
2.34.1