HDMI:
authorZheng Yang <zhengyang@rock-chips.com>
Sat, 14 Feb 2015 08:22:35 +0000 (16:22 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Fri, 27 Feb 2015 09:36:58 +0000 (17:36 +0800)
1. In DVI mode, input color and output color should be RGB[0-255];
   In HDMI mode, input color should be YCbCr;
2. For MID, HDMI is default disabled.

Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/hdmi/rockchip-hdmi-core.c
drivers/video/rockchip/hdmi/rockchip-hdmi-lcdc.c
drivers/video/rockchip/hdmi/rockchip-hdmiv1/rockchip_hdmiv1.c
drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2.c

index c066797d696825d968d9ae06f8c729ff4156de15..3ddcc307d3d810f51f66a9ccd045113837e40d60 100644 (file)
@@ -80,6 +80,8 @@ static void hdmi_wq_set_video(struct hdmi *hdmi)
        video.vic = hdmi->vic & HDMI_VIC_MASK;
        if (hdmi->vic & HDMI_VIDEO_YUV420)
                video.color_input = HDMI_COLOR_YCBCR420;
+       else if (hdmi->edid.sink_hdmi == 0)
+               video.color_input = HDMI_COLOR_RGB_0_255;
        else
                video.color_input = HDMI_COLOR_YCBCR444;
        video.sink_hdmi = hdmi->edid.sink_hdmi;
index 56dd6aa0705f7f54e61b3cf4242a98b588a9845e..966e0e2ff8ae15d19495fde76d68c1fa18384aa2 100644 (file)
@@ -54,7 +54,10 @@ static int hdmi_set_info(struct rk_screen *screen, struct hdmi *hdmi)
 
        /* screen type & face */
        screen->type = SCREEN_HDMI;
-       screen->color_mode = COLOR_YCBCR;
+       if (hdmi->edid.sink_hdmi)
+               screen->color_mode = COLOR_YCBCR;
+       else
+               screen->color_mode = COLOR_RGB;
        if (hdmi->vic & HDMI_VIDEO_YUV420)
                screen->face = OUT_YUV_420;
        else
index 9c780587c50f506a8f1d1eeef48e8c5b7d205322..aa4166823eee463b267bf7b169ab2b0007301884 100644 (file)
@@ -327,8 +327,9 @@ static int rockchip_hdmiv1_probe(struct platform_device *pdev)
 
        fb_register_client(&rockchip_hdmiv1_fb_notifier);
        rockchip_hdmiv1_initial(hdmi_dev->hdmi);
-       rk_display_device_enable(hdmi_dev->hdmi->ddev);
+
        if (rk_fb_get_display_policy() == DISPLAY_POLICY_BOX) {
+               rk_display_device_enable(hdmi_dev->hdmi->ddev);
                delay_work = hdmi_submit_work(hdmi_dev->hdmi,
                                              HDMI_HPD_CHANGE, 0, NULL);
                if (delay_work)
index fdfeead8d4311dc43f81115dbbe0db884bc9ea09..9200dc9d11dd9262afa17e655281bff0b570f2bf 100644 (file)
@@ -442,7 +442,8 @@ static int rockchip_hdmiv2_probe(struct platform_device *pdev)
                                    hdmi_dev->debugfs_dir,
                                    hdmi_dev, &rockchip_hdmiv2_reg_fops);
 #endif
-       rk_display_device_enable(hdmi_dev->hdmi->ddev);
+       if (rk_fb_get_display_policy() == DISPLAY_POLICY_BOX)
+               rk_display_device_enable(hdmi_dev->hdmi->ddev);
 
 #ifndef HDMI_INT_USE_POLL
        /* get and request the IRQ */