Hi, On Thu, May 21, 2026 at 11:28:51AM +0800, Chaoyi Chen wrote: > From: Chaoyi Chen > > 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 > Reviewed-by: Neil Armstrong > --- Reviewed-by: Sebastian Reichel Greetings, -- Sebastian > 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 1ed21a8713bf..f50283abed5f 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) > -- > 2.53.0 > >