On Fri, Nov 26, 2021 at 9:34 PM Maxime Ripard maxime@cerno.tech wrote:
On Thu, Nov 25, 2021 at 09:44:14PM +0530, Jagan Teki wrote:
On Thu, Nov 25, 2021 at 9:40 PM Maxime Ripard maxime@cerno.tech wrote:
On Thu, Nov 25, 2021 at 07:55:41PM +0530, Jagan Teki wrote:
Hi,
On Thu, Nov 25, 2021 at 7:45 PM Maxime Ripard maxime@cerno.tech wrote:
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.
What I'm mean legacy here with current binding used in sun6i-dsi like this.
&dsi { vcc-dsi-supply = <®_dcdc1>; /* VCC-DSI */ status = "okay";
panel@0 { compatible = "bananapi,s070wv20-ct16-icn6211"; reg = <0>; reset-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /*
LCD-RST: PL5 */ enable-gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; /* LCD-PWR-EN: PB7 */ backlight = <&backlight>; }; };
Yes, I know, it's the generic DSI binding. It's still not legacy.
devm_drm_of_get_bridge cannot find the device with above binding and able to find the device with below binding.
&dsi { vcc-dsi-supply = <®_dcdc1>; /* VCC-DSI */ status = "okay";
ports { #address-cells = <1>; #size-cells = <0>; dsi_out: port@0 { reg = <0>; dsi_out_bridge: endpoint { remote-endpoint = <&bridge_out_dsi>; }; }; }; panel@0 { compatible = "bananapi,s070wv20-ct16-icn6211"; reg = <0>; reset-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* LCD-RST: PL5 */ enable-gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; /* LCD-PWR-EN: PB7 */ backlight = <&backlight>; port { bridge_out_dsi: endpoint { remote-endpoint = <&dsi_out_bridge>; }; }; };
};
Yes, I know, and that's because ...
Okay. I will use find panel and bridge separately instead of devm_drm_of_get_bridge in version patches.
That's not been my point, at all?
I mean, that whole discussion has been because you shouldn't do that.
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:
Yes, I'm trying to resolve the comment one after another. Will get back.
... You've ignored that comment.
Not understand which comment you mean. There are few about bridge conversion details, I will send my comments.
The one that got quoted there and you removed. For reference:
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
devm_drm_of_get_bridge uses drm_of_find_panel_or_bridge under the hood, so of course it won't find it if drm_of_find_panel_or_bridge doesn't. You need to modify drm_of_find_panel_or_bridge to also look for child devices and see if there's a panel or bridge registered for that child node. Then devm_drm_of_get_bridge will work as you intend it to.
Got it now, I will make necessary changes.
Thanks, Jagan.