Thread (11 messages) read the whole thread 11 messages, 4 authors, 2026-01-26

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help