On 12-03-2026 21:16, Luca Ceresoli wrote:
> Hello Sudarshan,
> 
> On Thu Mar 12, 2026 at 5:37 AM CET, Sudarshan Shetty wrote:
>> Add a new optional device tree property `ti,dual-link-video-mode`
>> to indicate that the bridge should configure the device for
>> dual-link LVDS video mode.
>>
>> In dual-link configurations, some panels require the horizontal
>> timing parameters to be adjusted before programming them into
>> the device. In such cases, the horizontal timing values must be
>> divided by two when operating in dual-link mode.
>>
>> Signed-off-by: Sudarshan Shetty <[email protected]>
> 
> This is not needed. Dual link mode is already implied by the presence of
> port@2 and port@3.
> 
> Also, the driver implements that already, and handles even/odd pixel swap
> as well:
> 
>       ctx->lvds_dual_link = false;
>       ctx->lvds_dual_link_even_odd_swap = false;
>       if (model != MODEL_SN65DSI83) {
>               struct device_node *port2, *port3;
>               int dual_link;
> 
>               port2 = of_graph_get_port_by_id(dev->of_node, 2);
>               port3 = of_graph_get_port_by_id(dev->of_node, 3);
>               dual_link = drm_of_lvds_get_dual_link_pixel_order(port2, port3);
>               of_node_put(port2);
>               of_node_put(port3);
> 
>               if (dual_link == DRM_LVDS_DUAL_LINK_ODD_EVEN_PIXELS) {
>                       ctx->lvds_dual_link = true;
>                       /* Odd pixels to LVDS Channel A, even pixels to B */
>                       ctx->lvds_dual_link_even_odd_swap = false;
>               } else if (dual_link == DRM_LVDS_DUAL_LINK_EVEN_ODD_PIXELS) {
>                       ctx->lvds_dual_link = true;
>                       /* Even pixels to LVDS Channel A, odd pixels to B */
>                       ctx->lvds_dual_link_even_odd_swap = true;
>               }
>       }
> 
> (https://elixir.bootlin.com/linux/v7.0-rc3/source/drivers/gpu/drm/bridge/ti-sn65dsi83.c#L895-L916)
> 

Thanks for the clarification.
For reference, the DTS currently used on our platform already 
describes the two LVDS output ports as follows:

lvds_bridge: bridge@2c {
                compatible = "ti,sn65dsi84";
                reg = <0x2c>;
                enable-gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;

                ti,dual-link-video-mode;

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;

                        port@0 {
                                reg = <0>;

                                sn65dsi84_in: endpoint {
                                        data-lanes = <1 2 3 4>;
                                        remote-endpoint = <&mdss_dsi0_out>;
                                };
                        };

                        port@2 {
                                reg = <2>;

                                sn65dsi84_out_a: endpoint {
                                        data-lanes = <1 2 3 4>;
                                        remote-endpoint = <&lvds_panel_out_a>;
                                };
                        };

                        port@3 {
                                reg = <3>;

                                sn65dsi84_out_b: endpoint {
                                        data-lanes = <1 2 3 4>;
                                        remote-endpoint = <&lvds_panel_out_b>;
                                };
                        };
                };

> Luca
> 
> --
> Luca Ceresoli, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com

Reply via email to