On Wed, Nov 24, 2021 at 12:02:47AM +0530, Jagan Teki wrote:
dsi->panel = of_drm_find_panel(remote);
if (IS_ERR(dsi->panel)) {
dsi->panel = NULL;
dsi->next_bridge = of_drm_find_bridge(remote);
if (IS_ERR(dsi->next_bridge)) {
dev_err(dsi->dev, "failed to find bridge\n");
return PTR_ERR(dsi->next_bridge);
}
} else {
dsi->next_bridge = NULL;
}
of_node_put(remote);
Using devm_drm_of_get_bridge would greatly simplify the driver
I'm aware of this and this would break the existing sunxi dsi binding, we are not using ports based pipeline in dsi node. Of-course you have pointed the same before, please check below https://patchwork.kernel.org/project/dri-devel/patch/20210322140152.101709-2...
Then drm_of_find_panel_or_bridge needs to be adjusted to handle the DSI bindings and look for a panel or bridge not only through the OF graph, but also on the child nodes
Okay. I need to check this.
devm_drm_of_get_bridge is not working with legacy binding like the one used in sun6i dsi
There's nothing legacy about it.
https://patchwork.kernel.org/project/dri-devel/patch/20211122065223.88059-6-...
dsi->next_bridge = devm_drm_of_get_bridge(dsi->dev, dsi->dev->of_node, 0, 0); if (IS_ERR(dsi->next_bridge)) return PTR_ERR(dsi->next_bridge);
It is only working if we have ports on the pipeline, something like this https://patchwork.kernel.org/project/dri-devel/patch/20210214194102.126146-8...
Please have a look and let me know if I miss anything?
Yes, you're missing the answer you quoted earlier:
Then drm_of_find_panel_or_bridge needs to be adjusted to handle the DSI bindings and look for a panel or bridge not only through the OF graph, but also on the child nodes
Maxime