Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/rockchip: dw_hdmi: Fix reading EDID when using a forced mode

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

authored by

Jonas Karlman and committed by
Heiko Stuebner
a5d02454 0ef968d9

+2
+2
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
··· 428 428 HIWORD_UPDATE(RK3328_HDMI_SDAIN_MSK | RK3328_HDMI_SCLIN_MSK, 429 429 RK3328_HDMI_SDAIN_MSK | RK3328_HDMI_SCLIN_MSK | 430 430 RK3328_HDMI_HPD_IOE)); 431 + 432 + dw_hdmi_rk3328_read_hpd(dw_hdmi, data); 431 433 } 432 434 433 435 static const struct dw_hdmi_phy_ops rk3228_hdmi_phy_ops = {