* [PATCH v3 0/2] arm: dts: nxp: imx: add Draeger M48 CPU board
@ 2026-10-21 9:21 Petko Manolov
2026-10-21 9:21 ` [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board Petko Manolov
2026-10-21 9:21 ` [PATCH v3 2/2] arm: dts: nxp: imx: Add devicetree files for M48 Petko Manolov
0 siblings, 2 replies; 6+ messages in thread
From: Petko Manolov @ 2026-10-21 9:21 UTC (permalink / raw)
To: linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, Frank.Li, s.hauer, kernel,
festevam, imx, linux-arm-kernel, arnemaximilian.richter,
martynas.grybauskas, Petko Manolov
Adds the device trees for “Dräger M48 on NXP i.MX6 (Q|DL) and Intel/Altera
SoCFPGA Cyclone V” board variant. It has both (the SoC and FPGA) on the
same carrier and they are cross-monitoring each other. The SoCFPGA boots
independently off qspi flash.
This is the imx6 devicetree part. There are two bindings as well as device
trees, since M48 is using two parts: imx6q and imx6dl.
new in v3:
- used LLM to cleanup most of the errors and warnings;
- proper use of dt-schema this time around;
new in v2:
- add the tag from Conor Dooley <conor.dooley@microchip.com>;
- it should be clarified that "draeger" vendor prefix is added in
my previous Draeger M48 patch series;
Petko Manolov (2):
dt-bindings: arm: fsl: add Draeger M48 dual-cpu board
arm: dts: nxp: imx: Add devicetree files for M48
.../devicetree/bindings/arm/fsl.yaml | 2 +
arch/arm/boot/dts/nxp/imx/Makefile | 2 +
.../boot/dts/nxp/imx/imx6dl-draeger-m48.dts | 16 ++
.../boot/dts/nxp/imx/imx6q-draeger-m48.dts | 16 ++
.../boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi | 213 ++++++++++++++++++
5 files changed, 249 insertions(+)
create mode 100644 arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts
create mode 100644 arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts
create mode 100644 arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi
--
2.47.3
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board 2026-10-21 9:21 [PATCH v3 0/2] arm: dts: nxp: imx: add Draeger M48 CPU board Petko Manolov @ 2026-10-21 9:21 ` Petko Manolov 2026-10-21 9:32 ` sashiko-bot 2026-10-21 9:21 ` [PATCH v3 2/2] arm: dts: nxp: imx: Add devicetree files for M48 Petko Manolov 1 sibling, 1 reply; 6+ messages in thread From: Petko Manolov @ 2026-10-21 9:21 UTC (permalink / raw) To: linux-kernel Cc: devicetree, robh, krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam, imx, linux-arm-kernel, arnemaximilian.richter, martynas.grybauskas, Petko Manolov, Conor Dooley M48 is a heterogeneous board made by Draeger that is based on two independent cpus, that are monitoring each other. One of them is imx6, the other is Altera SoCFPGA Cyclone 5. The latter is booting independently off qspi. The imx6 parts that are used in M48 are imx6q and imx6dl, hence the two bindings. Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Petko Manolov <petko.manolov@konsulko.com> --- Documentation/devicetree/bindings/arm/fsl.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml index 656f2596e1d5..8f3a04228780 100644 --- a/Documentation/devicetree/bindings/arm/fsl.yaml +++ b/Documentation/devicetree/bindings/arm/fsl.yaml @@ -260,6 +260,7 @@ properties: - boundary,imx6q-nitrogen6x - compulab,cm-fx6 # CompuLab CM-FX6 - dmo,imx6q-edmqmx6 # Data Modul eDM-QMX6 Board + - draeger,imx6q-m48 # Draeger imx6q variant of M48 - ds,imx6q-sbc # Da Sheng COM-9XX Modules - embest,imx6q-marsboard # Embest MarS Board i.MX6Dual - emtrion,emcon-mx6 # emCON-MX6D or emCON-MX6Q SoM @@ -458,6 +459,7 @@ properties: - boundary,imx6dl-nit6xlite # Boundary Devices Nitrogen6 Lite - boundary,imx6dl-nitrogen6x # Boundary Devices Nitrogen6x - bticino,imx6dl-mamoj # BTicino i.MX6DL Mamoj + - draeger,imx6dl-m48 # Draeger imx6dl variant of M48 - eckelmann,imx6dl-ci4x10 - emtrion,emcon-mx6 # emCON-MX6S or emCON-MX6DL SoM - emtrion,emcon-mx6-avari # emCON-MX6S or emCON-MX6DL SoM on Avari Base -- 2.47.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board 2026-10-21 9:21 ` [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board Petko Manolov @ 2026-10-21 9:32 ` sashiko-bot 2026-10-21 14:57 ` Frank Li 0 siblings, 1 reply; 6+ messages in thread From: sashiko-bot @ 2026-10-21 9:32 UTC (permalink / raw) To: Petko Manolov; +Cc: devicetree, imx, robh, conor+dt, Frank.Li Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] dt-bindings: arm: fsl: undocumented draeger vendor prefix -- commit 795e5eabed6a73f1faa10f56606455efcbd039b8 Author: Petko Manolov <petko.manolov@konsulko.com> dt-bindings: arm: fsl: add Draeger M48 dual-cpu board This commit adds devicetree binding compatible strings for the imx6q and imx6dl variants of the Draeger M48 board to Documentation/devicetree/bindings/arm/fsl.yaml. > diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml > index 656f2596e1d53..8f3a04228780a 100644 > --- a/Documentation/devicetree/bindings/arm/fsl.yaml > +++ b/Documentation/devicetree/bindings/arm/fsl.yaml > @@ -260,6 +260,7 @@ properties: > - boundary,imx6q-nitrogen6x > - compulab,cm-fx6 # CompuLab CM-FX6 > - dmo,imx6q-edmqmx6 # Data Modul eDM-QMX6 Board > + - draeger,imx6q-m48 # Draeger imx6q variant of M48 > - ds,imx6q-sbc # Da Sheng COM-9XX Modules > - embest,imx6q-marsboard # Embest MarS Board i.MX6Dual > - emtrion,emcon-mx6 # emCON-MX6D or emCON-MX6Q SoM > @@ -458,6 +459,7 @@ properties: > - boundary,imx6dl-nit6xlite # Boundary Devices Nitrogen6 Lite > - boundary,imx6dl-nitrogen6x # Boundary Devices Nitrogen6x > - bticino,imx6dl-mamoj # BTicino i.MX6DL Mamoj > + - draeger,imx6dl-m48 # Draeger imx6dl variant of M48 > - eckelmann,imx6dl-ci4x10 > - emtrion,emcon-mx6 # emCON-MX6S or emCON-MX6DL SoM > - emtrion,emcon-mx6-avari # emCON-MX6S or emCON-MX6DL SoM on Avari Base [Severity: Low] Should the draeger vendor prefix also be documented under patternProperties in Documentation/devicetree/bindings/vendor-prefixes.yaml? Currently, Documentation/devicetree/bindings/vendor-prefixes.yaml has no entry for draeger between dptel and dragino: "^dptel,.*": description: Guangdong Dapu Telecom Co., Ltd. "^dragino,.*": description: Dragino Technology Co., Limited Without an entry in vendor-prefixes.yaml, process() in scripts/checkpatch.pl reports an undocumented vendor prefix warning when device tree files (such as arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts and arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts) or driver match tables reference draeger,imx6q-m48 or draeger,imx6dl-m48, and any draeger,* vendor-specific properties will fail schema validation. -- Sashiko AI review · https://sashiko.dev/#/patchset/20261021092140.4142493-1-petko.manolov@konsulko.com?part=1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board 2026-10-21 9:32 ` sashiko-bot @ 2026-10-21 14:57 ` Frank Li 0 siblings, 0 replies; 6+ messages in thread From: Frank Li @ 2026-10-21 14:57 UTC (permalink / raw) To: sashiko-reviews; +Cc: Petko Manolov, devicetree, imx, robh, conor+dt, Frank.Li On Wed, Oct 21, 2026 at 09:32:12AM +0000, sashiko-bot@kernel.org wrote: > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [Low] dt-bindings: arm: fsl: undocumented draeger vendor prefix > -- > > commit 795e5eabed6a73f1faa10f56606455efcbd039b8 > Author: Petko Manolov <petko.manolov@konsulko.com> > > dt-bindings: arm: fsl: add Draeger M48 dual-cpu board > > This commit adds devicetree binding compatible strings for the imx6q and > imx6dl variants of the Draeger M48 board to > Documentation/devicetree/bindings/arm/fsl.yaml. > > > diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml > > index 656f2596e1d53..8f3a04228780a 100644 > > --- a/Documentation/devicetree/bindings/arm/fsl.yaml > > +++ b/Documentation/devicetree/bindings/arm/fsl.yaml > > @@ -260,6 +260,7 @@ properties: > > - boundary,imx6q-nitrogen6x > > - compulab,cm-fx6 # CompuLab CM-FX6 > > - dmo,imx6q-edmqmx6 # Data Modul eDM-QMX6 Board > > + - draeger,imx6q-m48 # Draeger imx6q variant of M48 > > - ds,imx6q-sbc # Da Sheng COM-9XX Modules > > - embest,imx6q-marsboard # Embest MarS Board i.MX6Dual > > - emtrion,emcon-mx6 # emCON-MX6D or emCON-MX6Q SoM > > @@ -458,6 +459,7 @@ properties: > > - boundary,imx6dl-nit6xlite # Boundary Devices Nitrogen6 Lite > > - boundary,imx6dl-nitrogen6x # Boundary Devices Nitrogen6x > > - bticino,imx6dl-mamoj # BTicino i.MX6DL Mamoj > > + - draeger,imx6dl-m48 # Draeger imx6dl variant of M48 > > - eckelmann,imx6dl-ci4x10 > > - emtrion,emcon-mx6 # emCON-MX6S or emCON-MX6DL SoM > > - emtrion,emcon-mx6-avari # emCON-MX6S or emCON-MX6DL SoM on Avari Base > > [Severity: Low] > Should the draeger vendor prefix also be documented under patternProperties > in Documentation/devicetree/bindings/vendor-prefixes.yaml? This need be fixed Frank > > Currently, Documentation/devicetree/bindings/vendor-prefixes.yaml has no > entry for draeger between dptel and dragino: > > "^dptel,.*": > description: Guangdong Dapu Telecom Co., Ltd. > "^dragino,.*": > description: Dragino Technology Co., Limited > > Without an entry in vendor-prefixes.yaml, process() in scripts/checkpatch.pl > reports an undocumented vendor prefix warning when device tree files (such > as arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts and > arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts) or driver match tables > reference draeger,imx6q-m48 or draeger,imx6dl-m48, and any draeger,* > vendor-specific properties will fail schema validation. > > -- > Sashiko AI review · https://sashiko.dev/#/patchset/20261021092140.4142493-1-petko.manolov@konsulko.com?part=1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 2/2] arm: dts: nxp: imx: Add devicetree files for M48 2026-10-21 9:21 [PATCH v3 0/2] arm: dts: nxp: imx: add Draeger M48 CPU board Petko Manolov 2026-10-21 9:21 ` [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board Petko Manolov @ 2026-10-21 9:21 ` Petko Manolov 2026-10-21 9:43 ` sashiko-bot 1 sibling, 1 reply; 6+ messages in thread From: Petko Manolov @ 2026-10-21 9:21 UTC (permalink / raw) To: linux-kernel Cc: devicetree, robh, krzk+dt, conor+dt, Frank.Li, s.hauer, kernel, festevam, imx, linux-arm-kernel, arnemaximilian.richter, martynas.grybauskas, Petko Manolov M48 is a heterogeneous board made by Draeger that is based on two independent cpus, that are monitoring each other. One of them is imx6, the other is Altera SoCFPGA Cyclone 5. The latter is booting independently off qspi. Add the DT for the two variants of M48 that are based on imx6q and imx6dl. Signed-off-by: Petko Manolov <petko.manolov@konsulko.com> --- arch/arm/boot/dts/nxp/imx/Makefile | 2 + .../boot/dts/nxp/imx/imx6dl-draeger-m48.dts | 16 ++ .../boot/dts/nxp/imx/imx6q-draeger-m48.dts | 16 ++ .../boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi | 213 ++++++++++++++++++ 4 files changed, 247 insertions(+) create mode 100644 arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts create mode 100644 arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts create mode 100644 arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile index 1a2539fa19b4..cdd252fd5109 100644 --- a/arch/arm/boot/dts/nxp/imx/Makefile +++ b/arch/arm/boot/dts/nxp/imx/Makefile @@ -104,6 +104,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \ imx6dl-dfi-fs700-m60.dtb \ imx6dl-dhcom-pdk2.dtb \ imx6dl-dhcom-picoitx.dtb \ + imx6dl-draeger-m48.dtb \ imx6dl-eckelmann-ci4x10.dtb \ imx6dl-emcon-avari.dtb \ imx6dl-gw51xx.dtb \ @@ -219,6 +220,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \ imx6q-display5-tianma-tm070-1280x768.dtb \ imx6q-dmo-edmqmx6.dtb \ imx6q-dms-ba16.dtb \ + imx6q-draeger-m48.dtb \ imx6q-ds.dtb \ imx6q-emcon-avari.dtb \ imx6q-evi.dtb \ diff --git a/arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts b/arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts new file mode 100644 index 000000000000..b0bc9a67f5b3 --- /dev/null +++ b/arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2020 Draeger and Licensors, info@draeger.com + * + * Device Tree file for Draeger M48 Board + */ + +/dts-v1/; + +#include "imx6dl.dtsi" +#include "imx6qdl-draeger-m48.dtsi" + +/ { + model = "Draeger M48 i.MX6 DualLite"; + compatible = "draeger,imx6dl-m48", "fsl,imx6dl"; +}; diff --git a/arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts b/arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts new file mode 100644 index 000000000000..ff9c337e93fb --- /dev/null +++ b/arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2020 Draeger and Licensors, info@draeger.com + * + * Device Tree file for Draeger M48 Board + */ + +/dts-v1/; + +#include "imx6q.dtsi" +#include "imx6qdl-draeger-m48.dtsi" + +/ { + model = "Draeger M48 i.MX6 Quad"; + compatible = "draeger,imx6q-m48", "fsl,imx6q"; +}; diff --git a/arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi b/arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi new file mode 100644 index 000000000000..19207d45764c --- /dev/null +++ b/arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi @@ -0,0 +1,213 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2020 Draeger and Licensors, info@draeger.com + * Based on work by Russell King + * + * Device Tree file for Draeger M48 Board + */ + +#include <dt-bindings/gpio/gpio.h> + +/ { + aliases { + mmc0 = &usdhc3; + }; + + chosen { + stdout-path = &uart1; + }; + + /* Will be filled by the bootloader */ + memory@10000000 { + device_type = "memory"; + reg = <0x10000000 0x80000000>; + }; +}; + +&fec { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_enet>; + phy-mode = "rgmii-id"; + phy-handle = <ðphy>; + status = "okay"; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + ethphy: ethernet-phy@0 { + reg = <0>; + rxc-skew-ps = <1380>; + rxd0-skew-ps = <0>; + rxd1-skew-ps = <0>; + rxd2-skew-ps = <0>; + rxd3-skew-ps = <0>; + rxdv-skew-ps = <0>; + txc-skew-ps = <1860>; + txd0-skew-ps = <0>; + txd1-skew-ps = <0>; + txd2-skew-ps = <0>; + txd3-skew-ps = <0>; + txen-skew-ps = <0>; + }; + }; +}; + +&hdmi { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_hdmi>; + status = "okay"; +}; + +&i2c2 { + clock-frequency = <100000>; + pinctrl-names = "default", "gpio"; + pinctrl-0 = <&pinctrl_i2c2>; + pinctrl-1 = <&pinctrl_i2c2_gpio>; + scl-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>; + sda-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>; + status = "okay"; + + eeprom_mac: eeprom@50 { + compatible = "atmel,24c08"; + reg = <0x50>; + pagesize = <16>; + }; +}; + +&i2c3 { + pinctrl-names = "default", "gpio"; + pinctrl-0 = <&pinctrl_i2c3>; + pinctrl-1 = <&pinctrl_i2c3_gpio>; + scl-gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>; + sda-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>; + status = "okay"; +}; + +&ldb { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_lvds>; + fsl,dual-channel; + status = "okay"; + + lvds-channel@0 { + fsl,data-mapping = "spwg"; + fsl,data-width = <24>; + status = "okay"; + + display-timings { + native-mode = <&timing0>; + + /* LVDS split mode */ + timing0: timing-1920x1080 { + clock-frequency = <71190000>; /* pixclk / 2 */ + hactive = <1920>; + vactive = <1080>; + hback-porch = <60>; /* left * 2 */ + hfront-porch = <60>; /* right * 2 */ + vback-porch = <30>; + vfront-porch = <3>; + hsync-len = <60>; /* hsync * 2 */ + vsync-len = <17>; + }; + }; + }; +}; + +&uart1 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart1>; + status = "okay"; +}; + +&usdhc3 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_usdhc3>; + bus-width = <4>; + non-removable; + status = "okay"; +}; + +&iomuxc { + pinctrl_enet: enetgrp { + fsl,pins = < + MX6QDL_PAD_KEY_COL1__ENET_MDIO 0x1b0b0 + MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 + MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x13018 + MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b018 + MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b018 + MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b018 + MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b018 + MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x13018 + MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0 + MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x13030 + MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b030 + MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b030 + MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b030 + MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b030 + MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x13030 + >; + }; + + pinctrl_hdmi: hdmigrp { + fsl,pins = < + MX6QDL_PAD_EIM_D16__HDMI_TX_DDC_SDA 0x1b0b0 + MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL 0x1b0b0 + >; + }; + + pinctrl_i2c2: i2c2grp { + fsl,pins = < + MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b820 + MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b820 + >; + }; + + pinctrl_i2c2_gpio: i2c2gpiogrp { + fsl,pins = < + MX6QDL_PAD_KEY_COL3__GPIO4_IO12 0x1b820 + MX6QDL_PAD_KEY_ROW3__GPIO4_IO13 0x1b820 + >; + }; + + pinctrl_i2c3: i2c3grp { + fsl,pins = < + MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b820 + MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b820 + >; + }; + + pinctrl_i2c3_gpio: i2c3gpiogrp { + fsl,pins = < + MX6QDL_PAD_EIM_D17__GPIO3_IO17 0x1b820 + MX6QDL_PAD_EIM_D18__GPIO3_IO18 0x1b820 + >; + }; + + pinctrl_lvds: lvdsgrp { + fsl,pins = < + MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x1b010 /* DISPLAY_EN */ + MX6QDL_PAD_EIM_A20__GPIO2_IO18 0x1b010 /* BACKLIGHT_EN */ + MX6QDL_PAD_EIM_A18__GPIO2_IO20 0x1b010 /* DISP0_CONTRAST */ + >; + }; + + pinctrl_uart1: uart1grp { + fsl,pins = < + MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b010 + MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b010 + >; + }; + + pinctrl_usdhc3: usdhc3grp { + fsl,pins = < + MX6QDL_PAD_SD3_CMD__SD3_CMD 0x1b060 + MX6QDL_PAD_SD3_CLK__SD3_CLK 0x1b060 + MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x1b060 + MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x1b060 + MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x1b060 + MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x1b060 + MX6QDL_PAD_NANDF_CS1__SD3_VSELECT 0x1b060 + >; + }; +}; -- 2.47.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3 2/2] arm: dts: nxp: imx: Add devicetree files for M48 2026-10-21 9:21 ` [PATCH v3 2/2] arm: dts: nxp: imx: Add devicetree files for M48 Petko Manolov @ 2026-10-21 9:43 ` sashiko-bot 0 siblings, 0 replies; 6+ messages in thread From: sashiko-bot @ 2026-10-21 9:43 UTC (permalink / raw) To: Petko Manolov; +Cc: devicetree, imx, robh, conor+dt, Frank.Li Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider: - [Medium] ARM: dts: imx6qdl-draeger-m48: missing GPIO_OPEN_DRAIN on I2C recovery GPIOs - [Medium] ARM: dts: imx6qdl-draeger-m48: halved LVDS pixel clock in split mode - [Medium] ARM: dts: imx6: missing ODE and SION bits on HDMI DDC pins in draeger-m48 - [Low] ARM: dts: imx6qdl-draeger-m48: undocumented draeger vendor prefix -- commit 1f358a609d69dc3047258ea0965effc8740f95c7 Author: Petko Manolov <petko.manolov@konsulko.com> arm: dts: nxp: imx: Add devicetree files for M48 This commit adds devicetree files for the i.MX6 DualLite and i.MX6 Quad variants of the Draeger M48 board. > diff --git a/arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts b/arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts > new file mode 100644 > index 0000000000000..b0bc9a67f5b34 > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts > @@ -0,0 +1,16 @@ [ ... ] > +/ { > + model = "Draeger M48 i.MX6 DualLite"; > + compatible = "draeger,imx6dl-m48", "fsl,imx6dl"; > +}; > diff --git a/arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts b/arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts > new file mode 100644 > index 0000000000000..ff9c337e93fbf > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts > @@ -0,0 +1,16 @@ [ ... ] > +/ { > + model = "Draeger M48 i.MX6 Quad"; > + compatible = "draeger,imx6q-m48", "fsl,imx6q"; > +}; [Severity: Low] The root compatible properties in arch/arm/boot/dts/nxp/imx/imx6dl-draeger-m48.dts and arch/arm/boot/dts/nxp/imx/imx6q-draeger-m48.dts introduce the "draeger" vendor prefix, but Documentation/devicetree/bindings/vendor-prefixes.yaml only contains entries for "^dptel,.*" and "^dragino,.*" in patternProperties: "^dptel,.*": description: Guangdong Dapu Telecom Co., Ltd. "^dragino,.*": description: Dragino Technology Co., Limited Should the "draeger" vendor prefix be documented in Documentation/devicetree/bindings/vendor-prefixes.yaml so that checkpatch.pl and schema validation do not warn about an undocumented compatible string vendor? > diff --git a/arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi b/arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi > new file mode 100644 > index 0000000000000..19207d45764c0 > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi > @@ -0,0 +1,213 @@ [ ... ] > +&hdmi { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_hdmi>; > + status = "okay"; > +}; > + > +&i2c2 { > + clock-frequency = <100000>; > + pinctrl-names = "default", "gpio"; > + pinctrl-0 = <&pinctrl_i2c2>; > + pinctrl-1 = <&pinctrl_i2c2_gpio>; > + scl-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>; > + sda-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>; > + status = "okay"; > + > + eeprom_mac: eeprom@50 { > + compatible = "atmel,24c08"; > + reg = <0x50>; > + pagesize = <16>; > + }; > +}; > + > +&i2c3 { > + pinctrl-names = "default", "gpio"; > + pinctrl-0 = <&pinctrl_i2c3>; > + pinctrl-1 = <&pinctrl_i2c3_gpio>; > + scl-gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>; > + sda-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>; > + status = "okay"; > +}; [Severity: Medium] During adapter registration for &i2c2 and &i2c3, i2c_init_recovery() -> i2c_gpio_init_generic_recovery() in drivers/i2c/i2c-core-base.c requests scl-gpios with GPIOD_OUT_HIGH_OPEN_DRAIN and sda-gpios with GPIOD_IN. When GPIO_OPEN_DRAIN is not set on scl-gpios in the devicetree, gpiod_configure_flags() in drivers/gpio/gpiolib.c logs a runtime warning: if (lflags & GPIO_OPEN_DRAIN) set_bit(GPIOD_FLAG_OPEN_DRAIN, &desc->flags); else if (dflags & GPIOD_FLAGS_BIT_OPEN_DRAIN) { set_bit(GPIOD_FLAG_OPEN_DRAIN, &desc->flags); gpiod_warn(desc, "enforced open drain please flag it properly in DT/ACPI DSDT/board file\n"); } In addition, because sda-gpios is requested with GPIOD_IN, i2c_init_recovery() in drivers/i2c/i2c-core-base.c checks whether the line is single-ended before enabling sda driving for bus recovery: if (bri->sda_gpiod) { bri->get_sda = get_sda_gpio_value; if (gpiod_get_direction(bri->sda_gpiod) == GPIO_LINE_DIRECTION_OUT || gpiod_is_single_ended(bri->sda_gpiod)) bri->set_sda = set_sda_gpio_value; } Without GPIO_OPEN_DRAIN on sda-gpios, gpiod_is_single_ended(bri->sda_gpiod) returns false and bri->set_sda remains NULL, preventing recovery from driving sda to generate a stop condition. Also, pinctrl_i2c2_gpio and pinctrl_i2c3_gpio below use pad config 0x1b820 without the sion bit (0x40000000), unlike pinctrl_i2c2 and pinctrl_i2c3 (0x4001b820). Should scl-gpios and sda-gpios in &i2c2 and &i2c3 be flagged with (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), and should pinctrl_i2c2_gpio and pinctrl_i2c3_gpio also set 0x4001b820? > + > +&ldb { > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_lvds>; > + fsl,dual-channel; > + status = "okay"; > + > + lvds-channel@0 { > + fsl,data-mapping = "spwg"; > + fsl,data-width = <24>; > + status = "okay"; > + > + display-timings { > + native-mode = <&timing0>; > + > + /* LVDS split mode */ > + timing0: timing-1920x1080 { > + clock-frequency = <71190000>; /* pixclk / 2 */ > + hactive = <1920>; > + vactive = <1080>; > + hback-porch = <60>; /* left * 2 */ > + hfront-porch = <60>; /* right * 2 */ > + vback-porch = <30>; > + vfront-porch = <3>; > + hsync-len = <60>; /* hsync * 2 */ > + vsync-len = <17>; > + }; [Severity: Medium] In timing0 under &ldb, the horizontal parameters specify the full two-channel line totals (1920 + 60 + 60 + 60 = 2100 pixels per line, 1130 lines per frame), which require a 142.38 MHz pixel clock for 60 Hz, while clock-frequency is pre-divided by 2 to 71190000. When fsl,dual-channel is enabled, imx_ldb_encoder_atomic_mode_set() in drivers/gpu/drm/imx/ipuv3/imx-ldb.c treats mode->clock as the full combined display interface pixel clock (di_clk = mode->clock * 1000) and already halves the per-channel serial clock multiplier: if (dual) { serial_clk = 3500UL * mode->clock; imx_ldb_set_clock(ldb, mux, 0, serial_clk, di_clk); imx_ldb_set_clock(ldb, mux, 1, serial_clk, di_clk); } else { serial_clk = 7000UL * mode->clock; imx_ldb_set_clock(ldb, mux, imx_ldb_ch->chno, serial_clk, di_clk); } Meanwhile, ipu_di_sync_config_noninterlaced() in drivers/gpu/ipu-v3/ipu-di.c clocks all 2100 horizontal pixels per line at di_clk. Will pre-dividing clock-frequency to 71190000 here cause the display interface and lvds channels to run at half the intended clock rate (30 Hz instead of 60 Hz), and should clock-frequency be <142380000> instead? > + }; > + }; > +}; [ ... ] > +&iomuxc { [ ... ] > + pinctrl_hdmi: hdmigrp { > + fsl,pins = < > + MX6QDL_PAD_EIM_D16__HDMI_TX_DDC_SDA 0x1b0b0 > + MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL 0x1b0b0 > + >; > + }; [Severity: Medium] The &hdmi node in arch/arm/boot/dts/nxp/imx/imx6qdl-draeger-m48.dtsi does not specify an external ddc-i2c-bus phandle, so dw_hdmi_probe() in drivers/gpu/drm/bridge/synopsys/dw-hdmi.c uses the internal DesignWare ddc i2c master on the pads configured by pinctrl_hdmi. Here MX6QDL_PAD_EIM_D16__HDMI_TX_DDC_SDA and MX6QDL_PAD_EIM_EB2__HDMI_TX_DDC_SCL are configured with 0x1b0b0, which omits both open drain enable (0x800) and software input on (0x40000000). Other i.MX6 boards using the internal hdmi ddc controller (such as imx6qdl-apalis.dtsi and imx6qdl-colibri.dtsi in pinctrl_hdmi_ddc) configure these pads with 0x4001b8b1. Without open drain and software input on enabled on these pads, can hdmi edid reads over the internal ddc i2c bus fail? [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20261021092140.4142493-1-petko.manolov@konsulko.com?part=2 ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-21 14:57 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-10-21 9:21 [PATCH v3 0/2] arm: dts: nxp: imx: add Draeger M48 CPU board Petko Manolov 2026-10-21 9:21 ` [PATCH v3 1/2] dt-bindings: arm: fsl: add Draeger M48 dual-cpu board Petko Manolov 2026-10-21 9:32 ` sashiko-bot 2026-10-21 14:57 ` Frank Li 2026-10-21 9:21 ` [PATCH v3 2/2] arm: dts: nxp: imx: Add devicetree files for M48 Petko Manolov 2026-10-21 9:43 ` sashiko-bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox