Skip to contentSkip to conversation

Add initial devicetree for Turing RK1

PATCH Applied Sam Edwards 3 participants 6 messages Oct 11, 2023 – Oct 19, 2023

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover Add initial devicetree for Turing RK1

Hi again list,

This is the second version of my patch to bring in support for the RK3588-based Turing RK1 SoM. In my previous cover letter, I perhaps should have specified that the RK1 is a little bit unusual in that, though it *is* a true SoM, it is targeted toward home-hosting/edge users directly as a compute node, and as a result the vast majority of users will be seeing it more like a micro-bladeserver, rather than an off-the-shelf part meant to power a larger system. This was my rationale for previously sending this as a single .dts, targeting that use case.

However, Heiko previously made a good point that it still depends on a carrier board to be "complete," and then I reminded myself that not all users will be treating the RK1 like a mere "node" -- some will be incorporating them into larger carriers, which the RK1 is meant to enable (not the other way around).

This version tries to strike a compromise, by moving the SoM-specific stuff to a .dtsi, introducing a .dts specifically for the "opinionated" view of the RK1 as a carrier-agnostic node, and adding another paragraph to the PATCH 3/3 changelog explaining that.

I am wondering if there will be an objection about the .dts having the exact same base filename and compatible as the .dtsi. I am not sure what word/term to use to mean "RK1 but thought of as the system itself and not as a piece of a system," but am open to suggestions. :)

Cheers all,
Sam

Sam Edwards (3):
dt-bindings: vendor-prefixes: add turing
dt-bindings: arm: rockchip: Add Turing RK1
arm64: dts: rockchip: Add Turing RK1 SoM support

 .../devicetree/bindings/arm/rockchip.yaml     |   5 +
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../boot/dts/rockchip/rk3588-turing-rk1.dts   |  21 +
 .../boot/dts/rockchip/rk3588-turing-rk1.dtsi  | 623 ++++++++++++++++++
 5 files changed, 652 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dtsi
Signature · 1 line
2.41.0
#1 lore raw

PATCH v2 1/3 dt-bindings: vendor-prefixes: add turing

Add vendor prefix for Turing Machines, Inc.
(https://turingpi.com)

---
 Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
index 573578db9509..07f164e1ca2e 100644
@@ -1420,6 +1420,8 @@ patternProperties:
     description: Truly Semiconductors Limited
   "^tsd,.*":
     description: Theobroma Systems Design und Consulting GmbH
+  "^turing,.*":
+    description: Turing Machines, Inc.
   "^tyan,.*":
     description: Tyan Computer Corporation
   "^u-blox,.*":
Signature · 1 line
2.41.0
#2 lore raw

PATCH v2 2/3 dt-bindings: arm: rockchip: Add Turing RK1

In reply to Sam Edwards

Add the Turing RK1, a Jetson-compatible system-on-module (SoM) powered by RK3588, from Turing Machines, Inc.

---
 Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++
 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/arm/rockchip.yaml +5 -0
index ca5389862887..13b6cdc5ef82 100644
@@ -870,6 +870,11 @@ properties:
           - const: tronsmart,orion-r68-meta
           - const: rockchip,rk3368
 
+      - description: Turing RK1
+        items:
+          - const: turing,rk1
+          - const: rockchip,rk3588
+
       - description: Xunlong Orange Pi R1 Plus / LTS
         items:
           - enum:
Signature · 1 line
2.41.0
maintainer Acked-by on v2 2/3
#3 lore raw

Re: [PATCH v2 2/3] dt-bindings: arm: rockchip: Add Turing RK1

Quoted 8 lines · Sam Edwards

Add the Turing RK1, a Jetson-compatible system-on-module (SoM) powered by RK3588, from Turing Machines, Inc.

---
 Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++
 1 file changed, 5 insertions(+)
#4 lore raw

PATCH v2 3/3 arm64: dts: rockchip: Add Turing RK1 SoM support

In reply to Sam Edwards

The Turing RK1 is an upcoming RK3588-based SoM from Turing Machines, designed on the Jetson SO-DIMM form factor and meant to be compatible with most Jetson carrier boards (but especially the Turing Pi 2 cluster board from the same vendor). It has the typical I/O you'd expect from a Jetson board, including:

- Two UARTs (UART9 for console, UART2 is auxiliary)
- PCI Express (2.0 x1 + 3.0 x4)
- Gigabit Ethernet
- On-board eMMC
- PWM fan w/ tach
- USB-OTG [1]
- HDMI and MIPI DSI [1]
- Miscellaneous external GPIO, I²C, SPI lines [1]

Beyond that, it is pretty similar to the RK3588 EVB (in terms of PMICs, RTC, etc).

While this is absolutely a SoM, it is a little bit special in that it's marketed directly to users as a compute node, while most SoMs are intended to be a part/module incorporated into a larger system. Because of this, a majority of the users will be treating the RK1 less like a SoM and more like a miniature "blade server."

This patch introduces a dtsi to enable most[1] of the SoM I/O, as well as a dts catered more directly to the "compute node" use case.

[1] These peripherals are not addressed with this patch.

---
 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../boot/dts/rockchip/rk3588-turing-rk1.dts   |  21 +
 .../boot/dts/rockchip/rk3588-turing-rk1.dtsi  | 623 ++++++++++++++++++
 3 files changed, 645 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dts
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dtsi
arch/arm64/boot/dts/rockchip/Makefile +1 -0
index e7728007fd1b..bedca9f68b8d 100644
@@ -102,6 +102,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6b-io.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-evb1-v10.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-nanopc-t6.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-rock-5b.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-turing-rk1.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-indiedroid-nova.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-khadas-edge2.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-rock-5a.dtb
arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dts new file +21 -0
new file mode 100644
index 000000000000..7bcad28d73b8
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * This device tree covers the common case where the RK1 is used as a
+ * "compute node" system, where the carrier board is functioning more like a
+ * generic backplane (with no non-autoenumerable peripherals of its own) than
+ * like a device that the SoM is meant to enable.
+ *
+ * Copyright (c) 2023 Sam Edwards <[email protected]>
+ */
+
+/dts-v1/;
+#include "rk3588-turing-rk1.dtsi"
+
+/ {
+	model = "Turing Machines RK1";
+	compatible = "turing,rk1", "rockchip,rk3588";
+
+	chosen {
+		stdout-path = "serial9:115200n8";
+	};
+};
arch/arm64/boot/dts/rockchip/rk3588-turing-rk1.dtsi new file +623 -0

623 lines not on this page · raw message

Signature · 1 line
2.41.0
maintainer Applied
#5 lore raw
In reply to Sam Edwards
Quoted 10 lines · Sam Edwards

This is the second version of my patch to bring in support for the RK3588-based Turing RK1 SoM. In my previous cover letter, I perhaps should have specified that the RK1 is a little bit unusual in that, though it *is* a true SoM, it is targeted toward home-hosting/edge users directly as a compute node, and as a result the vast majority of users will be seeing it more like a micro-bladeserver, rather than an off-the-shelf part meant to power a larger system. This was my rationale for previously sending this as a single .dts, targeting that use case.

[...]

Applied, thanks!

[1/3] dt-bindings: vendor-prefixes: add turing

      commit: 817bacc3a648cc55a0b07a699c03ecc70309ae50
[2/3] dt-bindings: arm: rockchip: Add Turing RK1
      commit: e30ecfcbe4ed3706af67dff5aa1418fba6ba2c29
[3/3] arm64: dts: rockchip: Add Turing RK1 SoM support
      commit: 2806a69f3fef61d7353ea8206add8ffb15064b51

I've dropped the mem-supply references from the cpu nodes. I think some at Collabora is working on upstreaming the cpufreq driver that will utilize those.

Until then they are not part of the binding, so please add them via a new patch once the cpufreq support has landed.

Best regards,

Signature · 1 line
Heiko Stuebner <[email protected]>