Skip to contentSkip to conversation

arm64: dts: rockchip: Add support for Axelera Embedded 111c

PATCH Superseded Patrick Barsanti 5 participants 8 messages Oct 20 – Oct 30

Subsystems (2)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

v2 cover arm64: dts: rockchip: Add support for Axelera Embedded 111c

The Axelera Embedded 111c is an SBC based on the Rockchip RK3588 SoC. It offers efficient AI compute for multi-stream computer vision and generative AI applications in a compact design.

Product page [1].

This series aims to introduce basic support for the board, which includes the console, the eMMC, the two Gigabit Ethernet ports, the four USB ports and the HDMI connector.

Changes in v2:
- The board was renamed by Axelera between v1 and v2, from "Metis Compute Board" to "Embedded 111c". Address the name change. Drop Conor's Acked-by on the bindings, since the compatible changed. Keep it on the vendor-prefix.
- Address Heiko's comment about regulator node names starting with "regulator-".
- Address Heiko's comment about non-existent "mem-supply" binding.
- Address Heiko's comment about dropping the unneeded "Use rgmii-rxid mode to disable rx delay inside Soc" comment; checkpatch complains about uncommented rgmii-rxid, so take the one from rk3588-youyeetoo-yy3588.
- Address Heiko's comment about reset lines of the phy nodes being incorrectly described in the gmac node; note that these are still not described in the phy node because GPIO3_B7 defaults to pull-down, which causes the rgmii_phy1 node to never come up; rgmii_phy0's reset GPIO, GPIO4_B3, defaults to pull-up, so that node does not encounter the same issue. Moving the reset to the parent mdio node instead did the trick.
- Address Sashiko's high severity comment about hdmi0 node mixing M0 and M1 pinmux groups; use the existing hdmim1_tx0_hpd pinctrl group instead of redefining it. HPD is wired to M1 while CEC and DDC use the M0 pins. Verified hot-plug detection on external display.
- Address Sashiko's medium comment about "full-pwr-cycle-in-suspend" and missing "vmmc-supply" and "vqmmc-supply" on the eMMC node; drop the former, add the latter two.
- Address Sashiko's medium comment about the pmic node lacking a pinctrl assignment for the interrupt pin; add it.
- Address Sashiko's medium comment about the "vcc3v3_hubreset" regulator hack; describe the two GL3523 hubs linked with peer-hub.
- Address Sashiko's low comment about defined-but-never-referenced regulators without regulator-always-on property; drop them, alongside their pinctrls.
- Mux PCIEX4_PERST_N as GPIO, to match it being used via reset-gpios.
- Drop the unused input.h include.
- Drop the unused rtc label.
- Drop the local PCIe x1 pinctrl groups, which duplicated the pcie30x1m1_1_* groups in rk3588-base-pinctrl.dtsi.

Link to v1: [2].

[1]: https://axelera.ai/axelera-products/embedded/111c
[2]: https://lore.kernel.org/r/[email protected]

Patrick Barsanti (3):
dt-bindings: vendor-prefixes: Add Axelera AI
dt-bindings: arm: rockchip: Add Axelera Embedded 111c
arm64: dts: rockchip: Add Axelera Embedded 111c

 .../devicetree/bindings/arm/rockchip.yaml     |   5 +
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../dts/rockchip/rk3588-embedded-111c.dts     | 816 ++++++++++++++++++
 4 files changed, 824 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts
Signature · 1 line
2.53.0
#1 lore raw

PATCH v2 1/3 dt-bindings: vendor-prefixes: Add Axelera AI

Axelera AI is an EU-based provider of AIPUs for edge AI inference.

---

Changes in v2:
- Change name to "Axelera AI B.V."

 Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
index ba2002969373..1267d9e2d859 100644
@@ -219,6 +219,8 @@ patternProperties:
     description: Avnet, Inc.
   "^awinic,.*":
     description: Shanghai Awinic Technology Co., Ltd.
+  "^axelera,.*":
+    description: Axelera AI B.V.
   "^axentia,.*":
     description: Axentia Technologies AB
   "^axiado,.*":
Signature · 1 line
2.53.0
#2 lore raw

PATCH v2 2/3 dt-bindings: arm: rockchip: Add Axelera Embedded 111c

In reply to Patrick Barsanti

The Axelera Embedded 111c is an SBC based on the Rockchip RK3588 SoC.

Specification:
- Rockchip RK3588
- 16GB LPDDR4
- Axelera AI Metis AIPU, 4GB/16GB LPDDR4X
- 64GB eMMC
- uSD slot
- 2x SATA ports
- 2x Gigabit LAN
- 1x M.2 E key
- 1x M.2 B key
- 1x HDMI2.0
- 1x USB-C with DP
- 4x USB3.1

---

Changes in v2:
- Rename the board and its compatible following the name change from "metis-sbc" to "embedded-111c"
- Drop Conor's Acked-by since the compatible has changed

 Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++
 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/arm/rockchip.yaml +5 -0
index a799bb843f74..1f2627c53c33 100644
@@ -120,6 +120,11 @@ properties:
               - asus,rk3566-tinker-board-3s
           - const: rockchip,rk3566
 
+      - description: Axelera Embedded 111c
+        items:
+          - const: axelera,embedded-111c
+          - const: rockchip,rk3588
+
       - description: Beelink A1
         items:
           - const: azw,beelink-a1
Signature · 1 line
2.53.0
Acked-by on v2 2/3
#3 lore raw

Re: [PATCH v2 2/3] dt-bindings: arm: rockchip: Add Axelera Embedded 111c

Quoted 17 lines · Patrick Barsanti

The Axelera Embedded 111c is an SBC based on the Rockchip RK3588 SoC.

Specification:
- Rockchip RK3588
- 16GB LPDDR4
- Axelera AI Metis AIPU, 4GB/16GB LPDDR4X
- 64GB eMMC
- uSD slot
- 2x SATA ports
- 2x Gigabit LAN
- 1x M.2 E key
- 1x M.2 B key
- 1x HDMI2.0
- 1x USB-C with DP
- 4x USB3.1

Quoted 2 lines

Best regards,
Krzysztof

#4 lore raw

PATCH v2 3/3 arm64: dts: rockchip: Add Axelera Embedded 111c

In reply to Patrick Barsanti

Add minimal device tree for the Axelera Embedded 111c (rk3588-embedded-111c).

It offers efficient AI compute for multi-stream computer vision and GenAI applications in a compact design. It features a quad-core Axelera AI Metis AIPU and an RK3588 SoC processor.

This basic version of the dts supports:
- Console
- eMMC
- HDMI
- 4x USB-A
- 2x Gigabit Ethernet
- RTC
- Enumeration of on-board Axelera Metis AIPU

---

Changes in v2:
- Prepend "regulator-" to regulator nodes
- Drop non-existent "mem-supply" binding
- Drop unneeded comment from rgmii-rxid; replace it with the one from rk3588-youyeetoo-yy3588 to stop checkpatch from complaining
- Remove phy reset from the gmac node; note that these are still not described in the phy node because GPIO3_B7 defaults to pull-down, which causes the rgmii_phy1 node to never come up. Describing the reset in the parent mdio node instead does not cause the same issue
- Use the existing hdmim1_tx0_hpd pinctrl group instead of redefining it
- Drop "full-pwr-cycle-in-suspend" from the eMMC node
- Add "vmmc-supply" and "vqmmc-supply" to the eMMC node
- Add pinctrl for the pmic interrupt pin
- Replace the "vcc3v3_hubreset" regulator hack with two GL3523 hubs linked with "peer-hub".
- Drop the regulators that were defined but never referenced, and their corresponding pinctrls
- Mux PCIEX4_PERST_N as GPIO, since it is being used as reset-gpios
- Drop unused input.h include
- Drop unused rtc label
- Drop the local pciex1 pinctrl groups, as they were duplicates of the pcie30x1m1_1_* groups in the base pinctrl for the rk3588

 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../dts/rockchip/rk3588-embedded-111c.dts     | 816 ++++++++++++++++++
 2 files changed, 817 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts
arch/arm64/boot/dts/rockchip/Makefile +1 -0
index e7936a21c118..58daed40f86d 100644
@@ -191,6 +191,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-coolpi-cm5-genbook.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-io.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-wifi.dtbo
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6b-io.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-embedded-111c.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-evb1-v10.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-evb2-v10.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-firefly-itx-3588j.dtb
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +816 -0

816 lines not on this page · raw message

Signature · 1 line
2.53.0
#5 lore raw

Re: [PATCH v2 3/3] arm64: dts: rockchip: Add Axelera Embedded 111c

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Low] arm64: dts: rockchip: rk3588-embedded-111c: invalid phy@ node names in mdio - [Low] arm64: dts…

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] arm64: dts: rockchip: rk3588-embedded-111c: invalid phy@ node names in mdio
- [Low] arm64: dts: rockchip: unreferenced vcc3v3_m2 and pcie avdd regulators in 111c --

commit 057af7753f22c58a1c6fea7ae240d761d88b6fe7
Author: Patrick Barsanti <[email protected]>

arm64: dts: rockchip: Add Axelera Embedded 111c

This commit adds a minimal device tree for the RK3588-based Axelera Embedded 111c board featuring an on-board Axelera AI Metis AIPU.

Quoted 6 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +0 -0
new file mode 100644
index 0000000000000..a964b46e5c120
@@ -0,0 +1,816 @@

[ ... ]

Quoted 39 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +39 -0
+	pcie20_avdd0v85: regulator-pcie20-avdd0v85 {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <850000>;
+		regulator-max-microvolt = <850000>;
+		regulator-name = "pcie20_avdd0v85";
+		vin-supply = <&vdda_0v85_s0>;
+	};
+
+	pcie20_avdd1v8: regulator-pcie20-avdd1v8 {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-name = "pcie20_avdd1v8";
+		vin-supply = <&vcca_1v8_s0>;
+	};
+
+	pcie30_avdd0v75: regulator-pcie30-avdd0v75 {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <750000>;
+		regulator-max-microvolt = <750000>;
+		regulator-name = "pcie30_avdd0v75";
+		vin-supply = <&hdmi_vdda0v85_s0>;
+	};
+
+	pcie30_avdd1v8: regulator-pcie30-avdd1v8 {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-name = "pcie30_avdd1v8";
+		vin-supply = <&vcca_1v8_s0>;
+	};

[ ... ]

Quoted 13 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +13 -0
+	vcc3v3_m2: regulator-vcc3v3-m2 {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; /* PCIE_PWREN_H */
+		pinctrl-0 = <&pcie_pwren_h>;
+		pinctrl-names = "default";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-name = "3v_m2";
+		vin-supply = <&vcc3v3_sus>;
+	};

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts line 130

Quoted 10 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +10 -0
+
+	vcc3v3_sus: regulator-vcc3v3-sus {
+		compatible = "regulator-fixed";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-name = "3vsus";
+		vin-supply = <&vcc12v_dcin>;
+	};

[Severity: Low]
The v2 changelog mentions dropping regulators that were defined but never referenced along with their corresponding pinctrls.

However, vcc3v3_m2, its parent supply vcc3v3_sus, and the four pcie20_avdd0v85, pcie20_avdd1v8, pcie30_avdd0v75, and pcie30_avdd1v8 regulators are not referenced anywhere in rk3588-embedded-111c.dts (the only enabled PCIe controller is &pcie3x4, which uses vpcie3v3-supply = <&vcc_1v8_pcie>).

Because vcc3v3_m2 specifies regulator-always-on and regulator-boot-on, the fixed-regulator driver will still claim gpio0 RK_PC4 (using pinctrl pcie_pwren_h) and drive it high at boot even though no M.2 PCIe controller is enabled.

Should vcc3v3_m2 (along with pcie_pwren_h and vcc3v3_sus) and the unreferenced pcie20/pcie30 avdd regulators be dropped as well?

[ ... ]

Quoted 11 lines

+&mdio0 {

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +10 -0
+	reset-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>; /* GMAC0_RST_N */
+	reset-delay-us = <20000>;
+	reset-post-delay-us = <100000>;
+
+	rgmii_phy0: phy@1 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x1>;
+	};
+};
+

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts line 361

Quoted 10 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +10 -0
+&mdio1 {
+	reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>; /* GMAC1_RST_N */
+	reset-delay-us = <20000>;
+	reset-post-delay-us = <100000>;
+
+	rgmii_phy1: phy@3 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x3>;
+	};
+};

[Severity: Low]
Will make dtbs_check fail to match the rgmii_phy0 and rgmii_phy1 nodes against Documentation/devicetree/bindings/net/ethernet-phy.yaml?

In Documentation/devicetree/bindings/net/ethernet-phy.yaml, the select block only matches nodes whose name matches "^ethernet-phy(@[a-f0-9]+)?$":

select:
properties:

    $nodename:
      pattern: "^ethernet-phy(@[a-f0-9]+)?$"

required:
- $nodename

Because the nodes under &mdio0 and &mdio1 are named phy@1 and phy@3 with compatible = "ethernet-phy-ieee802.3-c22", dtbs_check reports that no schema matches that compatible string. Should these nodes be named ethernet-phy@1 and ethernet-phy@3 instead?

[ ... ]

Quoted 4 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +4 -0
+	pci {
+		pcie_pwren_h: pcie-pwren-h {
+			rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
+		};

[ ... ]

Quoted 1 line
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +1 -0
+	};

[ ... ]

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3
maintainer
#6 lore raw

Re: [PATCH v2 3/3] arm64: dts: rockchip: Add Axelera Embedded 111c

In reply to Patrick Barsanti

Am Dienstag, 20. Oktober 2026, 13:37:17 Mitteleuropäische Normalzeit schrieb Patrick Barsanti:

Quoted 16 lines

Add minimal device tree for the Axelera Embedded 111c (rk3588-embedded-111c).

It offers efficient AI compute for multi-stream computer vision and GenAI applications in a compact design. It features a quad-core Axelera AI Metis AIPU and an RK3588 SoC processor.

This basic version of the dts supports:
- Console
- eMMC
- HDMI
- 4x USB-A
- 2x Gigabit Ethernet
- RTC
- Enumeration of on-board Axelera Metis AIPU

Quoted 4 lines

that Signed-off chain is not correct.

As it stands, the first signed-off would indicate Michael as the author.

If all 3 of you worked on this, this needs Co-developed-by tags, though 3 people for one devicetree?

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts

Quoted 5 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +0 -0
new file mode 100644
index 000000000000..a964b46e5c12

please name this rk3588-axelera-embedded-111c.dts

The name is otherwise way too generic.

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts line 514

Quoted 11 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +11 -0
+			vdd_log_s0: dcdc-reg3 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <675000>;
+				regulator-max-microvolt = <800000>;
+				regulator-name = "vdd_log_s0";
+				regulator-ramp-delay = <12500>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+					regulator-suspend-microvolt = <750000>;

regulator-suspend-microvolt is deprecated, so should not be used in new devicetrees. Same for all other occurences.

rest looks ok :-)

Thanks
Heiko

#7 lore raw

Re: [PATCH v2 3/3] arm64: dts: rockchip: Add Axelera Embedded 111c

Hi Heiko

Quoted 18 lines · Heiko Stuebner

Am Dienstag, 20. Oktober 2026, 13:37:17 Mitteleuropäische Normalzeit schrieb Patrick Barsanti:

Quoted 16 lines

Add minimal device tree for the Axelera Embedded 111c (rk3588-embedded-111c).

It offers efficient AI compute for multi-stream computer vision and GenAI applications in a compact design. It features a quad-core Axelera AI Metis AIPU and an RK3588 SoC processor.

This basic version of the dts supports:
- Console
- eMMC
- HDMI
- 4x USB-A
- 2x Gigabit Ethernet
- RTC
- Enumeration of on-board Axelera Metis AIPU

Quoted 9 lines
Quoted 4 lines

that Signed-off chain is not correct.

As it stands, the first signed-off would indicate Michael as the author.

It's a bit complicated; let's say the core was done by us in a workshop and even I'm
the original author of the first version of this board's support in downstream. I think that co-development is more appropriate for me and Dario. Anyway not being here is not a big deal for me, because I don't spend time on the series at the end

Quoted 3 lines

If all 3 of you worked on this, this needs Co-developed-by tags, though 3 people for one devicetree?

:). You are right here

Quoted 25 lines

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts

Quoted 7 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +0 -0
new file mode 100644
index 000000000000..a964b46e5c12

please name this rk3588-axelera-embedded-111c.dts

The name is otherwise way too generic.

arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts line 514

Quoted 11 lines
arch/arm64/boot/dts/rockchip/rk3588-embedded-111c.dts new file +11 -0
+                     vdd_log_s0: dcdc-reg3 {
+                             regulator-always-on;
+                             regulator-boot-on;
+                             regulator-min-microvolt = <675000>;
+                             regulator-max-microvolt = <800000>;
+                             regulator-name = "vdd_log_s0";
+                             regulator-ramp-delay = <12500>;
+
+                             regulator-state-mem {
+                                     regulator-off-in-suspend;
+                                     regulator-suspend-microvolt = <750000>;
Quoted 6 lines

regulator-suspend-microvolt is deprecated, so should not be used in new devicetrees. Same for all other occurences.

rest looks ok :-)

Michael

Quoted 5 lines

Thanks
Heiko

Signature · 11 lines
Michael Nazzareno Trimarchi
Co-Founder & Chief Executive Officer
M. +39 347 913 2170
[email protected]
__________________________________

Amarula Solutions BV
Joop Geesinkweg 125, 1114 AB, Amsterdam, NL
T. +31 (0)85 111 9172
[email protected]
www.amarulasolutions.com