xref: /linux/Documentation/devicetree/bindings/timer/actions,owl-timer.yaml (revision c771600c6af14749609b49565ffb4cac2959710d)
1*ae4705e1SIvaylo Ivanov# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*ae4705e1SIvaylo Ivanov%YAML 1.2
3*ae4705e1SIvaylo Ivanov---
4*ae4705e1SIvaylo Ivanov$id: http://devicetree.org/schemas/timer/actions,owl-timer.yaml#
5*ae4705e1SIvaylo Ivanov$schema: http://devicetree.org/meta-schemas/core.yaml#
6*ae4705e1SIvaylo Ivanov
7*ae4705e1SIvaylo Ivanovtitle: Actions Semi Owl timer
8*ae4705e1SIvaylo Ivanov
9*ae4705e1SIvaylo Ivanovmaintainers:
10*ae4705e1SIvaylo Ivanov  - Andreas Färber <afaerber@suse.de>
11*ae4705e1SIvaylo Ivanov
12*ae4705e1SIvaylo Ivanovdescription:
13*ae4705e1SIvaylo Ivanov  Actions Semi Owl SoCs provide 32bit and 2Hz timers.
14*ae4705e1SIvaylo Ivanov  The 32bit timers support dynamic irq, as well as one-shot mode.
15*ae4705e1SIvaylo Ivanov
16*ae4705e1SIvaylo Ivanovproperties:
17*ae4705e1SIvaylo Ivanov  compatible:
18*ae4705e1SIvaylo Ivanov    enum:
19*ae4705e1SIvaylo Ivanov      - actions,s500-timer
20*ae4705e1SIvaylo Ivanov      - actions,s700-timer
21*ae4705e1SIvaylo Ivanov      - actions,s900-timer
22*ae4705e1SIvaylo Ivanov
23*ae4705e1SIvaylo Ivanov  clocks:
24*ae4705e1SIvaylo Ivanov    maxItems: 1
25*ae4705e1SIvaylo Ivanov
26*ae4705e1SIvaylo Ivanov  interrupts:
27*ae4705e1SIvaylo Ivanov    minItems: 1
28*ae4705e1SIvaylo Ivanov    maxItems: 6
29*ae4705e1SIvaylo Ivanov
30*ae4705e1SIvaylo Ivanov  interrupt-names:
31*ae4705e1SIvaylo Ivanov    minItems: 1
32*ae4705e1SIvaylo Ivanov    maxItems: 6
33*ae4705e1SIvaylo Ivanov    items:
34*ae4705e1SIvaylo Ivanov      enum:
35*ae4705e1SIvaylo Ivanov        - 2hz0
36*ae4705e1SIvaylo Ivanov        - 2hz1
37*ae4705e1SIvaylo Ivanov        - timer0
38*ae4705e1SIvaylo Ivanov        - timer1
39*ae4705e1SIvaylo Ivanov        - timer2
40*ae4705e1SIvaylo Ivanov        - timer3
41*ae4705e1SIvaylo Ivanov
42*ae4705e1SIvaylo Ivanov  reg:
43*ae4705e1SIvaylo Ivanov    maxItems: 1
44*ae4705e1SIvaylo Ivanov
45*ae4705e1SIvaylo Ivanovrequired:
46*ae4705e1SIvaylo Ivanov  - compatible
47*ae4705e1SIvaylo Ivanov  - clocks
48*ae4705e1SIvaylo Ivanov  - interrupts
49*ae4705e1SIvaylo Ivanov  - interrupt-names
50*ae4705e1SIvaylo Ivanov  - reg
51*ae4705e1SIvaylo Ivanov
52*ae4705e1SIvaylo IvanovallOf:
53*ae4705e1SIvaylo Ivanov  - if:
54*ae4705e1SIvaylo Ivanov      properties:
55*ae4705e1SIvaylo Ivanov        compatible:
56*ae4705e1SIvaylo Ivanov          contains:
57*ae4705e1SIvaylo Ivanov            enum:
58*ae4705e1SIvaylo Ivanov              - actions,s500-timer
59*ae4705e1SIvaylo Ivanov    then:
60*ae4705e1SIvaylo Ivanov      properties:
61*ae4705e1SIvaylo Ivanov        interrupts:
62*ae4705e1SIvaylo Ivanov          minItems: 4
63*ae4705e1SIvaylo Ivanov          maxItems: 4
64*ae4705e1SIvaylo Ivanov        interrupt-names:
65*ae4705e1SIvaylo Ivanov          items:
66*ae4705e1SIvaylo Ivanov            - const: 2hz0
67*ae4705e1SIvaylo Ivanov            - const: 2hz1
68*ae4705e1SIvaylo Ivanov            - const: timer0
69*ae4705e1SIvaylo Ivanov            - const: timer1
70*ae4705e1SIvaylo Ivanov
71*ae4705e1SIvaylo Ivanov  - if:
72*ae4705e1SIvaylo Ivanov      properties:
73*ae4705e1SIvaylo Ivanov        compatible:
74*ae4705e1SIvaylo Ivanov          contains:
75*ae4705e1SIvaylo Ivanov            enum:
76*ae4705e1SIvaylo Ivanov              - actions,s700-timer
77*ae4705e1SIvaylo Ivanov              - actions,s900-timer
78*ae4705e1SIvaylo Ivanov    then:
79*ae4705e1SIvaylo Ivanov      properties:
80*ae4705e1SIvaylo Ivanov        interrupts:
81*ae4705e1SIvaylo Ivanov          minItems: 1
82*ae4705e1SIvaylo Ivanov          maxItems: 1
83*ae4705e1SIvaylo Ivanov        interrupt-names:
84*ae4705e1SIvaylo Ivanov          items:
85*ae4705e1SIvaylo Ivanov            - const: timer1
86*ae4705e1SIvaylo Ivanov
87*ae4705e1SIvaylo IvanovadditionalProperties: false
88*ae4705e1SIvaylo Ivanov
89*ae4705e1SIvaylo Ivanovexamples:
90*ae4705e1SIvaylo Ivanov  - |
91*ae4705e1SIvaylo Ivanov    #include <dt-bindings/interrupt-controller/arm-gic.h>
92*ae4705e1SIvaylo Ivanov    #include <dt-bindings/interrupt-controller/irq.h>
93*ae4705e1SIvaylo Ivanov    soc {
94*ae4705e1SIvaylo Ivanov      #address-cells = <1>;
95*ae4705e1SIvaylo Ivanov      #size-cells = <1>;
96*ae4705e1SIvaylo Ivanov      timer@b0168000 {
97*ae4705e1SIvaylo Ivanov        compatible = "actions,s500-timer";
98*ae4705e1SIvaylo Ivanov        reg = <0xb0168000 0x100>;
99*ae4705e1SIvaylo Ivanov        clocks = <&hosc>;
100*ae4705e1SIvaylo Ivanov        interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
101*ae4705e1SIvaylo Ivanov                     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
102*ae4705e1SIvaylo Ivanov                     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
103*ae4705e1SIvaylo Ivanov                     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
104*ae4705e1SIvaylo Ivanov        interrupt-names = "2hz0", "2hz1", "timer0", "timer1";
105*ae4705e1SIvaylo Ivanov      };
106*ae4705e1SIvaylo Ivanov    };
107*ae4705e1SIvaylo Ivanov...
108