On 21/03/2024 22:43, Anatoliy Klymenko wrote:
Add a helper function capturing the first connected live display layer
discovery logic.

Signed-off-by: Anatoliy Klymenko <anatoliy.klyme...@amd.com>
---
  drivers/gpu/drm/xlnx/zynqmp_dp.c | 37 +++++++++++++++++++++++--------------
  1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp_dp.c
index 04b6bcac3b07..4faafdd76798 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dp.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c
@@ -1276,28 +1276,40 @@ static void zynqmp_dp_encoder_mode_set_stream(struct 
zynqmp_dp *dp,
   * DISP Configuration
   */
+/**
+ * zynqmp_dp_disp_connected_live_layer - Return the first connected live layer
+ * @dp: DisplayPort IP core structure
+ *
+ * Return: The first connected live display layer or NULL if none of the live
+ * layer is connected.

"layers"

Reviewed-by: Tomi Valkeinen <tomi.valkei...@ideasonboard.com>

 Tomi


+ */
+static struct zynqmp_disp_layer *
+zynqmp_dp_disp_connected_live_layer(struct zynqmp_dp *dp)
+{
+       if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_VIDEO))
+               return dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_VID];
+       else if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_GFX))
+               return dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX];
+       else
+               return NULL;
+}
+
  static void zynqmp_dp_disp_enable(struct zynqmp_dp *dp,
                                  struct drm_bridge_state *old_bridge_state)
  {
-       enum zynqmp_dpsub_layer_id layer_id;
        struct zynqmp_disp_layer *layer;
        const struct drm_format_info *info;
- if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_VIDEO))
-               layer_id = ZYNQMP_DPSUB_LAYER_VID;
-       else if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_GFX))
-               layer_id = ZYNQMP_DPSUB_LAYER_GFX;
-       else
+       layer = zynqmp_dp_disp_connected_live_layer(dp);
+       if (!layer)
                return;
- layer = dp->dpsub->layers[layer_id];
-
        /* TODO: Make the format configurable. */
        info = drm_format_info(DRM_FORMAT_YUV422);
        zynqmp_disp_layer_set_format(layer, info);
        zynqmp_disp_layer_enable(layer);
- if (layer_id == ZYNQMP_DPSUB_LAYER_GFX)
+       if (layer == dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX])
                zynqmp_disp_blend_set_global_alpha(dp->dpsub->disp, true, 255);
        else
                zynqmp_disp_blend_set_global_alpha(dp->dpsub->disp, false, 0);
@@ -1310,11 +1322,8 @@ static void zynqmp_dp_disp_disable(struct zynqmp_dp *dp,
  {
        struct zynqmp_disp_layer *layer;
- if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_VIDEO))
-               layer = dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_VID];
-       else if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_GFX))
-               layer = dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX];
-       else
+       layer = zynqmp_dp_disp_connected_live_layer(dp);
+       if (!layer)
                return;
zynqmp_disp_disable(dp->dpsub->disp);


Reply via email to