Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] The logic to detect single-link LVDS Channel B requires `port@2` to be absent from the device tree, but the DT binding strictly requires `port@2` to be present. --
--- Patch [3]: [PATCH v2 3/3] drm/bridge: ti-sn65dsi83: Support LVDS Channel B on SN65DSI84 --- commit e7655ab4d66cbec701adf0102160008944fa2a88 Author: Esben Haabendal <[email protected]> drm/bridge: ti-sn65dsi83: Support LVDS Channel B on SN65DSI84 This adds support for using SN65DSI84 in single-link mode with output to LVDS Channel B. > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > b/drivers/gpu/drm/bridge/ti-sn65dsi83.c > index 7e73035d77986..02ae2b8179b07 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c [ ... ] > @@ -904,29 +907,38 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, > enum sn65dsi83_model model) > return ret; > > ctx->lvds_dual_link = false; > - ctx->lvds_dual_link_even_odd_swap = false; > + ctx->lvds_channel_swap = false; > if (model != MODEL_SN65DSI83) { > - struct device_node *port2, *port3; > + struct device_node *port0, *port1, *port2, *port3; > int dual_link; > > + port0 = of_graph_get_port_by_id(dev->of_node, 0); > + port1 = of_graph_get_port_by_id(dev->of_node, 1); > 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); > > if (dual_link == DRM_LVDS_DUAL_LINK_ODD_EVEN_PIXELS) { > /* Odd pixels to LVDS Channel A, even pixels to B */ > ctx->lvds_dual_link = true; > } else if (dual_link == DRM_LVDS_DUAL_LINK_EVEN_ODD_PIXELS) { > /* Even pixels to LVDS Channel A, odd pixels to B */ > ctx->lvds_dual_link = true; > + ctx->lvds_channel_swap = true; > + } else if (port0 && !port1 && port2 && !port3) { > + /* DSI Channel A to LVDS Channel A */ > + } else if (port0 && !port1 && !port2 && port3) { ^^^^^^ [Severity: Medium] Will this !port2 condition prevent the single-link LVDS Channel B feature from working with a standard-compliant device tree? If a user provides a compliant device tree by including an empty or unconnected port@2 to satisfy the DT schema required list for this binding, of_graph_get_port_by_id() will return a valid node. The driver would then fail this check, fall through leaving panel_port = 2, and subsequently fail to probe when it cannot find a panel connected to the empty port@2. > + /* DSI Channel A to LVDS Channel B */ > + ctx->lvds_channel_swap = true; > + panel_port = 3; > } > + of_node_put(port0); > + of_node_put(port1); > + of_node_put(port2); > + of_node_put(port3); > } > > - panel_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 2, 0); > + panel_bridge = devm_drm_of_get_bridge(dev, dev->of_node, panel_port, 0); > if (IS_ERR(panel_bridge)) > return dev_err_probe(dev, PTR_ERR(panel_bridge), "Failed to get > panel bridge\n"); -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=3
