Add initial devicetree for Turing RK1
Subsystems (2)
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
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
@@ -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
PATCH v2 2/3 dt-bindings: arm: rockchip: Add Turing RK1
In reply to Sam EdwardsAdd 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
@@ -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
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.
Signed-off-by Sam Edwards <[email protected]>--- Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++ 1 file changed, 5 insertions(+)
PATCH v2 3/3 arm64: dts: rockchip: Add Turing RK1 SoM support
In reply to Sam EdwardsThe 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
@@ -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
@@ -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
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: 2806a69f3fef61d7353ea8206add8ffb15064b51I'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]>