video: rockchip: vop: 3399: update for dsp output mode
authorHuang Jiachai <hjc@rock-chips.com>
Wed, 6 Apr 2016 07:15:29 +0000 (15:15 +0800)
committerHuang Jiachai <hjc@rock-chips.com>
Mon, 11 Apr 2016 02:54:24 +0000 (10:54 +0800)
Change-Id: I3558b90bea9cdad7954d17004c08cfc2c2c53aa0
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
drivers/video/rockchip/lcdc/rk322x_lcdc.c
drivers/video/rockchip/lcdc/rk322x_lcdc.h

index 9e321afce5ad18d289e564eb616b367b5f3b8cc9..e97be2c1e676ea22ee433b3c03239e6e632c5290 100644 (file)
@@ -1996,9 +1996,14 @@ static int vop_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
                        break;
                case SCREEN_HDMI:
-                       if ((screen->face == OUT_P888) ||
-                           (screen->face == OUT_P101010))
-                               face = OUT_P101010; /*RGB 101010 output*/
+                       if ((VOP_CHIP(vop_dev) == VOP_RK3399) &&
+                           ((screen->face == OUT_P888) ||
+                            (screen->face == OUT_P101010))) {
+                               if (vop_dev->id == 0)
+                                       face = OUT_P101010; /*RGB 10bit output*/
+                               else
+                                       face = OUT_P888;
+                       }
                        val = V_HDMI_OUT_EN(1) | V_SW_UV_OFFSET_EN(0);
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
                        break;
@@ -2006,10 +2011,19 @@ static int vop_load_screen(struct rk_lcdc_driver *dev_drv, bool initscreen)
                case SCREEN_LVDS:
                        val = V_RGB_OUT_EN(1);
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
+                       break;
                case SCREEN_MIPI:
                        val = V_MIPI_OUT_EN(1);
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
+                       break;
+               case SCREEN_DUAL_MIPI:
+                       val = V_MIPI_OUT_EN(1) | V_MIPI_DUAL_CHANNEL_EN(1);
+                       vop_msk_reg(vop_dev, SYS_CTRL, val);
+                       break;
                case SCREEN_EDP:
+                       if ((VOP_CHIP(vop_dev) == VOP_RK3399) &&
+                           (vop_dev->id == 0))
+                               face = OUT_P101010;
                        val = V_EDP_OUT_EN(1);
                        vop_msk_reg(vop_dev, SYS_CTRL, val);
                        break;
index ac7d98045095ec191208afbed8ecee20a4d3fb35..12fe254248f7ff668acd2c800d2a491ba2f787ec 100644 (file)
@@ -245,6 +245,7 @@ static inline u64 val_mask(int val, u64 msk, int shift)
 #define SYS_CTRL                       0x00000008
 #define  V_DIRECT_PATH_EN(x)                   VAL_MASK(x, 1, 0)
 #define  V_DIRECT_PATH_LAYER_SEL(x)            VAL_MASK(x, 2, 1)
+#define  V_MIPI_DUAL_CHANNEL_EN(x)             VAL_MASK(x, 1, 3)
 #define  V_EDPI_HALT_EN(x)                     VAL_MASK(x, 1, 8)
 #define  V_EDPI_WMS_MODE(x)                    VAL_MASK(x, 1, 9)
 #define  V_EDPI_WMS_FS(x)                      VAL_MASK(x, 1, 10)