From 416f7f52af351635d2d7fdd21793d8470908270c Mon Sep 17 00:00:00 2001 From: Wyon Bi Date: Wed, 3 Aug 2022 09:48:32 +0000 Subject: [PATCH] drm/bridge: maxim-max96752f: Add video status check Signed-off-by: Wyon Bi Change-Id: I3880a68f9a6ec2aef2b82a568d4f40dd39feeaa0 --- drivers/gpu/drm/bridge/maxim-max96752f.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/bridge/maxim-max96752f.c b/drivers/gpu/drm/bridge/maxim-max96752f.c index fe58446a793d..c0980c03daaf 100644 --- a/drivers/gpu/drm/bridge/maxim-max96752f.c +++ b/drivers/gpu/drm/bridge/maxim-max96752f.c @@ -141,6 +141,19 @@ max96752f_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge, return out_bus_fmts; } +static bool max96752f_bridge_video_locked(struct max96752f_bridge *des) +{ + u32 val; + + if (regmap_read(des->regmap, 0x0003, &val)) + return false; + + if (!FIELD_GET(VIDEO_LOCK, val)) + return false; + + return true; +} + static int max96752f_bridge_attach(struct drm_bridge *bridge, enum drm_bridge_attach_flags flags) { @@ -152,6 +165,13 @@ static int max96752f_bridge_attach(struct drm_bridge *bridge, if (ret) return ret; + if (max96752f_bridge_video_locked(des)) { + if (des->panel) { + drm_panel_prepare(des->panel); + drm_panel_enable(des->panel); + } + } + if (des->next_bridge) return drm_bridge_attach(bridge->encoder, des->next_bridge, bridge, 0);