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