rk312x/rk3288:lcdc: add win empty irq debug
authorzwl <zwl@rockchips.com>
Sat, 30 Aug 2014 08:23:34 +0000 (16:23 +0800)
committerzwl <zwl@rockchips.com>
Sat, 30 Aug 2014 08:23:50 +0000 (16:23 +0800)
drivers/video/rockchip/lcdc/rk312x_lcdc.c
drivers/video/rockchip/lcdc/rk3288_lcdc.c

index 8a89f4b77a80bc3b840f53fadcb52718abc2aff3..47cd08f9b64a8700389eaaa155da0e1a392db7b4 100755 (executable)
@@ -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 {
index 95386b82dcc656ef54a6af9fd67ab85c04c0919f..827ed304b3e98e5dd8b38bcb97d199b30836aeb8 100755 (executable)
@@ -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);