[PATCH v3 03/17] video: dw_hdmi: Extend the HPD detection
Neil Armstrong
neil.armstrong at linaro.org
Wed Jan 17 09:59:38 CET 2024
On 17/01/2024 08:51, Jagan Teki wrote:
> From: Jagan Teki <jagan at 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 at 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 at linaro.org>
More information about the U-Boot
mailing list