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>
此提交包含在:
Amine Najahi
2020-05-24 15:05:08 -04:00
提交者 Gerrit - the friendly Code Review server
父節點 707ce010fe
當前提交 b121756b5d
共有 11 個檔案被更改,包括 189 行新增62 行删除

查看文件

@@ -2142,6 +2142,63 @@ bool sde_rm_topology_is_quad_pipe(struct sde_rm *rm,
return false;
}
bool sde_rm_topology_is_dual_pipe(struct sde_rm *rm,
struct drm_crtc_state *state)
{
int i;
struct sde_crtc_state *cstate;
uint64_t topology = SDE_RM_TOPOLOGY_NONE;
if ((!rm) || (!state)) {
pr_err("invalid arguments: rm:%d state:%d\n",
rm == NULL, state == NULL);
return false;
}
cstate = to_sde_crtc_state(state);
for (i = 0; i < cstate->num_connectors; i++) {
struct drm_connector *conn = cstate->connectors[i];
topology = sde_connector_get_topology_name(conn);
if (TOPOLOGY_DUALPIPE_MERGE_MODE(topology))
return true;
}
return false;
}
bool sde_rm_topology_is_3dmux_dsc(struct sde_rm *rm,
struct drm_crtc_state *state)
{
int i;
struct sde_crtc_state *cstate;
uint64_t topology = SDE_RM_TOPOLOGY_NONE;
const struct sde_rm_topology_def *def;
int num_lm, num_enc;
if ((!rm) || (!state)) {
pr_err("invalid arguments: rm:%d state:%d\n",
rm == NULL, state == NULL);
return false;
}
cstate = to_sde_crtc_state(state);
for (i = 0; i < cstate->num_connectors; i++) {
struct drm_connector *conn = cstate->connectors[i];
topology = sde_connector_get_topology_name(conn);
def = sde_rm_topology_get_topology_def(rm, topology);
num_lm = def->num_lm;
num_enc = def->num_comp_enc;
if (num_lm > num_enc && num_enc)
return true;
}
return false;
}
/**
* _sde_rm_release_rsvp - release resources and release a reservation
* @rm: KMS handle