disp: msm: sde: adjust DSC encoders to support all 4LM topologies

Add support for all 4LM topologies in new DCE encoder framework.
This change also aligns with the new way of checking topology
information.

Change-Id: I5358d60634070bdb26059056db884ad4161c073e
Signed-off-by: Amine Najahi <anajahi@codeaurora.org>
Šī revīzija ir iekļauta:
Amine Najahi
2020-05-24 15:05:08 -04:00
revīziju iesūtīja Gerrit - the friendly Code Review server
vecāks 707ce010fe
revīzija b121756b5d
11 mainīti faili ar 189 papildinājumiem un 62 dzēšanām

Parādīt failu

@@ -603,16 +603,29 @@ void sde_encoder_helper_hw_reset(struct sde_encoder_phys *phys_enc);
static inline enum sde_3d_blend_mode sde_encoder_helper_get_3d_blend_mode(
struct sde_encoder_phys *phys_enc)
{
enum sde_rm_topology_name topology;
struct msm_display_topology def;
enum sde_enc_split_role split_role;
int ret, num_lm;
bool mode_3d;
if (!phys_enc || phys_enc->enable_state == SDE_ENC_DISABLING)
if (!phys_enc || phys_enc->enable_state == SDE_ENC_DISABLING ||
!phys_enc->connector || !phys_enc->connector->state)
return BLEND_3D_NONE;
topology = sde_connector_get_topology_name(phys_enc->connector);
if (phys_enc->split_role == ENC_ROLE_SOLO &&
(topology == SDE_RM_TOPOLOGY_DUALPIPE_3DMERGE ||
topology == SDE_RM_TOPOLOGY_DUALPIPE_3DMERGE_DSC ||
topology == SDE_RM_TOPOLOGY_DUALPIPE_3DMERGE_VDC))
ret = sde_connector_state_get_topology
(phys_enc->connector->state, &def);
if (ret)
return BLEND_3D_NONE;
num_lm = def.num_lm;
mode_3d = (num_lm > def.num_enc) ? true : false;
split_role = phys_enc->split_role;
if (split_role == ENC_ROLE_SOLO && num_lm == 2 && mode_3d)
return BLEND_3D_H_ROW_INT;
if ((split_role == ENC_ROLE_MASTER || split_role == ENC_ROLE_SLAVE)
&& num_lm == 4 && mode_3d)
return BLEND_3D_H_ROW_INT;
return BLEND_3D_NONE;