blob: 44c54b162bb10741ec7aac70d165403c28176eba [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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
Tom Rini53633a82024-02-29 12:33:36 -050017# 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
Tom Rini6bb92fc2024-05-20 09:54:58 -060024 - mobileye,eyeq5-i2c
Tom Rini53633a82024-02-29 12:33:36 -050025 required:
26 - compatible
27
28properties:
29 compatible:
30 oneOf:
Tom Rini53633a82024-02-29 12:33:36 -050031 - items:
32 - const: st,nomadik-i2c
33 - const: arm,primecell
Tom Rini53633a82024-02-29 12:33:36 -050034 - items:
35 - const: stericsson,db8500-i2c
36 - const: st,nomadik-i2c
37 - const: arm,primecell
Tom Rini6bb92fc2024-05-20 09:54:58 -060038 - items:
39 - const: mobileye,eyeq5-i2c
40 - const: arm,primecell
Tom Rini53633a82024-02-29 12:33:36 -050041
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
Tom Rini6bb92fc2024-05-20 09:54:58 -060057 # Clock name in DB8500 or EyeQ5
Tom Rini53633a82024-02-29 12:33:36 -050058 - 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
Tom Rini6bb92fc2024-05-20 09:54:58 -060072 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
Tom Rini53633a82024-02-29 12:33:36 -050082required:
83 - compatible
84 - reg
85 - interrupts
86 - clocks
87 - clock-names
88
89unevaluatedProperties: false
90
Tom Rini6bb92fc2024-05-20 09:54:58 -060091allOf:
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
Tom Rini53633a82024-02-29 12:33:36 -0500105examples:
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 };
Tom Rini6bb92fc2024-05-20 09:54:58 -0600137 - |
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 };
Tom Rini53633a82024-02-29 12:33:36 -0500151
152...