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; }
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; }