[PATCH v2 1/3] dt-bindings: soc: tenstorrent: Add tenstorrent,atlantis-syscon
Anirudh Srinivasan
asrinivasan at oss.tenstorrent.com
Fri Jan 23 17:34:16 PST 2026
Hi Krzysztof,
On Fri, Jan 23, 2026 at 1:10 AM Krzysztof Kozlowski <krzk at kernel.org> wrote:
>
> On 22/01/2026 23:36, Anirudh Srinivasan wrote:
> > 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.
> > 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
> > +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).
Ack.
>
> > + 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?
I picked the syscon name since the block is a bunch of registers that
control different functions in the SoC. The block's name in the
datasheet is PRCM, so I will stick to that name and treat this node as
a clock controller as its main functionality is that.
> > +
> > +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 at 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 at e00c0000 {
>
> Drop unused label.
Ack.
> > 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.
Ack
More information about the linux-riscv
mailing list