From f9b0dceb3122ab09d22300b8e8374466f4f16b84 Mon Sep 17 00:00:00 2001 From: Cristian Ciocaltea Date: Fri, 10 Jan 2025 22:48:01 +0200 Subject: [PATCH 096/113] [WIP-SCRAMB] drm/bridge: Add ->detect_ctx() hook Add a ->detect() variant that also provides a drm_modeset_acquire_ctx reference for greater flexibility in operation, e.g. to support adding scrambling functionality to drm_bridge_connector. When both ->detect_ctx() and ->detect() are defined, the latter is simply ignored. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/drm_bridge.c | 3 +++ include/drm/drm_bridge.h | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 4bde00083047..9d74ef28b6ad 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -1244,6 +1244,9 @@ drm_bridge_detect(struct drm_bridge *bridge, struct drm_connector *connector) if (!(bridge->ops & DRM_BRIDGE_OP_DETECT)) return connector_status_unknown; + if (bridge->funcs->detect_ctx) + return bridge->funcs->detect_ctx(bridge, NULL); + return bridge->funcs->detect(bridge, connector); } EXPORT_SYMBOL_GPL(drm_bridge_detect); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index b0e6653ee42e..ca52f9fce7ed 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -663,6 +663,13 @@ struct drm_bridge_funcs { enum drm_connector_status (*detect)(struct drm_bridge *bridge, struct drm_connector *connector); + //TODO: document variant used by bridge_connector framework + // When ctx == NULL, detect_ctx should not return < 0 and behaves + // exactly like ->detect() above. + // When both detect_cts and detect are defined, the latter is ignored. + int (*detect_ctx)(struct drm_bridge *bridge, + struct drm_modeset_acquire_ctx *ctx); + /** * @get_modes: * -- 2.34.1