mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 15:11:48 -04:00
charging: add wireless icl increase step by step
As HW require, add wireless icl increase step by step (100ma/200ms) for miami Change-Id: I8d5a3deb81f106282dcae6c9d41491457c4f222e Signed-off-by: Haijian Ma <mahj8@motorola.com> Reviewed-on: https://gerrit.mot.com/2292877 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Wei Wei <weiweij@motorola.com> Reviewed-by: Huosheng Liao <liaohs@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
8dce1b9e6e
commit
d31601786d
2 changed files with 30 additions and 4 deletions
|
|
@ -1076,14 +1076,36 @@ static void mmi_discrete_config_qc_charger(struct mmi_discrete_charger *chg)
|
|||
}
|
||||
}
|
||||
|
||||
#define WLS_ICL_INCREASE_STEP 100000
|
||||
static void mmi_discrete_wireless_icl_work(struct work_struct *work)
|
||||
{
|
||||
struct mmi_discrete_charger *chip = container_of(work,
|
||||
struct mmi_discrete_charger,
|
||||
wireless_icl_work.work);
|
||||
int wls_icl = 0;
|
||||
|
||||
wls_icl = get_client_vote(chip->usb_icl_votable, SW_ICL_MAX_VOTER);
|
||||
while((wls_icl + WLS_ICL_INCREASE_STEP) <= chip->wls_max_icl_ua) {
|
||||
if(!is_wls_online(chip))
|
||||
break;
|
||||
wls_icl += WLS_ICL_INCREASE_STEP;
|
||||
vote(chip->usb_icl_votable, SW_ICL_MAX_VOTER, true, wls_icl);
|
||||
msleep(200);
|
||||
wls_icl = get_client_vote(chip->usb_icl_votable, SW_ICL_MAX_VOTER);
|
||||
mmi_info(chip, "vote wireless charging icl %d ua\n", wls_icl);
|
||||
}
|
||||
}
|
||||
|
||||
/*MIN is 2.5W -> default icl 500mA * input vol 5V*/
|
||||
#define WLS_POWER_MIN 2500
|
||||
static void mmi_discrete_config_wls_charger(struct mmi_discrete_charger *chg)
|
||||
{
|
||||
mmi_dbg(chg, "Configure wireless charger\n");
|
||||
|
||||
if (chg->bc1p2_charger_type != POWER_SUPPLY_TYPE_UNKNOWN)
|
||||
vote(chg->usb_icl_votable, SW_ICL_MAX_VOTER, true, chg->wls_max_icl_ua);
|
||||
if (chg->bc1p2_charger_type != POWER_SUPPLY_TYPE_UNKNOWN) {
|
||||
cancel_delayed_work(&chg->wireless_icl_work);
|
||||
schedule_delayed_work(&chg->wireless_icl_work, msecs_to_jiffies(0));
|
||||
}
|
||||
}
|
||||
|
||||
static void mmi_discrete_config_charger_input(struct mmi_discrete_charger *chip)
|
||||
|
|
@ -1981,8 +2003,9 @@ static void update_sw_icl_max(struct mmi_discrete_charger *chg)
|
|||
SDP_CURRENT_UA);
|
||||
break;
|
||||
case POWER_SUPPLY_TYPE_WIRELESS:
|
||||
vote(chg->usb_icl_votable, SW_ICL_MAX_VOTER, true,
|
||||
chg->wls_max_icl_ua);
|
||||
cancel_delayed_work(&chg->wireless_icl_work);
|
||||
schedule_delayed_work(&chg->wireless_icl_work,
|
||||
msecs_to_jiffies(0));
|
||||
break;
|
||||
case POWER_SUPPLY_TYPE_UNKNOWN:
|
||||
default:
|
||||
|
|
@ -3061,6 +3084,7 @@ static int mmi_discrete_probe(struct platform_device *pdev)
|
|||
|
||||
INIT_DELAYED_WORK(&chip->charger_work, mmi_discrete_charger_work);
|
||||
INIT_DELAYED_WORK(&chip->monitor_ibat_work, mmi_discrete_monitor_ibat_work);
|
||||
INIT_DELAYED_WORK(&chip->wireless_icl_work, mmi_discrete_wireless_icl_work);
|
||||
|
||||
chip->batt_psy = devm_power_supply_register(chip->dev,
|
||||
&batt_psy_desc,
|
||||
|
|
|
|||
|
|
@ -93,6 +93,8 @@ struct mmi_discrete_charger {
|
|||
struct delayed_work monitor_ibat_work;
|
||||
int bat_ocp_ua;
|
||||
|
||||
struct delayed_work wireless_icl_work;
|
||||
|
||||
/* extcon for VBUS / ID notification to USB for type-c only */
|
||||
struct extcon_dev *extcon;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue