From f2f7eb7445329085144f4d2c1420a463a028dec5 Mon Sep 17 00:00:00 2001 From: Wyon Bi Date: Thu, 9 Jun 2022 11:00:00 +0000 Subject: [PATCH] drm/bridge: maxim-max96745: Fix bridge chain detect Signed-off-by: Wyon Bi Change-Id: Ibd402916ff6aeb5c4ff8ee12ebc58726968d9e7b --- drivers/gpu/drm/bridge/maxim-max96745.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/maxim-max96745.c b/drivers/gpu/drm/bridge/maxim-max96745.c index 1b5ad1956b0c..503fcaf669d3 100644 --- a/drivers/gpu/drm/bridge/maxim-max96745.c +++ b/drivers/gpu/drm/bridge/maxim-max96745.c @@ -52,8 +52,13 @@ static enum drm_connector_status max96745_bridge_connector_detect(struct drm_connector *connector, bool force) { struct max96745_bridge *ser = to_max96745_bridge(connector); + struct drm_bridge *bridge = &ser->bridge; + struct drm_bridge *prev_bridge = drm_bridge_get_prev_bridge(bridge); - return drm_bridge_detect(&ser->bridge); + if (prev_bridge && (prev_bridge->ops & DRM_BRIDGE_OP_DETECT)) + return drm_bridge_detect(prev_bridge); + + return drm_bridge_detect(bridge); } static const struct drm_connector_funcs max96745_bridge_connector_funcs = { @@ -153,6 +158,9 @@ max96745_bridge_detect(struct drm_bridge *bridge) if (!FIELD_GET(LINK_LOCKED, val)) return connector_status_disconnected; + if (ser->next_bridge && (ser->next_bridge->ops & DRM_BRIDGE_OP_DETECT)) + return drm_bridge_detect(ser->next_bridge); + return connector_status_connected; }