Ejemplo n.º 1
0
static irqreturn_t mhl_tx_isr(int irq, void *data)
{
	int rc;
	struct mhl_tx_ctrl *mhl_ctrl = (struct mhl_tx_ctrl *)data;
	pr_debug("%s: Getting Interrupts\n", __func__);

	/*
	 * Check RGND, MHL_EST, CBUS_LOCKOUT, SCDT
	 * interrupts. In D3, we get only RGND
	 */
	rc = dev_detect_isr(mhl_ctrl);
	if (rc)
		pr_debug("%s: dev_detect_isr rc=[%d]\n", __func__, rc);

	pr_debug("%s: cur pwr state is [0x%x]\n",
		 __func__, mhl_ctrl->cur_state);

	/*
	 * If dev_detect_isr() didn't move the tx to D3
	 * on disconnect, continue to check other
	 * interrupt sources.
	 */
	mhl_misc_isr(mhl_ctrl);

	/*
	 * Check for any peer messages for DCAP_CHG, MSC etc
	 * Dispatch to have the CBUS module working only
	 * once connected.
	 */
	mhl_cbus_isr(mhl_ctrl);
	mhl_hpd_stat_isr(mhl_ctrl);

	return IRQ_HANDLED;
}
Ejemplo n.º 2
0
static irqreturn_t mhl_tx_isr(int irq, void *data)
{
	struct mhl_tx_ctrl *mhl_ctrl = (struct mhl_tx_ctrl *)data;
	pr_debug("%s: Getting Interrupts\n", __func__);

	/*
	 * Check RGND, MHL_EST, CBUS_LOCKOUT, SCDT
	 * interrupts. In D3, we get only RGND
	 */
	dev_detect_isr(mhl_ctrl);

	pr_debug("%s: cur pwr state is [0x%x]\n",
		 __func__, mhl_ctrl->cur_state);
	if (mhl_ctrl->cur_state == POWER_STATE_D0_MHL) {
		/*
		 * If dev_detect_isr() didn't move the tx to D3
		 * on disconnect, continue to check other
		 * interrupt sources.
		 */
		mhl_misc_isr(mhl_ctrl);

		/*
		 * Check for any peer messages for DCAP_CHG etc
		 * Dispatch to have the CBUS module working only
		 * once connected.
		mhl_cbus_isr(mhl_ctrl);
		 */
		mhl_hpd_stat_isr(mhl_ctrl);
	}

	clear_all_intrs(mhl_ctrl->i2c_handle);

	return IRQ_HANDLED;
}