aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinliang Liu <xinliang.liu@linaro.org>2015-12-23 16:51:46 +0800
committerJohn Stultz <john.stultz@linaro.org>2016-02-02 19:32:28 -0800
commitfdf903e81ea0564f7843c7249f7a7243693fe06d (patch)
treee6f25f9d9968611a5c560b97d238c74f1e27a8f7
parentcd1de16487296f65121e0aee7b528301af4db453 (diff)
downloadhikey-linaro-fdf903e81ea0564f7843c7249f7a7243693fe06d.tar.gz
drm/hisilicon: Clear underflow irq
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
-rw-r--r--drivers/gpu/drm/hisilicon/hisi_drm_ade.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/hisilicon/hisi_drm_ade.c b/drivers/gpu/drm/hisilicon/hisi_drm_ade.c
index 40fa83741e69..53401e43ddfc 100644
--- a/drivers/gpu/drm/hisilicon/hisi_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/hisi_drm_ade.c
@@ -647,6 +647,7 @@ static irqreturn_t ldi_irq_handler(int irq, void *data)
//struct drm_device *dev = crtc->dev;
void __iomem *base = acrtc->ade_base;
u32 status;
+ u32 irq_mask;
status = readl(base + LDI_MSK_INT_REG);
/* DRM_INFO("LDI IRQ: status=0x%X\n",status); */
@@ -661,6 +662,17 @@ static irqreturn_t ldi_irq_handler(int irq, void *data)
if (status & LDI_ISR_UNDER_FLOW_INT) {
writel(LDI_ISR_UNDER_FLOW_INT, base + LDI_INT_CLR_REG);
DRM_INFO("underflow irq\n");
+
+ /* clear underflow irq */
+ irq_mask = readl(base + LDI_INT_EN_REG);
+ irq_mask = irq_mask & (~LDI_ISR_UNDER_FLOW_INT);
+ writel(irq_mask, base + LDI_INT_EN_REG);
+
+ /* reset the whole ade */
+ writel(0, base + ADE_SOFT_RST_SEL0_REG);
+ writel(0, base + ADE_SOFT_RST_SEL1_REG);
+ writel(0xffffffff, base + ADE_SOFT_RST0_REG);
+ writel(0xffffffff, base + ADE_SOFT_RST1_REG);
}
return IRQ_HANDLED;