disp: msm: sde: add plane staging management for 4LM topologies

When a 4LM topology is used each plane attached to a CRTC
is tagged with a L/R layout value and an offset value
depending on where destination X coordinate lands on the display.
The layout information is used to determine SSPP to LM
pair mapping and local coordinate space.

This change also handles source-split and Z-order
validation checks for planes staged on different mixer
pairs.

Change-Id: I1b20223388e65fc36a8b379ad9df23a277fcd1a5
Signed-off-by: Amine Najahi <anajahi@codeaurora.org>
This commit is contained in:
Amine Najahi
2020-04-22 13:32:19 -04:00
부모 e7a890df11
커밋 89c7e1dadf
7개의 변경된 파일194개의 추가작업 그리고 24개의 파일을 삭제

파일 보기

@@ -43,6 +43,21 @@
SDE_PLANE_DIRTY_DMA_GC)
#define SDE_PLANE_DIRTY_ALL (0xFFFFFFFF & ~(SDE_PLANE_DIRTY_CP))
/**
* enum sde_layout
* Describes SSPP to LM staging layout when using more than 1 pair of LMs
* @SDE_LAYOUT_NONE : SSPPs to LMs staging layout not enabled
* @SDE_LAYOUT_LEFT : SSPPs will be staged on left two LMs
* @SDE_LAYOUT_RIGHT : SSPPs will be staged on right two LMs
* @SDE_LAYOUT_MAX :
*/
enum sde_layout {
SDE_LAYOUT_NONE = 0,
SDE_LAYOUT_LEFT,
SDE_LAYOUT_RIGHT,
SDE_LAYOUT_MAX,
};
/**
* enum sde_plane_sclcheck_state - User scaler data status
*
@@ -79,6 +94,8 @@ enum sde_plane_sclcheck_state {
* @defer_prepare_fb: indicate if prepare_fb call was deferred
* @pipe_order_flags: contains pipe order flags:
* SDE_SSPP_RIGHT - right pipe in source split pair
* @layout_offset: horizontal layout offset for global coordinate
* @layout: layout for topology requiring more than 1 lm pair.
* @scaler3_cfg: configuration data for scaler3
* @pixel_ext: configuration data for pixel extensions
* @scaler_check_state: indicates status of user provided pixel extension data
@@ -103,6 +120,8 @@ struct sde_plane_state {
bool pending;
bool defer_prepare_fb;
uint32_t pipe_order_flags;
int layout_offset;
enum sde_layout layout;
/* scaler configuration */
struct sde_hw_scaler3_cfg scaler3_cfg;