mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
54 lines
1.9 KiB
Diff
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
|
|
|