On 11/20/25 03:23, Chaoyi Chen wrote:
From: Chaoyi Chen <[email protected]>

The drm_aux_bridge_register() uses the device->of_node as the
bridge->of_node.

This patch adds drm_aux_bridge_register_from_node() to allow
specifying the of_node corresponding to the bridge.

Signed-off-by: Chaoyi Chen <[email protected]>
---
  drivers/gpu/drm/bridge/aux-bridge.c | 24 ++++++++++++++++++++++--
  include/drm/bridge/aux-bridge.h     |  6 ++++++
  2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/aux-bridge.c 
b/drivers/gpu/drm/bridge/aux-bridge.c
index b3e4cdff61d6..52dff4601c2d 100644
--- a/drivers/gpu/drm/bridge/aux-bridge.c
+++ b/drivers/gpu/drm/bridge/aux-bridge.c
@@ -35,6 +35,7 @@ static void drm_aux_bridge_unregister_adev(void *_adev)
  /**
   * drm_aux_bridge_register - Create a simple bridge device to link the chain
   * @parent: device instance providing this bridge
+ * @np: device node pointer corresponding to this bridge instance
   *
   * Creates a simple DRM bridge that doesn't implement any drm_bridge
   * operations. Such bridges merely fill a place in the bridge chain linking
@@ -42,7 +43,7 @@ static void drm_aux_bridge_unregister_adev(void *_adev)
   *
   * Return: zero on success, negative error code on failure
   */
-int drm_aux_bridge_register(struct device *parent)
+int drm_aux_bridge_register_from_node(struct device *parent, struct 
device_node *np)
  {
        struct auxiliary_device *adev;
        int ret;
@@ -62,7 +63,10 @@ int drm_aux_bridge_register(struct device *parent)
        adev->dev.parent = parent;
        adev->dev.release = drm_aux_bridge_release;
- device_set_of_node_from_dev(&adev->dev, parent);
+       if (np)
+               device_set_node(&adev->dev, of_fwnode_handle(np));
+       else
+               device_set_of_node_from_dev(&adev->dev, parent);
ret = auxiliary_device_init(adev);
        if (ret) {
@@ -80,6 +84,22 @@ int drm_aux_bridge_register(struct device *parent)
return devm_add_action_or_reset(parent, drm_aux_bridge_unregister_adev, adev);
  }
+EXPORT_SYMBOL_GPL(drm_aux_bridge_register_from_node);
+
+/**
+ * drm_aux_bridge_register - Create a simple bridge device to link the chain
+ * @parent: device instance providing this bridge
+ *
+ * Creates a simple DRM bridge that doesn't implement any drm_bridge
+ * operations. Such bridges merely fill a place in the bridge chain linking
+ * surrounding DRM bridges.
+ *
+ * Return: zero on success, negative error code on failure
+ */
+int drm_aux_bridge_register(struct device *parent)
+{
+       return drm_aux_bridge_register_from_node(parent, NULL);
+}
  EXPORT_SYMBOL_GPL(drm_aux_bridge_register);
struct drm_aux_bridge_data {
diff --git a/include/drm/bridge/aux-bridge.h b/include/drm/bridge/aux-bridge.h
index c2f5a855512f..7dd1f17a1354 100644
--- a/include/drm/bridge/aux-bridge.h
+++ b/include/drm/bridge/aux-bridge.h
@@ -13,11 +13,17 @@ struct auxiliary_device;
#if IS_ENABLED(CONFIG_DRM_AUX_BRIDGE)
  int drm_aux_bridge_register(struct device *parent);
+int drm_aux_bridge_register_from_node(struct device *parent, struct 
device_node *np);
  #else
  static inline int drm_aux_bridge_register(struct device *parent)
  {
        return 0;
  }
+
+static inline int drm_aux_bridge_register_from_node(struct device *parent, 
struct device_node *np)
+{
+       return 0;
+}
  #endif
#if IS_ENABLED(CONFIG_DRM_AUX_HPD_BRIDGE)

Looks fine:
Reviewed-by: Neil Armstrong <[email protected]>

Reply via email to