From 77fa943ef3d11ef1f95fe950c6e84f83ac9af0d1 Mon Sep 17 00:00:00 2001 From: zwl Date: Sat, 30 Aug 2014 16:23:34 +0800 Subject: [PATCH] rk312x/rk3288:lcdc: add win empty irq debug --- drivers/video/rockchip/lcdc/rk312x_lcdc.c | 23 +++++++++++++++++++++++ drivers/video/rockchip/lcdc/rk3288_lcdc.c | 6 +++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/video/rockchip/lcdc/rk312x_lcdc.c b/drivers/video/rockchip/lcdc/rk312x_lcdc.c index 8a89f4b77a80..47cd08f9b64a 100755 --- a/drivers/video/rockchip/lcdc/rk312x_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk312x_lcdc.c @@ -93,6 +93,19 @@ static irqreturn_t rk312x_lcdc_isr(int irq, void *dev_id) lcdc_msk_reg(lcdc_dev, INT_STATUS, m_LF_INT_CLEAR, v_LF_INT_CLEAR(1)); } + +#ifdef LCDC_IRQ_EMPTY_DEBUG + if (int_reg & m_WIN0_EMPTY_INT_STA) { + lcdc_msk_reg(lcdc_dev, INT_STATUS, m_WIN0_EMPTY_INT_CLEAR, + v_WIN0_EMPTY_INT_CLEAR(1)); + dev_info(lcdc_dev->dev, "win0 empty irq\n"); + } else if (int_reg & m_WIN1_EMPTY_INT_STA) { + lcdc_msk_reg(lcdc_dev, INT_STATUS, m_WIN1_EMPTY_INT_CLEAR, + v_WIN1_EMPTY_INT_CLEAR(1)); + dev_info(lcdc_dev->dev, "win0 empty irq\n"); + } +#endif + return IRQ_HANDLED; } @@ -153,6 +166,11 @@ static int rk312x_lcdc_enable_irq(struct rk_lcdc_driver *dev_drv) v_LF_INT_NUM(screen->mode.vsync_len + screen->mode.upper_margin + screen->mode.yres); +#ifdef LCDC_IRQ_EMPTY_DEBUG + mask |= m_WIN0_EMPTY_INT_EN | m_WIN1_EMPTY_INT_EN; + val |= v_WIN0_EMPTY_INT_EN(1) | v_WIN1_EMPTY_INT_EN(1); +#endif + lcdc_msk_reg(lcdc_dev, INT_STATUS, mask, val); spin_unlock(&lcdc_dev->reg_lock); } else { @@ -173,6 +191,11 @@ static int rk312x_lcdc_disable_irq(struct lcdc_device *lcdc_dev) val = v_FS_INT_CLEAR(0) | v_FS_INT_EN(0) | v_LF_INT_CLEAR(0) | v_LF_INT_EN(0) | v_BUS_ERR_INT_CLEAR(0) | v_BUS_ERR_INT_EN(0); +#ifdef LCDC_IRQ_EMPTY_DEBUG + mask |= m_WIN0_EMPTY_INT_EN | m_WIN1_EMPTY_INT_EN; + val |= v_WIN0_EMPTY_INT_EN(0) | v_WIN1_EMPTY_INT_EN(0); +#endif + lcdc_msk_reg(lcdc_dev, INT_STATUS, mask, val); spin_unlock(&lcdc_dev->reg_lock); } else { diff --git a/drivers/video/rockchip/lcdc/rk3288_lcdc.c b/drivers/video/rockchip/lcdc/rk3288_lcdc.c index 95386b82dcc6..827ed304b3e9 100755 --- a/drivers/video/rockchip/lcdc/rk3288_lcdc.c +++ b/drivers/video/rockchip/lcdc/rk3288_lcdc.c @@ -1277,7 +1277,7 @@ static int rk3288_lcdc_enable_irq(struct rk_lcdc_driver *dev_drv) v_DSP_LINE_FLAG_NUM(screen->mode.vsync_len + screen->mode.upper_margin + screen->mode.yres); lcdc_msk_reg(lcdc_dev, INTR_CTRL0, mask, val); -#if 0 +#ifdef LCDC_IRQ_EMPTY_DEBUG mask = m_WIN0_EMPTY_INTR_EN | m_WIN1_EMPTY_INTR_EN | m_WIN2_EMPTY_INTR_EN | m_WIN3_EMPTY_INTR_EN |m_HWC_EMPTY_INTR_EN | m_POST_BUF_EMPTY_INTR_EN | m_PWM_GEN_INTR_EN; @@ -3553,8 +3553,8 @@ static irqreturn_t rk3288_lcdc_isr(int irq, void *dev_id) dev_warn(lcdc_dev->dev,"buf_error_int!"); } - /*for debug*/ -#ifdef LCDC_IRQ_DEBUG + /* for win empty debug */ +#ifdef LCDC_IRQ_EMPTY_DEBUG intr1_reg = lcdc_readl(lcdc_dev, INTR_CTRL1); if (intr1_reg != 0) { rk3288_lcdc_parse_irq(lcdc_dev,intr1_reg); -- 2.34.1