[PATCH 03/12] drm: of: try binding port parent node instead of the port itself
Dmitry Baryshkov
dmitry.baryshkov at oss.qualcomm.com
Mon Jul 28 15:41:49 UTC 2025
On Sat, Jul 19, 2025 at 02:09:39PM +0200, Otto Pflüger wrote:
> The drm_of_component_probe function is intended to bind all devices in
> an OF graph given a set of ports linked using the "ports" property on a
> main device node. This means that it should also bind the components
> providing these ports, not just the components of other ports connected
> to them. In order to do this, it calls drm_of_component_match_add with
> a pointer to each port node after checking that its parent node is a
> device.
>
> However, when given a pointer to the port node, the compare_of callback
> does not match it with a device node and thus fails to detect that the
> node belongs to a component. Fix this by passing a pointer to the parent
> node here too.
>
> Currently only the Unisoc platform driver relies on this feature, which
> was previously broken and is fixed by this change. On other platforms,
> the "ports" property points to ports that are not part of a component,
> i.e. the components only have indirect connections to the main node.
>
> Signed-off-by: Otto Pflüger <otto.pflueger at abscue.de>
Missing Fixes tag.
> ---
> drivers/gpu/drm/drm_of.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c
> index d0183dea770308e77f05da364ffe087d53f3be36..b972facc2ec3fe40a4e10b5d7178b5ac8c0158d5 100644
> --- a/drivers/gpu/drm/drm_of.c
> +++ b/drivers/gpu/drm/drm_of.c
> @@ -132,7 +132,7 @@ int drm_of_component_probe(struct device *dev,
>
> if (of_device_is_available(port->parent))
> drm_of_component_match_add(dev, &match, compare_of,
> - port);
> + port->parent);
>
> of_node_put(port);
> }
>
> --
> 2.50.0
--
With best wishes
Dmitry
More information about the dri-devel
mailing list