| # 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@bootlin.com> |
| |
| 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 |
| - atmel,sama5d2-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. |
| minItems: 2 |
| maxItems: 4 |
| |
| clocks: |
| minItems: 2 |
| maxItems: 4 |
| |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| patternProperties: |
| "^timer@[0-2]$": |
| description: The timer block channels that are used as timers or counters. |
| type: object |
| additionalProperties: false |
| properties: |
| compatible: |
| items: |
| - enum: |
| - atmel,tcb-timer |
| - atmel,tcb-pwm |
| - microchip,tcb-capture |
| reg: |
| description: |
| List of channels to use for this particular timer. In Microchip TCB capture |
| mode channels are registered as a counter devices, for the qdec mode TCB0's |
| channel <0> and <1> are required. |
| |
| minItems: 1 |
| maxItems: 3 |
| required: |
| - compatible |
| - reg |
| |
| "^pwm@[0-2]$": |
| description: The timer block channels that are used as PWMs. |
| $ref: /schemas/pwm/pwm.yaml# |
| type: object |
| properties: |
| compatible: |
| const: atmel,tcb-pwm |
| reg: |
| description: |
| TCB channel to use for this PWM. |
| enum: [ 0, 1, 2 ] |
| |
| "#pwm-cells": |
| description: |
| The only third cell flag supported by this binding is |
| PWM_POLARITY_INVERTED. |
| const: 3 |
| |
| required: |
| - compatible |
| - reg |
| - "#pwm-cells" |
| |
| additionalProperties: false |
| |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: atmel,sama5d2-tcb |
| then: |
| properties: |
| clocks: |
| minItems: 3 |
| maxItems: 3 |
| clock-names: |
| items: |
| - const: t0_clk |
| - const: gclk |
| - const: slow_clk |
| else: |
| properties: |
| clocks: |
| minItems: 2 |
| maxItems: 4 |
| clock-names: |
| oneOf: |
| - items: |
| - const: t0_clk |
| - const: slow_clk |
| - items: |
| - const: t0_clk |
| - const: t1_clk |
| - const: t2_clk |
| - const: slow_clk |
| |
| 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"; |
| #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>; |
| }; |
| }; |
| |
| /* 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"; |
| |
| timer@0 { |
| compatible = "atmel,tcb-timer"; |
| reg = <0>; |
| }; |
| |
| timer@1 { |
| compatible = "atmel,tcb-timer"; |
| reg = <1>; |
| }; |
| |
| pwm@2 { |
| compatible = "atmel,tcb-pwm"; |
| reg = <2>; |
| #pwm-cells = <3>; |
| }; |
| }; |
| /* TCB0 Capture with QDEC: */ |
| timer@f800c000 { |
| 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 = "microchip,tcb-capture"; |
| reg = <0>, <1>; |
| }; |
| |
| timer@2 { |
| compatible = "atmel,tcb-timer"; |
| reg = <2>; |
| }; |
| }; |