Devicetree
 help / color / mirror / Atom feed
* [PATCH 0/2] ARM: dts: zynq: Add ALINX AX7Z020B development board
@ 2026-11-08 21:50 Pufan Jin
  2026-11-08 21:50 ` [PATCH 1/2] dt-bindings: soc: xilinx: Add ALINX AX7Z020B board Pufan Jin
  2026-11-08 21:50 ` [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
  0 siblings, 2 replies; 6+ messages in thread
From: Pufan Jin @ 2026-11-08 21:50 UTC (permalink / raw)
  To: Conor Dooley, Krzysztof Kozlowski, Michal Simek, Rob Herring
  Cc: devicetree, linux-arm-kernel, linux-kernel

This series adds device tree support for the ALINX AX7Z020B development
board, based on the Xilinx Zynq-7000 SoC (XC7Z020-2CLG400I).

Note: the "alinx" vendor prefix is not part of this series, it is already
present as commit 1f06cd374a60 ("dt-bindings: vendor-prefixes: Add ALINX
vendor prefix") in the Xilinx for-next branch.

The platform consists of two physical layers:

1. ALINX AC7Z020 system on module (SoM), in zynq-alinx-ac7z020.dtsi:
   - Xilinx XC7Z020-2CLG400I SoC (dual ARM Cortex-A9, 33.333333MHz PS_CLK)
   - 1024 MiB DDR3 SDRAM (2x MT41K256M16RE-125, 32-bit bus)
   - 32 MiB QSPI Flash (Winbond W25Q256FVEI) with 4 MTD partitions
   - DevCFG FPGA manager

2. The AX7Z020B board (AC7Z020 SoM plus carrier board), described in
   zynq-alinx-ax7z020b.dts:
   - Serial console via USB-UART bridge (CP2102, MIO 48-49)
   - MicroSD slot on SDHCI0 (MIO 40-45)
   - Gigabit Ethernet via GEM0 (MIO 16-27 RGMII, MIO 52-53 MDIO)
     with JLSemi JL2121 PHY at MDIO address 1 and RJ45 link/activity LEDs
   - USB 2.0 host via USB3320C ULPI PHY (MIO 28-39), reset on MIO 46
   - Dual CAN buses (CAN0 on MIO 10-11, CAN1 on MIO 12-13) with
     SN65HVD232 transceivers
   - I2C bus on MIO 50-51 with 24LC04 EEPROM, DS1338 RTC and LM75 sensor
   - 2x SMA AD inputs and a spare differential pair wired to XADC aux
     channels VAUX1/VAUX9/VAUX12. XADC is a hard macro accessible from the
     PS without PL configuration, the channels are enabled via the
     xlnx,channels property.

Tested on hardware: boot from SD card, UART console, SD card, GbE with
iperf3 (940+ Mbps) and netdev LED trigger hardware offload, USB host,
dual CAN (SocketCAN at 500 kbps), I2C sensors, QSPI flash MTD partitions,
and XADC temperature/voltage plus the external AD aux channels via IIO.

The DTB passes CHECK_DTBS=y and the bindings pass dt_binding_check.

Pufan Jin (2):
  dt-bindings: soc: xilinx: Add ALINX AX7Z020B board
  ARM: dts: zynq: Add ALINX AX7Z020B development board

 .../bindings/soc/xilinx/xilinx.yaml           |   6 +
 arch/arm/boot/dts/xilinx/Makefile             |   1 +
 .../boot/dts/xilinx/zynq-alinx-ac7z020.dtsi   |  72 +++++++++
 .../boot/dts/xilinx/zynq-alinx-ax7z020b.dts   | 137 ++++++++++++++++++
 4 files changed, 216 insertions(+)
 create mode 100644 arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi
 create mode 100644 arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts

-- 
2.56.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] dt-bindings: soc: xilinx: Add ALINX AX7Z020B board
  2026-11-08 21:50 [PATCH 0/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
@ 2026-11-08 21:50 ` Pufan Jin
  2026-11-08 21:59   ` sashiko-bot
  2026-11-08 21:50 ` [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
  1 sibling, 1 reply; 6+ messages in thread
From: Pufan Jin @ 2026-11-08 21:50 UTC (permalink / raw)
  To: Conor Dooley, Krzysztof Kozlowski, Michal Simek, Rob Herring
  Cc: devicetree, linux-arm-kernel, linux-kernel

Document the ALINX AX7Z020B development board, built around the ALINX
AC7Z020 system on module.

Link: https://www.alinx.com/
Signed-off-by: Pufan Jin <cyan2254650260@gmail.com>
---
 Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml b/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml
index c9f99e0df2..87b331f296 100644
--- a/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml
+++ b/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml
@@ -20,6 +20,7 @@ properties:
       - items:
           - enum:
               - adapteva,parallella
+              - alinx,ac7z020
               - digilent,zynq-zybo
               - digilent,zynq-zybo-z7
               - ebang,ebaz4205
@@ -34,6 +35,11 @@ properties:
               - xlnx,zynq-zc770-xm013
           - const: xlnx,zynq-7000
 
+      - items:
+          - const: alinx,ax7z020b
+          - const: alinx,ac7z020
+          - const: xlnx,zynq-7000
+
       - items:
           - const: avnet,zynq-microzed
           - const: xlnx,zynq-microzed
-- 
2.56.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board
  2026-11-08 21:50 [PATCH 0/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
  2026-11-08 21:50 ` [PATCH 1/2] dt-bindings: soc: xilinx: Add ALINX AX7Z020B board Pufan Jin
@ 2026-11-08 21:50 ` Pufan Jin
  2026-11-08 22:01   ` sashiko-bot
  2026-11-11  2:17   ` Andrew Lunn
  1 sibling, 2 replies; 6+ messages in thread
From: Pufan Jin @ 2026-11-08 21:50 UTC (permalink / raw)
  To: Conor Dooley, Krzysztof Kozlowski, Michal Simek, Rob Herring
  Cc: devicetree, linux-arm-kernel, linux-kernel

Add devicetree support for the ALINX AX7Z020B development board.
The board is built around the ALINX AC7Z020 system on module with a
Zynq-7000 (XC7Z020-2CLG400I) SoC, 1 GB DDR3 SDRAM and 32 MB QSPI
flash, and provides Gigabit Ethernet (JLSemi JL2121 PHY), USB 2.0
host, MicroSD slot, dual CAN buses (SN65HVD232 transceivers on
MIO 10-13), I2C RTC/EEPROM/LM75 and the serial console on UART1.
DevCFG FPGA manager is also enabled.

The two SMA AD inputs and the spare differential pair are wired to
XADC aux channels VAUX1, VAUX9 and VAUX12. The XADC hard macro is
always accessible from the PS, so expose these channels via the
driver's xlnx,channels property.

Link: https://www.alinx.com/
Signed-off-by: Pufan Jin <cyan2254650260@gmail.com>
---
 arch/arm/boot/dts/xilinx/Makefile             |   1 +
 .../boot/dts/xilinx/zynq-alinx-ac7z020.dtsi   |  72 +++++++++
 .../boot/dts/xilinx/zynq-alinx-ax7z020b.dts   | 137 ++++++++++++++++++
 3 files changed, 210 insertions(+)
 create mode 100644 arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi
 create mode 100644 arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts

diff --git a/arch/arm/boot/dts/xilinx/Makefile b/arch/arm/boot/dts/xilinx/Makefile
index 9233e539b1..5c4bcd9492 100644
--- a/arch/arm/boot/dts/xilinx/Makefile
+++ b/arch/arm/boot/dts/xilinx/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_ZYNQ) += \
+	zynq-alinx-ax7z020b.dtb \
 	zynq-cc108.dtb \
 	zynq-ebaz4205.dtb \
 	zynq-microzed.dtb \
diff --git a/arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi b/arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi
new file mode 100644
index 0000000000..2da08424f1
--- /dev/null
+++ b/arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * DTS for ALINX AC7Z020 System on Module
+ *
+ * Copyright (C) 2026 Pufan Jin <cyan2254650260@gmail.com>
+ */
+
+#include "zynq-7000.dtsi"
+
+/ {
+	compatible = "alinx,ac7z020", "xlnx,zynq-7000";
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x40000000>;
+	};
+};
+
+&clkc {
+	ps-clk-frequency = <33333333>;
+};
+
+&devcfg {
+	status = "okay";
+};
+
+/ {
+	pmu@f8891000 {
+		interrupt-affinity = <&cpu0>, <&cpu1>;
+	};
+};
+
+&qspi {
+	bootph-all;
+	status = "okay";
+	num-cs = <1>;
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-tx-bus-width = <1>;
+		spi-rx-bus-width = <4>;
+		spi-max-frequency = <50000000>;
+		m25p,fast-read;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "boot";
+				reg = <0x00000000 0x00500000>;
+			};
+
+			partition@500000 {
+				label = "bootenv";
+				reg = <0x00500000 0x00020000>;
+			};
+
+			partition@520000 {
+				label = "image";
+				reg = <0x00520000 0x00a80000>;
+			};
+
+			partition@fa0000 {
+				label = "spare";
+				reg = <0x00fa0000 0x01060000>;
+			};
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts b/arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts
new file mode 100644
index 0000000000..4dfef96ad3
--- /dev/null
+++ b/arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts
@@ -0,0 +1,137 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * DTS for ALINX AX7Z020B Development Board
+ *
+ * Copyright (C) 2026 Pufan Jin <cyan2254650260@gmail.com>
+ */
+
+/dts-v1/;
+#include "zynq-alinx-ac7z020.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+	model = "ALINX AX7Z020B Development Board";
+	compatible = "alinx,ax7z020b", "alinx,ac7z020", "xlnx,zynq-7000";
+
+	aliases {
+		ethernet0 = &gem0;
+		serial0 = &uart1;
+		serial1 = &uart0;
+		mmc0 = &sdhci0;
+		spi0 = &qspi;
+		i2c0 = &i2c0;
+	};
+
+	chosen {
+		bootargs = "";
+		stdout-path = "serial0:115200n8";
+	};
+
+	usb_phy0: phy0 {
+		compatible = "usb-nop-xceiv";
+		#phy-cells = <0>;
+		reset-gpios = <&gpio0 46 GPIO_ACTIVE_LOW>;
+	};
+};
+
+&adc {
+	xlnx,channels {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		/* AD1: XADC_AD1P/N, E17/D18 */
+		channel@2 {
+			reg = <2>;
+		};
+
+		/* AD9: XADC_AD9P/N, E18/E19 */
+		channel@10 {
+			reg = <10>;
+		};
+
+		/* Spare pair: XADC_AD12P/N, F19/F20 */
+		channel@13 {
+			reg = <13>;
+		};
+	};
+};
+
+&can0 {
+	status = "okay";
+};
+
+&can1 {
+	status = "okay";
+};
+
+&gem0 {
+	status = "okay";
+	phy-mode = "rgmii-id";
+	phy-handle = <&ethernet_phy>;
+
+	ethernet_phy: ethernet-phy@1 {
+		reg = <1>;
+
+		leds {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			led@0 {
+				reg = <0>;
+				color = <LED_COLOR_ID_GREEN>;
+				function = LED_FUNCTION_LAN;
+				default-state = "keep";
+			};
+
+			led@1 {
+				reg = <1>;
+				color = <LED_COLOR_ID_YELLOW>;
+				function = LED_FUNCTION_ACTIVITY;
+				default-state = "keep";
+			};
+		};
+	};
+};
+
+&i2c0 {
+	status = "okay";
+	clock-frequency = <100000>;
+
+	eeprom@50 {
+		compatible = "atmel,24c04";
+		reg = <0x50>;
+		pagesize = <16>;
+	};
+
+	rtc@68 {
+		compatible = "dallas,ds1338";
+		reg = <0x68>;
+	};
+
+	temperature-sensor@48 {
+		compatible = "national,lm75";
+		reg = <0x48>;
+	};
+};
+
+&sdhci0 {
+	bootph-all;
+	status = "okay";
+	disable-wp;
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&uart1 {
+	bootph-all;
+	status = "okay";
+};
+
+&usb0 {
+	status = "okay";
+	dr_mode = "host";
+	usb-phy = <&usb_phy0>;
+};
-- 
2.56.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] dt-bindings: soc: xilinx: Add ALINX AX7Z020B board
  2026-11-08 21:50 ` [PATCH 1/2] dt-bindings: soc: xilinx: Add ALINX AX7Z020B board Pufan Jin
@ 2026-11-08 21:59   ` sashiko-bot
  0 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-11-08 21:59 UTC (permalink / raw)
  To: Pufan Jin; +Cc: devicetree, robh, conor+dt

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Low] dt-bindings: soc: xilinx: undocumented alinx vendor prefix
- [Low] dt-bindings: soc: xilinx: standalone board entry for
  alinx,ac7z020 SoM
--

commit 1e47b64f622951246602cf5bda819bb5e711a84e
Author: Pufan Jin <cyan2254650260@gmail.com>

dt-bindings: soc: xilinx: Add ALINX AX7Z020B board

This commit documents the compatible strings for the ALINX AX7Z020B
development board and the ALINX AC7Z020 system on module in the Xilinx SoC
binding schema.

Link: https://www.alinx.com/

> diff --git a/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml b/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml
> index 5f33f7def6a32..349987962e33f 100644
> --- a/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml
> +++ b/Documentation/devicetree/bindings/soc/xilinx/xilinx.yaml
> @@ -20,6 +20,7 @@ properties:
>        - items:
>            - enum:
>                - adapteva,parallella
> +              - alinx,ac7z020

[Severity: Low]
Should alinx,ac7z020 be listed in this two-item standalone board enum?
AC7Z020 is a System on Module (.dtsi) that cannot boot without a carrier
board, and the three-item entry below already covers the AX7Z020B carrier
board paired with the AC7Z020 SoM.

>                - digilent,zynq-zybo
>                - digilent,zynq-zybo-z7
>                - ebang,ebaz4205
> @@ -34,6 +35,11 @@ properties:
>                - xlnx,zynq-zc770-xm013
>            - const: xlnx,zynq-7000
>  
> +      - items:
> +          - const: alinx,ax7z020b
> +          - const: alinx,ac7z020
> +          - const: xlnx,zynq-7000

[Severity: Low]
Does the "alinx" vendor prefix need to be added to
Documentation/devicetree/bindings/vendor-prefixes.yaml?  Without an entry
there, running make dt_binding_check or scripts/checkpatch.pl reports an
undocumented vendor prefix for alinx,ax7z020b and alinx,ac7z020.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261108215010.351256-1-cyan2254650260@gmail.com?part=1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board
  2026-11-08 21:50 ` [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
@ 2026-11-08 22:01   ` sashiko-bot
  2026-11-11  2:17   ` Andrew Lunn
  1 sibling, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-11-08 22:01 UTC (permalink / raw)
  To: Pufan Jin; +Cc: devicetree, robh, conor+dt

Thank you for your contribution! Sashiko AI review found 3 potential
issues to consider:
- [Low] ARM: dts: zynq: undocumented vendor prefix alinx in root
  compatible strings
- [Low] ARM: dts: zynq: decimal unit-addresses in XADC channel@10 and
  channel@13 nodes
- [Low] ARM: dts: zynq: split root node blocks in
  zynq-alinx-ac7z020.dtsi
--

commit ad140ae8401a6613bfd0e62dbc79a92d188f222b
Author: Pufan Jin <cyan2254650260@gmail.com>

ARM: dts: zynq: Add ALINX AX7Z020B development board

This commit adds devicetree support for the ALINX AC7Z020 system on module
and the ALINX AX7Z020B development board.

Link: https://www.alinx.com/

> diff --git a/arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi b/arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi
> new file mode 100644
> index 0000000000000..2da08424f1a2a
> --- /dev/null
> +++ b/arch/arm/boot/dts/xilinx/zynq-alinx-ac7z020.dtsi
> @@ -0,0 +1,72 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * DTS for ALINX AC7Z020 System on Module
> + *
> + * Copyright (C) 2026 Pufan Jin <cyan2254650260@gmail.com>
> + */
> +
> +#include "zynq-7000.dtsi"
> +
> +/ {
> +	compatible = "alinx,ac7z020", "xlnx,zynq-7000";

[Severity: Low]
Should the "alinx" vendor prefix used here and in zynq-alinx-ax7z020b.dts
be documented in Documentation/devicetree/bindings/vendor-prefixes.yaml?
Without an "^alinx,.*" entry there, checkpatch.pl and dtbs_check report an
undocumented vendor prefix.

> +
> +	memory@0 {
> +		device_type = "memory";
> +		reg = <0x0 0x40000000>;
> +	};
> +};
> +
> +&clkc {
> +	ps-clk-frequency = <33333333>;
> +};
> +
> +&devcfg {
> +	status = "okay";
> +};
> +
> +/ {
> +	pmu@f8891000 {
> +		interrupt-affinity = <&cpu0>, <&cpu1>;
> +	};
> +};

[Severity: Low]
This isn't a bug, but why reopen a second root node block after &clkc and
&devcfg instead of placing pmu@f8891000 inside the initial / { ... }; block
above per Documentation/devicetree/bindings/dts-coding-style.rst?

[ ... ]

> diff --git a/arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts b/arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts
> new file mode 100644
> index 0000000000000..4dfef96ad376a
> --- /dev/null
> +++ b/arch/arm/boot/dts/xilinx/zynq-alinx-ax7z020b.dts

[ ... ]

> +&adc {
> +	xlnx,channels {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		/* AD1: XADC_AD1P/N, E17/D18 */
> +		channel@2 {
> +			reg = <2>;
> +		};
> +
> +		/* AD9: XADC_AD9P/N, E18/E19 */
> +		channel@10 {
> +			reg = <10>;
> +		};
> +
> +		/* Spare pair: XADC_AD12P/N, F19/F20 */
> +		channel@13 {
> +			reg = <13>;
> +		};
> +	};
> +};

[Severity: Low]
Should channel@10 and channel@13 be named channel@a and channel@d?
Unit-addresses after @ are lowercase hexadecimal without a 0x prefix, while
reg = <10> and reg = <13> are decimal (0xa and 0xd).

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261108215010.351256-1-cyan2254650260@gmail.com?part=2

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board
  2026-11-08 21:50 ` [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
  2026-11-08 22:01   ` sashiko-bot
@ 2026-11-11  2:17   ` Andrew Lunn
  1 sibling, 0 replies; 6+ messages in thread
From: Andrew Lunn @ 2026-11-11  2:17 UTC (permalink / raw)
  To: Pufan Jin
  Cc: Conor Dooley, Krzysztof Kozlowski, Michal Simek, Rob Herring,
	devicetree, linux-arm-kernel, linux-kernel

> +&gem0 {
> +	status = "okay";
> +	phy-mode = "rgmii-id";
> +	phy-handle = <&ethernet_phy>;
> +
> +	ethernet_phy: ethernet-phy@1 {
> +		reg = <1>;
> +

It is better to have an MDIO node, with the PHY a child of that.

	Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-11-11  2:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-08 21:50 [PATCH 0/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
2026-11-08 21:50 ` [PATCH 1/2] dt-bindings: soc: xilinx: Add ALINX AX7Z020B board Pufan Jin
2026-11-08 21:59   ` sashiko-bot
2026-11-08 21:50 ` [PATCH 2/2] ARM: dts: zynq: Add ALINX AX7Z020B development board Pufan Jin
2026-11-08 22:01   ` sashiko-bot
2026-11-11  2:17   ` Andrew Lunn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox