[PATCH v5 3/7] drm: sun4i: dsi: Convert to bridge driver

Maxime Ripard maxime at cerno.tech
Thu Nov 25 08:10:26 PST 2021


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 at 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-jagan@amarulasolutions.com/
> > > > >
> > > > > 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 = <&reg_dcdc1>; /* VCC-DSI */
>           status = "okay";
> 
>          panel at 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 = <&reg_dcdc1>; /* VCC-DSI */
>        status = "okay";
> 
>       ports {
>             #address-cells = <1>;
>             #size-cells = <0>;
> 
>            dsi_out: port at 0 {
>                    reg = <0>;
> 
>                   dsi_out_bridge: endpoint {
>                             remote-endpoint = <&bridge_out_dsi>;
>                   };
>            };
>       };
> 
>       panel at 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 ...

> >
> > > https://patchwork.kernel.org/project/dri-devel/patch/20211122065223.88059-6-jagan@amarulasolutions.com/
> > >
> > > 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-jagan@amarulasolutions.com/
> > >
> > > 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.

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20211125/3b54ba1e/attachment-0001.sig>


More information about the linux-arm-kernel mailing list