Skip to content

Commit 2e03666

Browse files
Anatoliy Klymenkotomba
authored andcommitted
drm: xlnx: zynqmp_dpsub: Add connected live layer helper
Add a helper function capturing the first connected live display layer discovery logic. Signed-off-by: Anatoliy Klymenko <anatoliy.klymenko@amd.com> Reviewed-by: Tomi Valkeinen <tomi.valkainen@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240416-dp-live-fmt-v4-3-c7f379b7168e@amd.com
1 parent 8628274 commit 2e03666

1 file changed

Lines changed: 23 additions & 14 deletions

File tree

drivers/gpu/drm/xlnx/zynqmp_dp.c

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,28 +1276,40 @@ static void zynqmp_dp_encoder_mode_set_stream(struct zynqmp_dp *dp,
12761276
* DISP Configuration
12771277
*/
12781278

1279+
/**
1280+
* zynqmp_dp_disp_connected_live_layer - Return the first connected live layer
1281+
* @dp: DisplayPort IP core structure
1282+
*
1283+
* Return: The first connected live display layer or NULL if none of the live
1284+
* layers are connected.
1285+
*/
1286+
static struct zynqmp_disp_layer *
1287+
zynqmp_dp_disp_connected_live_layer(struct zynqmp_dp *dp)
1288+
{
1289+
if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_VIDEO))
1290+
return dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_VID];
1291+
else if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_GFX))
1292+
return dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX];
1293+
else
1294+
return NULL;
1295+
}
1296+
12791297
static void zynqmp_dp_disp_enable(struct zynqmp_dp *dp,
12801298
struct drm_bridge_state *old_bridge_state)
12811299
{
1282-
enum zynqmp_dpsub_layer_id layer_id;
12831300
struct zynqmp_disp_layer *layer;
12841301
const struct drm_format_info *info;
12851302

1286-
if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_VIDEO))
1287-
layer_id = ZYNQMP_DPSUB_LAYER_VID;
1288-
else if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_GFX))
1289-
layer_id = ZYNQMP_DPSUB_LAYER_GFX;
1290-
else
1303+
layer = zynqmp_dp_disp_connected_live_layer(dp);
1304+
if (!layer)
12911305
return;
12921306

1293-
layer = dp->dpsub->layers[layer_id];
1294-
12951307
/* TODO: Make the format configurable. */
12961308
info = drm_format_info(DRM_FORMAT_YUV422);
12971309
zynqmp_disp_layer_set_format(layer, info);
12981310
zynqmp_disp_layer_enable(layer);
12991311

1300-
if (layer_id == ZYNQMP_DPSUB_LAYER_GFX)
1312+
if (layer == dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX])
13011313
zynqmp_disp_blend_set_global_alpha(dp->dpsub->disp, true, 255);
13021314
else
13031315
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,
13101322
{
13111323
struct zynqmp_disp_layer *layer;
13121324

1313-
if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_VIDEO))
1314-
layer = dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_VID];
1315-
else if (dp->dpsub->connected_ports & BIT(ZYNQMP_DPSUB_PORT_LIVE_GFX))
1316-
layer = dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX];
1317-
else
1325+
layer = zynqmp_dp_disp_connected_live_layer(dp);
1326+
if (!layer)
13181327
return;
13191328

13201329
zynqmp_disp_disable(dp->dpsub->disp);

0 commit comments

Comments
 (0)