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