blob: bef109d163a8209d1c201c0a573943d98ac76479 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/xlnx,versal-clk.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Xilinx Versal clock controller
8
9maintainers:
10 - Michal Simek <michal.simek@amd.com>
11
12description: |
13 The clock controller is a hardware block of Xilinx versal clock tree. It
14 reads required input clock frequencies from the devicetree and acts as clock
15 provider for all clock consumers of PS clocks.
16
17properties:
18 compatible:
19 oneOf:
20 - enum:
21 - xlnx,versal-clk
22 - xlnx,zynqmp-clk
23 - items:
24 - enum:
25 - xlnx,versal-net-clk
26 - const: xlnx,versal-clk
27
28 "#clock-cells":
29 const: 1
30
31 clocks:
32 description: List of clock specifiers which are external input
33 clocks to the given clock controller.
Tom Rini93743d22024-04-01 09:08:13 -040034 minItems: 2
Tom Rini53633a82024-02-29 12:33:36 -050035 maxItems: 8
36
37 clock-names:
Tom Rini93743d22024-04-01 09:08:13 -040038 minItems: 2
Tom Rini53633a82024-02-29 12:33:36 -050039 maxItems: 8
40
41required:
42 - compatible
43 - "#clock-cells"
44 - clocks
45 - clock-names
46
47additionalProperties: false
48
49allOf:
50 - if:
51 properties:
52 compatible:
53 contains:
54 enum:
55 - xlnx,versal-clk
56
57 then:
58 properties:
59 clocks:
60 items:
61 - description: reference clock
Tom Rini53633a82024-02-29 12:33:36 -050062 - description: alternate reference clock for programmable logic
63
64 clock-names:
65 items:
66 - const: ref
Tom Rini93743d22024-04-01 09:08:13 -040067 - const: pl_alt_ref
68
69 - if:
70 properties:
71 compatible:
72 contains:
73 enum:
74 - xlnx,versal-net-clk
75
76 then:
77 properties:
78 clocks:
79 items:
80 - description: reference clock
81 - description: alternate reference clock for programmable logic
82 - description: alternate reference clock
83
84 clock-names:
85 items:
86 - const: ref
Tom Rini53633a82024-02-29 12:33:36 -050087 - const: pl_alt_ref
Tom Rini93743d22024-04-01 09:08:13 -040088 - const: alt_ref
Tom Rini53633a82024-02-29 12:33:36 -050089
90 - if:
91 properties:
92 compatible:
93 contains:
94 enum:
95 - xlnx,zynqmp-clk
96
97 then:
98 properties:
99 clocks:
100 minItems: 5
101 items:
102 - description: PS reference clock
103 - description: reference clock for video system
104 - description: alternative PS reference clock
105 - description: auxiliary reference clock
106 - description: transceiver reference clock
107 - description: (E)MIO clock source (Optional clock)
108 - description: GEM emio clock (Optional clock)
109 - description: Watchdog external clock (Optional clock)
110
111 clock-names:
112 minItems: 5
113 items:
114 - const: pss_ref_clk
115 - const: video_clk
116 - const: pss_alt_ref_clk
117 - const: aux_ref_clk
118 - const: gt_crx_ref_clk
119 - pattern: "^mio_clk[00-77]+.*$"
120 - pattern: "gem[0-3]+_emio_clk.*$"
121 - pattern: "swdt[0-1]+_ext_clk.*$"
122
123examples:
124 - |
125 firmware {
126 zynqmp_firmware: zynqmp-firmware {
127 compatible = "xlnx,zynqmp-firmware";
128 method = "smc";
129 versal_clk: clock-controller {
130 #clock-cells = <1>;
131 compatible = "xlnx,versal-clk";
Tom Rini93743d22024-04-01 09:08:13 -0400132 clocks = <&ref>, <&pl_alt_ref>;
133 clock-names = "ref", "pl_alt_ref";
Tom Rini53633a82024-02-29 12:33:36 -0500134 };
135 };
136 };
137
138 clock-controller {
139 #clock-cells = <1>;
140 compatible = "xlnx,zynqmp-clk";
141 clocks = <&pss_ref_clk>, <&video_clk>, <&pss_alt_ref_clk>,
142 <&aux_ref_clk>, <&gt_crx_ref_clk>;
143 clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk",
144 "aux_ref_clk", "gt_crx_ref_clk";
145 };
146...