On Tue Apr 1 11:54:17 2025 +0200, Hans Verkuil wrote:
> If the HPD is low (happens if there is no EDID or the
> EDID is being updated), then return -ENOLINK in
> tc358743_get_detected_timings() instead of detecting video.
> 
> This avoids userspace thinking that it can start streaming when
> the HPD is low.
> 
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>
> Tested-by: Maxime Ripard <mrip...@kernel.org>
> Link: 
> https://lore.kernel.org/linux-media/20240628-stoic-bettong-of-fortitude-e25611@houat/
> Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>

Patch committed.

Thanks,
Mauro Carvalho Chehab

 drivers/media/i2c/tc358743.c | 4 ++++
 1 file changed, 4 insertions(+)

---

diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
index 2d5f42f11158..dcef93e1a3bc 100644
--- a/drivers/media/i2c/tc358743.c
+++ b/drivers/media/i2c/tc358743.c
@@ -313,6 +313,10 @@ static int tc358743_get_detected_timings(struct 
v4l2_subdev *sd,
 
        memset(timings, 0, sizeof(struct v4l2_dv_timings));
 
+       /* if HPD is low, ignore any video */
+       if (!(i2c_rd8(sd, HPD_CTL) & MASK_HPD_OUT0))
+               return -ENOLINK;
+
        if (no_signal(sd)) {
                v4l2_dbg(1, debug, sd, "%s: no valid signal\n", __func__);
                return -ENOLINK;

Reply via email to