Loading drivers/power/supply/qcom/smb5-lib.c +9 −2 Original line number Diff line number Diff line Loading @@ -1004,25 +1004,31 @@ static int smblib_request_dpdm(struct smb_charger *chg, bool enable) } } mutex_lock(&chg->dpdm_lock); if (enable) { if (chg->dpdm_reg && !regulator_is_enabled(chg->dpdm_reg)) { if (chg->dpdm_reg && !chg->dpdm_enabled) { smblib_dbg(chg, PR_MISC, "enabling DPDM regulator\n"); rc = regulator_enable(chg->dpdm_reg); if (rc < 0) smblib_err(chg, "Couldn't enable dpdm regulator rc=%d\n", rc); else chg->dpdm_enabled = true; } } else { if (chg->dpdm_reg && regulator_is_enabled(chg->dpdm_reg)) { if (chg->dpdm_reg && chg->dpdm_enabled) { smblib_dbg(chg, PR_MISC, "disabling DPDM regulator\n"); rc = regulator_disable(chg->dpdm_reg); if (rc < 0) smblib_err(chg, "Couldn't disable dpdm regulator rc=%d\n", rc); else chg->dpdm_enabled = false; } } mutex_unlock(&chg->dpdm_lock); return rc; } Loading Loading @@ -7576,6 +7582,7 @@ int smblib_init(struct smb_charger *chg) mutex_init(&chg->smb_lock); mutex_init(&chg->irq_status_lock); mutex_init(&chg->dcin_aicl_lock); mutex_init(&chg->dpdm_lock); spin_lock_init(&chg->typec_pr_lock); INIT_WORK(&chg->bms_update_work, bms_update_work); INIT_WORK(&chg->pl_update_work, pl_update_work); Loading drivers/power/supply/qcom/smb5-lib.h +2 −0 Original line number Diff line number Diff line Loading @@ -390,6 +390,7 @@ struct smb_charger { struct mutex dcin_aicl_lock; spinlock_t typec_pr_lock; struct mutex adc_lock; struct mutex dpdm_lock; /* power supplies */ struct power_supply *batt_psy; Loading Loading @@ -558,6 +559,7 @@ struct smb_charger { bool dcin_aicl_done; bool hvdcp3_standalone_config; bool dcin_icl_user_set; bool dpdm_enabled; /* workaround flag */ u32 wa_flags; Loading Loading
drivers/power/supply/qcom/smb5-lib.c +9 −2 Original line number Diff line number Diff line Loading @@ -1004,25 +1004,31 @@ static int smblib_request_dpdm(struct smb_charger *chg, bool enable) } } mutex_lock(&chg->dpdm_lock); if (enable) { if (chg->dpdm_reg && !regulator_is_enabled(chg->dpdm_reg)) { if (chg->dpdm_reg && !chg->dpdm_enabled) { smblib_dbg(chg, PR_MISC, "enabling DPDM regulator\n"); rc = regulator_enable(chg->dpdm_reg); if (rc < 0) smblib_err(chg, "Couldn't enable dpdm regulator rc=%d\n", rc); else chg->dpdm_enabled = true; } } else { if (chg->dpdm_reg && regulator_is_enabled(chg->dpdm_reg)) { if (chg->dpdm_reg && chg->dpdm_enabled) { smblib_dbg(chg, PR_MISC, "disabling DPDM regulator\n"); rc = regulator_disable(chg->dpdm_reg); if (rc < 0) smblib_err(chg, "Couldn't disable dpdm regulator rc=%d\n", rc); else chg->dpdm_enabled = false; } } mutex_unlock(&chg->dpdm_lock); return rc; } Loading Loading @@ -7576,6 +7582,7 @@ int smblib_init(struct smb_charger *chg) mutex_init(&chg->smb_lock); mutex_init(&chg->irq_status_lock); mutex_init(&chg->dcin_aicl_lock); mutex_init(&chg->dpdm_lock); spin_lock_init(&chg->typec_pr_lock); INIT_WORK(&chg->bms_update_work, bms_update_work); INIT_WORK(&chg->pl_update_work, pl_update_work); Loading
drivers/power/supply/qcom/smb5-lib.h +2 −0 Original line number Diff line number Diff line Loading @@ -390,6 +390,7 @@ struct smb_charger { struct mutex dcin_aicl_lock; spinlock_t typec_pr_lock; struct mutex adc_lock; struct mutex dpdm_lock; /* power supplies */ struct power_supply *batt_psy; Loading Loading @@ -558,6 +559,7 @@ struct smb_charger { bool dcin_aicl_done; bool hvdcp3_standalone_config; bool dcin_icl_user_set; bool dpdm_enabled; /* workaround flag */ u32 wa_flags; Loading