HDMI: add dts node "rockchip,defaultmode" to define HDMI default output mode.

Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
Zheng Yang
2015-03-26 14:40:32 +08:00
parent f62320a527
commit ad446e7a06
6 changed files with 26 additions and 9 deletions

View 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 {

View 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;

View 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) &&

View File

@@ -338,6 +338,7 @@ struct hdmi_property {
int videosrc;
int display;
int feature;
int defaultmode;
void *priv;
};

View 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;

View File

@@ -339,14 +339,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");