While having a CEA mode is one prerequisite for using
HDMI transmit mode, we also have to check if the display
is actually capable of HDMI input. Fall back to DVI mode
otherwise.

Signed-off-by: Lucas Stach <l.st...@pengutronix.de>
---
 drivers/staging/imx-drm/imx-hdmi.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/imx-drm/imx-hdmi.c 
b/drivers/staging/imx-drm/imx-hdmi.c
index 7d407e917786..28d1cdd12cb4 100644
--- a/drivers/staging/imx-drm/imx-hdmi.c
+++ b/drivers/staging/imx-drm/imx-hdmi.c
@@ -1218,13 +1218,10 @@ static int imx_hdmi_setup(struct imx_hdmi *hdmi, struct 
drm_display_mode *mode)
 
        hdmi->vic = drm_match_cea_mode(mode);
 
-       if (!hdmi->vic) {
-               dev_dbg(hdmi->dev, "Non-CEA mode used in HDMI\n");
-               hdmi->hdmi_data.video_mode.mdvi = true;
-       } else {
-               dev_dbg(hdmi->dev, "CEA mode used vic=%d\n", hdmi->vic);
+       if (drm_detect_hdmi_monitor(hdmi->edid) && hdmi->vic)
                hdmi->hdmi_data.video_mode.mdvi = false;
-       }
+       else
+               hdmi->hdmi_data.video_mode.mdvi = true;
 
        if ((hdmi->vic == 6) || (hdmi->vic == 7) ||
                (hdmi->vic == 21) || (hdmi->vic == 22) ||
@@ -1273,7 +1270,7 @@ static int imx_hdmi_setup(struct imx_hdmi *hdmi, struct 
drm_display_mode *mode)
        if (hdmi->hdmi_data.video_mode.mdvi)
                dev_dbg(hdmi->dev, "%s DVI mode\n", __func__);
        else {
-               dev_dbg(hdmi->dev, "%s CEA mode\n", __func__);
+               dev_dbg(hdmi->dev, "%s CEA mode VIC=%d\n", __func__, hdmi->vic);
 
                /* HDMI Initialization Step E - Configure audio */
                hdmi_clk_regenerator_update_pixel_clock(hdmi);
-- 
1.9.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to