Merge branch 'for-next/esr-elx-64-bit' into for-next/core
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / clock / imx8m-clock.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/clock/imx8m-clock.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NXP i.MX8M Family Clock Control Module Binding
8
9 maintainers:
10   - Anson Huang <Anson.Huang@nxp.com>
11
12 description: |
13   NXP i.MX8M Mini/Nano/Plus/Quad clock control module is an integrated clock
14   controller, which generates and supplies to all modules.
15
16 properties:
17   compatible:
18     enum:
19       - fsl,imx8mm-ccm
20       - fsl,imx8mn-ccm
21       - fsl,imx8mp-ccm
22       - fsl,imx8mq-ccm
23
24   reg:
25     maxItems: 1
26
27   clocks:
28     minItems: 6
29     maxItems: 7
30
31   clock-names:
32     minItems: 6
33     maxItems: 7
34
35   '#clock-cells':
36     const: 1
37     description:
38       The clock consumer should specify the desired clock by having the clock
39       ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8m-clock.h
40       for the full list of i.MX8M clock IDs.
41
42 required:
43   - compatible
44   - reg
45   - clocks
46   - clock-names
47   - '#clock-cells'
48
49 allOf:
50   - if:
51       properties:
52         compatible:
53           contains:
54             const: fsl,imx8mq-ccm
55     then:
56       properties:
57         clocks:
58           minItems: 7
59           maxItems: 7
60           items:
61             - description: 32k osc
62             - description: 25m osc
63             - description: 27m osc
64             - description: ext1 clock input
65             - description: ext2 clock input
66             - description: ext3 clock input
67             - description: ext4 clock input
68         clock-names:
69           minItems: 7
70           maxItems: 7
71           items:
72             - const: ckil
73             - const: osc_25m
74             - const: osc_27m
75             - const: clk_ext1
76             - const: clk_ext2
77             - const: clk_ext3
78             - const: clk_ext4
79     else:
80       properties:
81         clocks:
82           items:
83             - description: 32k osc
84             - description: 24m osc
85             - description: ext1 clock input
86             - description: ext2 clock input
87             - description: ext3 clock input
88             - description: ext4 clock input
89
90         clock-names:
91           items:
92             - const: osc_32k
93             - const: osc_24m
94             - const: clk_ext1
95             - const: clk_ext2
96             - const: clk_ext3
97             - const: clk_ext4
98
99 additionalProperties: false
100
101 examples:
102   # Clock Control Module node:
103   - |
104     clock-controller@30380000 {
105         compatible = "fsl,imx8mm-ccm";
106         reg = <0x30380000 0x10000>;
107         #clock-cells = <1>;
108         clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
109                  <&clk_ext3>, <&clk_ext4>;
110         clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
111                       "clk_ext3", "clk_ext4";
112     };
113
114   - |
115     clock-controller@30390000 {
116         compatible = "fsl,imx8mq-ccm";
117         reg = <0x30380000 0x10000>;
118         #clock-cells = <1>;
119         clocks = <&ckil>, <&osc_25m>, <&osc_27m>, <&clk_ext1>,
120                  <&clk_ext2>, <&clk_ext3>, <&clk_ext4>;
121         clock-names = "ckil", "osc_25m", "osc_27m", "clk_ext1",
122                       "clk_ext2", "clk_ext3", "clk_ext4";
123     };
124
125 ...