disp: msm: sde: reset mixers in crtc when ctl datapath switches
This change reinitializes the sde_crtc->mixers when CTL datapath switch occurs during mode set and RM allocation of CTL hw block is changed. This initialization is required for CTL_LAYER programming to trigger on the new CTL allocated from RM. Issue case: 1. Primary Display is using CTL_0 and it is reserved. 2. Secondary Display is using CTL_1. On suspend, RM adds CTL_1 into the free list. 3. External Display is powered on, RM allocates CTL_1 hw blk. 4. Secondary Display is powered on, RM allocated CTL_2 hw blk. 5. External Display is suspended/unplugged, RM adds CTL_1 into the free list. 6. When any mode_set(say fps switch) occurs on secondary, RM allocates new resources and CTL_1 is allocated. sde_crtc->num_mixers is non zero, so all the layer programming happens on CTL_2, but CTL_1_FLUSH bits are programmed causing hw timeout issue. Change-Id: I5f1f52b7673740c48b249ab4d36e80b7a1d3db96 Signed-off-by: Jayaprakash Madisetty <quic_jmadiset@quicinc.com>
此提交包含在:
@@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (C) 2013 Red Hat
|
||||
* Author: Rob Clark <robdclark@gmail.com>
|
||||
@@ -316,6 +317,7 @@ struct sde_frame_data {
|
||||
* @ltm_buffer_lock : muttx to protect ltm_buffers allcation and free
|
||||
* @ltm_lock : Spinlock to protect ltm buffer_cnt, hist_en and ltm lists
|
||||
* @needs_hw_reset : Initiate a hw ctl reset
|
||||
* @reinit_crtc_mixers : Reinitialize mixers in crtc
|
||||
* @hist_irq_idx : hist interrupt irq idx
|
||||
* @disable_pending_cp : flag tracks pending color processing features force disable
|
||||
* @src_bpp : source bpp used to calculate compression ratio
|
||||
@@ -415,6 +417,7 @@ struct sde_crtc {
|
||||
struct mutex ltm_buffer_lock;
|
||||
spinlock_t ltm_lock;
|
||||
bool needs_hw_reset;
|
||||
bool reinit_crtc_mixers;
|
||||
int hist_irq_idx;
|
||||
bool disable_pending_cp;
|
||||
|
||||
|
新增問題並參考
封鎖使用者