mcde_dsi_bind() has a loop over all subnodes looking for a panel, but does not exit when a match is found and only stores the last match. However this will be problematic when introducing refcounting on the struct drm_device pointer in a following commit, because of_drm_find_and_get_bridge() would get a reference to multiple bridges.
There seem to be no real reason for looking for multiple panels, so just break as soon as a match is found. Signed-off-by: Luca Ceresoli <[email protected]> --- Changes in v2: - break instead of warning as suggested by Linus Walleij: https://lore.kernel.org/r/cad++jlm_va+7c_usgopdhsdicr4nqmzwsq3ijw5-a1etp4e...@mail.gmail.com --- drivers/gpu/drm/mcde/mcde_dsi.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c index a3423459dd7a..5893fd2681b3 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -1116,6 +1116,11 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, return -EINVAL; } } + + if (panel || bridge) { + of_node_put(child); + break; + } } if (panel) { bridge = drm_panel_bridge_add_typed(panel, -- 2.52.0
