drm: msm: add skip_ddc support for hdmi display
HDMI display on auto boards has disabled pluggable function and hardcoded 1080p mode for output. So ddc related function should also be skipped. Otherwise, some error messages are printed when accessing ddc. Change-Id: I42694b0586dd870e7881b422cd3d6ee960276b17 Signed-off-by: Suprith Malligere Shankaregowda <supgow@codeaurora.org> Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
This commit is contained in:
parent
65a0403464
commit
225c6e1fee
4 changed files with 15 additions and 3 deletions
|
@ -8,6 +8,7 @@ Optional properties:
|
|||
- qcom,display-type: display type of this manager. It could be "primary",
|
||||
"secondary", "tertiary", etc.
|
||||
- qcom,non-pluggable: Boolean to indicate if display is non pluggable.
|
||||
- qcom,skip_ddc: Boolean to indicate if display skips ddc function.
|
||||
- qcom,customize-modes: Customized modes when it's non pluggable display.
|
||||
- qcom,customize-mode-id: Customized mode node.
|
||||
- qcom,mode-name: String which indicates the mode name which shall be used
|
||||
|
|
|
@ -3069,6 +3069,8 @@ static int _sde_hdmi_parse_dt(struct device_node *node,
|
|||
{
|
||||
int rc = 0;
|
||||
|
||||
struct hdmi *hdmi = display->ctrl.ctrl;
|
||||
|
||||
display->name = of_get_property(node, "label", NULL);
|
||||
|
||||
display->display_type = of_get_property(node,
|
||||
|
@ -3079,6 +3081,11 @@ static int _sde_hdmi_parse_dt(struct device_node *node,
|
|||
display->non_pluggable = of_property_read_bool(node,
|
||||
"qcom,non-pluggable");
|
||||
|
||||
display->skip_ddc = of_property_read_bool(node,
|
||||
"qcom,skip_ddc");
|
||||
if (!display->non_pluggable)
|
||||
hdmi_i2c_destroy(hdmi->i2c);
|
||||
|
||||
rc = _sde_hdmi_parse_dt_modes(node, &display->mode_list,
|
||||
&display->num_of_modes);
|
||||
if (rc)
|
||||
|
|
|
@ -154,6 +154,7 @@ struct sde_hdmi {
|
|||
struct sde_edid_ctrl *edid_ctrl;
|
||||
|
||||
bool non_pluggable;
|
||||
bool skip_ddc;
|
||||
u32 num_of_modes;
|
||||
struct list_head mode_list;
|
||||
struct drm_display_mode mode;
|
||||
|
|
|
@ -512,8 +512,8 @@ static void _sde_hdmi_bridge_pre_enable(struct drm_bridge *bridge)
|
|||
}
|
||||
hdmi->power_on = true;
|
||||
}
|
||||
|
||||
_sde_hdmi_bridge_setup_scrambler(hdmi, &display->mode);
|
||||
if (!display->skip_ddc)
|
||||
_sde_hdmi_bridge_setup_scrambler(hdmi, &display->mode);
|
||||
|
||||
if (phy)
|
||||
phy->funcs->powerup(phy, hdmi->pixclock);
|
||||
|
@ -822,6 +822,8 @@ static u32 _sde_hdmi_choose_best_format(struct hdmi *hdmi,
|
|||
*/
|
||||
int dc_format;
|
||||
struct drm_connector *connector = hdmi->connector;
|
||||
struct sde_connector *c_conn = to_sde_connector(connector);
|
||||
struct sde_hdmi *display = (struct sde_hdmi *)c_conn->display;
|
||||
|
||||
dc_format = sde_hdmi_sink_dc_support(connector, mode);
|
||||
if (dc_format & MSM_MODE_FLAG_RGB444_DC_ENABLE)
|
||||
|
@ -835,7 +837,8 @@ static u32 _sde_hdmi_choose_best_format(struct hdmi *hdmi,
|
|||
else if (mode->flags & DRM_MODE_FLAG_SUPPORTS_YUV)
|
||||
return MSM_MODE_FLAG_COLOR_FORMAT_YCBCR420;
|
||||
|
||||
SDE_ERROR("Can't get available best display format\n");
|
||||
if (display && !display->non_pluggable)
|
||||
SDE_ERROR("Can't get available best display format\n");
|
||||
|
||||
return MSM_MODE_FLAG_COLOR_FORMAT_RGB444;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue