diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core.h b/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core.h index 8929ee126c5e..066f678ae40a 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core.h +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core.h @@ -290,6 +290,9 @@ struct mmi_charger_manager { #define PPS_INIT_VOLT_COMP 500000 #define QC3P_INIT_VOLT_COMP 500000 +//For discrete main charger have no ibus adc capability +#define CP_ENABLED_MAIN_INPUT_LIMIT 300*1000 +#define CP_DISABLED_MAIN_INPUT_LIMIT 3000*1000 extern void mmi_qc3p_chrg_sm_work_func(struct work_struct *work); extern struct mmi_cp_policy_dev g_chrg_list; extern const struct mmi_chrg_dev_ops dev_ops[]; diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c b/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c index 92f12c90cf92..e63207191eef 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c @@ -37,14 +37,22 @@ #include #include "mmi_charger_core.h" #include "mmi_charger_core_iio.h" + static int cp_enable_charging(struct mmi_charger_device *chrg, bool en) { int rc; struct mmi_charger_manager *chip = dev_get_drvdata(&chrg->dev); + static struct power_supply *charger_psy; + union power_supply_propval prop = {0,}; if (!chip) return -ENODEV; + if (!charger_psy) + charger_psy = power_supply_get_by_name("charger"); + if (!charger_psy) + return -ENODEV; + rc = mmi_charger_write_iio_chan(chip, CP_ENABLE, en); if (!rc) { @@ -56,6 +64,17 @@ static int cp_enable_charging(struct mmi_charger_device *chrg, bool en) if(rc) chrg_dev_info(chrg, "%s, enable termination fail\n",__func__); + if(chrg->charger_enabled) { + prop.intval = CP_ENABLED_MAIN_INPUT_LIMIT; + }else { + prop.intval = CP_DISABLED_MAIN_INPUT_LIMIT; + } + + rc = power_supply_set_property(charger_psy, + POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, &prop); + if(rc) + chrg_dev_info(chrg, "%s, set main charger input limit fail\n",__func__); + chrg_dev_info(chrg, "%s end, en:%d\n",__func__,en); return rc; } diff --git a/drivers/power/mmi_discrete_turbo_charger/qpnp_pmic_charger.c b/drivers/power/mmi_discrete_turbo_charger/qpnp_pmic_charger.c index 769ba49dab48..b2de7613351f 100644 --- a/drivers/power/mmi_discrete_turbo_charger/qpnp_pmic_charger.c +++ b/drivers/power/mmi_discrete_turbo_charger/qpnp_pmic_charger.c @@ -200,7 +200,7 @@ static int qpnp_pmic_update_charger_status(struct mmi_charger_device *chrg) rc = power_supply_get_property(cp_psy, POWER_SUPPLY_PROP_CURRENT_NOW, &prop); if (!rc) - chrg->charger_data.ibus_curr = 100000; + chrg->charger_data.ibus_curr = CP_ENABLED_MAIN_INPUT_LIMIT; rc = power_supply_get_property(usb_psy, POWER_SUPPLY_PROP_PRESENT, &prop);