From ca9f8fb207c0863ffc82336de12d5eef174597e4 Mon Sep 17 00:00:00 2001 From: Wangqiang Guo Date: Thu, 14 Sep 2023 12:15:33 +0000 Subject: [PATCH] media: rockchip: hdmirx: enhance compatibility and stability. 1.Add the judgment of signal loss when use g_dv_timing. 2.Wait for the signal to stabilize before get resolution. Change-Id: I4cef1bd8a67f38dd531d24ccbb23d960bb82abae Signed-off-by: Wangqiang Guo --- drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c index 1d745b49da5c..eae19e62edb2 100644 --- a/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c +++ b/drivers/media/platform/rockchip/hdmirx/rk_hdmirx.c @@ -530,6 +530,16 @@ static int hdmirx_g_dv_timings(struct file *file, void *_fh, struct v4l2_device *v4l2_dev = &hdmirx_dev->v4l2_dev; u32 dma_cfg1; + if (port_no_link(hdmirx_dev)) { + v4l2_err(v4l2_dev, "%s port has no link!\n", __func__); + return -ENOLINK; + } + + if (signal_not_lock(hdmirx_dev)) { + v4l2_err(v4l2_dev, "%s signal is not locked!\n", __func__); + return -ENOLCK; + } + *timings = hdmirx_dev->timings; dma_cfg1 = hdmirx_readl(hdmirx_dev, DMA_CONFIG1); v4l2_dbg(1, debug, v4l2_dev, "%s: pix_fmt: %s, DMA_CONFIG1:%#x\n", @@ -1558,7 +1568,7 @@ static int hdmirx_wait_lock_and_get_timing(struct rk_hdmirx_dev *hdmirx_dev) } hdmirx_reset_dma(hdmirx_dev); - usleep_range(200*1000, 200*1010); + usleep_range(500*1000, 500*1010); hdmirx_format_change(hdmirx_dev); return 0;