disp: msm: sde: decouple FETCH_PIPE_ACTIVE logic from setup_blendstages

Setup blendstages is done per LM but FETCH_PIPE_ACTIVE is per CTL.
Overloading mixer blendstage setup with fetch pipe logic can lead
to HW programming errors. Refactor the logic for setting
FETCH_PIPE_ACTIVE by adding a new op that allows caller to provide
a bitmask of all pipes required to be active on this CTL. This new
logic includes support for:
 - 4LM use-cases, staging pipes for all LMs within a CRTC
 - Demura fetch-pipe without need for tracking via active_cfg (removed)

Also, lower the cyclomatic complexity in setup_blendstages by moving
the logic for obtaining the mixer config settings in to a helper
function.

Change-Id: I2907b359ffad5734be5b06f44919b5ddb1ef3f7c
Signed-off-by: Steve Cohen <cohens@codeaurora.org>
This commit is contained in:
Steve Cohen
2020-04-22 01:26:54 -04:00
committed by Gerrit - the friendly Code Review server
父節點 947fa56080
當前提交 b9e3d4aebb
共有 5 個文件被更改,包括 107 次插入111 次删除

查看文件

@@ -225,7 +225,6 @@ struct sde_crtc_misr_info {
* @property_defaults : Array of default values for generic property support
* @output_fence : output release fence context
* @stage_cfg : H/w mixer stage configuration
* @active_cfg : H/w pipes active that shouldn't be staged
* @debugfs_root : Parent of debugfs node
* @priv_handle : Pointer to external private handle, if present
* @vblank_cb_count : count of vblank callback since last reset
@@ -298,7 +297,6 @@ struct sde_crtc {
struct sde_fence_context *output_fence;
struct sde_hw_stage_cfg stage_cfg;
struct sde_hw_stage_cfg active_cfg;
struct dentry *debugfs_root;
void *priv_handle;