drm/rockchip: dw_hdmi: Fix reading EDID when using a forced mode
authorJonas Karlman <jonas@kwiboo.se>
Sat, 15 Jun 2024 17:03:55 +0000 (17:03 +0000)
committerHeiko Stuebner <heiko@sntech.de>
Thu, 15 Aug 2024 17:27:36 +0000 (19:27 +0200)
EDID cannot be read on RK3328 until after read_hpd has been called and
correct io voltage has been configured based on connection status.

When a forced mode is used, e.g. video=1920x1080@60e, the connector
detect ops, that in turn normally calls the read_hpd, never gets called.

This result in reading EDID to fail in connector get_modes ops.

Call dw_hdmi_rk3328_read_hpd at end of dw_hdmi_rk3328_setup_hpd to
correct io voltage and allow reading EDID after setup_hpd.

Fixes: 1c53ba8f22a1 ("drm/rockchip: dw_hdmi: add dw-hdmi support for the rk3328")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20240615170417.3134517-5-jonas@kwiboo.se
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c

index ca6728a..cdd95e5 100644 (file)
@@ -428,6 +428,8 @@ static void dw_hdmi_rk3328_setup_hpd(struct dw_hdmi *dw_hdmi, void *data)
                HIWORD_UPDATE(RK3328_HDMI_SDAIN_MSK | RK3328_HDMI_SCLIN_MSK,
                              RK3328_HDMI_SDAIN_MSK | RK3328_HDMI_SCLIN_MSK |
                              RK3328_HDMI_HPD_IOE));
+
+       dw_hdmi_rk3328_read_hpd(dw_hdmi, data);
 }
 
 static const struct dw_hdmi_phy_ops rk3228_hdmi_phy_ops = {