summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/xlnx/zynqmp_dp.c
diff options
context:
space:
mode:
authorAnatoliy Klymenko <anatoliy.klymenko@amd.com>2024-04-16 23:31:41 +0300
committerTomi Valkeinen <tomi.valkeinen@ideasonboard.com>2024-04-24 17:51:19 +0300
commit1b5151bd3a2e076653a935874b39dd2c3a00452a (patch)
treee8c76eb827d6c969a95e24825b43f3e59353b1cd /drivers/gpu/drm/xlnx/zynqmp_dp.c
parent1836fd5ed98db85f249bf755978c964c2607a25d (diff)
downloadlinux-1b5151bd3a2e076653a935874b39dd2c3a00452a.tar.xz
drm: xlnx: zynqmp_dpsub: Set input live format
Program live video input format according to selected media bus format. In the bridge mode of operation, DPSUB is connected to FPGA CRTC which almost certainly supports a single media bus format as its output. Expect this to be delivered via the new bridge atomic state. Program DPSUB registers accordingly. Signed-off-by: Anatoliy Klymenko <anatoliy.klymenko@amd.com> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240416-dp-live-fmt-v4-6-c7f379b7168e@amd.com
Diffstat (limited to 'drivers/gpu/drm/xlnx/zynqmp_dp.c')
-rw-r--r--drivers/gpu/drm/xlnx/zynqmp_dp.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp_dp.c
index dd4b083b157e..8c2d24809014 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dp.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c
@@ -1299,15 +1299,20 @@ static void zynqmp_dp_disp_enable(struct zynqmp_dp *dp,
struct drm_bridge_state *old_bridge_state)
{
struct zynqmp_disp_layer *layer;
- const struct drm_format_info *info;
+ struct drm_bridge_state *bridge_state;
+ u32 bus_fmt;
layer = zynqmp_dp_disp_connected_live_layer(dp);
if (!layer)
return;
- /* TODO: Make the format configurable. */
- info = drm_format_info(DRM_FORMAT_YUV422);
- zynqmp_disp_layer_set_format(layer, info);
+ bridge_state = drm_atomic_get_new_bridge_state(old_bridge_state->base.state,
+ old_bridge_state->bridge);
+ if (WARN_ON(!bridge_state))
+ return;
+
+ bus_fmt = bridge_state->input_bus_cfg.format;
+ zynqmp_disp_layer_set_live_format(layer, bus_fmt);
zynqmp_disp_layer_enable(layer);
if (layer == dp->dpsub->layers[ZYNQMP_DPSUB_LAYER_GFX])