On 10/16/2024 6:21 PM, Jessica Zhang wrote:
From: Dmitry Baryshkov <[email protected]>

All resource allocation is centered around the LMs. Then other blocks
(except DSCs) are allocated basing on the LMs that was selected, and LM
powers up the CRTC rather than the encoder.

Moreover if at some point the driver supports encoder cloning,
allocating resources from the encoder will be incorrect, as all clones
will have different encoder IDs, while LMs are to be shared by these
encoders.

Signed-off-by: Dmitry Baryshkov <[email protected]>
[[email protected]: Refactored resource allocation for CDM]
Signed-off-by: Abhinav Kumar <[email protected]>
[[email protected]: Changed to grabbing exising global state]
Signed-off-by: Jessica Zhang <[email protected]>
---
  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c    |  86 ++++++++++++
  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 201 +++++++++++-----------------
  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h |  19 +++
  3 files changed, 183 insertions(+), 123 deletions(-)


<Snip>

-       /* See dpu_encoder_get_topology, we only support 2:2:1 topology */
+       /* We only support 2 DSC mode (with 2 LM and 1 INTF) */
        if (dpu_enc->dsc)
-               num_dsc = 2;
+               topology->num_dsc += 2;
- return (num_dsc > 0) && (num_dsc > intf_count);
-}

I dont recall the context of replacing num_dsc = 2 with num_dsc += 2
and its not documented.

<Snip>

+       /* We only support 2 DSC mode (with 2 LM and 1 INTF) */
+       if (dpu_enc->dsc)
+               num_dsc += 2;
- return topology;
+       return (num_dsc > 0) && (num_dsc > num_intf);
  }

Same here

This should not break anything with current code. We could land it the way it is as this was the version which was last tested and post a follow up if this was not right. Something to be documented though, hope this note serves that purpose. Rest of the change LGTM,

Reviewed-by: Abhinav Kumar <[email protected]>

Reply via email to