disp: msm: sde: handle LTM switch in and out of dual pipe merge mode

When LTM is switching on/off, merge_mode bit value gets toggled between
0x1 (dual pipe merge configuration) and 0x0 (single pipe configuration).
It is illegal to reconfigure LTM to/from dual-pipe merge mode before
both LTM instances have completed their current workloads. This change
adds support to disable merge_mode one frame after histogram is disabled
to make sure both hardware instances are completely idle and avoid
corrupted histogram data collection.

Change-Id: I9a6b5cbfb69e8af7936749e57fe7c8f7c2703b95
Signed-off-by: Ping Li <pingli@codeaurora.org>
Этот коммит содержится в:
Ping Li
2021-02-16 22:53:24 -08:00
родитель e12be40f65
Коммит 9dc60208de
8 изменённых файлов: 76 добавлений и 3 удалений

Просмотреть файл

@@ -312,6 +312,7 @@ struct sde_frame_data {
* @ltm_buf_free : list of LTM buffers that are available
* @ltm_buf_busy : list of LTM buffers that are been used by HW
* @ltm_hist_en : flag to indicate whether LTM hist is enabled or not
* @ltm_merge_clear_pending : flag indicates merge mode bit needs to be cleared
* @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
@@ -407,6 +408,7 @@ struct sde_crtc {
struct list_head ltm_buf_free;
struct list_head ltm_buf_busy;
bool ltm_hist_en;
bool ltm_merge_clear_pending;
struct drm_msm_ltm_cfg_param ltm_cfg;
struct mutex ltm_buffer_lock;
spinlock_t ltm_lock;