disp: msm: sde: avoid white color solid fill staging on input fence timeout
The issue is as follows:
Commit N:
1. VIG sspp qseed block programmed through lutdma. LUTDMA packet with
(ram offset, length_0) is queued to internal HW queue to enable
scaler.
2. Input_fence timeout seen on VIG plane.
3. White color solid fill layer staged on VIG plane.
4. Disable VIG sspp qseed block through LUTDMA. LUTDMA packet is queued
by overriding buffer with (ram offset, length_1) to internal HW queue
to disable scaler.
5. Trigger_flush is picked by HW on vsync.
Since 2 LUTDMA packets are queued on single vsync boundary pp_done timeout
with lutdma HW hang is seen. The only way to fix this is to reset LUTDMA
in step4 and then flush the Hardware. The current SW does not support this
reset sequence, so the change avoids staging solid fill on input fence
timeout.
Change-Id: Ia243e42c863f56b11bee5aeed2dd434efcbd5d75
Signed-off-by: Mahadevan <quic_mahap@quicinc.com>
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
parent
e9f70aadad
commit
c5f6aecbbf
@@ -662,7 +662,6 @@ int sde_plane_wait_input_fence(struct drm_plane *plane, uint32_t wait_ms)
|
|||||||
SDE_ERROR_PLANE(psde, "%ums timeout on %08X fd %lld\n",
|
SDE_ERROR_PLANE(psde, "%ums timeout on %08X fd %lld\n",
|
||||||
wait_ms, prefix, sde_plane_get_property(pstate,
|
wait_ms, prefix, sde_plane_get_property(pstate,
|
||||||
PLANE_PROP_INPUT_FENCE));
|
PLANE_PROP_INPUT_FENCE));
|
||||||
psde->is_error = true;
|
|
||||||
sde_kms_timeline_status(plane->dev);
|
sde_kms_timeline_status(plane->dev);
|
||||||
ret = -ETIMEDOUT;
|
ret = -ETIMEDOUT;
|
||||||
break;
|
break;
|
||||||
@@ -684,7 +683,6 @@ int sde_plane_wait_input_fence(struct drm_plane *plane, uint32_t wait_ms)
|
|||||||
SDE_INFO("plane%d spec fd signaled on bind failure fd %lld\n",
|
SDE_INFO("plane%d spec fd signaled on bind failure fd %lld\n",
|
||||||
plane->base.id,
|
plane->base.id,
|
||||||
sde_plane_get_property(pstate, PLANE_PROP_INPUT_FENCE));
|
sde_plane_get_property(pstate, PLANE_PROP_INPUT_FENCE));
|
||||||
psde->is_error = true;
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user