From 1558cd91847edef6589214f7b4fc23b7302ba241 Mon Sep 17 00:00:00 2001 From: chailu1 Date: Mon, 7 Jun 2021 21:35:21 +0800 Subject: [PATCH] charge: Add thermal interface charge/thermal add thermal control interface for charge Change-Id: I748f77bd6b08fa8b240ee97e1586704b6338fb66 Signed-off-by: chailu1 Reviewed-on: https://gerrit.mot.com/1972226 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Haijian Ma Reviewed-by: Wentao Xu Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../mmi_charger_core.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/power/mmi_parallel_charger_iio/mmi_charger_core.c b/drivers/power/mmi_parallel_charger_iio/mmi_charger_core.c index 0888e0345cae..e2bffb2da81d 100644 --- a/drivers/power/mmi_parallel_charger_iio/mmi_charger_core.c +++ b/drivers/power/mmi_parallel_charger_iio/mmi_charger_core.c @@ -676,6 +676,8 @@ static enum power_supply_property mmi_chrg_mgr_props[] = { POWER_SUPPLY_PROP_CURRENT_NOW, POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_CHARGE_COUNTER, + POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT, + POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX }; static int mmi_chrg_mgr_get_property(struct power_supply *psy, @@ -715,6 +717,12 @@ static int mmi_chrg_mgr_get_property(struct power_supply *psy, } else val->intval = 0; break; + case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT: + val->intval = chip->system_thermal_level; + break; + case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX: + val->intval = chip->thermal_levels; + break; default: return -EINVAL; @@ -726,8 +734,23 @@ static int mmi_chrg_mgr_set_property(struct power_supply *psy, enum power_supply_property prop, const union power_supply_propval *val) { + struct mmi_charger_manager *chip = power_supply_get_drvdata(psy); switch (prop) { + case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT: + if (val->intval < 0) + return -EINVAL; + + if (chip->thermal_levels <= 0) + return -EINVAL; + + if (val->intval >= chip->thermal_levels) + chip->system_thermal_level = + chip->thermal_levels - 1; + else + chip->system_thermal_level = val->intval; + + break; default: return -EINVAL; } @@ -741,6 +764,9 @@ static int mmi_chrg_mgr_is_writeable(struct power_supply *psy, int ret; switch (prop) { + case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT: + ret = 1; + break; default: ret = 0; break;