video: rockchip: lcdc: 3288: update for VOP YUV420 to HDMI

Change-Id: I3dbe2208e10318acf99b66e858d853c3d4efab04
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
This commit is contained in:
Huang Jiachai 2015-09-22 19:00:00 +08:00
commit 7fde8d2fb3
2 changed files with 13 additions and 2 deletions

View file

@ -1216,6 +1216,7 @@ static int rk3288_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
u32 mask, val;
u16 h_total,v_total;
int ret = 0;
int hdmi_dclk_out_en = 0;
if (unlikely(!lcdc_dev->clk_on)) {
pr_info("%s,clk_on = %d\n", __func__, lcdc_dev->clk_on);
@ -1282,6 +1283,7 @@ static int rk3288_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
lcdc_msk_reg(lcdc_dev, DSP_CTRL1, mask, val);
break;
case OUT_YUV_420:
hdmi_dclk_out_en = 1;
face = OUT_YUV_420;
dclk_ddr = 1;
mask = m_DITHER_DOWN_EN | m_DITHER_UP_EN |
@ -1291,6 +1293,7 @@ static int rk3288_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
lcdc_msk_reg(lcdc_dev, DSP_CTRL1, mask, val);
break;
case OUT_YUV_420_10BIT:
hdmi_dclk_out_en = 1;
face = OUT_YUV_420;
dclk_ddr = 1;
mask = m_DITHER_DOWN_EN | m_DITHER_UP_EN |
@ -1323,7 +1326,9 @@ static int rk3288_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
v |= (lcdc_dev->id << 3);
break;
case SCREEN_HDMI:
face = OUT_P101010;/*RGB 101010 output*/
if ((screen->face == OUT_P888) ||
(screen->face == OUT_P101010))
face = OUT_P101010;/*RGB 101010 output*/
mask = m_HDMI_OUT_EN;
val = v_HDMI_OUT_EN(1);
break;
@ -1341,6 +1346,10 @@ static int rk3288_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
val = v_EDP_OUT_EN(1);
break;
}
if (dev_drv->version == VOP_FULL_RK3288_V1_1) {
mask |= m_HDMI_DCLK_OUT_EN;
val |= v_HDMI_DCLK_OUT_EN(hdmi_dclk_out_en);
}
lcdc_msk_reg(lcdc_dev, SYS_CTRL, mask, val);
#ifndef CONFIG_RK_FPGA
writel_relaxed(v, RK_GRF_VIRT + RK3288_GRF_SOC_CON6);

View file

@ -22,6 +22,7 @@
#define v_EDPI_HALT_EN(x) (((x)&1)<<8)
#define v_EDPI_WMS_MODE(x) (((x)&1)<<9)
#define v_EDPI_WMS_FS(x) (((x)&1)<<10)
#define v_HDMI_DCLK_OUT_EN(x) (((x)&1)<<11)
#define v_RGB_OUT_EN(x) (((x)&1)<<12)
#define v_HDMI_OUT_EN(x) (((x)&1)<<13)
#define v_EDP_OUT_EN(x) (((x)&1)<<14)
@ -39,6 +40,7 @@
#define m_EDPI_HALT_EN (1<<8)
#define m_EDPI_WMS_MODE (1<<9)
#define m_EDPI_WMS_FS (1<<10)
#define m_HDMI_DCLK_OUT_EN (1<<11)
#define m_RGB_OUT_EN (1<<12)
#define m_HDMI_OUT_EN (1<<13)
#define m_EDP_OUT_EN (1<<14)
@ -1064,7 +1066,7 @@
#define m_BCSH_SIN_HUE (0x1ff<<0)
#define m_BCSH_COS_HUE (0x1ff<<16)
#define BCSH_CTRL (0x01b8)
#define BCSH_CTRL (0x01bc)
#define v_BCSH_Y2R_EN(x) (((x)&0x1)<<0)
#define v_BCSH_R2Y_EN(x) (((x)&0x1)<<4)
#define m_BCSH_Y2R_EN (0x1<<0)