Re: [PATCH v2 1/3] dt-bindings: soc: tenstorrent: Add tenstorrent,atlantis-syscon
From: Krzysztof Kozlowski <krzk@kernel.org>
Date: 2026-01-23 07:10:27
Also in:
linux-clk, linux-riscv, lkml
On 22/01/2026 23:36, Anirudh Srinivasan wrote:
quoted hunk ↗ jump to hunk
Document bindings for Tenstorrent Atlantis syscon that manages clocks and resets. This syscon block is instantiated 4 times in the SoC. This commit documents the clocks from the RCPU syscon block. Signed-off-by: Anirudh Srinivasan <redacted> --- .../tenstorrent/tenstorrent,atlantis-syscon.yaml | 90 ++++++++++++++++++ MAINTAINERS | 2 + .../clock/tenstorrent,atlantis-syscon.h | 101 +++++++++++++++++++++ 3 files changed, 193 insertions(+)diff --git a/Documentation/devicetree/bindings/soc/tenstorrent/tenstorrent,atlantis-syscon.yaml b/Documentation/devicetree/bindings/soc/tenstorrent/tenstorrent,atlantis-syscon.yaml new file mode 100644 index 000000000000..49fbe2423be0 --- /dev/null +++ b/Documentation/devicetree/bindings/soc/tenstorrent/tenstorrent,atlantis-syscon.yaml@@ -0,0 +1,90 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/soc/tenstorrent/tenstorrent,atlantis-syscon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Tenstorrent Atlantis SoC Syscon + +maintainers: + - Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com> + +description: + Multifunctional register block found in Tenstorrent Atlantis SoC whose main function + is to control clocks and resets. This Block is instantiated multiple times in the SoC,
Please wrap code according to the preferred limit expressed in Kernel coding style (checkpatch is not a coding style description, but only a tool). However don't wrap blindly (see Kernel coding style).
+ each block controls clock and resets for a different subsystem. + + RCPU syscon serves low speed IO interfaces on chip + PCIe syscon serves all PCIe related functions + HSIO syscon serves high speed IO interfaces (Ethernet, USB) + MM syscon serves GPU, display and video processing functions
Same feedback - clock controllers go to clock, not soc.
+ +properties: + compatible: + enum: + - tenstorrent,atlantis-syscon-rcpu + - tenstorrent,atlantis-syscon-pcie + - tenstorrent,atlantis-syscon-mm + - tenstorrent,atlantis-syscon-hsio
Why do you call everything syscon? syscon is not a hardware name. How is this exactly called in your datasheet?
+ + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + "#clock-cells": + const: 1 + description: + See <dt-bindings/clock/tenstorrent,atlantis-syscon.h> for valid indices. + + "#reset-cells": + const: 1 + + tenstorrent,syscon-rcpu: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Phandle reference to RCPU syscon, needed by other 3 syscons (PCIe, MM, HSIO) + as the control registers for the PLLs that drive these subsystems are in RCPU + syscon's range + +required: + - compatible + - reg + - clocks + - "#clock-cells" + - "#reset-cells" + +allOf: + - if: + properties: + compatible: + contains: + enum: + - tenstorrent,atlantis-syscon-pcie + - tenstorrent,atlantis-syscon-mm + - tenstorrent,atlantis-syscon-hsio + then: + required: + - tenstorrent,syscon-rcpu
else - properties false, see other examples how to do it.
+
+additionalProperties: false
+
+examples:
+ - |
+ syscon_rcpu: system-controller@a8000000 {Drop entire example, one is enough.
+ compatible = "tenstorrent,atlantis-syscon-rcpu";
+ reg = <0xa8000000 0x10000>;
+ clocks = <&osc_24m>;
+ #clock-cells = <1>;
+ #reset-cells = <1>;
+ };
+ - |
+ syscon_hsio: system-controller@e00c0000 {Drop unused label.
quoted hunk ↗ jump to hunk
+ compatible = "tenstorrent,atlantis-syscon-hsio"; + reg = <0xe00c0000 0x500>; + clocks = <&osc_24m>; + #clock-cells = <1>; + #reset-cells = <1>; + tenstorrent,syscon-rcpu = <&syscon_rcpu>; + };diff --git a/MAINTAINERS b/MAINTAINERS index dc731d37c8fe..19a98b1fa456 100644 --- a/MAINTAINERS +++ b/MAINTAINERS@@ -22535,7 +22535,9 @@ L: linux-riscv@lists.infradead.org S: Maintained T: git https://github.com/tenstorrent/linux.git F: Documentation/devicetree/bindings/riscv/tenstorrent.yaml +F: Documentation/devicetree/bindings/soc/tenstorrent/tenstorrent,atlantis-syscon.yaml F: arch/riscv/boot/dts/tenstorrent/ +F: include/dt-bindings/clock/tenstorrent,atlantis-syscon.h RISC-V THEAD SoC SUPPORT M: Drew Fustini <fustini@kernel.org>diff --git a/include/dt-bindings/clock/tenstorrent,atlantis-syscon.h b/include/dt-bindings/clock/tenstorrent,atlantis-syscon.h new file mode 100644 index 000000000000..053cef2b43c8 --- /dev/null +++ b/include/dt-bindings/clock/tenstorrent,atlantis-syscon.h
Name will follow bindings.
Best regards, Krzysztof