Loading drivers/power/supply/qcom/qpnp-smb5.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -3033,6 +3033,7 @@ static struct smb_irq_info smb5_irqs[] = { }, }, [SMB_EN_IRQ] = { [SMB_EN_IRQ] = { .name = "smb-en", .name = "smb-en", .handler = smb_en_irq_handler, }, }, [IMP_TRIGGER_IRQ] = { [IMP_TRIGGER_IRQ] = { .name = "imp-trigger", .name = "imp-trigger", Loading drivers/power/supply/qcom/smb5-lib.c +35 −0 Original line number Original line Diff line number Diff line Loading @@ -4508,6 +4508,41 @@ irqreturn_t sdam_sts_change_irq_handler(int irq, void *data) return IRQ_HANDLED; return IRQ_HANDLED; } } irqreturn_t smb_en_irq_handler(int irq, void *data) { struct smb_irq_data *irq_data = data; struct smb_charger *chg = irq_data->parent_data; int rc, input_present; if (!chg->cp_disable_votable) { chg->cp_disable_votable = find_votable("CP_DISABLE"); if (!chg->cp_disable_votable) return IRQ_HANDLED; } if (chg->pd_hard_reset) { vote(chg->cp_disable_votable, BOOST_BACK_VOTER, true, 0); return IRQ_HANDLED; } rc = smblib_is_input_present(chg, &input_present); if (rc < 0) { pr_err("Couldn't get usb presence status rc=%d\n", rc); return IRQ_HANDLED; } if (input_present) { /* * Add some delay to enable SMB1390 switcher after SMB_EN * pin goes high */ usleep_range(1000, 1100); vote(chg->cp_disable_votable, BOOST_BACK_VOTER, false, 0); } return IRQ_HANDLED; } #define CHG_TERM_WA_ENTRY_DELAY_MS 300000 /* 5 min */ #define CHG_TERM_WA_ENTRY_DELAY_MS 300000 /* 5 min */ #define CHG_TERM_WA_EXIT_DELAY_MS 60000 /* 1 min */ #define CHG_TERM_WA_EXIT_DELAY_MS 60000 /* 1 min */ static void smblib_eval_chg_termination(struct smb_charger *chg, u8 batt_status) static void smblib_eval_chg_termination(struct smb_charger *chg, u8 batt_status) Loading drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -596,6 +596,7 @@ int smblib_vconn_regulator_disable(struct regulator_dev *rdev); int smblib_vconn_regulator_is_enabled(struct regulator_dev *rdev); int smblib_vconn_regulator_is_enabled(struct regulator_dev *rdev); irqreturn_t default_irq_handler(int irq, void *data); irqreturn_t default_irq_handler(int irq, void *data); irqreturn_t smb_en_irq_handler(int irq, void *data); irqreturn_t chg_state_change_irq_handler(int irq, void *data); irqreturn_t chg_state_change_irq_handler(int irq, void *data); irqreturn_t batt_temp_changed_irq_handler(int irq, void *data); irqreturn_t batt_temp_changed_irq_handler(int irq, void *data); irqreturn_t batt_psy_changed_irq_handler(int irq, void *data); irqreturn_t batt_psy_changed_irq_handler(int irq, void *data); Loading Loading
drivers/power/supply/qcom/qpnp-smb5.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -3033,6 +3033,7 @@ static struct smb_irq_info smb5_irqs[] = { }, }, [SMB_EN_IRQ] = { [SMB_EN_IRQ] = { .name = "smb-en", .name = "smb-en", .handler = smb_en_irq_handler, }, }, [IMP_TRIGGER_IRQ] = { [IMP_TRIGGER_IRQ] = { .name = "imp-trigger", .name = "imp-trigger", Loading
drivers/power/supply/qcom/smb5-lib.c +35 −0 Original line number Original line Diff line number Diff line Loading @@ -4508,6 +4508,41 @@ irqreturn_t sdam_sts_change_irq_handler(int irq, void *data) return IRQ_HANDLED; return IRQ_HANDLED; } } irqreturn_t smb_en_irq_handler(int irq, void *data) { struct smb_irq_data *irq_data = data; struct smb_charger *chg = irq_data->parent_data; int rc, input_present; if (!chg->cp_disable_votable) { chg->cp_disable_votable = find_votable("CP_DISABLE"); if (!chg->cp_disable_votable) return IRQ_HANDLED; } if (chg->pd_hard_reset) { vote(chg->cp_disable_votable, BOOST_BACK_VOTER, true, 0); return IRQ_HANDLED; } rc = smblib_is_input_present(chg, &input_present); if (rc < 0) { pr_err("Couldn't get usb presence status rc=%d\n", rc); return IRQ_HANDLED; } if (input_present) { /* * Add some delay to enable SMB1390 switcher after SMB_EN * pin goes high */ usleep_range(1000, 1100); vote(chg->cp_disable_votable, BOOST_BACK_VOTER, false, 0); } return IRQ_HANDLED; } #define CHG_TERM_WA_ENTRY_DELAY_MS 300000 /* 5 min */ #define CHG_TERM_WA_ENTRY_DELAY_MS 300000 /* 5 min */ #define CHG_TERM_WA_EXIT_DELAY_MS 60000 /* 1 min */ #define CHG_TERM_WA_EXIT_DELAY_MS 60000 /* 1 min */ static void smblib_eval_chg_termination(struct smb_charger *chg, u8 batt_status) static void smblib_eval_chg_termination(struct smb_charger *chg, u8 batt_status) Loading
drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -596,6 +596,7 @@ int smblib_vconn_regulator_disable(struct regulator_dev *rdev); int smblib_vconn_regulator_is_enabled(struct regulator_dev *rdev); int smblib_vconn_regulator_is_enabled(struct regulator_dev *rdev); irqreturn_t default_irq_handler(int irq, void *data); irqreturn_t default_irq_handler(int irq, void *data); irqreturn_t smb_en_irq_handler(int irq, void *data); irqreturn_t chg_state_change_irq_handler(int irq, void *data); irqreturn_t chg_state_change_irq_handler(int irq, void *data); irqreturn_t batt_temp_changed_irq_handler(int irq, void *data); irqreturn_t batt_temp_changed_irq_handler(int irq, void *data); irqreturn_t batt_psy_changed_irq_handler(int irq, void *data); irqreturn_t batt_psy_changed_irq_handler(int irq, void *data); Loading