Example #1
0
irqreturn_t mdss_dsi_isr(int irq, void *ptr)
{
	u32 isr;
	struct mdss_dsi_ctrl_pdata *ctrl =
			(struct mdss_dsi_ctrl_pdata *)ptr;

	if (!ctrl->ctrl_base)
		pr_err("%s:%d DSI base adr no Initialized",
				       __func__, __LINE__);

	isr = MIPI_INP(ctrl->ctrl_base + 0x0110);/* DSI_INTR_CTRL */
	MIPI_OUTP(ctrl->ctrl_base + 0x0110, isr);

	if (ctrl->shared_pdata.broadcast_enable)
		if ((ctrl->panel_data.panel_info.pdest == DISPLAY_2)
		    && (left_ctrl_pdata != NULL)) {
			u32 isr0;
			isr0 = MIPI_INP(left_ctrl_pdata->ctrl_base
						+ 0x0110);/* DSI_INTR_CTRL */
			MIPI_OUTP(left_ctrl_pdata->ctrl_base + 0x0110, isr0);
		}

	pr_debug("%s: ndx=%d isr=%x\n", __func__, ctrl->ndx, isr);

	if (isr & DSI_INTR_ERROR) {
		pr_err("%s: ndx=%d isr=%x\n", __func__, ctrl->ndx, isr);
		mdss_dsi_error(ctrl);
	}

	if (isr & DSI_INTR_VIDEO_DONE) {
		spin_lock(&ctrl->mdp_lock);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_VIDEO_TERM);
		complete(&ctrl->video_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	if (isr & DSI_INTR_CMD_DMA_DONE) {
		spin_lock(&ctrl->mdp_lock);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_CMD_TERM);
		complete(&ctrl->dma_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	if (isr & DSI_INTR_CMD_MDP_DONE) {
		spin_lock(&ctrl->mdp_lock);
		ctrl->mdp_busy = false;
		mdss_dsi_disable_irq_nosync(ctrl, DSI_MDP_TERM);
		complete(&ctrl->mdp_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	if (isr & DSI_INTR_BTA_DONE) {
		spin_lock(&ctrl->mdp_lock);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_BTA_TERM);
		complete(&ctrl->bta_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	return IRQ_HANDLED;
}
Example #2
0
irqreturn_t mdss_dsi_isr(int irq, void *ptr)
{
    u32 isr;
    struct mdss_dsi_ctrl_pdata *ctrl =
        (struct mdss_dsi_ctrl_pdata *)ptr;

    if (!ctrl->ctrl_base)
        pr_err("%s:%d DSI base adr no Initialized",
               __func__, __LINE__);

    isr = MIPI_INP(ctrl->ctrl_base + 0x0110);/* DSI_INTR_CTRL */
    MIPI_OUTP(ctrl->ctrl_base + 0x0110, isr);

    pr_debug("%s: ndx=%d isr=%x\n", __func__, ctrl->ndx, isr);

    if (isr & DSI_INTR_ERROR) {
        MDSS_XLOG(ctrl->ndx, ctrl->mdp_busy, isr, 0x97);
        pr_err("%s: ndx=%d isr=%x\n", __func__, ctrl->ndx, isr);
        mdss_dsi_error(ctrl);
    }

    if (isr & DSI_INTR_VIDEO_DONE) {
        spin_lock(&ctrl->mdp_lock);
        mdss_dsi_disable_irq_nosync(ctrl, DSI_VIDEO_TERM);
        complete(&ctrl->video_comp);
        spin_unlock(&ctrl->mdp_lock);
    }

    if (isr & DSI_INTR_CMD_DMA_DONE) {
        MDSS_XLOG(ctrl->ndx, ctrl->mdp_busy, isr, 0x98);
        spin_lock(&ctrl->mdp_lock);
        mdss_dsi_disable_irq_nosync(ctrl, DSI_CMD_TERM);
        complete(&ctrl->dma_comp);
        spin_unlock(&ctrl->mdp_lock);
    }

    if (isr & DSI_INTR_CMD_MDP_DONE) {
        MDSS_XLOG(ctrl->ndx, ctrl->mdp_busy, isr, 0x99);
        spin_lock(&ctrl->mdp_lock);
        ctrl->mdp_busy = false;
        mdss_dsi_disable_irq_nosync(ctrl, DSI_MDP_TERM);
        complete(&ctrl->mdp_comp);
        spin_unlock(&ctrl->mdp_lock);
    }

    if (isr & DSI_INTR_BTA_DONE) {
        spin_lock(&ctrl->mdp_lock);
        mdss_dsi_disable_irq_nosync(ctrl, DSI_BTA_TERM);
        complete(&ctrl->bta_comp);
        spin_unlock(&ctrl->mdp_lock);
    }

    return IRQ_HANDLED;
}
Example #3
0
irqreturn_t mdss_dsi_isr(int irq, void *ptr)
{
	u32 isr;
	unsigned char *dsi_base;
	struct mdss_dsi_ctrl_pdata *ctrl_pdata =
			(struct mdss_dsi_ctrl_pdata *)ptr;

	dsi_base = ctrl_pdata->ctrl_base;
	if (!dsi_base)
		pr_err("%s:%d DSI base adr no Initialized",
				       __func__, __LINE__);

	isr = MIPI_INP(dsi_base + 0x0110);/* DSI_INTR_CTRL */
	MIPI_OUTP(dsi_base + 0x0110, isr);

	if (ctrl_pdata->shared_pdata.broadcast_enable)
		if ((ctrl_pdata->panel_data.panel_info.pdest == DISPLAY_2)
		    && (left_ctrl_pdata != NULL)) {
			u32 isr0;
			isr0 = MIPI_INP(left_ctrl_pdata->ctrl_base
						+ 0x0110);/* DSI_INTR_CTRL */
			MIPI_OUTP(left_ctrl_pdata->ctrl_base + 0x0110, isr0);
		}

	pr_debug("%s: isr=%x %x", __func__, isr, (int)DSI_INTR_ERROR);

	if (isr & DSI_INTR_ERROR)
		mdss_dsi_error(dsi_base);

	if (isr & DSI_INTR_VIDEO_DONE) {
		/*
		* do something  here
		*/
	}

	if (isr & DSI_INTR_CMD_DMA_DONE)
		complete(&dsi_dma_comp);

	if (isr & DSI_INTR_CMD_MDP_DONE) {
		spin_lock(&dsi_mdp_lock);
		dsi_mdp_busy = false;
		spin_unlock(&dsi_mdp_lock);
	}

	return IRQ_HANDLED;
}
irqreturn_t mdss_dsi_isr(int irq, void *ptr)
{
	u32 isr;
	u32 isr0 = 0;
	struct mdss_dsi_ctrl_pdata *ctrl =
			(struct mdss_dsi_ctrl_pdata *)ptr;

	if (!ctrl) {
		pr_err("%s unable to access ctrl\n", __func__);
		return IRQ_HANDLED;
	}

	if (!ctrl->ctrl_base) {
		pr_err("%s:%d DSI base adr no Initialized",
				       __func__, __LINE__);
		return IRQ_HANDLED;
	}

	isr = MIPI_INP(ctrl->ctrl_base + 0x0110);/* DSI_INTR_CTRL */
	MIPI_OUTP(ctrl->ctrl_base + 0x0110, isr);

	if (ctrl->shared_pdata.broadcast_enable)
		if ((ctrl->panel_data.panel_info.pdest == DISPLAY_2)
		    && (left_ctrl_pdata != NULL)) {
			isr0 = MIPI_INP(left_ctrl_pdata->ctrl_base
						+ 0x0110);/* DSI_INTR_CTRL */
			MIPI_OUTP(left_ctrl_pdata->ctrl_base + 0x0110, isr0 & (~DSI_INTR_CMD_MDP_DONE));
		}

	pr_debug("%s: isr=%x, isr0=%x", __func__, isr, isr0);

	if (isr & DSI_INTR_ERROR) {
#if defined (CONFIG_FB_MSM_MDSS_DSI_DBG)
	xlog(__func__, ctrl->ndx, ctrl->mdp_busy, isr, 0, 0, 0x97);
#endif
		pr_err("%s: isr[%d]=%x %x", __func__, ctrl->ndx, isr, (int)DSI_INTR_ERROR);
		mdss_dsi_error(ctrl);
	}

	if (isr & DSI_INTR_VIDEO_DONE) {
		spin_lock(&ctrl->mdp_lock);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_VIDEO_TERM);
		complete(&ctrl->video_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	if (isr & DSI_INTR_CMD_DMA_DONE) {
		spin_lock(&ctrl->mdp_lock);
#if defined (CONFIG_FB_MSM_MDSS_DSI_DBG)
	xlog(__func__,ctrl->ndx, ctrl->mdp_busy, isr, 0, 0, 0x98);
#endif
		mdss_dsi_disable_irq_nosync(ctrl, DSI_CMD_TERM);
		complete(&ctrl->dma_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	if (isr & DSI_INTR_CMD_MDP_DONE) {
		spin_lock(&ctrl->mdp_lock);
#if defined (CONFIG_FB_MSM_MDSS_DSI_DBG)
	xlog(__func__, ctrl->ndx, ctrl->mdp_busy, isr, 0, 0, 0x99);
#endif
		ctrl->mdp_busy = false;
		mdss_dsi_disable_irq_nosync(ctrl, DSI_MDP_TERM);
		complete(&ctrl->mdp_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	if (isr & DSI_INTR_BTA_DONE) {
		spin_lock(&ctrl->mdp_lock);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_BTA_TERM);
		complete(&ctrl->bta_comp);
		spin_unlock(&ctrl->mdp_lock);
	}

	return IRQ_HANDLED;
}