From 2cbafe2a1d949dee5f526d543b52a8f20cfa8cd5 Mon Sep 17 00:00:00 2001 From: huaqin85 Date: Tue, 25 Jan 2022 20:55:34 +0800 Subject: [PATCH] charging: slow attach usb will not charging as 33w the phone slow attach usb sometimes, will not chrg as 33w so we need avoid the vbus not present, sw set dpdm Change-Id: I1d218bafafdecef911255d256b4e34dcde8aae76 Signed-off-by: huaqin85 Reviewed-on: https://gerrit.mot.com/2178754 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Reviewed-by: Wei Xu Tested-by: Jira Key Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../mmi_discrete_turbo_charger/mmi_qc3p.c | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p.c b/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p.c index 9f9d7e7553f1..25cb672c14db 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p.c +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_qc3p.c @@ -42,7 +42,7 @@ #include #include - +#define USB_VBUS_IRQ_THRESHOLD 3800 bool mmi_qc3p_power_active(struct mmi_charger_manager *chg) { int ret, iio_val; @@ -108,15 +108,17 @@ int mmi_qc3p_set_vbus_voltage(struct mmi_charger_manager *chg, int target_mv) } mmi_chrg_info(chg, "curr_vbus= %d, target_vbus = %d, step = %d, impent_v:%d\n",curr_vbus_mv, target_mv, step,impendance_vubs_volt); - rc = mmi_charger_write_iio_chan(chg, SMB5_DP_DM, step); - if (rc < 0) { - mmi_chrg_err(chg, "Couldn't set dpdm pulse rc=%d\n", rc); - return -EINVAL; - } + if (chg->vbus_present && (curr_vbus_mv >= VBUS_IRQ_THRESHOLD)) { + rc = mmi_charger_write_iio_chan(chg, SMB5_DP_DM, step); + if (rc < 0) { + mmi_chrg_err(chg, "Couldn't set dpdm pulse rc=%d\n", rc); + return -EINVAL; + } - //need wait dp/dm send out - sleep_ms_wt = abs(step) * 10; - msleep(sleep_ms_wt); + //need wait dp/dm send out + sleep_ms_wt = abs(step) * 10; + msleep(sleep_ms_wt); + } rc = mmi_get_vbus(chg->chrg_list[CP_MASTER], &curr_vbus_mv);