aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-5.4/805-display-0030-drm-imx-hdp-fix-issue-with-non-SCDC-HDMI-sinks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-5.4/805-display-0030-drm-imx-hdp-fix-issue-with-non-SCDC-HDMI-sinks.patch')
-rw-r--r--target/linux/layerscape/patches-5.4/805-display-0030-drm-imx-hdp-fix-issue-with-non-SCDC-HDMI-sinks.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-5.4/805-display-0030-drm-imx-hdp-fix-issue-with-non-SCDC-HDMI-sinks.patch b/target/linux/layerscape/patches-5.4/805-display-0030-drm-imx-hdp-fix-issue-with-non-SCDC-HDMI-sinks.patch
new file mode 100644
index 0000000000..be72d1fd38
--- /dev/null
+++ b/target/linux/layerscape/patches-5.4/805-display-0030-drm-imx-hdp-fix-issue-with-non-SCDC-HDMI-sinks.patch
@@ -0,0 +1,60 @@
+From d9440f7cb8fa5853b9dcc6e2b165725ac3e8b70c Mon Sep 17 00:00:00 2001
+From: Laurentiu Palcu <laurentiu.palcu@nxp.com>
+Date: Wed, 27 Nov 2019 13:34:51 +0200
+Subject: [PATCH] drm/imx/hdp: fix issue with non-SCDC HDMI sinks
+
+Currently, if sink does not support SCDC, even if the sink is HDMI 1.4 or 2.0,
+the hdmi_type is left to default value (MODE_DVI). Hence the HDMI controler is
+not properly initialized when cdns_hdmi_ctrl_init() is called.
+
+Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
+Reported-by: Jared Hu <jared.hu@nxp.com>
+Reviewed-by: Sandor Yu <sandor.yu@nxp.com>
+---
+ drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c
++++ b/drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c
+@@ -29,11 +29,17 @@
+ static void hdmi_sink_config(struct cdns_mhdp_device *mhdp)
+ {
+ struct drm_scdc *scdc = &mhdp->connector.base.display_info.hdmi.scdc;
+- u8 buff;
++ struct drm_display_info *di = &mhdp->connector.base.display_info;
++ u8 buff = 0;
++
++ if (scdc->supported || di->color_formats & DRM_COLOR_FORMAT_YCRCB420)
++ mhdp->hdmi.hdmi_type = MODE_HDMI_2_0;
++ else
++ mhdp->hdmi.hdmi_type = MODE_HDMI_1_4;
+
+ /* check sink support SCDC or not */
+- if (scdc->supported != true) {
+- DRM_INFO("Sink Not Support SCDC\n");
++ if (!scdc->supported) {
++ DRM_INFO("Sink does not support SCDC\n");
+ return;
+ }
+
+@@ -43,19 +49,13 @@ static void hdmi_sink_config(struct cdns
+ * Enable scrambling and TMDS_Bit_Clock_Ratio
+ */
+ buff = SCDC_TMDS_BIT_CLOCK_RATIO_BY_40 | SCDC_SCRAMBLING_ENABLE;
+- mhdp->hdmi.hdmi_type = MODE_HDMI_2_0;
+ } else if (scdc->scrambling.low_rates) {
+ /*
+ * Enable scrambling and HDMI2.0 when scrambling capability of sink
+ * be indicated in the HF-VSDB LTE_340Mcsc_scramble bit
+ */
+ buff = SCDC_SCRAMBLING_ENABLE;
+- mhdp->hdmi.hdmi_type = MODE_HDMI_2_0;
+- } else {
+- /* Default work in HDMI1.4 */
+- buff = 0;
+- mhdp->hdmi.hdmi_type = MODE_HDMI_1_4;
+- }
++ }
+
+ /* TMDS config */
+ cdns_hdmi_scdc_write(mhdp, 0x20, buff);