mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
44 lines
2.0 KiB
Diff
44 lines
2.0 KiB
Diff
From 96cd4543bdacaa418a90fe1562b6173e6c8010cb Mon Sep 17 00:00:00 2001
|
|
From: Andy Yan <andy.yan@rock-chips.com>
|
|
Date: Fri, 18 Jul 2025 14:41:13 +0800
|
|
Subject: [PATCH 062/110] FROMLIST(v1): drm/rockchip: vop2: Add delay between
|
|
poll registers
|
|
|
|
According to the implementation of read_poll_timeout_atomic, if the
|
|
delay time is 0, it will only use a simple loop based on timeout_us to
|
|
decrement the count. Therefore, the final timeout time will differ
|
|
significantly from the setted timteout time. So, here we set a specific
|
|
delay time to ensure that the calculation of the timeout duration is accurate.
|
|
|
|
Fixes: 3e89a8c68354 ("drm/rockchip: vop2: Fix the update of LAYER/PORT select registers when there are multi display output on rk3588/rk3568")
|
|
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
|
|
---
|
|
drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c
|
|
index 42a4833a90a3..bf771b2f2188 100644
|
|
--- a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c
|
|
+++ b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c
|
|
@@ -2066,7 +2066,7 @@ static void rk3568_vop2_wait_for_port_mux_done(struct vop2 *vop2)
|
|
* Spin until the previous port_mux figuration is done.
|
|
*/
|
|
ret = readx_poll_timeout_atomic(rk3568_vop2_read_port_mux, vop2, port_mux_sel,
|
|
- port_mux_sel == vop2->old_port_sel, 0, 50 * 1000);
|
|
+ port_mux_sel == vop2->old_port_sel, 10, 50 * 1000);
|
|
if (ret)
|
|
DRM_DEV_ERROR(vop2->dev, "wait port_mux done timeout: 0x%x--0x%x\n",
|
|
port_mux_sel, vop2->old_port_sel);
|
|
@@ -2086,7 +2086,7 @@ static void rk3568_vop2_wait_for_layer_cfg_done(struct vop2 *vop2, u32 cfg)
|
|
* Spin until the previous layer configuration is done.
|
|
*/
|
|
ret = readx_poll_timeout_atomic(rk3568_vop2_read_layer_cfg, vop2, atv_layer_cfg,
|
|
- atv_layer_cfg == cfg, 0, 50 * 1000);
|
|
+ atv_layer_cfg == cfg, 10, 50 * 1000);
|
|
if (ret)
|
|
DRM_DEV_ERROR(vop2->dev, "wait layer cfg done timeout: 0x%x--0x%x\n",
|
|
atv_layer_cfg, cfg);
|
|
--
|
|
2.34.1
|
|
|