mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
disp: msm: sde: avoid ctl_reset during display disable sequence
When SW writes to the CTL_SW_RESET register, the hardware enters a sequence to stop pending OTs and once that’s done it asserts sw_reset to that CTL path for exactly 100 mdp_clks. This is hardcoded in the HW design for many generations. The sw_reset propagates to all the MDP hardware blocks on mdp_clk and pixel_clk. When the mdpclk : pclk ratio is greater than 100 mdp_clk pulse isn’t long enough to reset the read side. So, the async FIFO (i.e. the hardware responsible to transfer pixels from mdp_clk to pixel_clk) only gets partially reset. The mdp_clk side is reset but the pixel_clk side does NOT. The async FIFO is in a bad state and believes there’s data in the FIFO. At this point, the "valid" sent to DSI controller gets flatlined high and DSI believes transfers are initiated eventually leading to underflow once panel commands are initiated. Add changes in software sequence to avoid triggering ctl_reset to due to above HW limitation. Change-Id: Iae44dba6ef59cbd5869a7f336af5dd38f93eafdd Signed-off-by: Jayaprakash Madisetty <jmadiset@codeaurora.org>
This commit is contained in:
parent
72f31fb34b
commit
a36b7424ff
1 changed files with 0 additions and 1 deletions
|
|
@ -2933,7 +2933,6 @@ void sde_encoder_helper_phys_disable(struct sde_encoder_phys *phys_enc,
|
|||
struct sde_hw_ctl *ctl = phys_enc->hw_ctl;
|
||||
struct sde_ctl_flush_cfg cfg;
|
||||
|
||||
ctl->ops.reset(ctl);
|
||||
sde_encoder_helper_reset_mixers(phys_enc, NULL);
|
||||
|
||||
if (wb_enc) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue