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>
Šī revīzija ir iekļauta:
Amine Najahi
2020-04-22 13:32:19 -04:00
vecāks e7a890df11
revīzija 89c7e1dadf
7 mainīti faili ar 194 papildinājumiem un 24 dzēšanām

Parādīt failu

@@ -2093,6 +2093,32 @@ int sde_rm_update_topology(struct sde_rm *rm,
return ret;
}
bool sde_rm_topology_is_quad_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_QUADPIPE_MERGE_MODE(topology))
return true;
}
return false;
}
/**
* _sde_rm_release_rsvp - release resources and release a reservation
* @rm: KMS handle