blob: f7e606d45ebcfc46ffe076e23a2ed514bfff9b8f [file] [log] [blame]
Tom Rini6b642ac2024-10-01 12:20:28 -06001# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/mobileye/mobileye,eyeq5-olb.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Mobileye EyeQ SoC system controller
8
9maintainers:
10 - Grégory Clement <gregory.clement@bootlin.com>
11 - Théo Lebrun <theo.lebrun@bootlin.com>
12 - Vladimir Kondratiev <vladimir.kondratiev@mobileye.com>
13
14description:
15 OLB ("Other Logic Block") is a hardware block grouping smaller blocks. Clocks,
16 resets, pinctrl are being handled from here. EyeQ5 and EyeQ6L host a single
17 instance. EyeQ6H hosts seven instances.
18
19properties:
20 compatible:
21 items:
22 - enum:
23 - mobileye,eyeq5-olb
24 - mobileye,eyeq6l-olb
25 - mobileye,eyeq6h-acc-olb
26 - mobileye,eyeq6h-central-olb
27 - mobileye,eyeq6h-east-olb
28 - mobileye,eyeq6h-west-olb
29 - mobileye,eyeq6h-south-olb
30 - mobileye,eyeq6h-ddr0-olb
31 - mobileye,eyeq6h-ddr1-olb
32 - const: syscon
33
34 reg:
35 maxItems: 1
36
37 '#reset-cells':
38 description:
39 First cell is domain and optional if compatible has a single reset domain.
40 Second cell is reset index inside that domain.
41 enum: [ 1, 2 ]
42
43 '#clock-cells':
44 description:
45 Cell is clock index. Optional if compatible has a single clock.
46 enum: [ 0, 1 ]
47
48 clocks:
49 maxItems: 1
50 description:
51 Input parent clock to all PLLs. Expected to be the main crystal.
52
53 clock-names:
54 const: ref
55
56patternProperties:
57 '-pins?$':
58 type: object
59 description: Pin muxing configuration.
60 $ref: /schemas/pinctrl/pinmux-node.yaml#
61 additionalProperties: false
62 properties:
63 pins: true
64 function:
65 enum: [gpio,
66 # Bank A
67 timer0, timer1, timer2, timer5, uart0, uart1, can0, can1, spi0,
68 spi1, refclk0,
69 # Bank B
70 timer3, timer4, timer6, uart2, can2, spi2, spi3, mclk0]
71 bias-disable: true
72 bias-pull-down: true
73 bias-pull-up: true
74 drive-strength: true
75 required:
76 - pins
77 - function
78 allOf:
79 - if:
80 properties:
81 function:
82 const: gpio
83 then:
84 properties:
85 pins:
86 items: # PA0 - PA28, PB0 - PB22
87 pattern: '^(P(A|B)1?[0-9]|PA2[0-8]|PB2[0-2])$'
88 - if:
89 properties:
90 function:
91 const: timer0
92 then:
93 properties:
94 pins:
95 items:
96 enum: [PA0, PA1]
97 - if:
98 properties:
99 function:
100 const: timer1
101 then:
102 properties:
103 pins:
104 items:
105 enum: [PA2, PA3]
106 - if:
107 properties:
108 function:
109 const: timer2
110 then:
111 properties:
112 pins:
113 items:
114 enum: [PA4, PA5]
115 - if:
116 properties:
117 function:
118 const: timer5
119 then:
120 properties:
121 pins:
122 items:
123 enum: [PA6, PA7, PA8, PA9]
124 - if:
125 properties:
126 function:
127 const: uart0
128 then:
129 properties:
130 pins:
131 items:
132 enum: [PA10, PA11]
133 - if:
134 properties:
135 function:
136 const: uart1
137 then:
138 properties:
139 pins:
140 items:
141 enum: [PA12, PA13]
142 - if:
143 properties:
144 function:
145 const: can0
146 then:
147 properties:
148 pins:
149 items:
150 enum: [PA14, PA15]
151 - if:
152 properties:
153 function:
154 const: can1
155 then:
156 properties:
157 pins:
158 items:
159 enum: [PA16, PA17]
160 - if:
161 properties:
162 function:
163 const: spi0
164 then:
165 properties:
166 pins:
167 items:
168 enum: [PA18, PA19, PA20, PA21, PA22]
169 - if:
170 properties:
171 function:
172 const: spi1
173 then:
174 properties:
175 pins:
176 items:
177 enum: [PA23, PA24, PA25, PA26, PA27]
178 - if:
179 properties:
180 function:
181 const: refclk0
182 then:
183 properties:
184 pins:
185 items:
186 enum: [PA28]
187 - if:
188 properties:
189 function:
190 const: timer3
191 then:
192 properties:
193 pins:
194 items:
195 enum: [PB0, PB1]
196 - if:
197 properties:
198 function:
199 const: timer4
200 then:
201 properties:
202 pins:
203 items:
204 enum: [PB2, PB3]
205 - if:
206 properties:
207 function:
208 const: timer6
209 then:
210 properties:
211 pins:
212 items:
213 enum: [PB4, PB5, PB6, PB7]
214 - if:
215 properties:
216 function:
217 const: uart2
218 then:
219 properties:
220 pins:
221 items:
222 enum: [PB8, PB9]
223 - if:
224 properties:
225 function:
226 const: can2
227 then:
228 properties:
229 pins:
230 items:
231 enum: [PB10, PB11]
232 - if:
233 properties:
234 function:
235 const: spi2
236 then:
237 properties:
238 pins:
239 items:
240 enum: [PB12, PB13, PB14, PB15, PB16]
241 - if:
242 properties:
243 function:
244 const: spi3
245 then:
246 properties:
247 pins:
248 items:
249 enum: [PB17, PB18, PB19, PB20, PB21]
250 - if:
251 properties:
252 function:
253 const: mclk0
254 then:
255 properties:
256 pins:
257 items:
258 enum: [PB22]
259
260required:
261 - compatible
262 - reg
263 - '#clock-cells'
264 - clocks
265 - clock-names
266
267additionalProperties: false
268
269allOf:
270 # Compatibles exposing a single reset domain.
271 - if:
272 properties:
273 compatible:
274 contains:
275 enum:
276 - mobileye,eyeq6h-acc-olb
277 - mobileye,eyeq6h-east-olb
278 - mobileye,eyeq6h-west-olb
279 then:
280 properties:
281 '#reset-cells':
282 const: 1
283 required:
284 - '#reset-cells'
285
286 # Compatibles exposing two reset domains.
287 - if:
288 properties:
289 compatible:
290 contains:
291 enum:
292 - mobileye,eyeq5-olb
293 - mobileye,eyeq6l-olb
294 then:
295 properties:
296 '#reset-cells':
297 const: 2
298 required:
299 - '#reset-cells'
300
301 # Compatibles not exposing resets.
302 - if:
303 properties:
304 compatible:
305 contains:
306 enum:
307 - mobileye,eyeq6h-central-olb
308 - mobileye,eyeq6h-south-olb
309 - mobileye,eyeq6h-ddr0-olb
310 - mobileye,eyeq6h-ddr1-olb
311 then:
312 properties:
313 '#reset-cells': false
314
315 # Compatibles exposing a single clock.
316 - if:
317 properties:
318 compatible:
319 contains:
320 enum:
321 - mobileye,eyeq6h-central-olb
322 - mobileye,eyeq6h-east-olb
323 - mobileye,eyeq6h-west-olb
324 - mobileye,eyeq6h-ddr0-olb
325 - mobileye,eyeq6h-ddr1-olb
326 then:
327 properties:
328 '#clock-cells':
329 const: 0
330 else:
331 properties:
332 '#clock-cells':
333 const: 1
334
335 # Only EyeQ5 has pinctrl in OLB.
336 - if:
337 not:
338 properties:
339 compatible:
340 contains:
341 const: mobileye,eyeq5-olb
342 then:
343 patternProperties:
344 '-pins?$': false
345
346examples:
347 - |
348 soc {
349 #address-cells = <2>;
350 #size-cells = <2>;
351
352 system-controller@e00000 {
353 compatible = "mobileye,eyeq5-olb", "syscon";
354 reg = <0 0xe00000 0x0 0x400>;
355 #reset-cells = <2>;
356 #clock-cells = <1>;
357 clocks = <&xtal>;
358 clock-names = "ref";
359 };
360 };
361 - |
362 soc {
363 #address-cells = <2>;
364 #size-cells = <2>;
365
366 system-controller@d2003000 {
367 compatible = "mobileye,eyeq6h-acc-olb", "syscon";
368 reg = <0x0 0xd2003000 0x0 0x1000>;
369 #reset-cells = <1>;
370 #clock-cells = <1>;
371 clocks = <&xtal>;
372 clock-names = "ref";
373 };
374 };