1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/atmel,at91rm9200-pmc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Atmel Power Management Controller (PMC)
8
9maintainers:
10  - Claudiu Beznea <claudiu.beznea@microchip.com>
11
12description:
13  The power management controller optimizes power consumption by controlling all
14  system and user peripheral clocks. The PMC enables/disables the clock inputs
15  to many of the peripherals and to the processor.
16
17properties:
18  compatible:
19    oneOf:
20      - items:
21          - const: atmel,at91sam9g20-pmc
22          - const: atmel,at91sam9260-pmc
23          - const: syscon
24      - items:
25          - enum:
26              - atmel,at91sam9g15-pmc
27              - atmel,at91sam9g25-pmc
28              - atmel,at91sam9g35-pmc
29              - atmel,at91sam9x25-pmc
30              - atmel,at91sam9x35-pmc
31          - const: atmel,at91sam9x5-pmc
32          - const: syscon
33      - items:
34          - enum:
35              - atmel,at91rm9200-pmc
36              - atmel,at91sam9260-pmc
37              - atmel,at91sam9261-pmc
38              - atmel,at91sam9263-pmc
39              - atmel,at91sam9g45-pmc
40              - atmel,at91sam9n12-pmc
41              - atmel,at91sam9rl-pmc
42              - atmel,at91sam9x5-pmc
43              - atmel,sama5d2-pmc
44              - atmel,sama5d3-pmc
45              - atmel,sama5d4-pmc
46              - microchip,sam9x60-pmc
47              - microchip,sam9x7-pmc
48              - microchip,sama7d65-pmc
49              - microchip,sama7g5-pmc
50          - const: syscon
51
52  reg:
53    maxItems: 1
54
55  interrupts:
56    maxItems: 1
57
58  "#clock-cells":
59    description: |
60      - 1st cell is the clock type, one of PMC_TYPE_CORE, PMC_TYPE_SYSTEM,
61        PMC_TYPE_PERIPHERAL, PMC_TYPE_GCK, PMC_TYPE_PROGRAMMABLE (as defined
62        in <dt-bindings/clock/at91.h>)
63      - 2nd cell is the clock identifier as defined in <dt-bindings/clock/at91.h
64        (for core clocks) or as defined in datasheet (for system, peripheral,
65        gck and programmable clocks).
66    const: 2
67
68  clocks:
69    minItems: 2
70    maxItems: 3
71
72  clock-names:
73    minItems: 2
74    maxItems: 3
75
76  atmel,osc-bypass:
77    description: set when a clock signal is directly provided on XIN
78    type: boolean
79
80required:
81  - compatible
82  - reg
83  - interrupts
84  - "#clock-cells"
85  - clocks
86  - clock-names
87
88allOf:
89  - if:
90      properties:
91        compatible:
92          contains:
93            enum:
94              - microchip,sam9x60-pmc
95              - microchip,sam9x7-pmc
96              - microchip,sama7d65-pmc
97              - microchip,sama7g5-pmc
98    then:
99      properties:
100        clocks:
101          minItems: 3
102          maxItems: 3
103        clock-names:
104          items:
105            - const: td_slck
106            - const: md_slck
107            - const: main_xtal
108
109  - if:
110      properties:
111        compatible:
112          contains:
113            enum:
114              - atmel,at91rm9200-pmc
115              - atmel,at91sam9260-pmc
116              - atmel,at91sam9261-pmc
117              - atmel,at91sam9263-pmc
118              - atmel,at91sam9g20-pmc
119    then:
120      properties:
121        clocks:
122          minItems: 2
123          maxItems: 2
124        clock-names:
125          items:
126            - const: slow_xtal
127            - const: main_xtal
128
129  - if:
130      properties:
131        compatible:
132          contains:
133            enum:
134              - atmel,sama5d2-pmc
135              - atmel,sama5d3-pmc
136              - atmel,sama5d4-pmc
137    then:
138      properties:
139        clocks:
140          minItems: 2
141          maxItems: 2
142        clock-names:
143          items:
144            - const: slow_clk
145            - const: main_xtal
146
147additionalProperties: false
148
149examples:
150  - |
151    #include <dt-bindings/interrupt-controller/irq.h>
152
153    pmc: clock-controller@f0018000 {
154        compatible = "atmel,sama5d4-pmc", "syscon";
155        reg = <0xf0018000 0x120>;
156        interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
157        #clock-cells = <2>;
158        clocks = <&clk32k>, <&main_xtal>;
159        clock-names = "slow_clk", "main_xtal";
160    };
161
162...
163