xref: /linux/Documentation/devicetree/bindings/i2c/st,nomadik-i2c.yaml (revision 4b660dbd9ee2059850fd30e0df420ca7a38a1856)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/i2c/st,nomadik-i2c.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ST Microelectronics Nomadik I2C
8
9description: The Nomadik I2C host controller began its life in the ST
10  Microelectronics STn8800 SoC, and was then inherited into STn8810 and
11  STn8815. It was part of the prototype STn8500 which then became ST-Ericsson
12  DB8500 after the merge of these two companies wireless divisions.
13
14maintainers:
15  - Linus Walleij <linus.walleij@linaro.org>
16
17# Need a custom select here or 'arm,primecell' will match on lots of nodes
18select:
19  properties:
20    compatible:
21      contains:
22        enum:
23          - st,nomadik-i2c
24          - mobileye,eyeq5-i2c
25  required:
26    - compatible
27
28properties:
29  compatible:
30    oneOf:
31      - items:
32          - const: st,nomadik-i2c
33          - const: arm,primecell
34      - items:
35          - const: stericsson,db8500-i2c
36          - const: st,nomadik-i2c
37          - const: arm,primecell
38      - items:
39          - const: mobileye,eyeq5-i2c
40          - const: arm,primecell
41
42  reg:
43    maxItems: 1
44
45  interrupts:
46    maxItems: 1
47
48  clocks:
49    maxItems: 2
50
51  clock-names:
52    oneOf:
53      # Clock name in STn8815
54      - items:
55          - const: mclk
56          - const: apb_pclk
57      # Clock name in DB8500 or EyeQ5
58      - items:
59          - const: i2cclk
60          - const: apb_pclk
61
62  power-domains:
63    maxItems: 1
64
65  resets:
66    maxItems: 1
67
68  clock-frequency:
69    minimum: 1
70    maximum: 400000
71
72  mobileye,olb:
73    $ref: /schemas/types.yaml#/definitions/phandle-array
74    items:
75      - items:
76          - description: Phandle to OLB system controller node.
77          - description: Platform-wide controller ID (integer starting from zero).
78    description:
79      The phandle pointing to OLB system controller node, with the I2C
80      controller index.
81
82required:
83  - compatible
84  - reg
85  - interrupts
86  - clocks
87  - clock-names
88
89unevaluatedProperties: false
90
91allOf:
92  - $ref: /schemas/i2c/i2c-controller.yaml#
93  - if:
94      properties:
95        compatible:
96          contains:
97            const: mobileye,eyeq5-i2c
98    then:
99      required:
100        - mobileye,olb
101    else:
102      properties:
103        mobileye,olb: false
104
105examples:
106  - |
107    #include <dt-bindings/interrupt-controller/irq.h>
108    #include <dt-bindings/interrupt-controller/arm-gic.h>
109    #include <dt-bindings/reset/stericsson,db8500-prcc-reset.h>
110    #include <dt-bindings/arm/ux500_pm_domains.h>
111    i2c@80004000 {
112      compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
113      reg = <0x80004000 0x1000>;
114      interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
115
116      #address-cells = <1>;
117      #size-cells = <0>;
118
119      clock-frequency = <400000>;
120      clocks = <&prcc_kclk 3 3>, <&prcc_pclk 3 3>;
121      clock-names = "i2cclk", "apb_pclk";
122      power-domains = <&pm_domains DOMAIN_VAPE>;
123      resets = <&prcc_reset DB8500_PRCC_3 DB8500_PRCC_3_RESET_I2C0>;
124    };
125
126    i2c@101f8000 {
127      compatible = "st,nomadik-i2c", "arm,primecell";
128      reg = <0x101f8000 0x1000>;
129      interrupt-parent = <&vica>;
130      interrupts = <20>;
131      clock-frequency = <100000>;
132      #address-cells = <1>;
133      #size-cells = <0>;
134      clocks = <&i2c0clk>, <&pclki2c0>;
135      clock-names = "mclk", "apb_pclk";
136    };
137  - |
138    #include <dt-bindings/interrupt-controller/mips-gic.h>
139    i2c@300000 {
140      compatible = "mobileye,eyeq5-i2c", "arm,primecell";
141      reg = <0x300000 0x1000>;
142      interrupt-parent = <&gic>;
143      interrupts = <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>;
144      clock-frequency = <400000>;
145      #address-cells = <1>;
146      #size-cells = <0>;
147      clocks = <&i2c_ser_clk>, <&i2c_clk>;
148      clock-names = "i2cclk", "apb_pclk";
149      mobileye,olb = <&olb 0>;
150    };
151
152...
153