* [PATCH v7 1/3] dt-bindings: vendor-prefixes: add Draeger AG
2026-09-21 9:07 [PATCH v7 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
@ 2026-09-21 9:07 ` Petko Manolov
2026-09-21 9:07 ` [PATCH v7 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
2026-09-21 9:07 ` [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2 siblings, 0 replies; 8+ messages in thread
From: Petko Manolov @ 2026-09-21 9:07 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] 8+ messages in thread* [PATCH v7 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board
2026-09-21 9:07 [PATCH v7 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
2026-09-21 9:07 ` [PATCH v7 1/3] dt-bindings: vendor-prefixes: add Draeger AG Petko Manolov
@ 2026-09-21 9:07 ` Petko Manolov
2026-09-28 5:53 ` Krzysztof Kozlowski
2026-09-21 9:07 ` [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2 siblings, 1 reply; 8+ messages in thread
From: Petko Manolov @ 2026-09-21 9:07 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..e1e4bba248ad 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,m48
- ebv,socrates
- macnica,sodia
- novtech,chameleon96
--
2.47.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v7 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board
2026-09-21 9:07 ` [PATCH v7 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
@ 2026-09-28 5:53 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-09-28 5:53 UTC (permalink / raw)
To: Petko Manolov
Cc: linux-kernel, devicetree, robh, krzk+dt, conor+dt, dinguyen,
arnemaximilian.richter, martynas.grybauskas
On Mon, Sep 21, 2026 at 12:07:32PM +0300, 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(+)
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-21 9:07 [PATCH v7 0/3] arm: dts: altera: add Draeger M48 CPU board Petko Manolov
2026-09-21 9:07 ` [PATCH v7 1/3] dt-bindings: vendor-prefixes: add Draeger AG Petko Manolov
2026-09-21 9:07 ` [PATCH v7 2/3] dt-bindings: arm: altera: add Draeger M48 dual-cpu board Petko Manolov
@ 2026-09-21 9:07 ` Petko Manolov
2026-09-21 9:17 ` sashiko-bot
2026-09-28 14:18 ` Dinh Nguyen
2 siblings, 2 replies; 8+ messages in thread
From: Petko Manolov @ 2026-09-21 9:07 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 | 123 ++++++++++++++++++
2 files changed, 124 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..dae809c02adb
--- /dev/null
+++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
@@ -0,0 +1,123 @@
+// 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,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;
+ };
+
+ soc {
+ gpio3: gpio@ff202000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "snps,dw-apb-gpio";
+ reg = <0xff202000 0x20>;
+
+ portd: gpio-controller@0 {
+ compatible = "snps,dw-apb-gpio-port";
+ gpio-controller;
+ #gpio-cells = <2>;
+ snps,nr-gpios = <2>;
+ reg = <0>;
+ };
+ };
+
+ gpio4: gpio@ff202020 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "snps,dw-apb-gpio";
+ reg = <0xff202020 0x20>;
+
+ porte: gpio-controller@0 {
+ compatible = "snps,dw-apb-gpio-port";
+ gpio-controller;
+ #gpio-cells = <2>;
+ snps,nr-gpios = <2>;
+ reg = <0>;
+ };
+ };
+ };
+};
+
+&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] 8+ messages in thread* Re: [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-21 9:07 ` [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
@ 2026-09-21 9:17 ` sashiko-bot
2026-09-28 14:18 ` Dinh Nguyen
1 sibling, 0 replies; 8+ messages in thread
From: sashiko-bot @ 2026-09-21 9:17 UTC (permalink / raw)
To: Petko Manolov; +Cc: conor+dt, robh, devicetree
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] dts: out-of-bounds IO read in gpio3/4 due to truncated reg size
--
commit 3110a5bc839de956f70473c018ac9b733616c145
Author: Petko Manolov <petko.manolov@konsulko.com>
arm: dts: altera: add Draeger M48 CPU Module
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.
> 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..dae809c02adb8
> --- /dev/null
> +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
> @@ -0,0 +1,123 @@
> +// SPDX-License-Identifier: GPL-2.0+
[ ... ]
> + soc {
> + gpio3: gpio@ff202000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "snps,dw-apb-gpio";
> + reg = <0xff202000 0x20>;
[Severity: High]
Does mapping a 0x20 byte resource window for the snps,dw-apb-gpio driver
trigger an out-of-bounds IO memory access on boot?
During probe in drivers/gpio/gpio-dwapb.c, dwapb_gpio_probe() calls
dwapb_gpio_add_port(), which passes gpio->regs + 0x50 (GPIO_EXT_PORTA)
to gpio_generic_chip_init(). This results in an unconditional read from
offset 0x50, which is outside the mapped 0x20 byte window.
On the Altera SoCFPGA's lightweight HPS-to-FPGA bridge, reading unmapped
addresses typically triggers an AXI bus error, leading to a synchronous
external abort and a kernel panic.
Is it possible the hardware here is actually an Altera PIO core
(altr,pio-1.0) given the 0x20 byte size?
> +
> + portd: gpio-controller@0 {
> + compatible = "snps,dw-apb-gpio-port";
> + gpio-controller;
> + #gpio-cells = <2>;
> + snps,nr-gpios = <2>;
> + reg = <0>;
> + };
> + };
> +
> + gpio4: gpio@ff202020 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "snps,dw-apb-gpio";
> + reg = <0xff202020 0x20>;
[Severity: High]
Similarly, does mapping a 0x20 byte window for gpio4 at 0xff202020 cause
the same out-of-bounds IO read from offset 0x50 into unmapped MMIO space
during dwapb_gpio_add_port()?
> +
> + porte: gpio-controller@0 {
> + compatible = "snps,dw-apb-gpio-port";
> + gpio-controller;
> + #gpio-cells = <2>;
> + snps,nr-gpios = <2>;
> + reg = <0>;
> + };
> + };
> + };
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260921090735.3174292-1-petko.manolov@konsulko.com?part=3
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-21 9:07 ` [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module Petko Manolov
2026-09-21 9:17 ` sashiko-bot
@ 2026-09-28 14:18 ` Dinh Nguyen
2026-09-29 13:38 ` Petko Manolov
1 sibling, 1 reply; 8+ messages in thread
From: Dinh Nguyen @ 2026-09-28 14:18 UTC (permalink / raw)
To: Petko Manolov, linux-kernel
Cc: devicetree, robh, krzk+dt, conor+dt, arnemaximilian.richter,
martynas.grybauskas
On 9/21/26 04:07, 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 | 123 ++++++++++++++++++
> 2 files changed, 124 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..dae809c02adb
> --- /dev/null
> +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_draeger_m48.dts
> @@ -0,0 +1,123 @@
> +// 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,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;
> + };
> +
> + soc {
> + gpio3: gpio@ff202000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "snps,dw-apb-gpio";
> + reg = <0xff202000 0x20>;
> +
> + portd: gpio-controller@0 {
> + compatible = "snps,dw-apb-gpio-port";
> + gpio-controller;
> + #gpio-cells = <2>;
> + snps,nr-gpios = <2>;
> + reg = <0>;
> + };
> + };
> +
> + gpio4: gpio@ff202020 {
Any chance you can point me the where you got this information for gpio3
and gpio4?
According to all my documentations, the Cyclone5 SoCFPGA has 3 GPIO
ports, and those are already mapped in the DTSI. The address space that
you have specified here is for FPGA bridge. Which leads me to believe
that this GPIO is in the FPGA.
Thanks,
Dinh
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v7 3/3] arm: dts: altera: add Draeger M48 CPU Module
2026-09-28 14:18 ` Dinh Nguyen
@ 2026-09-29 13:38 ` Petko Manolov
0 siblings, 0 replies; 8+ messages in thread
From: Petko Manolov @ 2026-09-29 13:38 UTC (permalink / raw)
To: Dinh Nguyen
Cc: linux-kernel, devicetree, robh, krzk+dt, conor+dt,
arnemaximilian.richter, martynas.grybauskas
On 26-09-28 09:18:03, Dinh Nguyen wrote:
>
> According to all my documentations, the Cyclone5 SoCFPGA has 3 GPIO ports, and
> those are already mapped in the DTSI. The address space that you have
> specified here is for FPGA bridge. Which leads me to believe that this GPIO is
> in the FPGA.
You are correct. These bindigs are some sort of leftover and Draeger folks
confirmed that they should be removed.
Sending out new patch series...
Petko
^ permalink raw reply [flat|nested] 8+ messages in thread