From 299b117d6fb923543cb359641ce61422dd0af924 Mon Sep 17 00:00:00 2001 From: Shunqing Chen Date: Thu, 8 Apr 2021 16:43:13 +0800 Subject: [PATCH] power: rk817-battery: check if battery is exist Signed-off-by: Shunqing Chen Change-Id: Ieaad343bac258c097b860251e80506bdf98eab1b --- drivers/power/supply/rk817_battery.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/power/supply/rk817_battery.c b/drivers/power/supply/rk817_battery.c index 765cb5c6439c..172d3808b4e1 100644 --- a/drivers/power/supply/rk817_battery.c +++ b/drivers/power/supply/rk817_battery.c @@ -712,6 +712,14 @@ static int rk817_bat_field_write(struct rk817_battery_device *battery, return regmap_field_write(battery->rmap_fields[field_id], val); } +static bool rk817_is_bat_exist(struct rk817_battery_device *battery) +{ + if (battery->chip_id == RK817_ID) + return rk817_bat_field_read(battery, BAT_EXS) ? true : false; + + return true; +} + /*cal_offset: current offset value*/ static int rk817_bat_get_coffset(struct rk817_battery_device *battery) { @@ -1866,6 +1874,8 @@ static int rk817_bat_parse_dt(struct rk817_battery_device *battery) ret = of_property_read_u32(np, "virtual_power", &pdata->bat_mode); if (ret < 0) dev_err(dev, "virtual_power missing!\n"); + if (!rk817_is_bat_exist(battery)) + battery->pdata->bat_mode = MODE_VIRTUAL; ret = of_property_read_u32(np, "bat_res", &pdata->bat_res); if (ret < 0)