]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/bridge: aux-hpd-bridge: fix assignment of the of_node
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Sun, 8 Jun 2025 15:52:04 +0000 (18:52 +0300)
committerNeil Armstrong <neil.armstrong@linaro.org>
Mon, 30 Jun 2025 15:43:17 +0000 (17:43 +0200)
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>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20250608-fix-aud-hpd-bridge-v1-1-4641a6f8e381@oss.qualcomm.com
drivers/gpu/drm/bridge/aux-hpd-bridge.c

index b3f588b71a7d7ad5c2ee7b07c39079bc5ba34cee..af6f79793407f400b57f945fc958d613155417ea 100644 (file)
@@ -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);