Files
LibreELEC.tv/packages/linux/patches/rockchip/rockchip-0095-WIP-SCRAMB-drm-bridge-Add-detect_ctx-hook.patch
Christian Hewitt 5b2b97c29c linux: update rockchip to Linux 6.17-rc6
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
2025-09-16 15:18:29 +00:00

54 lines
1.9 KiB
Diff

From 192f8d276cb81bc3508ccc104a0466c45c7cedd5 Mon Sep 17 00:00:00 2001
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date: Fri, 10 Jan 2025 22:48:01 +0200
Subject: [PATCH 095/110] [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 <cristian.ciocaltea@collabora.com>
---
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