mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
rk3368 lcdc: inter bak register will lead to clear
other inter status, so when we clear inter inter
status we should set clear register to zero.
Signed-off-by: hjc <hjc@rock-chips.com>
This commit is contained in:
15
drivers/video/rockchip/lcdc/rk3368_lcdc.c
Normal file → Executable file
15
drivers/video/rockchip/lcdc/rk3368_lcdc.c
Normal file → Executable file
@@ -1568,9 +1568,10 @@ static int rk3368_config_timing(struct rk_lcdc_driver *dev_drv)
|
||||
val = v_HWC_INTERLACE_READ(1);
|
||||
lcdc_msk_reg(lcdc_dev, HWC_CTRL0, mask, val);
|
||||
|
||||
mask = m_DSP_LINE_FLAG0_NUM;
|
||||
mask = m_DSP_LINE_FLAG0_NUM | m_DSP_LINE_FLAG1_NUM;
|
||||
val =
|
||||
v_DSP_LINE_FLAG0_NUM(vsync_len + upper_margin + y_res / 2);
|
||||
v_DSP_LINE_FLAG0_NUM(vsync_len + upper_margin + y_res / 2) |
|
||||
v_DSP_LINE_FLAG1_NUM(vsync_len + upper_margin + y_res / 2);
|
||||
lcdc_msk_reg(lcdc_dev, LINE_FLAG, mask, val);
|
||||
} else {
|
||||
mask = m_DSP_VS_PW | m_DSP_VTOTAL;
|
||||
@@ -1614,8 +1615,9 @@ static int rk3368_config_timing(struct rk_lcdc_driver *dev_drv)
|
||||
val = v_HWC_INTERLACE_READ(0);
|
||||
lcdc_msk_reg(lcdc_dev, HWC_CTRL0, mask, val);
|
||||
|
||||
mask = m_DSP_LINE_FLAG0_NUM;
|
||||
val = v_DSP_LINE_FLAG0_NUM(vsync_len + upper_margin + y_res);
|
||||
mask = m_DSP_LINE_FLAG0_NUM | m_DSP_LINE_FLAG1_NUM;
|
||||
val = v_DSP_LINE_FLAG0_NUM(vsync_len + upper_margin + y_res) |
|
||||
v_DSP_LINE_FLAG1_NUM(vsync_len + upper_margin + y_res);
|
||||
lcdc_msk_reg(lcdc_dev, LINE_FLAG, mask, val);
|
||||
}
|
||||
rk3368_lcdc_post_cfg(dev_drv);
|
||||
@@ -1977,9 +1979,10 @@ static int rk3368_lcdc_enable_irq(struct rk_lcdc_driver *dev_drv)
|
||||
v_LINE_FLAG0_INTR_CLR(1) | v_LINE_FLAG1_INTR_CLR(1);
|
||||
lcdc_msk_reg(lcdc_dev, INTR_CLEAR, mask, val);
|
||||
|
||||
mask = m_FS_INTR_EN | m_LINE_FLAG0_INTR_EN | m_BUS_ERROR_INTR_EN;
|
||||
mask = m_FS_INTR_EN | m_LINE_FLAG0_INTR_EN |
|
||||
m_BUS_ERROR_INTR_EN | m_LINE_FLAG1_INTR_EN;
|
||||
val = v_FS_INTR_EN(1) | v_LINE_FLAG0_INTR_EN(1) |
|
||||
v_BUS_ERROR_INTR_EN(1);
|
||||
v_BUS_ERROR_INTR_EN(1) | v_LINE_FLAG1_INTR_EN(0);
|
||||
lcdc_msk_reg(lcdc_dev, INTR_EN, mask, val);
|
||||
|
||||
#ifdef LCDC_IRQ_EMPTY_DEBUG
|
||||
|
||||
2
drivers/video/rockchip/lcdc/rk3368_lcdc.h
Normal file → Executable file
2
drivers/video/rockchip/lcdc/rk3368_lcdc.h
Normal file → Executable file
@@ -1863,6 +1863,8 @@ static inline void lcdc_msk_reg(struct lcdc_device *lcdc_dev,
|
||||
(*_pv) &= (~msk);
|
||||
(*_pv) |= v;
|
||||
writel_relaxed(*_pv, lcdc_dev->regs + offset);
|
||||
if (offset == INTR_CLEAR)
|
||||
(*_pv) &= 0;
|
||||
}
|
||||
|
||||
static inline void lcdc_cfg_done(struct lcdc_device *lcdc_dev)
|
||||
|
||||
Reference in New Issue
Block a user