HDMI: add dts node "rockchip,defaultmode" to define HDMI default output mode.
authorZheng Yang <zhengyang@rock-chips.com>
Thu, 26 Mar 2015 06:40:32 +0000 (14:40 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Thu, 26 Mar 2015 06:40:32 +0000 (14:40 +0800)
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
Documentation/devicetree/bindings/video/rockchip_hdmi.txt
drivers/video/rockchip/hdmi/rockchip-hdmi-core.c
drivers/video/rockchip/hdmi/rockchip-hdmi-lcdc.c
drivers/video/rockchip/hdmi/rockchip-hdmi.h
drivers/video/rockchip/hdmi/rockchip-hdmiv1/rockchip_hdmiv1.c
drivers/video/rockchip/hdmi/rockchip-hdmiv2/rockchip_hdmiv2.c

index 9bd5eb06ac2c9e3976c27de1318896fb60ad99bc..806527857ae2262674a2cd38f5973ad13765fb5a 100644 (file)
@@ -28,6 +28,7 @@ Required properties:
 - rockchip,cec_enable: hdmi cec function is described as follow
        <0>: cec function is disabled.
        <1>: cec function is enabled.
+- rockchip,defaultmode: hdmi default output video mode.
 Example:
 
        hdmi: hdmi@ff980000 {
index b9b3f4e92991fa035de73c6066e561cf03635133..4fecefed0c655746d07bbc5ce6596933b26a6b05 100644 (file)
@@ -457,7 +457,7 @@ struct hdmi *rockchip_hdmi_register(struct hdmi_property *property,
        } else if (hdmi->autoset) {
                hdmi->vic = 0;
        } else {
-               hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
+               hdmi->vic = hdmi->property->defaultmode;
        }
        hdmi->colormode = HDMI_VIDEO_DEFAULT_COLORMODE;
        hdmi->colordepth = HDMI_DEPP_COLOR_AUTO;
index 51248470f2c95f1023181292c0f4297a3eb3f377..7ca74fdcd2f178944307fcd0bbde3cf2cb01cb8d 100644 (file)
@@ -40,7 +40,7 @@ static int hdmi_set_info(struct rk_screen *screen, struct hdmi *hdmi)
                return HDMI_ERROR_FALSE;
 
        if (hdmi->vic == 0)
-               hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
+               hdmi->vic = hdmi->property->defaultmode;
 
        for (i = 0; i < ARRAY_SIZE(hdmi_mode); i++) {
                if (hdmi_mode[i].vic == (hdmi->vic & HDMI_VIC_MASK) ||
@@ -136,7 +136,7 @@ int hdmi_find_best_mode(struct hdmi *hdmi, int vic)
                /* If parse edid error, we select default mode; */
                if (hdmi->edid.specs == NULL ||
                    hdmi->edid.specs->modedb_len == 0)
-                       return HDMI_VIDEO_DEFAULT_MODE;
+                       return hdmi->property->defaultmode;
                        /*modelist = list_entry(head->prev,
                                        struct display_modelist, list);*/
                else
@@ -167,7 +167,7 @@ int hdmi_set_lcdc(struct hdmi *hdmi)
                hdmi->vic = hdmi_find_best_mode(hdmi, hdmi->vic);
 
        if (hdmi->vic == 0)
-               hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
+               hdmi->vic = hdmi->property->defaultmode;
 
        rc = hdmi_set_info(&screen, hdmi);
 
@@ -457,7 +457,7 @@ static void hdmi_sort_modelist(struct hdmi_edid *edid, int feature)
                                    hdmi_mode[i].mode.xres == 4096)
                                        continue;
                                if ((feature & SUPPORT_TMDS_600M) == 0 &&
-                                   !(modelist->vic & HDMI_VIDEO_YUV420) &&  
+                                   !(modelist->vic & HDMI_VIDEO_YUV420) &&
                                    hdmi_mode[i].mode.pixclock > 340000000)
                                        continue;
                                if ((modelist->vic & HDMI_VIDEO_YUV420) &&
index 51da78dc60d6717382c51dd2c6a71a4e57771fd7..33b8598554eeb6ed5f4e9b25b9be1f102ce89a8c 100644 (file)
@@ -338,6 +338,7 @@ struct hdmi_property {
        int videosrc;
        int display;
        int feature;
+       int defaultmode;
        void *priv;
 };
 
index aa4166823eee463b267bf7b169ab2b0007301884..5feb1f8e6c6e0817ba12776cd5abaa56b047783f 100644 (file)
@@ -244,14 +244,22 @@ static int rockchip_hdmiv1_parse_dt(struct hdmi_dev *hdmi_dev)
 
        if (!of_property_read_u32(np, "rockchip,cec_enable", &val) &&
            (val == 1)) {
-               pr_info("hdmi support cec\n");
+               pr_debug("hdmi support cec\n");
                rockchip_hdmiv1_property.feature |= SUPPORT_CEC;
        }
        if (!of_property_read_u32(np, "rockchip,hdcp_enable", &val) &&
            (val == 1)) {
-               pr_info("hdmi support hdcp\n");
+               pr_debug("hdmi support hdcp\n");
                rockchip_hdmiv1_property.feature |= SUPPORT_HDCP;
        }
+       if (!of_property_read_u32(np, "rockchip,defaultmode", &val) &&
+           (val > 0)) {
+               pr_debug("default mode is %d\n", val);
+               rockchip_hdmiv1_property.defaultmode = val;
+       } else {
+               rockchip_hdmiv1_property.defaultmode =
+                                               HDMI_VIDEO_DEFAULT_MODE;
+       }
        /*hdmi_dev->grf_base =
                syscon_regmap_lookup_by_phandle(np, "rockchip,grf");*/
        return 0;
index b11fb18a54f5d310a771a1d3239cc503d68b3e10..af8c8d1e966a790f16ca6008a870f5446b0c6d4c 100644 (file)
@@ -340,14 +340,21 @@ static int rockchip_hdmiv2_parse_dt(struct hdmi_dev *hdmi_dev)
 
        if (!of_property_read_u32(np, "rockchip,cec_enable", &val) &&
            (val == 1)) {
-               pr_info("hdmi support cec\n");
+               pr_debug("hdmi support cec\n");
                rk_hdmi_property.feature |= SUPPORT_CEC;
        }
        if (!of_property_read_u32(np, "rockchip,hdcp_enable", &val) &&
            (val == 1)) {
-               pr_info("hdmi support hdcp\n");
+               pr_debug("hdmi support hdcp\n");
                rk_hdmi_property.feature |= SUPPORT_HDCP;
        }
+       if (!of_property_read_u32(np, "rockchip,defaultmode", &val) &&
+           (val > 0)) {
+               pr_debug("default mode is %d\n", val);
+               rk_hdmi_property.defaultmode = val;
+       } else {
+               rk_hdmi_property.defaultmode = HDMI_VIDEO_DEFAULT_MODE;
+       }
        #ifdef CONFIG_MFD_SYSCON
        hdmi_dev->grf_base =
                syscon_regmap_lookup_by_phandle(np, "rockchip,grf");