| From foo@baz Fri Mar 16 15:43:16 CET 2018 |
| From: Jani Nikula <jani.nikula@intel.com> |
| Date: Wed, 1 Nov 2017 16:20:58 +0200 |
| Subject: drm/edid: set ELD connector type in drm_edid_to_eld() |
| |
| From: Jani Nikula <jani.nikula@intel.com> |
| |
| |
| [ Upstream commit 1d1c36650752b7fb81cee515a9bba4131cac4b7c ] |
| |
| Since drm_edid_to_eld() knows the connector type, we can set the type in |
| ELD while at it. Most connectors this gets called on are not DP |
| encoders, and with the HDMI type being 0, this does not change behaviour |
| for non-DP. |
| |
| For i915 having this in place earlier would have saved a considerable |
| amount of debugging that lead to the fix 2d8f63297b9f ("drm/i915: always |
| update ELD connector type after get modes"). I don't see other drivers, |
| even the ones calling drm_edid_to_eld() on DP connectors, setting the |
| connector type in ELD. |
| |
| Cc: Alex Deucher <alexander.deucher@amd.com> |
| Cc: Christian König <christian.koenig@amd.com> |
| Cc: Archit Taneja <architt@codeaurora.org> |
| Cc: Andrzej Hajda <a.hajda@samsung.com> |
| Cc: Russell King <linux@armlinux.org.uk> |
| Cc: CK Hu <ck.hu@mediatek.com> |
| Cc: Philipp Zabel <p.zabel@pengutronix.de> |
| Cc: Ben Skeggs <bskeggs@redhat.com> |
| Cc: Mark Yao <mark.yao@rock-chips.com> |
| Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org> |
| Cc: Vincent Abriou <vincent.abriou@st.com> |
| Cc: Thierry Reding <thierry.reding@gmail.com> |
| Cc: Eric Anholt <eric@anholt.net> |
| Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Reviewed-by: Alex Deucher <alexander.deucher@amd.com> |
| Acked-by: Thierry Reding <treding@nvidia.com> |
| Signed-off-by: Jani Nikula <jani.nikula@intel.com> |
| Link: https://patchwork.freedesktop.org/patch/msgid/d527b31619528c477c2c136f25cdf118bc0cfc1d.1509545641.git.jani.nikula@intel.com |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/gpu/drm/drm_edid.c | 9 +++++++-- |
| 1 file changed, 7 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/gpu/drm/drm_edid.c |
| +++ b/drivers/gpu/drm/drm_edid.c |
| @@ -3823,8 +3823,7 @@ EXPORT_SYMBOL(drm_edid_get_monitor_name) |
| * @edid: EDID to parse |
| * |
| * Fill the ELD (EDID-Like Data) buffer for passing to the audio driver. The |
| - * Conn_Type, HDCP and Port_ID ELD fields are left for the graphics driver to |
| - * fill in. |
| + * HDCP and Port_ID ELD fields are left for the graphics driver to fill in. |
| */ |
| void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) |
| { |
| @@ -3905,6 +3904,12 @@ void drm_edid_to_eld(struct drm_connecto |
| } |
| eld[5] |= total_sad_count << 4; |
| |
| + if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort || |
| + connector->connector_type == DRM_MODE_CONNECTOR_eDP) |
| + eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_CONN_TYPE_DP; |
| + else |
| + eld[DRM_ELD_SAD_COUNT_CONN_TYPE] |= DRM_ELD_CONN_TYPE_HDMI; |
| + |
| eld[DRM_ELD_BASELINE_ELD_LEN] = |
| DIV_ROUND_UP(drm_eld_calc_baseline_block_size(eld), 4); |
| |