
On 17/01/2024 08:51, Jagan Teki wrote:
From: Jagan Teki jagan@edgeble.ai
HPD detection on some DW HDMIdesigned SoC's would need to read and setup the HPD status explicitly.
So, extend the HPD detection code by adding the dw_hdmi_detect_hpd function and move the default detection code caller there.
The new read and setup hdp will integrate the same function in later patches.
Signed-off-by: Jagan Teki jagan@edgeble.ai
Changes for v3, v2:
none
drivers/video/dw_hdmi.c | 13 +++++++++++++ drivers/video/rockchip/rk_hdmi.c | 8 +++----- drivers/video/sunxi/sunxi_dw_hdmi.c | 8 +++----- include/dw_hdmi.h | 1 + 4 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/drivers/video/dw_hdmi.c b/drivers/video/dw_hdmi.c index 4914ba6146..3a3b9b7a21 100644 --- a/drivers/video/dw_hdmi.c +++ b/drivers/video/dw_hdmi.c @@ -936,6 +936,19 @@ int dw_hdmi_phy_wait_for_hpd(struct dw_hdmi *hdmi) return -1; }
+int dw_hdmi_detect_hpd(struct dw_hdmi *hdmi) +{
- int ret;
- ret = dw_hdmi_phy_wait_for_hpd(hdmi);
- if (ret < 0) {
debug("hdmi can not get hpd signal\n");
return -ENODEV;
- }
- return 0;
+}
- void dw_hdmi_phy_init(struct dw_hdmi *hdmi) { /* enable phy i2cm done irq */
diff --git a/drivers/video/rockchip/rk_hdmi.c b/drivers/video/rockchip/rk_hdmi.c index d5b5a529d2..16f6303513 100644 --- a/drivers/video/rockchip/rk_hdmi.c +++ b/drivers/video/rockchip/rk_hdmi.c @@ -114,11 +114,9 @@ int rk_hdmi_probe(struct udevice *dev) dw_hdmi_init(hdmi); dw_hdmi_phy_init(hdmi);
- ret = dw_hdmi_phy_wait_for_hpd(hdmi);
- if (ret < 0) {
debug("hdmi can not get hpd signal\n");
return -1;
- }
ret = dw_hdmi_detect_hpd(hdmi);
if (ret < 0)
return ret;
return 0; }
diff --git a/drivers/video/sunxi/sunxi_dw_hdmi.c b/drivers/video/sunxi/sunxi_dw_hdmi.c index 986e69d66b..a5e8d39e98 100644 --- a/drivers/video/sunxi/sunxi_dw_hdmi.c +++ b/drivers/video/sunxi/sunxi_dw_hdmi.c @@ -358,11 +358,9 @@ static int sunxi_dw_hdmi_probe(struct udevice *dev)
sunxi_dw_hdmi_phy_init(&priv->hdmi);
- ret = dw_hdmi_phy_wait_for_hpd(&priv->hdmi);
- if (ret < 0) {
debug("hdmi can not get hpd signal\n");
return -1;
- }
ret = dw_hdmi_detect_hpd(&priv->hdmi);
if (ret < 0)
return ret;
dw_hdmi_init(&priv->hdmi);
diff --git a/include/dw_hdmi.h b/include/dw_hdmi.h index 17bdd2dbf9..ba2ce5ea7f 100644 --- a/include/dw_hdmi.h +++ b/include/dw_hdmi.h @@ -562,5 +562,6 @@ void dw_hdmi_phy_init(struct dw_hdmi *hdmi); int dw_hdmi_enable(struct dw_hdmi *hdmi, const struct display_timing *edid); int dw_hdmi_read_edid(struct dw_hdmi *hdmi, u8 *buf, int buf_size); void dw_hdmi_init(struct dw_hdmi *hdmi); +int dw_hdmi_detect_hpd(struct dw_hdmi *hdmi);
#endif
Reviewed-by: Neil Armstrong neil.armstrong@linaro.org