Loading drivers/power/supply/qcom/smb5-lib.c +6 −1 Original line number Diff line number Diff line Loading @@ -4172,7 +4172,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 @@ -4184,6 +4185,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 @@ -6286,11 +6288,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 @@ -7170,6 +7174,7 @@ int smblib_init(struct smb_charger *chg) mutex_init(&chg->smb_lock); mutex_init(&chg->irq_status_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 @@ -393,6 +393,7 @@ struct smb_charger { struct mutex dr_lock; struct mutex irq_status_lock; struct mutex adc_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 @@ -4172,7 +4172,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 @@ -4184,6 +4185,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 @@ -6286,11 +6288,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 @@ -7170,6 +7174,7 @@ int smblib_init(struct smb_charger *chg) mutex_init(&chg->smb_lock); mutex_init(&chg->irq_status_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 @@ -393,6 +393,7 @@ struct smb_charger { struct mutex dr_lock; struct mutex irq_status_lock; struct mutex adc_lock; spinlock_t typec_pr_lock; /* power supplies */ struct power_supply *batt_psy; Loading