Loading drivers/power/supply/qcom/smb5-lib.c +6 −1 Original line number Diff line number Diff line Loading @@ -4229,7 +4229,8 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, smblib_dbg(chg, PR_MISC, "snk_attached = %d, src_attached = %d, is_pr_lock = %d\n", snk_attached, src_attached, is_pr_lock); cancel_delayed_work_sync(&chg->pr_lock_clear_work); cancel_delayed_work(&chg->pr_lock_clear_work); spin_lock(&chg->typec_pr_lock); if (!chg->pr_lock_in_progress && is_pr_lock) { smblib_dbg(chg, PR_MISC, "disable type-c interrupts for power role locking\n"); smblib_typec_irq_config(chg, false); Loading @@ -4241,6 +4242,7 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, } chg->pr_lock_in_progress = is_pr_lock; spin_unlock(&chg->typec_pr_lock); switch (val->intval) { case POWER_SUPPLY_TYPEC_PR_NONE: Loading Loading @@ -6567,11 +6569,13 @@ static void smblib_pr_lock_clear_work(struct work_struct *work) struct smb_charger *chg = container_of(work, struct smb_charger, pr_lock_clear_work.work); spin_lock(&chg->typec_pr_lock); if (chg->pr_lock_in_progress) { smblib_dbg(chg, PR_MISC, "restore type-c interrupts\n"); smblib_typec_irq_config(chg, true); chg->pr_lock_in_progress = false; } spin_unlock(&chg->typec_pr_lock); } static void smblib_pr_swap_detach_work(struct work_struct *work) Loading Loading @@ -7334,6 +7338,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); 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); INIT_WORK(&chg->jeita_update_work, jeita_update_work); Loading drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -385,6 +385,7 @@ struct smb_charger { struct mutex ps_change_lock; struct mutex irq_status_lock; struct mutex dcin_aicl_lock; spinlock_t typec_pr_lock; /* power supplies */ struct power_supply *batt_psy; Loading Loading
drivers/power/supply/qcom/smb5-lib.c +6 −1 Original line number Diff line number Diff line Loading @@ -4229,7 +4229,8 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, smblib_dbg(chg, PR_MISC, "snk_attached = %d, src_attached = %d, is_pr_lock = %d\n", snk_attached, src_attached, is_pr_lock); cancel_delayed_work_sync(&chg->pr_lock_clear_work); cancel_delayed_work(&chg->pr_lock_clear_work); spin_lock(&chg->typec_pr_lock); if (!chg->pr_lock_in_progress && is_pr_lock) { smblib_dbg(chg, PR_MISC, "disable type-c interrupts for power role locking\n"); smblib_typec_irq_config(chg, false); Loading @@ -4241,6 +4242,7 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, } chg->pr_lock_in_progress = is_pr_lock; spin_unlock(&chg->typec_pr_lock); switch (val->intval) { case POWER_SUPPLY_TYPEC_PR_NONE: Loading Loading @@ -6567,11 +6569,13 @@ static void smblib_pr_lock_clear_work(struct work_struct *work) struct smb_charger *chg = container_of(work, struct smb_charger, pr_lock_clear_work.work); spin_lock(&chg->typec_pr_lock); if (chg->pr_lock_in_progress) { smblib_dbg(chg, PR_MISC, "restore type-c interrupts\n"); smblib_typec_irq_config(chg, true); chg->pr_lock_in_progress = false; } spin_unlock(&chg->typec_pr_lock); } static void smblib_pr_swap_detach_work(struct work_struct *work) Loading Loading @@ -7334,6 +7338,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); 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); INIT_WORK(&chg->jeita_update_work, jeita_update_work); Loading
drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -385,6 +385,7 @@ struct smb_charger { struct mutex ps_change_lock; struct mutex irq_status_lock; struct mutex dcin_aicl_lock; spinlock_t typec_pr_lock; /* power supplies */ struct power_supply *batt_psy; Loading