On Tue, Dec 14, 2021 at 12:02:48PM +0000, Martin Povišer wrote: > The NCO block found on Apple SoCs is a programmable clock generator > performing fractional division of a high frequency input clock. > > Signed-off-by: Martin Povišer <povik@xxxxxxxxxxxxxx> > --- > .../devicetree/bindings/clock/apple,nco.yaml | 70 +++++++++++++++++++ > 1 file changed, 70 insertions(+) > create mode 100644 Documentation/devicetree/bindings/clock/apple,nco.yaml > > diff --git a/Documentation/devicetree/bindings/clock/apple,nco.yaml b/Documentation/devicetree/bindings/clock/apple,nco.yaml > new file mode 100644 > index 000000000000..5029824ab179 > --- /dev/null > +++ b/Documentation/devicetree/bindings/clock/apple,nco.yaml > @@ -0,0 +1,70 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/clock/apple,nco.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Apple SoCs' NCO block > + > +maintainers: > + - Martin Povišer <povik@xxxxxxxxxxxxxx> > + > +description: | > + The NCO (Numerically Controlled Oscillator) block found on Apple SoCs > + such as the t8103 (M1) is a programmable clock generator performing > + fractional division of a high frequency input clock. > + > + It carries a number of independent channels and is typically used for > + generation of audio bitclocks. > + > +properties: > + compatible: > + items: > + - enum: > + - apple,t6000-nco > + - apple,t8103-nco > + - const: apple,nco > + > + apple,nchannels: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > + The number of output channels the NCO block has been > + synthesized for. I'd assume there is some max number? Do you really need to know this? If this is just to validate the clock cell values are less than this, then just drop that and the property. It's not the kernel's job to validate the DT. > + > + clocks: > + description: > + Specifies the reference clock from which the output clocks > + are derived through fractional division. > + maxItems: 1 > + > + '#clock-cells': > + const: 1 > + > + reg: > + maxItems: 1 > + > +required: > + - compatible > + - apple,nchannels > + - clocks > + - '#clock-cells' > + - reg > + > +additionalProperties: false > + > +examples: > + - | > + nco_clkref: clock-ref { > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + clock-frequency = <900000000>; > + clock-output-names = "nco-ref"; > + }; > + > + nco: clock-generator@23b044000 { clock-controller@... > + compatible = "apple,t8103-nco", "apple,nco"; > + reg = <0x3b044000 0x14000>; You really have 0x14000 worth of registers here because all of that will be mapped into virtual memory? Doesn't matter so much on 64-bit, but it did for 32-bit. > + #clock-cells = <1>; > + clocks = <&nco_clkref>; > + apple,nchannels = <5>; > + }; > -- > 2.33.0 > > >