Skip to content

Commit bde4b22

Browse files
tlebtsbogend
authored andcommitted
dt-bindings: soc: mobileye: add EyeQ OLB system controller
Add documentation to describe the "Other Logic Block" system-controller. It deals with three platforms: EyeQ5, EyeQ6L and EyeQ6H. First two have a single instance, whereas EyeQ6H has seven named instances. Features provided are: - Clocks, children to main crystal. Some PLLs and divider clocks. - Resets. Some instances DO NOT have reset. - Pinctrl. Only EyeQ5 has such feature. Those are NOT the only features exposed in OLB system-controllers! Many individual registers, related to IP block integration, can be found. Additional features will be exposed over time. We simplify devicetree phandles to OLB in two ways: - Compatibles exposing a single clock do not ask for a index argument. This means we use EyeQ6H OLB south (it has four clocks): clocks = <&olb_south EQ6HC_SOUTH_PLL_PER>; But use EyeQ6H OLB east (it has one clock): clocks = <&olb_east>; - Compatibles exposing a single reset domain do not ask for a domain index, only a reset index. This means we use EyeQ5 OLB (it has three domains): resets = <&olb 0 10>; But use EyeQ6H west reset (it has one domain): resets = <&olb_west 3>; About pinctrl subnodes: all pins have two functionality, either GPIO or something-else. The latter is pin dependent, we express constraints using many if-then. Reviewed-by: Rob Herring (Arm) <[email protected]> Signed-off-by: Théo Lebrun <[email protected]> Signed-off-by: Thomas Bogendoerfer <[email protected]>
1 parent 02c76df commit bde4b22

File tree

1 file changed

+374
-0
lines changed

1 file changed

+374
-0
lines changed
Lines changed: 374 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,374 @@
1+
# 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+
7+
title: Mobileye EyeQ SoC system controller
8+
9+
maintainers:
10+
- Grégory Clement <[email protected]>
11+
- Théo Lebrun <[email protected]>
12+
- Vladimir Kondratiev <[email protected]>
13+
14+
description:
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+
19+
properties:
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+
56+
patternProperties:
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+
260+
required:
261+
- compatible
262+
- reg
263+
- '#clock-cells'
264+
- clocks
265+
- clock-names
266+
267+
additionalProperties: false
268+
269+
allOf:
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+
346+
examples:
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+
};

0 commit comments

Comments
 (0)