On Wed, Apr 15, 2020 at 11:48:18AM +0200, Alexandre Belloni wrote: > Convert Atmel Timer Counter Blocks bindings to DT schema format using > json-schema. > > Also move it out of mfd as it is not and has never been related to mfd. > > Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> > --- > Cc: Rob Herring <robh+dt@xxxxxxxxxx> > > Changes in v2: > - Rebased on v5.7-rc1 > - Moved the binding documentation to its proper place > - Added back the atmel,tcb-timer child node documentation > > .../devicetree/bindings/mfd/atmel-tcb.txt | 56 ------------ > .../soc/microchip/atmel,at91rm9200-tcb.yaml | 89 +++++++++++++++++++ > .../bindings/timer/atmel,tcb-timer.yaml | 51 +++++++++++ > 3 files changed, 140 insertions(+), 56 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt > create mode 100644 Documentation/devicetree/bindings/soc/microchip/atmel,at91rm9200-tcb.yaml > create mode 100644 Documentation/devicetree/bindings/timer/atmel,tcb-timer.yaml > diff --git a/Documentation/devicetree/bindings/soc/microchip/atmel,at91rm9200-tcb.yaml b/Documentation/devicetree/bindings/soc/microchip/atmel,at91rm9200-tcb.yaml > new file mode 100644 > index 000000000000..2522fb1f4ce4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/soc/microchip/atmel,at91rm9200-tcb.yaml > @@ -0,0 +1,89 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/soc/microchip/atmel,at91rm9200-tcb.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: Atmel Timer Counter Block > + > +maintainers: > + - Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> > + > +description: | > + The Atmel (now Microchip) SoCs have timers named Timer Counter Block. Each > + timer has three channels with two counters each. > + > +properties: > + compatible: > + items: > + - enum: > + - atmel,at91rm9200-tcb > + - atmel,at91sam9x5-tcb > + - const: simple-mfd > + - const: syscon > + > + reg: > + maxItems: 1 > + > + interrupts: > + description: > + List of interrupts. One interrupt per TCB channel if available or one > + interrupt for the TC block > + minItems: 1 > + maxItems: 3 > + > + clock-names: > + description: > + List of clock names. Always includes t0_clk and slow clk. Also includes > + t1_clk and t2_clk if a clock per channel is available. This description can be expressed as: allOf: - contains: const: t0_clk - contains: const: slow_clk However, if there's only 2 combinations to support with either 2 clocks or 4 clocks, then a 'oneOf' listing the 2 exact items lists would be better. > + minItems: 2 > + maxItems: 4 > + items: > + enum: > + - t0_clk > + - t1_clk > + - t2_clk > + - slow_clk > + > + clocks: > + minItems: 2 > + maxItems: 4 > + > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - clock-names > + - '#address-cells' > + - '#size-cells' additionalProperties: false > + > +examples: > + - | > + /* One interrupt per TC block: */ > + tcb0: timer@fff7c000 { > + compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon"; A simple-mfd without child nodes? > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0xfff7c000 0x100>; > + interrupts = <18 4>; > + clocks = <&tcb0_clk>, <&clk32k>; > + clock-names = "t0_clk", "slow_clk"; > + }; > + > + /* One interrupt per TC channel in a TC block: */ > + tcb1: timer@fffdc000 { > + compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0xfffdc000 0x100>; > + interrupts = <26 4>, <27 4>, <28 4>; > + clocks = <&tcb1_clk>, <&clk32k>; > + clock-names = "t0_clk", "slow_clk"; > + }; > diff --git a/Documentation/devicetree/bindings/timer/atmel,tcb-timer.yaml b/Documentation/devicetree/bindings/timer/atmel,tcb-timer.yaml > new file mode 100644 > index 000000000000..a6173ceab6be > --- /dev/null > +++ b/Documentation/devicetree/bindings/timer/atmel,tcb-timer.yaml > @@ -0,0 +1,51 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/timer/atmel,tcb-timer.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: Atmel Timer Counter Block timer channel > + > +maintainers: > + - Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> > + > +description: | > + The Atmel (now Microchip) Timer Counter Block have multiple channels that can > + be used as timers. > + > +properties: > + compatible: > + const: atmel,tcb-timer > + reg: > + description: > + List of channels to use for this particular timer. > + minItems: 1 > + maxItems: 3 > + > +required: > + - compatible > + - reg > + > +additionalProperties: false This should just be merged into the 1st schema with this being defined as child nodes. > + > +examples: > + - | > + timer@fff7c000 { > + compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon"; > + #address-cells = <1>; > + #size-cells = <0>; > + reg = <0xfff7c000 0x100>; > + interrupts = <18 4>; > + clocks = <&tcb0_clk>, <&clk32k>; > + clock-names = "t0_clk", "slow_clk"; > + > + timer@0 { > + compatible = "atmel,tcb-timer"; > + reg = <0>, <1>; > + }; > + > + timer@2 { > + compatible = "atmel,tcb-timer"; > + reg = <2>; > + }; > + }; > -- > 2.25.2 >