* [PATCH v8 0/3] arm: dts: altera: add Draeger M48 CPU board
@ 2026-09-29 13:40 Petko Manolov
2026-09-29 13:40 ` [PATCH v8 1/3] dt-bindings: vendor-prefixes: add Draeger AG Petko Manolov
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Petko Manolov @ 2026-09-29 13:40 UTC (permalink / raw)
To: linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, dinguyen,
arnemaximilian.richter, martynas.grybauskas, Petko Manolov
Adding the device trees for “Dräger M48 on NXP i.MX6 (Q) 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 SoCFPGA devicetree part.
now in v8:
- modified draeger,m48 to draeger,socfpga-48 because it is more consistent
with its other imx counterparts imx6q-m48 and imx6dl-m48
- dropped gpio3 and gpio4 bindings;
new in v7:
- replaced module with board as this seems to be confusing to some;
- add Acked-by: Conor Dooley <conor.dooley@microchip.com> tag;
*** BLURB HERE ***
Petko Manolov (3):
dt-bindings: vendor-prefixes: add Draeger AG
dt-bindings: arm: altera: add Draeger M48 dual-cpu board
arm: dts: altera: add Draeger M48 CPU Module
.../devicetree/bindings/arm/altera.yaml | 1 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm/boot/dts/intel/socfpga/Makefile | 1 +
.../socfpga/socfpga_cyclone5_draeger_m48.dts | 91 +++++++++++++++++++
4 files changed, 95 insertions(+)
create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
--
2.47.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v8 1/3] dt-bindings: vendor-prefixes: add Draeger AG
2026-09-29 13:40 [PATCH v8 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
@ 2026-09-29 13:40 ` Petko Manolov
2026-09-29 13:40 ` [PATCH v8 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
2026-09-29 13:40 ` [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2 siblings, 0 replies; 7+ messages in thread
From: Petko Manolov @ 2026-09-29 13:40 UTC (permalink / raw)
To: linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, dinguyen,
arnemaximilian.richter, martynas.grybauskas, Petko Manolov,
Conor Dooley
Add a vendor prefix for Draegar AG, which is Draegerwerk AG & Co. KGaA
Link: https://www.draeger.com/de_de/Home
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Petko Manolov <petko.manolov@konsulko.com>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index ba2002969373..276d62b848d5 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -467,6 +467,8 @@ patternProperties:
description: DPTechnics
"^dptel,.*":
description: Guangdong Dapu Telecom Co., Ltd.
+ "^draeger,.*":
+ description: Draegerwerk AG & Co. KGaA
"^dragino,.*":
description: Dragino Technology Co., Limited
"^dream,.*":
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v8 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board
2026-09-29 13:40 [PATCH v8 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
2026-09-29 13:40 ` [PATCH v8 1/3] dt-bindings: vendor-prefixes: add Draeger AG Petko Manolov
@ 2026-09-29 13:40 ` Petko Manolov
2026-09-29 15:44 ` Dinh Nguyen
2026-09-29 13:40 ` [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2 siblings, 1 reply; 7+ messages in thread
From: Petko Manolov @ 2026-09-29 13:40 UTC (permalink / raw)
To: linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, dinguyen,
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.
Signed-off-by: Petko Manolov <petko.manolov@konsulko.com>
---
Documentation/devicetree/bindings/arm/altera.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/altera.yaml b/Documentation/devicetree/bindings/arm/altera.yaml
index 3030cf46fe74..b67dc10b0a11 100644
--- a/Documentation/devicetree/bindings/arm/altera.yaml
+++ b/Documentation/devicetree/bindings/arm/altera.yaml
@@ -47,6 +47,7 @@ properties:
- enum:
- altr,socfpga-cyclone5-socdk
- denx,mcvevk
+ - draeger,socfpga-m48
- ebv,socrates
- macnica,sodia
- novtech,chameleon96
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-29 13:40 [PATCH v8 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
2026-09-29 13:40 ` [PATCH v8 1/3] dt-bindings: vendor-prefixes: add Draeger AG Petko Manolov
2026-09-29 13:40 ` [PATCH v8 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
@ 2026-09-29 13:40 ` Petko Manolov
2026-09-29 13:53 ` sashiko-bot
2026-09-29 16:59 ` Dinh Nguyen
2 siblings, 2 replies; 7+ messages in thread
From: Petko Manolov @ 2026-09-29 13:40 UTC (permalink / raw)
To: linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, dinguyen,
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.
This one adds the DT for the Altera SoCFPGA part of M48.
Signed-off-by: Petko Manolov <petko.manolov@konsulko.com>
---
arch/arm/boot/dts/intel/socfpga/Makefile | 1 +
.../socfpga/socfpga_cyclone5_draeger_m48.dts | 91 +++++++++++++++++++
2 files changed, 92 insertions(+)
create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
diff --git a/arch/arm/boot/dts/intel/socfpga/Makefile b/arch/arm/boot/dts/intel/socfpga/Makefile
index 8df0976da01c..cdcea11abdfa 100644
--- a/arch/arm/boot/dts/intel/socfpga/Makefile
+++ b/arch/arm/boot/dts/intel/socfpga/Makefile
@@ -11,6 +11,7 @@ dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += \
socfpga_arria10_mercury_aa1_st1_emmc.dtb \
socfpga_arria10_mercury_aa1_st1_qspi.dtb \
socfpga_arria10_mercury_aa1_st1_sdmmc.dtb \
+ socfpga_cyclone5_draeger_m48.dtb \
socfpga_cyclone5_mercury_sa1_pe1_emmc.dtb \
socfpga_cyclone5_mercury_sa1_pe1_qspi.dtb \
socfpga_cyclone5_mercury_sa1_pe1_sdmmc.dtb \
diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
new file mode 100644
index 000000000000..85daa839c314
--- /dev/null
+++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
@@ -0,0 +1,91 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2020 Draeger and Licensors, info@draeger.com
+ */
+#include "socfpga_cyclone5.dtsi"
+
+/ {
+ model = "Draeger M48 Cyclone V SoC";
+ compatible = "draeger,socfpga-m48", "altr,socfpga-cyclone5", "altr,socfpga";
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ memory@0 {
+ name = "memory";
+ device_type = "memory";
+ reg = <0x0 0x40000000>;
+ };
+
+ aliases {
+ /* this allow the ethaddr uboot environmnet variable contents
+ * to be added to the gmac0 device tree blob.
+ */
+ ethernet0 = &gmac0;
+ };
+};
+
+&gmac0 {
+ status = "okay";
+ phy-mode = "rgmii-id";
+ rxc-skew-ps = <1860>;
+ rxd0-skew-ps = <0>;
+ rxd1-skew-ps = <0>;
+ rxd2-skew-ps = <0>;
+ rxd3-skew-ps = <0>;
+ rxdv-skew-ps = <0>;
+ txc-skew-ps = <900>;
+ txd0-skew-ps = <0>;
+ txd1-skew-ps = <0>;
+ txd2-skew-ps = <0>;
+ txd3-skew-ps = <0>;
+ txen-skew-ps = <0>;
+};
+
+&gpio0 {
+ status = "okay";
+};
+
+&gpio1 {
+ status = "okay";
+};
+
+&gpio2 {
+ status = "okay";
+};
+
+&i2c0 {
+ status = "okay";
+ clock-frequency = <100000>;
+
+ eeprom_mac: eeprom@50 {
+ compatible = "atmel,24c08";
+ reg = <0x50>;
+ pagesize = <16>;
+ };
+};
+
+&mmc0 {
+ status = "okay";
+};
+
+&qspi {
+ status = "okay";
+
+ flash: flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "micron,n25q256a", "jedec,spi-nor";
+ reg = <0>;
+
+ /* chip select */
+ spi-max-frequency = <100000000>;
+ m25p,fast-read;
+ cdns,read-delay = <4>;
+ cdns,tshsl-ns = <50>;
+ cdns,tsd2d-ns = <50>;
+ cdns,tchsh-ns = <4>;
+ cdns,tslch-ns = <4>;
+ };
+};
--
2.47.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-29 13:40 ` [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
@ 2026-09-29 13:53 ` sashiko-bot
2026-09-29 16:59 ` Dinh Nguyen
1 sibling, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-09-29 13:53 UTC (permalink / raw)
To: Petko Manolov; +Cc: robh, conor+dt, devicetree
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [Low] dts: unnecessary address/size cells in flash leaf node
- [Low] dts: deprecated name property in memory node
- [Low] dts: deprecated placement of PHY skew properties in MAC node
- [Low] dts: typo in aliases node comment
--
commit b96c17a8d8e5c99eb2bdb2439e91d0063679636c
Author: Petko Manolov <petko.manolov@konsulko.com>
arm: dts: altera: add Draeger M48 CPU Module
This commit introduces device tree support for the Altera SoCFPGA Cyclone 5
component of the heterogeneous Draeger M48 CPU module. The board boots
independently via QSPI and monitors a companion i.MX6 processor.
> diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
> new file mode 100644
> index 0000000000000..85daa839c3147
> --- /dev/null
> +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
> @@ -0,0 +1,91 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * (C) Copyright 2020 Draeger and Licensors, info@draeger.com
> + */
> +#include "socfpga_cyclone5.dtsi"
> +
> +/ {
> + model = "Draeger M48 Cyclone V SoC";
> + compatible = "draeger,socfpga-m48", "altr,socfpga-cyclone5", "altr,socfpga";
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + memory@0 {
> + name = "memory";
[Severity: Low]
Is this name property intended? Explicit use of the name property in the
memory node is deprecated by the Devicetree Specification as it is
automatically generated by DTC. Leaving it here generates a name_properties
DTC warning.
> + device_type = "memory";
> + reg = <0x0 0x40000000>;
> + };
> +
> + aliases {
> + /* this allow the ethaddr uboot environmnet variable contents
[Severity: Low]
This isn't a bug, but there's a typo in this comment. The word "environmnet"
should be "environment".
> + * to be added to the gmac0 device tree blob.
> + */
> + ethernet0 = &gmac0;
> + };
> +};
> +
> +&gmac0 {
> + status = "okay";
> + phy-mode = "rgmii-id";
> + rxc-skew-ps = <1860>;
> + rxd0-skew-ps = <0>;
[Severity: Low]
Are these PHY-specific skew properties attached to the correct node?
Placing them directly in the &gmac0 MAC node relies on a deprecated driver
fallback mechanism (documented in drivers/net/phy/micrel.c). They should
normally be attached to a dedicated mdio PHY sub-node.
> + rxd1-skew-ps = <0>;
> + rxd2-skew-ps = <0>;
> + rxd3-skew-ps = <0>;
> + rxdv-skew-ps = <0>;
> + txc-skew-ps = <900>;
> + txd0-skew-ps = <0>;
> + txd1-skew-ps = <0>;
> + txd2-skew-ps = <0>;
> + txd3-skew-ps = <0>;
> + txen-skew-ps = <0>;
> +};
[ ... ]
> +&qspi {
> + status = "okay";
> +
> + flash: flash@0 {
> + #address-cells = <1>;
> + #size-cells = <1>;
[Severity: Low]
Are these cells necessary?
The flash@0 node lacks child partitions, leaving these properties dangling
and triggering an avoid_unnecessary_addr_size DTC warning during
compilation.
> + compatible = "micron,n25q256a", "jedec,spi-nor";
> + reg = <0>;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260929134058.819371-1-petko.manolov@konsulko.com?part=3
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v8 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board
2026-09-29 13:40 ` [PATCH v8 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
@ 2026-09-29 15:44 ` Dinh Nguyen
0 siblings, 0 replies; 7+ messages in thread
From: Dinh Nguyen @ 2026-09-29 15:44 UTC (permalink / raw)
To: Petko Manolov, linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, arnemaximilian.richter,
martynas.grybauskas
On 9/29/26 08:40, Petko Manolov wrote:
> 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.
>
> Signed-off-by: Petko Manolov <petko.manolov@konsulko.com>
> ---
> Documentation/devicetree/bindings/arm/altera.yaml | 1 +
> 1 file changed, 1 insertion(+)
You forgot to include Acked-by: on this patch[1]. I'll add it when I
apply it, so no need to resend another patch. Just a friendly reminder
for next time.
Dinh
[1]
https://lore.kernel.org/all/20260928-quantum-cuscus-of-jest-1d2f7b@quoll/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-29 13:40 ` [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2026-09-29 13:53 ` sashiko-bot
@ 2026-09-29 16:59 ` Dinh Nguyen
1 sibling, 0 replies; 7+ messages in thread
From: Dinh Nguyen @ 2026-09-29 16:59 UTC (permalink / raw)
To: Petko Manolov, linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, arnemaximilian.richter,
martynas.grybauskas
On 9/29/26 08:40, Petko Manolov wrote:
> 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.
>
> This one adds the DT for the Altera SoCFPGA part of M48.
>
> Signed-off-by: Petko Manolov <petko.manolov@konsulko.com>
> ---
> arch/arm/boot/dts/intel/socfpga/Makefile | 1 +
> .../socfpga/socfpga_cyclone5_draeger_m48.dts | 91 +++++++++++++++++++
> 2 files changed, 92 insertions(+)
> create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
>
> diff --git a/arch/arm/boot/dts/intel/socfpga/Makefile b/arch/arm/boot/dts/intel/socfpga/Makefile
> index 8df0976da01c..cdcea11abdfa 100644
> --- a/arch/arm/boot/dts/intel/socfpga/Makefile
> +++ b/arch/arm/boot/dts/intel/socfpga/Makefile
> @@ -11,6 +11,7 @@ dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += \
> socfpga_arria10_mercury_aa1_st1_emmc.dtb \
> socfpga_arria10_mercury_aa1_st1_qspi.dtb \
> socfpga_arria10_mercury_aa1_st1_sdmmc.dtb \
> + socfpga_cyclone5_draeger_m48.dtb \
> socfpga_cyclone5_mercury_sa1_pe1_emmc.dtb \
> socfpga_cyclone5_mercury_sa1_pe1_qspi.dtb \
> socfpga_cyclone5_mercury_sa1_pe1_sdmmc.dtb \
> diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
> new file mode 100644
> index 000000000000..85daa839c314
> --- /dev/null
> +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
> @@ -0,0 +1,91 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * (C) Copyright 2020 Draeger and Licensors, info@draeger.com
> + */
> +#include "socfpga_cyclone5.dtsi"
> +
> +/ {
> + model = "Draeger M48 Cyclone V SoC";
> + compatible = "draeger,socfpga-m48", "altr,socfpga-cyclone5", "altr,socfpga";
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + memory@0 {
> + name = "memory";
Sashiko's comment about this is true.
> + device_type = "memory";
> + reg = <0x0 0x40000000>;
> + };
> +
> + aliases {
> + /* this allow the ethaddr uboot environmnet variable contents
s/environmnet/environment
> + * to be added to the gmac0 device tree blob.
> + */
> + ethernet0 = &gmac0;
> + };
> +};
> +
> +&gmac0 {
> + status = "okay";
> + phy-mode = "rgmii-id";
> + rxc-skew-ps = <1860>;
> + rxd0-skew-ps = <0>;
> + rxd1-skew-ps = <0>;
> + rxd2-skew-ps = <0>;
> + rxd3-skew-ps = <0>;
> + rxdv-skew-ps = <0>;
> + txc-skew-ps = <900>;
> + txd0-skew-ps = <0>;
> + txd1-skew-ps = <0>;
> + txd2-skew-ps = <0>;
> + txd3-skew-ps = <0>;
> + txen-skew-ps = <0>;
Sashiko's comment about these PHY properties is also correct. Take a
look at commit dabb5db17c06 ("ARM: dts: imx6qdl: move phy properties
into phy device node").
> +};
> +
> +&gpio0 {
> + status = "okay";
> +};
> +
> +&gpio1 {
> + status = "okay";
> +};
> +
> +&gpio2 {
> + status = "okay";
> +};
> +
> +&i2c0 {
> + status = "okay";
> + clock-frequency = <100000>;
> +
> + eeprom_mac: eeprom@50 {
> + compatible = "atmel,24c08";
> + reg = <0x50>;
> + pagesize = <16>;
> + };
> +};
> +
> +&mmc0 {
> + status = "okay";
> +};
> +
> +&qspi {
> + status = "okay";
> +
> + flash: flash@0 {
> + #address-cells = <1>;
> + #size-cells = <1>;
Sashiko's message here is a false positive. You can ignore.
Thanks,
Dinh
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-09-29 16:59 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-29 13:40 [PATCH v8 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
2026-09-29 13:40 ` [PATCH v8 1/3] dt-bindings: vendor-prefixes: add Draeger AG Petko Manolov
2026-09-29 13:40 ` [PATCH v8 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
2026-09-29 15:44 ` Dinh Nguyen
2026-09-29 13:40 ` [PATCH v8 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2026-09-29 13:53 ` sashiko-bot
2026-09-29 16:59 ` Dinh Nguyen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox