[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