Thread (36 messages) 36 messages, 6 authors, 2021-12-05

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

From: Jagan Teki <jagan@amarulasolutions.com>
Date: 2021-11-25 14:27:59
Also in: dri-devel

Hi,

On Thu, Nov 25, 2021 at 7:45 PM Maxime Ripard [off-list ref] wrote:
On Wed, Nov 24, 2021 at 12:02:47AM +0530, Jagan Teki wrote:
quoted
quoted
quoted
quoted
quoted
quoted
+     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@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>;
        };
};

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@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>;
                        };
                };
       };
};
quoted
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.

Thanks,
Jagan.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help