Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89a51c29 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: smb5: Fix a possible reverse boost"

parents d634e747 33e4ee21
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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",
+35 −0
Original line number Original line Diff line number Diff line
@@ -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)
+1 −0
Original line number Original line Diff line number Diff line
@@ -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);