* [PATCH v2 0/2] arm64: dts: socfpga: agilex: add SoCDK multi-QSPI board @ 2026-10-06 2:54 genevieve.chan 2026-10-06 2:54 ` [PATCH v2 1/2] dt-bindings: arm: altera: add Agilex " genevieve.chan 2026-10-06 2:54 ` [PATCH v2 2/2] arm64: dts: socfpga: agilex: " genevieve.chan 0 siblings, 2 replies; 6+ messages in thread From: genevieve.chan @ 2026-10-06 2:54 UTC (permalink / raw) To: Dinh Nguyen, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: devicetree, linux-kernel From: Genevieve Chan <genevieve.chan@altera.com> The Agilex SoCDK is populated with a single QSPI flash by default. A multi-QSPI daughter board can be fitted in its place. That board connects four Micron MT25QU02G devices (256 MiB each, 1 GiB total) to the HPS QSPI controller on chip selects 0-3. Each device is one "Boot and fpga data" partition covering the whole flash, and is described in quad mode at 25 MHz. This is a board-level population difference, in the same way the existing SoCDK eMMC and NAND variants differ from the default SoCDK. The HPS is the Agilex SoC, later marketed as Agilex 7 F-Series. The programming model is unchanged, so the board falls back to "intel,socfpga-agilex" and does not add an F-Series SoC compatible. Agilex 7 M-Series is a different device and already has its own fallback. Patch 1 documents that compatible next to the other Agilex SoCDK boards. Patch 2 adds socfpga_agilex_socdk_multiqspi.dts. UART, Ethernet, USB, SDMMC, LEDs and the watchdog match the SoCDK; the QSPI node is the difference. Changes in v2: - Rename the compatible, DTS filename and model, dropping "agilex7f". - State in the binding patch why the fallback is "intel,socfpga-agilex". - Describe the daughter card instead of restating the diff. Genevieve Chan (2): dt-bindings: arm: altera: add Agilex SoCDK multi-QSPI board arm64: dts: socfpga: agilex: add Agilex SoCDK multi-QSPI board Documentation/devicetree/bindings/arm/altera.yaml | 1 + arch/arm64/boot/dts/intel/Makefile | 1 + .../dts/intel/socfpga_agilex_socdk_multiqspi.dts | 213 +++++++++++++++++++++ 3 files changed, 215 insertions(+) base-commit: 04a1d21330501b113ba04efb81724f1c95ad2db8 -- 2.43.7 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] dt-bindings: arm: altera: add Agilex SoCDK multi-QSPI board 2026-10-06 2:54 [PATCH v2 0/2] arm64: dts: socfpga: agilex: add SoCDK multi-QSPI board genevieve.chan @ 2026-10-06 2:54 ` genevieve.chan 2026-10-07 10:31 ` Conor Dooley 2026-10-06 2:54 ` [PATCH v2 2/2] arm64: dts: socfpga: agilex: " genevieve.chan 1 sibling, 1 reply; 6+ messages in thread From: genevieve.chan @ 2026-10-06 2:54 UTC (permalink / raw) To: Dinh Nguyen, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: devicetree, linux-kernel From: Genevieve Chan <genevieve.chan@altera.com> The Agilex SoCDK can be fitted with a multi-QSPI daughter card in place of the default single-flash QSPI card. The multi-QSPI card carries four Micron MT25QU02G flashes connected to the HPS QSPI controller on chip selects 0-3. The different flash population requires a separate board DTS, hence, add a board compatible for it, following the existing SoCDK variants. The board uses the Agilex SoC (marketed as Agilex 7 F-Series), so it falls back to "intel,socfpga-agilex". Signed-off-by: Genevieve Chan <genevieve.chan@altera.com> --- Changes in v2: - Rename compatible from intel,socfpga-agilex7f-socdk-multiqspi to intel,socfpga-agilex-socdk-multiqspi. - Describe the hardware difference in the commit message. 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 5fce1161210e..01f6323b9a6b 100644 --- a/Documentation/devicetree/bindings/arm/altera.yaml +++ b/Documentation/devicetree/bindings/arm/altera.yaml @@ -97,6 +97,7 @@ properties: - intel,socfpga-agilex-n6000 - intel,socfpga-agilex-socdk - intel,socfpga-agilex-socdk-emmc + - intel,socfpga-agilex-socdk-multiqspi - const: intel,socfpga-agilex - description: Agilex3 boards -- 2.43.7 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: arm: altera: add Agilex SoCDK multi-QSPI board 2026-10-06 2:54 ` [PATCH v2 1/2] dt-bindings: arm: altera: add Agilex " genevieve.chan @ 2026-10-07 10:31 ` Conor Dooley 0 siblings, 0 replies; 6+ messages in thread From: Conor Dooley @ 2026-10-07 10:31 UTC (permalink / raw) To: genevieve.chan Cc: Dinh Nguyen, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel [-- Attachment #1: Type: text/plain, Size: 75 bytes --] Acked-by: Conor Dooley <conor.dooley@microchip.com> pw-bot: not-applicable [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] arm64: dts: socfpga: agilex: add Agilex SoCDK multi-QSPI board 2026-10-06 2:54 [PATCH v2 0/2] arm64: dts: socfpga: agilex: add SoCDK multi-QSPI board genevieve.chan 2026-10-06 2:54 ` [PATCH v2 1/2] dt-bindings: arm: altera: add Agilex " genevieve.chan @ 2026-10-06 2:54 ` genevieve.chan 2026-10-07 13:43 ` Dinh Nguyen 1 sibling, 1 reply; 6+ messages in thread From: genevieve.chan @ 2026-10-06 2:54 UTC (permalink / raw) To: Dinh Nguyen, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: devicetree, linux-kernel From: Genevieve Chan <genevieve.chan@altera.com> Add a device tree for the Agilex SoCDK fitted with the multi-QSPI daughter board. The daughter board replaces the single QSPI flash of the default SoCDK with four Micron MT25QU02G flashes on chip selects 0-3, which allows the system to use up to 1 GiB of QSPI storage. The board is otherwise identical to the SoCDK and builds on socfpga_agilex.dtsi. Signed-off-by: Genevieve Chan <genevieve.chan@altera.com> --- Changes in v2: - Rename file, compatible and model to drop the "agilex7f" prefix. - Reword commit message to describe the hardware. arch/arm64/boot/dts/intel/Makefile | 1 + .../intel/socfpga_agilex_socdk_multiqspi.dts | 213 ++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts diff --git a/arch/arm64/boot/dts/intel/Makefile b/arch/arm64/boot/dts/intel/Makefile index b52cd2330cef..071bad408688 100644 --- a/arch/arm64/boot/dts/intel/Makefile +++ b/arch/arm64/boot/dts/intel/Makefile @@ -2,6 +2,7 @@ dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga_agilex_n6000.dtb \ socfpga_agilex_socdk.dtb \ socfpga_agilex_socdk_emmc.dtb \ + socfpga_agilex_socdk_multiqspi.dtb \ socfpga_agilex_socdk_nand.dtb \ socfpga_agilex3_socdk.dtb \ socfpga_agilex5_socdk.dtb \ diff --git a/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts b/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts new file mode 100644 index 000000000000..0bf087fa7553 --- /dev/null +++ b/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts @@ -0,0 +1,213 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2026, Intel Corporation + */ +#include "socfpga_agilex.dtsi" + +/ { + model = "SoCFPGA Agilex SoCDK multi-QSPI daughter board"; + compatible = "intel,socfpga-agilex-socdk-multiqspi", "intel,socfpga-agilex"; + + aliases { + serial0 = &uart0; + ethernet0 = &gmac0; + ethernet1 = &gmac1; + ethernet2 = &gmac2; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + leds { + compatible = "gpio-leds"; + led0 { + label = "hps_led0"; + gpios = <&portb 20 GPIO_ACTIVE_HIGH>; + }; + + led1 { + label = "hps_led1"; + gpios = <&portb 19 GPIO_ACTIVE_HIGH>; + }; + + led2 { + label = "hps_led2"; + gpios = <&portb 21 GPIO_ACTIVE_HIGH>; + }; + }; + + memory@80000000 { + device_type = "memory"; + /* We expect the bootloader to fill in the reg */ + reg = <0 0x80000000 0 0>; + }; +}; + +&gpio1 { + status = "okay"; +}; + +&gmac0 { + status = "okay"; + /* PHY delays are configured via skew properties */ + phy-mode = "rgmii"; + phy-handle = <&phy0>; + + max-frame-size = <9000>; + + mdio0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dwmac-mdio"; + phy0: ethernet-phy@4 { + reg = <4>; + + txd0-skew-ps = <0>; /* -420ps */ + txd1-skew-ps = <0>; /* -420ps */ + txd2-skew-ps = <0>; /* -420ps */ + txd3-skew-ps = <0>; /* -420ps */ + rxd0-skew-ps = <420>; /* 0ps */ + rxd1-skew-ps = <420>; /* 0ps */ + rxd2-skew-ps = <420>; /* 0ps */ + rxd3-skew-ps = <420>; /* 0ps */ + txen-skew-ps = <0>; /* -420ps */ + txc-skew-ps = <900>; /* 0ps */ + rxdv-skew-ps = <420>; /* 0ps */ + rxc-skew-ps = <1680>; /* 780ps */ + }; + }; +}; + +&mmc { + status = "okay"; + cap-sd-highspeed; + broken-cd; + bus-width = <4>; + clk-phase-sd-hs = <0>, <135>; +}; + +&osc1 { + clock-frequency = <25000000>; +}; + +&uart0 { + status = "okay"; +}; + +&usb0 { + status = "okay"; + disable-over-current; +}; + +&watchdog0 { + status = "okay"; +}; + +&qspi { + status = "okay"; + + flash@0 { + compatible = "micron,mt25qu02g", "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + m25p,fast-read; + cdns,read-delay = <2>; + cdns,tshsl-ns = <50>; + cdns,tsd2d-ns = <50>; + cdns,tchsh-ns = <4>; + cdns,tslch-ns = <4>; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + qspi_boot0: partition@0 { + label = "Boot and fpga data"; + reg = <0x0 0x10000000>; + }; + }; + }; + + flash@1 { + compatible = "micron,mt25qu02g", "jedec,spi-nor"; + reg = <1>; + spi-max-frequency = <25000000>; + + m25p,fast-read; + cdns,read-delay = <2>; + cdns,tshsl-ns = <50>; + cdns,tsd2d-ns = <50>; + cdns,tchsh-ns = <4>; + cdns,tslch-ns = <4>; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + qspi_boot1: partition@0 { + label = "Boot and fpga data"; + reg = <0x0 0x10000000>; + }; + }; + }; + + flash@2 { + compatible = "micron,mt25qu02g", "jedec,spi-nor"; + reg = <2>; + spi-max-frequency = <25000000>; + + m25p,fast-read; + cdns,read-delay = <2>; + cdns,tshsl-ns = <50>; + cdns,tsd2d-ns = <50>; + cdns,tchsh-ns = <4>; + cdns,tslch-ns = <4>; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + qspi_boot2: partition@0 { + label = "Boot and fpga data"; + reg = <0x0 0x10000000>; + }; + }; + }; + + flash@3 { + compatible = "micron,mt25qu02g", "jedec,spi-nor"; + reg = <3>; + spi-max-frequency = <25000000>; + + m25p,fast-read; + cdns,read-delay = <2>; + cdns,tshsl-ns = <50>; + cdns,tsd2d-ns = <50>; + cdns,tchsh-ns = <4>; + cdns,tslch-ns = <4>; + spi-tx-bus-width = <4>; + spi-rx-bus-width = <4>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + qspi_boot3: partition@0 { + label = "Boot and fpga data"; + reg = <0x0 0x10000000>; + }; + }; + }; +}; -- 2.43.7 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: socfpga: agilex: add Agilex SoCDK multi-QSPI board 2026-10-06 2:54 ` [PATCH v2 2/2] arm64: dts: socfpga: agilex: " genevieve.chan @ 2026-10-07 13:43 ` Dinh Nguyen 2026-10-12 7:30 ` Chan, Genevieve 0 siblings, 1 reply; 6+ messages in thread From: Dinh Nguyen @ 2026-10-07 13:43 UTC (permalink / raw) To: genevieve.chan, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: devicetree, linux-kernel NIT: your commit header "arm64: dts: socfpga: agilex: add Agilex SoCDK multi-QSPI board" Avoid using the same name multiple times. Please reword this to arm64: dts: socfpga: agilex: add SoCDK multi-QSPI board or arm64: dts: socfpga: add Agilex SoCDK multi-QSPI board On 10/5/26 21:54, genevieve.chan@altera.com wrote: > From: Genevieve Chan <genevieve.chan@altera.com> > > Add a device tree for the Agilex SoCDK fitted with the multi-QSPI > daughter board. The daughter board replaces the single QSPI flash of > the default SoCDK with four Micron MT25QU02G flashes on chip selects > 0-3, which allows the system to use up to 1 GiB of QSPI storage. > > The board is otherwise identical to the SoCDK and builds on > socfpga_agilex.dtsi. > > Signed-off-by: Genevieve Chan <genevieve.chan@altera.com> > --- > Changes in v2: > - Rename file, compatible and model to drop the "agilex7f" prefix. > - Reword commit message to describe the hardware. > > arch/arm64/boot/dts/intel/Makefile | 1 + > .../intel/socfpga_agilex_socdk_multiqspi.dts | 213 ++++++++++++++++++ > 2 files changed, 214 insertions(+) > create mode 100644 arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts > > diff --git a/arch/arm64/boot/dts/intel/Makefile b/arch/arm64/boot/dts/intel/Makefile > index b52cd2330cef..071bad408688 100644 > --- a/arch/arm64/boot/dts/intel/Makefile > +++ b/arch/arm64/boot/dts/intel/Makefile > @@ -2,6 +2,7 @@ > dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga_agilex_n6000.dtb \ > socfpga_agilex_socdk.dtb \ > socfpga_agilex_socdk_emmc.dtb \ > + socfpga_agilex_socdk_multiqspi.dtb \ > socfpga_agilex_socdk_nand.dtb \ > socfpga_agilex3_socdk.dtb \ > socfpga_agilex5_socdk.dtb \ > diff --git a/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts b/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts > new file mode 100644 > index 000000000000..0bf087fa7553 > --- /dev/null > +++ b/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts > @@ -0,0 +1,213 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (C) 2026, Intel Corporation > + */ > +#include "socfpga_agilex.dtsi" > + > +/ { > + model = "SoCFPGA Agilex SoCDK multi-QSPI daughter board"; > + compatible = "intel,socfpga-agilex-socdk-multiqspi", "intel,socfpga-agilex"; > + > + aliases { > + serial0 = &uart0; > + ethernet0 = &gmac0; > + ethernet1 = &gmac1; > + ethernet2 = &gmac2; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + leds { > + compatible = "gpio-leds"; > + led0 { > + label = "hps_led0"; > + gpios = <&portb 20 GPIO_ACTIVE_HIGH>; > + }; > + > + led1 { > + label = "hps_led1"; > + gpios = <&portb 19 GPIO_ACTIVE_HIGH>; > + }; > + > + led2 { > + label = "hps_led2"; > + gpios = <&portb 21 GPIO_ACTIVE_HIGH>; > + }; > + }; > + > + memory@80000000 { > + device_type = "memory"; > + /* We expect the bootloader to fill in the reg */ > + reg = <0 0x80000000 0 0>; > + }; > +}; > + > +&gpio1 { > + status = "okay"; > +}; > + > +&gmac0 { > + status = "okay"; > + /* PHY delays are configured via skew properties */ > + phy-mode = "rgmii"; > + phy-handle = <&phy0>; > + > + max-frame-size = <9000>; > + > + mdio0 { > + #address-cells = <1>; > + #size-cells = <0>; > + compatible = "snps,dwmac-mdio"; > + phy0: ethernet-phy@4 { > + reg = <4>; > + > + txd0-skew-ps = <0>; /* -420ps */ > + txd1-skew-ps = <0>; /* -420ps */ > + txd2-skew-ps = <0>; /* -420ps */ > + txd3-skew-ps = <0>; /* -420ps */ > + rxd0-skew-ps = <420>; /* 0ps */ > + rxd1-skew-ps = <420>; /* 0ps */ > + rxd2-skew-ps = <420>; /* 0ps */ > + rxd3-skew-ps = <420>; /* 0ps */ > + txen-skew-ps = <0>; /* -420ps */ > + txc-skew-ps = <900>; /* 0ps */ > + rxdv-skew-ps = <420>; /* 0ps */ > + rxc-skew-ps = <1680>; /* 780ps */ > + }; > + }; > +}; > + > +&mmc { > + status = "okay"; > + cap-sd-highspeed; > + broken-cd; > + bus-width = <4>; > + clk-phase-sd-hs = <0>, <135>; > +}; > + > +&osc1 { > + clock-frequency = <25000000>; > +}; > + > +&uart0 { > + status = "okay"; > +}; > + > +&usb0 { > + status = "okay"; > + disable-over-current; > +}; > + > +&watchdog0 { > + status = "okay"; > +}; > + > +&qspi { > + status = "okay"; > + > + flash@0 { > + compatible = "micron,mt25qu02g", "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <25000000>; The devkit has 100 MHz, why is this card only 25M MHz? > + > + m25p,fast-read; > + cdns,read-delay = <2>; > + cdns,tshsl-ns = <50>; > + cdns,tsd2d-ns = <50>; > + cdns,tchsh-ns = <4>; > + cdns,tslch-ns = <4>; > + spi-tx-bus-width = <4>; > + spi-rx-bus-width = <4>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + qspi_boot0: partition@0 { > + label = "Boot and fpga data"; > + reg = <0x0 0x10000000>; > + }; > + }; > + }; > + > + flash@1 { > + compatible = "micron,mt25qu02g", "jedec,spi-nor"; > + reg = <1>; > + spi-max-frequency = <25000000>; > + > + m25p,fast-read; > + cdns,read-delay = <2>; > + cdns,tshsl-ns = <50>; > + cdns,tsd2d-ns = <50>; > + cdns,tchsh-ns = <4>; > + cdns,tslch-ns = <4>; > + spi-tx-bus-width = <4>; > + spi-rx-bus-width = <4>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + qspi_boot1: partition@0 { > + label = "Boot and fpga data"; > + reg = <0x0 0x10000000>; > + }; > + }; > + }; > + > + flash@2 { > + compatible = "micron,mt25qu02g", "jedec,spi-nor"; > + reg = <2>; > + spi-max-frequency = <25000000>; > + > + m25p,fast-read; > + cdns,read-delay = <2>; > + cdns,tshsl-ns = <50>; > + cdns,tsd2d-ns = <50>; > + cdns,tchsh-ns = <4>; > + cdns,tslch-ns = <4>; > + spi-tx-bus-width = <4>; > + spi-rx-bus-width = <4>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + qspi_boot2: partition@0 { > + label = "Boot and fpga data"; > + reg = <0x0 0x10000000>; > + }; > + }; > + }; > + > + flash@3 { > + compatible = "micron,mt25qu02g", "jedec,spi-nor"; > + reg = <3>; > + spi-max-frequency = <25000000>; > + > + m25p,fast-read; > + cdns,read-delay = <2>; > + cdns,tshsl-ns = <50>; > + cdns,tsd2d-ns = <50>; > + cdns,tchsh-ns = <4>; > + cdns,tslch-ns = <4>; > + spi-tx-bus-width = <4>; > + spi-rx-bus-width = <4>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + qspi_boot3: partition@0 { > + label = "Boot and fpga data"; Sashiko's comment on this is valid. You give these label a unique name, "Boot and fpga data 3" Dinh ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: socfpga: agilex: add Agilex SoCDK multi-QSPI board 2026-10-07 13:43 ` Dinh Nguyen @ 2026-10-12 7:30 ` Chan, Genevieve 0 siblings, 0 replies; 6+ messages in thread From: Chan, Genevieve @ 2026-10-12 7:30 UTC (permalink / raw) To: Dinh Nguyen, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: devicetree, linux-kernel Hi Dinh, Apologies, v3 only addressed one of your three comments on v2. I missed the other two; replies are inline below, and both are fixed in v4. On 7/10/2026 9:43 pm, Dinh Nguyen wrote: > > NIT: your commit header "arm64: dts: socfpga: agilex: add Agilex SoCDK > multi-QSPI board" > > Avoid using the same name multiple times. Please reword this to > > arm64: dts: socfpga: agilex: add SoCDK multi-QSPI board > > or > > arm64: dts: socfpga: add Agilex SoCDK multi-QSPI board > Done in v3, using the first form. > > On 10/5/26 21:54, genevieve.chan@altera.com wrote: >> From: Genevieve Chan <genevieve.chan@altera.com> >> >> Add a device tree for the Agilex SoCDK fitted with the multi-QSPI >> daughter board. The daughter board replaces the single QSPI flash of >> the default SoCDK with four Micron MT25QU02G flashes on chip selects >> 0-3, which allows the system to use up to 1 GiB of QSPI storage. >> >> The board is otherwise identical to the SoCDK and builds on >> socfpga_agilex.dtsi. >> >> Signed-off-by: Genevieve Chan <genevieve.chan@altera.com> >> --- >> Changes in v2: >> - Rename file, compatible and model to drop the "agilex7f" prefix. >> - Reword commit message to describe the hardware. >> >> arch/arm64/boot/dts/intel/Makefile | 1 + >> .../intel/socfpga_agilex_socdk_multiqspi.dts | 213 ++++++++++++++++++ >> 2 files changed, 214 insertions(+) >> create mode 100644 arch/arm64/boot/dts/intel/ >> socfpga_agilex_socdk_multiqspi.dts >> >> diff --git a/arch/arm64/boot/dts/intel/Makefile b/arch/arm64/boot/dts/ >> intel/Makefile >> index b52cd2330cef..071bad408688 100644 >> --- a/arch/arm64/boot/dts/intel/Makefile >> +++ b/arch/arm64/boot/dts/intel/Makefile >> @@ -2,6 +2,7 @@ >> dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga_agilex_n6000.dtb \ >> socfpga_agilex_socdk.dtb \ >> socfpga_agilex_socdk_emmc.dtb \ >> + socfpga_agilex_socdk_multiqspi.dtb \ >> socfpga_agilex_socdk_nand.dtb \ >> socfpga_agilex3_socdk.dtb \ >> socfpga_agilex5_socdk.dtb \ >> diff --git a/arch/arm64/boot/dts/intel/ >> socfpga_agilex_socdk_multiqspi.dts b/arch/arm64/boot/dts/intel/ >> socfpga_agilex_socdk_multiqspi.dts >> new file mode 100644 >> index 000000000000..0bf087fa7553 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/intel/socfpga_agilex_socdk_multiqspi.dts >> @@ -0,0 +1,213 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/* >> + * Copyright (C) 2026, Intel Corporation >> + */ >> +#include "socfpga_agilex.dtsi" >> + >> +/ { >> + model = "SoCFPGA Agilex SoCDK multi-QSPI daughter board"; >> + compatible = "intel,socfpga-agilex-socdk-multiqspi", >> "intel,socfpga-agilex"; >> + >> + aliases { >> + serial0 = &uart0; >> + ethernet0 = &gmac0; >> + ethernet1 = &gmac1; >> + ethernet2 = &gmac2; >> + }; >> + >> + chosen { >> + stdout-path = "serial0:115200n8"; >> + }; >> + >> + leds { >> + compatible = "gpio-leds"; >> + led0 { >> + label = "hps_led0"; >> + gpios = <&portb 20 GPIO_ACTIVE_HIGH>; >> + }; >> + >> + led1 { >> + label = "hps_led1"; >> + gpios = <&portb 19 GPIO_ACTIVE_HIGH>; >> + }; >> + >> + led2 { >> + label = "hps_led2"; >> + gpios = <&portb 21 GPIO_ACTIVE_HIGH>; >> + }; >> + }; >> + >> + memory@80000000 { >> + device_type = "memory"; >> + /* We expect the bootloader to fill in the reg */ >> + reg = <0 0x80000000 0 0>; >> + }; >> +}; >> + >> +&gpio1 { >> + status = "okay"; >> +}; >> + >> +&gmac0 { >> + status = "okay"; >> + /* PHY delays are configured via skew properties */ >> + phy-mode = "rgmii"; >> + phy-handle = <&phy0>; >> + >> + max-frame-size = <9000>; >> + >> + mdio0 { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + compatible = "snps,dwmac-mdio"; >> + phy0: ethernet-phy@4 { >> + reg = <4>; >> + >> + txd0-skew-ps = <0>; /* -420ps */ >> + txd1-skew-ps = <0>; /* -420ps */ >> + txd2-skew-ps = <0>; /* -420ps */ >> + txd3-skew-ps = <0>; /* -420ps */ >> + rxd0-skew-ps = <420>; /* 0ps */ >> + rxd1-skew-ps = <420>; /* 0ps */ >> + rxd2-skew-ps = <420>; /* 0ps */ >> + rxd3-skew-ps = <420>; /* 0ps */ >> + txen-skew-ps = <0>; /* -420ps */ >> + txc-skew-ps = <900>; /* 0ps */ >> + rxdv-skew-ps = <420>; /* 0ps */ >> + rxc-skew-ps = <1680>; /* 780ps */ >> + }; >> + }; >> +}; >> + >> +&mmc { >> + status = "okay"; >> + cap-sd-highspeed; >> + broken-cd; >> + bus-width = <4>; >> + clk-phase-sd-hs = <0>, <135>; >> +}; >> + >> +&osc1 { >> + clock-frequency = <25000000>; >> +}; >> + >> +&uart0 { >> + status = "okay"; >> +}; >> + >> +&usb0 { >> + status = "okay"; >> + disable-over-current; >> +}; >> + >> +&watchdog0 { >> + status = "okay"; >> +}; >> + >> +&qspi { >> + status = "okay"; >> + >> + flash@0 { >> + compatible = "micron,mt25qu02g", "jedec,spi-nor"; >> + reg = <0>; >> + spi-max-frequency = <25000000>; > > The devkit has 100 MHz, why is this card only 25M MHz? Yes, the SoCDK runs its QSPI flash at 100 MHz. The default SoCDK QSPI card has a single flash on the bus. On the multi-QSPI card, the four MT25QU02G devices share SCLK and DQ[3:0], with only the chip selects routed separately. The added load of four devices, plus the longer routing on the daughter card, lowers the clock the bus can run reliably. Altera's multi-QSPI reference design for this card is validated at 25 MHz, so the DTS uses that value. I'll add this to the commit message in v4. >> + >> + m25p,fast-read; >> + cdns,read-delay = <2>; >> + cdns,tshsl-ns = <50>; >> + cdns,tsd2d-ns = <50>; >> + cdns,tchsh-ns = <4>; >> + cdns,tslch-ns = <4>; >> + spi-tx-bus-width = <4>; >> + spi-rx-bus-width = <4>; >> + >> + partitions { >> + compatible = "fixed-partitions"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + >> + qspi_boot0: partition@0 { >> + label = "Boot and fpga data"; >> + reg = <0x0 0x10000000>; >> + }; >> + }; >> + }; >> + >> + flash@1 { >> + compatible = "micron,mt25qu02g", "jedec,spi-nor"; >> + reg = <1>; >> + spi-max-frequency = <25000000>; >> + >> + m25p,fast-read; >> + cdns,read-delay = <2>; >> + cdns,tshsl-ns = <50>; >> + cdns,tsd2d-ns = <50>; >> + cdns,tchsh-ns = <4>; >> + cdns,tslch-ns = <4>; >> + spi-tx-bus-width = <4>; >> + spi-rx-bus-width = <4>; >> + >> + partitions { >> + compatible = "fixed-partitions"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + >> + qspi_boot1: partition@0 { >> + label = "Boot and fpga data"; >> + reg = <0x0 0x10000000>; >> + }; >> + }; >> + }; >> + >> + flash@2 { >> + compatible = "micron,mt25qu02g", "jedec,spi-nor"; >> + reg = <2>; >> + spi-max-frequency = <25000000>; >> + >> + m25p,fast-read; >> + cdns,read-delay = <2>; >> + cdns,tshsl-ns = <50>; >> + cdns,tsd2d-ns = <50>; >> + cdns,tchsh-ns = <4>; >> + cdns,tslch-ns = <4>; >> + spi-tx-bus-width = <4>; >> + spi-rx-bus-width = <4>; >> + >> + partitions { >> + compatible = "fixed-partitions"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + >> + qspi_boot2: partition@0 { >> + label = "Boot and fpga data"; >> + reg = <0x0 0x10000000>; >> + }; >> + }; >> + }; >> + >> + flash@3 { >> + compatible = "micron,mt25qu02g", "jedec,spi-nor"; >> + reg = <3>; >> + spi-max-frequency = <25000000>; >> + >> + m25p,fast-read; >> + cdns,read-delay = <2>; >> + cdns,tshsl-ns = <50>; >> + cdns,tsd2d-ns = <50>; >> + cdns,tchsh-ns = <4>; >> + cdns,tslch-ns = <4>; >> + spi-tx-bus-width = <4>; >> + spi-rx-bus-width = <4>; >> + >> + partitions { >> + compatible = "fixed-partitions"; >> + #address-cells = <1>; >> + #size-cells = <1>; >> + >> + qspi_boot3: partition@0 { >> + label = "Boot and fpga data"; > > Sashiko's comment on this is valid. You give these label a unique name, > "Boot and fpga data 3" > > > Dinh Agreed. I'll make the labels unique in v4. flash@0 keeps "Boot and fpga data" since U-Boot's RSU code looks up the boot partition on CS0 by that exact label. flash@1-3 become "Boot and fpga data 1", "2" and "3". -- Thanks, Genevieve Chan ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-12 7:30 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-10-06 2:54 [PATCH v2 0/2] arm64: dts: socfpga: agilex: add SoCDK multi-QSPI board genevieve.chan 2026-10-06 2:54 ` [PATCH v2 1/2] dt-bindings: arm: altera: add Agilex " genevieve.chan 2026-10-07 10:31 ` Conor Dooley 2026-10-06 2:54 ` [PATCH v2 2/2] arm64: dts: socfpga: agilex: " genevieve.chan 2026-10-07 13:43 ` Dinh Nguyen 2026-10-12 7:30 ` Chan, Genevieve
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®