1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/rtc/allwinner,sun6i-a31-rtc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner A31 RTC Device Tree Bindings
8
9maintainers:
10  - Chen-Yu Tsai <wens@csie.org>
11  - Maxime Ripard <mripard@kernel.org>
12
13properties:
14  "#clock-cells":
15    const: 1
16
17  compatible:
18    oneOf:
19      - enum:
20          - allwinner,sun6i-a31-rtc
21          - allwinner,sun8i-a23-rtc
22          - allwinner,sun8i-h3-rtc
23          - allwinner,sun8i-r40-rtc
24          - allwinner,sun8i-v3-rtc
25          - allwinner,sun50i-h5-rtc
26          - allwinner,sun50i-h6-rtc
27          - allwinner,sun50i-h616-rtc
28          - allwinner,sun50i-r329-rtc
29      - items:
30          - const: allwinner,sun50i-a64-rtc
31          - const: allwinner,sun8i-h3-rtc
32      - items:
33          - const: allwinner,sun20i-d1-rtc
34          - const: allwinner,sun50i-r329-rtc
35
36  reg:
37    maxItems: 1
38
39  interrupts:
40    minItems: 1
41    items:
42      - description: RTC Alarm 0
43      - description: RTC Alarm 1
44
45  clocks:
46    minItems: 1
47    maxItems: 4
48
49  clock-names:
50    minItems: 1
51    maxItems: 4
52
53  clock-output-names:
54    minItems: 1
55    maxItems: 3
56    description:
57      The RTC provides up to three clocks
58        - the Low Frequency Oscillator or LOSC, at index 0,
59        - the Low Frequency Oscillator External output (X32KFOUT in
60          the datasheet), at index 1,
61        - the Internal Oscillator, at index 2.
62
63allOf:
64  - $ref: "rtc.yaml#"
65  - if:
66      properties:
67        compatible:
68          contains:
69            const: allwinner,sun6i-a31-rtc
70
71    then:
72      properties:
73        clock-output-names:
74          maxItems: 1
75
76  - if:
77      properties:
78        compatible:
79          contains:
80            enum:
81              - allwinner,sun8i-a23-rtc
82              - allwinner,sun8i-r40-rtc
83              - allwinner,sun8i-v3-rtc
84
85    then:
86      properties:
87        clock-output-names:
88          minItems: 2
89          maxItems: 2
90
91  - if:
92      properties:
93        compatible:
94          contains:
95            enum:
96              - allwinner,sun8i-h3-rtc
97              - allwinner,sun50i-h5-rtc
98              - allwinner,sun50i-h6-rtc
99
100    then:
101      properties:
102        clock-output-names:
103          minItems: 3
104
105  - if:
106      properties:
107        compatible:
108          contains:
109            const: allwinner,sun50i-h616-rtc
110
111    then:
112      properties:
113        clocks:
114          items:
115            - description: Bus clock for register access
116            - description: 24 MHz oscillator
117            - description: 32 kHz clock from the CCU
118
119        clock-names:
120          items:
121            - const: bus
122            - const: hosc
123            - const: pll-32k
124
125      required:
126        - clocks
127        - clock-names
128
129  - if:
130      properties:
131        compatible:
132          contains:
133            const: allwinner,sun50i-r329-rtc
134
135    then:
136      properties:
137        clocks:
138          minItems: 3
139          items:
140            - description: Bus clock for register access
141            - description: 24 MHz oscillator
142            - description: AHB parent for internal SPI clock
143            - description: External 32768 Hz oscillator
144
145        clock-names:
146          minItems: 3
147          items:
148            - const: bus
149            - const: hosc
150            - const: ahb
151            - const: ext-osc32k
152
153      required:
154        - clocks
155        - clock-names
156
157  - if:
158      properties:
159        compatible:
160          contains:
161            enum:
162              - allwinner,sun8i-r40-rtc
163              - allwinner,sun50i-h616-rtc
164              - allwinner,sun50i-r329-rtc
165
166    then:
167      properties:
168        interrupts:
169          maxItems: 1
170
171    else:
172      properties:
173        interrupts:
174          minItems: 2
175
176required:
177  - "#clock-cells"
178  - compatible
179  - reg
180  - interrupts
181
182additionalProperties: false
183
184examples:
185  - |
186    rtc: rtc@1f00000 {
187        compatible = "allwinner,sun6i-a31-rtc";
188        reg = <0x01f00000 0x400>;
189        interrupts = <0 40 4>, <0 41 4>;
190        clock-output-names = "osc32k";
191        clocks = <&ext_osc32k>;
192        #clock-cells = <1>;
193    };
194
195...
196