From 177bfbe63acdd6da04facab3f9f054c08b21d590 Mon Sep 17 00:00:00 2001 From: mahj8 Date: Wed, 1 Dec 2021 14:58:40 +0800 Subject: [PATCH] bms: do battery power supply change when fg update data fg data can't update to user space timely, because fg driver only power supply change the bms psy. So need to change to battery psy to update data. Change-Id: Idd39efd3790b6e80b473a8048827663d5a61851d Signed-off-by: mahj8 Reviewed-on: https://gerrit.mot.com/2131783 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../cw2217b_fg_mmi/cw2217B_fuel_gauge_base.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/power/cw2217b_fg_mmi/cw2217B_fuel_gauge_base.c b/drivers/power/cw2217b_fg_mmi/cw2217B_fuel_gauge_base.c index 10f284bf51c3..071349f31101 100644 --- a/drivers/power/cw2217b_fg_mmi/cw2217B_fuel_gauge_base.c +++ b/drivers/power/cw2217b_fg_mmi/cw2217B_fuel_gauge_base.c @@ -117,6 +117,7 @@ struct cw_battery { struct power_supply cw_bat; #else struct power_supply *cw_bat; + struct power_supply *batt_psy; #endif int chip_id; int voltage; @@ -655,17 +656,20 @@ static void cw_bat_work(struct work_struct *work) delay_work = container_of(work, struct delayed_work, work); cw_bat = container_of(delay_work, struct cw_battery, battery_delay_work); + /* get battery power supply */ + if (!cw_bat->batt_psy) { + cw_bat->batt_psy = power_supply_get_by_name("battery"); + if (!cw_bat->batt_psy) + cw_printk("%s: get batt_psy fail\n", __func__); + } + ret = cw_update_data(cw_bat); if (ret < 0) printk(KERN_ERR "iic read error when update data"); - #ifdef CW_PROPERTIES - #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0) - power_supply_changed(&cw_bat->cw_bat); - #else - power_supply_changed(cw_bat->cw_bat); - #endif - #endif + if (cw_bat->batt_psy) { + power_supply_changed(cw_bat->batt_psy); + } queue_delayed_work(cw_bat->cwfg_workqueue, &cw_bat->battery_delay_work, msecs_to_jiffies(queue_delayed_work_time)); }