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:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) &&
|
||||
|
||||
@@ -338,6 +338,7 @@ struct hdmi_property {
|
||||
int videosrc;
|
||||
int display;
|
||||
int feature;
|
||||
int defaultmode;
|
||||
void *priv;
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user