Thank you for your contribution! Sashiko AI review found 2 potential issue(s) 
to consider:
- [Medium] arm64: dts: imx8dxl-evk: invalid and ignored bus-width in adma_lcdif 
endpoint
- [Medium] arm64: dts: imx8dxl-evk: lcdif overlay leaves broken audio consumers 
enabled
--

commit 19a4bb9fef78514466afe51bb1b962f7fabf9e20
Author: Frank Li <[email protected]>

arm64: dts: imx8dxl-evk: add lcdif overlay

This commit adds a device tree overlay to support the waiken,101wx001-wct LCD
panel on imx8dxl-evk boards, enabling adma_lcdif and disabling conflicting
peripherals that share pins with the 18-bit LCDIF interface.

> diff --git 
> a/arch/arm64/boot/dts/freescale/imx8dxl-evk-lcdif-101wx001-wct.dtso 
> b/arch/arm64/boot/dts/freescale/imx8dxl-evk-lcdif-101wx001-wct.dtso
> new file mode 100644
> index 0000000000000..39abf9b3884ea
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8dxl-evk-lcdif-101wx001-wct.dtso
[ ... ]
> +&acm {
> +     status = "disabled";
> +};
> +
> +&adma_lcdif {
> +     pinctrl-0 = <&pinctrl_lcdif>, <&lcd_0_fun>, <&lcd_1_fun>, <&lcd_2_fun>, 
> <&lcd_3_fun>;
> +     pinctrl-names = "default";
> +     status = "okay";
> +
> +     port {
> +             lcdif_out: endpoint {
> +                     bus-width = <18>;
> +                     remote-endpoint = <&panel_in>;
> +             };
> +     };
> +};

[Severity: Medium]
Is bus-width valid or handled in the adma_lcdif endpoint node here?

In Documentation/devicetree/bindings/display/fsl,lcdif.yaml, the port node is
defined purely via /schemas/graph.yaml#/properties/port:

  port:
    $ref: /schemas/graph.yaml#/properties/port
    description: The LCDIF output port

Because /schemas/graph.yaml#/properties/port enforces unevaluatedProperties:
false on endpoint and does not reference video-interfaces.yaml, adding
bus-width = <18> causes dtbs_check validation to fail on
imx8dxl-evk-lcdif-101wx001-wct.dtb.

Furthermore, at runtime, adma_lcdif (fsl,imx8dxl-lcdif / fsl,imx6sx-lcdif) is
driven by mxsfb, and neither mxsfb, drm_panel_bridge, nor panel-simple parses
bus-width from the endpoint node. Instead, the call chain:

  mxsfb_crtc_atomic_enable()
    -> mxsfb_crtc_mode_set_nofb()
      -> mxsfb_set_formats()

selects CTRL_BUS_WIDTH_* solely from the panel's media bus format. Since
waiken_101wx001_wct_panel in drivers/gpu/drm/panel/panel-simple.c specifies:

  .bus_format = MEDIA_BUS_FMT_RGB888_1X24,

mxsfb_set_formats() programs LCDC_CTRL with CTRL_BUS_WIDTH_24 instead of
CTRL_BUS_WIDTH_18, causing the controller to output 24-bit RGB888 when only 18
data lines (ADMA_LCDIF_D00 through ADMA_LCDIF_D17) are routed on the board.

[ ... ]
> +&sai0 {
> +     status = "disabled";
> +};
> +
> +&sai1 {
> +     status = "disabled";
> +};
> +
> +&wm8960_1 {
> +     status = "disabled";
> +};
> +
> +&wm8960_2 {
> +     status = "disabled";
> +};
> +
> +&wm8960_3 {
> +     status = "disabled";
> +};

[Severity: Medium]
Should this overlay also disable asrc0, sai2, sai3, and the root sound card
nodes from arch/arm64/boot/dts/freescale/imx8dxl-evk.dts?

Disabling acm, sai0, sai1, and wm8960_1..3 while leaving their consumers
enabled in the base DTB causes several probe failures and permanently deferred
devices at boot:

1. asrc0 remains enabled in imx8dxl-evk.dts and references <&acm
IMX_ADMA_ACM_AUD_CLK0_SEL> and <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>. With acm
disabled, of_clk_get_hw_from_clkspec() returns ERR_PTR(-ENOENT), causing
fsl_asrc_probe() in sound/soc/fsl/fsl_asrc.c to fail with -ENOENT.

2. sai2 and sai3 remain enabled in imx8dxl-evk.dts even though their codecs
(wm8960_2 and wm8960_3) are disabled here. Their clock controllers (sai2_lpcg
and sai3_lpcg in imx8-ss-audio.dtsi) take parent clocks from acm; with acm
disabled, of_clk_parent_fill() in imx_lpcg_parse_clks_from_dt() fails to
resolve the parent clock, causing LPCG probe to fail with -ENODEV and leaving
sai2 and sai3 stuck in -EPROBE_DEFER.

3. The root sound card nodes in imx8dxl-evk.dts (sound-bt-sco, sound-wm8960-1,
sound-wm8960-2, and sound-wm8960-3) remain enabled while referencing the
disabled CPU, codec, and ASRC nodes, leaving all four sound card devices
permanently in -EPROBE_DEFER.

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=7

Reply via email to