From: Chris Morgan <macromorgan@xxxxxxxxxxx> 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@xxxxxxxxxxx> --- 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