[PATCH] drm/bridge: aux-hpd-bridge: fix assignment of the of_node

Dmitry Baryshkov posted 1 patch 6 months, 2 weeks ago
drivers/gpu/drm/bridge/aux-hpd-bridge.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
[PATCH] drm/bridge: aux-hpd-bridge: fix assignment of the of_node
Posted by Dmitry Baryshkov 6 months, 2 weeks ago
Perform fix similar to the one in the commit 85e444a68126 ("drm/bridge:
Fix assignment of the of_node of the parent to aux bridge").

The assignment of the of_node to the aux HPD bridge needs to mark the
of_node as reused, otherwise driver core will attempt to bind resources
like pinctrl, which is going to fail as corresponding pins are already
marked as used by the parent device.
Fix that by using the device_set_of_node_from_dev() helper instead of
assigning it directly.

Fixes: e560518a6c2e ("drm/bridge: implement generic DP HPD bridge")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
 drivers/gpu/drm/bridge/aux-hpd-bridge.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bridge/aux-hpd-bridge.c b/drivers/gpu/drm/bridge/aux-hpd-bridge.c
index b3f588b71a7d7ad5c2ee7b07c39079bc5ba34cee..af6f79793407f400b57f945fc958d613155417ea 100644
--- a/drivers/gpu/drm/bridge/aux-hpd-bridge.c
+++ b/drivers/gpu/drm/bridge/aux-hpd-bridge.c
@@ -64,10 +64,11 @@ struct auxiliary_device *devm_drm_dp_hpd_bridge_alloc(struct device *parent, str
 	adev->id = ret;
 	adev->name = "dp_hpd_bridge";
 	adev->dev.parent = parent;
-	adev->dev.of_node = of_node_get(parent->of_node);
 	adev->dev.release = drm_aux_hpd_bridge_release;
 	adev->dev.platform_data = of_node_get(np);
 
+	device_set_of_node_from_dev(&adev->dev, parent);
+
 	ret = auxiliary_device_init(adev);
 	if (ret) {
 		of_node_put(adev->dev.platform_data);

---
base-commit: 4f27f06ec12190c7c62c722e99ab6243dea81a94
change-id: 20250608-fix-aud-hpd-bridge-97ec55341c4c

Best regards,
-- 
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Re: [PATCH] drm/bridge: aux-hpd-bridge: fix assignment of the of_node
Posted by Neil Armstrong 5 months, 3 weeks ago
Hi,

On Sun, 08 Jun 2025 18:52:04 +0300, Dmitry Baryshkov wrote:
> Perform fix similar to the one in the commit 85e444a68126 ("drm/bridge:
> Fix assignment of the of_node of the parent to aux bridge").
> 
> The assignment of the of_node to the aux HPD bridge needs to mark the
> of_node as reused, otherwise driver core will attempt to bind resources
> like pinctrl, which is going to fail as corresponding pins are already
> marked as used by the parent device.
> Fix that by using the device_set_of_node_from_dev() helper instead of
> assigning it directly.
> 
> [...]

Thanks, Applied to https://gitlab.freedesktop.org/drm/misc/kernel.git (drm-misc-fixes)

[1/1] drm/bridge: aux-hpd-bridge: fix assignment of the of_node
      https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/e8537cad824065b0425fb0429e762e14a08067c2

-- 
Neil
Re: [PATCH] drm/bridge: aux-hpd-bridge: fix assignment of the of_node
Posted by Neil Armstrong 5 months, 4 weeks ago
On 08/06/2025 17:52, Dmitry Baryshkov wrote:
> Perform fix similar to the one in the commit 85e444a68126 ("drm/bridge:
> Fix assignment of the of_node of the parent to aux bridge").
> 
> The assignment of the of_node to the aux HPD bridge needs to mark the
> of_node as reused, otherwise driver core will attempt to bind resources
> like pinctrl, which is going to fail as corresponding pins are already
> marked as used by the parent device.
> Fix that by using the device_set_of_node_from_dev() helper instead of
> assigning it directly.
> 
> Fixes: e560518a6c2e ("drm/bridge: implement generic DP HPD bridge")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
>   drivers/gpu/drm/bridge/aux-hpd-bridge.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/bridge/aux-hpd-bridge.c b/drivers/gpu/drm/bridge/aux-hpd-bridge.c
> index b3f588b71a7d7ad5c2ee7b07c39079bc5ba34cee..af6f79793407f400b57f945fc958d613155417ea 100644
> --- a/drivers/gpu/drm/bridge/aux-hpd-bridge.c
> +++ b/drivers/gpu/drm/bridge/aux-hpd-bridge.c
> @@ -64,10 +64,11 @@ struct auxiliary_device *devm_drm_dp_hpd_bridge_alloc(struct device *parent, str
>   	adev->id = ret;
>   	adev->name = "dp_hpd_bridge";
>   	adev->dev.parent = parent;
> -	adev->dev.of_node = of_node_get(parent->of_node);
>   	adev->dev.release = drm_aux_hpd_bridge_release;
>   	adev->dev.platform_data = of_node_get(np);
>   
> +	device_set_of_node_from_dev(&adev->dev, parent);
> +
>   	ret = auxiliary_device_init(adev);
>   	if (ret) {
>   		of_node_put(adev->dev.platform_data);
> 
> ---
> base-commit: 4f27f06ec12190c7c62c722e99ab6243dea81a94
> change-id: 20250608-fix-aud-hpd-bridge-97ec55341c4c
> 
> Best regards,

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>