From ef9638196126781a6ba6d6a8d47504b4f326f916 Mon Sep 17 00:00:00 2001 From: huangcm <1263938474@qq.com> Date: Thu, 17 Jul 2025 05:49:44 +0000 Subject: [PATCH] feat(bat): add pmu_vol_min protect --- longan/kernel/linux-4.9/drivers/power/supply/axp803_charger.h | 1 + longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 0 deletions(-) diff --git a/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c b/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c index 5f49c60..ee9024f 100644 --- a/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c +++ b/longan/kernel/linux-4.9/drivers/power/supply/axp803_battery.c @@ -143,6 +143,9 @@ struct axp_config_info *axp_config = &bat_power->dts_info; + regmap_bulk_read(bat_power->regmap, AXP803_OCVBATH_RES, temp_val, 2); + ocv_vol = ((temp_val[0] << 4) | (temp_val[1] & 0xF)) * 1100 / 1000; + ret = regmap_read(bat_power->regmap, AXP803_CAP, ®_value); if (ret) return ret; @@ -160,6 +163,11 @@ rest_vol = 100; } + if (ocv_vol < axp_config->pmu_vol_min) { + pr_err("kickpi: ocv_vol %d < min %d, rest_vol %d -> 0\n", ocv_vol, axp_config->pmu_vol_min, rest_vol); + rest_vol = 0; + } + return rest_vol; } @@ -234,6 +242,11 @@ pr_debug("calc_info: ocv_vol:%d rdc:%d coulumb_counter:%d batt_max_cap:%d\n", ocv_vol, rdc, coulumb_counter, batt_max_cap); } + + if (ocv_vol < axp_config->pmu_vol_min) { + pr_err("kickpi: ocv_vol %d < min %d, rest_vol %d -> 0\n", ocv_vol, axp_config->pmu_vol_min, rest_vol); + rest_vol = 0; + } return rest_vol; } @@ -917,6 +930,7 @@ AXP_OF_PROP_READ(pmu_runtime_chgcur, INTCHGCUR / 1000); AXP_OF_PROP_READ(pmu_suspend_chgcur, 1200); AXP_OF_PROP_READ(pmu_shutdown_chgcur, 1200); + AXP_OF_PROP_READ(pmu_vol_min, 3400); AXP_OF_PROP_READ(pmu_init_chgvol, INTCHGVOL / 1000); AXP_OF_PROP_READ(pmu_init_chgend_rate, INTCHGENDRATE); AXP_OF_PROP_READ(pmu_init_chg_enabled, 1); diff --git a/longan/kernel/linux-4.9/drivers/power/supply/axp803_charger.h b/longan/kernel/linux-4.9/drivers/power/supply/axp803_charger.h index 66f39f5..83f8606 100644 --- a/longan/kernel/linux-4.9/drivers/power/supply/axp803_charger.h +++ b/longan/kernel/linux-4.9/drivers/power/supply/axp803_charger.h @@ -44,6 +44,7 @@ u32 pmu_runtime_chgcur; u32 pmu_suspend_chgcur; u32 pmu_shutdown_chgcur; + u32 pmu_vol_min; u32 pmu_init_chgvol; u32 pmu_init_chgend_rate; u32 pmu_init_chg_enabled; -- Gitblit v1.6.2