brcm2708: update linux 4.4 patches to latest version
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.4 / 0345-BCM270X_DT-Add-umbrella-I2C-Mux-overlay-i2c-mux.patch
1 From eaa6e5f8a581aa8c71c245ecfc882819c7090a06 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Wed, 11 May 2016 15:38:04 +0100
4 Subject: [PATCH 345/381] BCM270X_DT: Add umbrella I2C Mux overlay i2c-mux
5
6 This overlay supports a range of I2C multiplexers - PCA9542 (2 ports),
7 PCA9545 (4 ports) and PCA9548 (8 ports).
8
9 Also remove the dedicated i2c-mux-9548a overlays since it is no longer
10 needed.
11
12 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
13 ---
14 arch/arm/boot/dts/overlays/Makefile | 2 +-
15 arch/arm/boot/dts/overlays/README | 17 ++-
16 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts | 138 +++++++++++++++++++++
17 .../boot/dts/overlays/i2c-mux-pca9548a-overlay.dts | 67 ----------
18 4 files changed, 152 insertions(+), 72 deletions(-)
19 create mode 100644 arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
20 delete mode 100644 arch/arm/boot/dts/overlays/i2c-mux-pca9548a-overlay.dts
21
22 --- a/arch/arm/boot/dts/overlays/Makefile
23 +++ b/arch/arm/boot/dts/overlays/Makefile
24 @@ -34,7 +34,7 @@ dtbo-$(RPI_DT_OVERLAYS) += hy28a.dtbo
25 dtbo-$(RPI_DT_OVERLAYS) += hy28b.dtbo
26 dtbo-$(RPI_DT_OVERLAYS) += i2c-rtc.dtbo
27 dtbo-$(RPI_DT_OVERLAYS) += i2c-gpio.dtbo
28 -dtbo-$(RPI_DT_OVERLAYS) += i2c-mux-pca9548a.dtbo
29 +dtbo-$(RPI_DT_OVERLAYS) += i2c-mux.dtbo
30 dtbo-$(RPI_DT_OVERLAYS) += i2c-pwm-pca9685a.dtbo
31 dtbo-$(RPI_DT_OVERLAYS) += i2c0-bcm2708.dtbo
32 dtbo-$(RPI_DT_OVERLAYS) += i2c1-bcm2708.dtbo
33 --- a/arch/arm/boot/dts/overlays/README
34 +++ b/arch/arm/boot/dts/overlays/README
35 @@ -421,10 +421,19 @@ Params: i2c_gpio_sda GPIO use
36 (default "2" = ~100kHz)
37
38
39 -Name: i2c-mux-pca9548a
40 -Info: Adds support for an NXP PCA9548A I2C multiplexer on i2c_arm
41 -Load: dtoverlay=i2c-mux-pca9548a,<param>=<val>
42 -Params: addr I2C address of PCA9548A (default 0x70)
43 +Name: i2c-mux
44 +Info: Adds support for a number of I2C bus multiplexers on i2c_arm
45 +Load: dtoverlay=i2c-mux,<param>=<val>
46 +Params: pca9542 Select the NXP PCA9542 device
47 +
48 + pca9545 Select the NXP PCA9545 device
49 +
50 + pca9548 Select the NXP PCA9548 device
51 +
52 + addr Change I2C address of the device (default 0x70)
53 +
54 +
55 +[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
56
57
58 Name: i2c-pwm-pca9685a
59 --- /dev/null
60 +++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
61 @@ -0,0 +1,138 @@
62 +// Umbrella I2C Mux overlay
63 +
64 +/dts-v1/;
65 +/plugin/;
66 +
67 +/{
68 + compatible = "brcm,bcm2708";
69 +
70 + fragment@0 {
71 + target = <&i2c_arm>;
72 + __dormant__ {
73 + #address-cells = <1>;
74 + #size-cells = <0>;
75 + status = "okay";
76 +
77 + pca9542: mux@70 {
78 + compatible = "nxp,pca9542";
79 + reg = <0x70>;
80 + #address-cells = <1>;
81 + #size-cells = <0>;
82 +
83 + i2c@0 {
84 + #address-cells = <1>;
85 + #size-cells = <0>;
86 + reg = <0>;
87 + };
88 + i2c@1 {
89 + #address-cells = <1>;
90 + #size-cells = <0>;
91 + reg = <1>;
92 + };
93 + };
94 + };
95 + };
96 +
97 + fragment@1 {
98 + target = <&i2c_arm>;
99 + __dormant__ {
100 + #address-cells = <1>;
101 + #size-cells = <0>;
102 + status = "okay";
103 +
104 + pca9545: mux@70 {
105 + compatible = "nxp,pca9545";
106 + reg = <0x70>;
107 + #address-cells = <1>;
108 + #size-cells = <0>;
109 +
110 + i2c@0 {
111 + #address-cells = <1>;
112 + #size-cells = <0>;
113 + reg = <0>;
114 + };
115 + i2c@1 {
116 + #address-cells = <1>;
117 + #size-cells = <0>;
118 + reg = <1>;
119 + };
120 + i2c@2 {
121 + #address-cells = <1>;
122 + #size-cells = <0>;
123 + reg = <2>;
124 + };
125 + i2c@3 {
126 + #address-cells = <1>;
127 + #size-cells = <0>;
128 + reg = <3>;
129 + };
130 + };
131 + };
132 + };
133 +
134 + fragment@2 {
135 + target = <&i2c_arm>;
136 + __dormant__ {
137 + #address-cells = <1>;
138 + #size-cells = <0>;
139 + status = "okay";
140 +
141 + pca9548: mux@70 {
142 + compatible = "nxp,pca9548";
143 + reg = <0x70>;
144 + #address-cells = <1>;
145 + #size-cells = <0>;
146 +
147 + i2c@0 {
148 + #address-cells = <1>;
149 + #size-cells = <0>;
150 + reg = <0>;
151 + };
152 + i2c@1 {
153 + #address-cells = <1>;
154 + #size-cells = <0>;
155 + reg = <1>;
156 + };
157 + i2c@2 {
158 + #address-cells = <1>;
159 + #size-cells = <0>;
160 + reg = <2>;
161 + };
162 + i2c@3 {
163 + #address-cells = <1>;
164 + #size-cells = <0>;
165 + reg = <3>;
166 + };
167 + i2c@4 {
168 + #address-cells = <1>;
169 + #size-cells = <0>;
170 + reg = <4>;
171 + };
172 + i2c@5 {
173 + #address-cells = <1>;
174 + #size-cells = <0>;
175 + reg = <5>;
176 + };
177 + i2c@6 {
178 + #address-cells = <1>;
179 + #size-cells = <0>;
180 + reg = <6>;
181 + };
182 + i2c@7 {
183 + #address-cells = <1>;
184 + #size-cells = <0>;
185 + reg = <7>;
186 + };
187 + };
188 + };
189 + };
190 +
191 + __overrides__ {
192 + pca9542 = <0>, "+0";
193 + pca9545 = <0>, "+1";
194 + pca9548 = <0>, "+2";
195 +
196 + addr = <&pca9545>,"reg:0",
197 + <&pca9548>,"reg:0";
198 + };
199 +};
200 --- a/arch/arm/boot/dts/overlays/i2c-mux-pca9548a-overlay.dts
201 +++ /dev/null
202 @@ -1,67 +0,0 @@
203 -// Definitions for NXP PCA9548A I2C mux on ARM I2C bus.
204 -/dts-v1/;
205 -/plugin/;
206 -
207 -/{
208 - compatible = "brcm,bcm2708";
209 -
210 - fragment@0 {
211 - target = <&i2c_arm>;
212 - __overlay__ {
213 - #address-cells = <1>;
214 - #size-cells = <0>;
215 - status = "okay";
216 -
217 - i2cmux: mux@70 {
218 - compatible = "nxp,pca9548";
219 - reg = <0x70>;
220 - #address-cells = <1>;
221 - #size-cells = <0>;
222 -
223 - i2c@0 {
224 - #address-cells = <1>;
225 - #size-cells = <0>;
226 - reg = <0>;
227 - };
228 - i2c@1 {
229 - #address-cells = <1>;
230 - #size-cells = <0>;
231 - reg = <1>;
232 - };
233 - i2c@2 {
234 - #address-cells = <1>;
235 - #size-cells = <0>;
236 - reg = <2>;
237 - };
238 - i2c@3 {
239 - #address-cells = <1>;
240 - #size-cells = <0>;
241 - reg = <3>;
242 - };
243 - i2c@4 {
244 - #address-cells = <1>;
245 - #size-cells = <0>;
246 - reg = <4>;
247 - };
248 - i2c@5 {
249 - #address-cells = <1>;
250 - #size-cells = <0>;
251 - reg = <5>;
252 - };
253 - i2c@6 {
254 - #address-cells = <1>;
255 - #size-cells = <0>;
256 - reg = <6>;
257 - };
258 - i2c@7 {
259 - #address-cells = <1>;
260 - #size-cells = <0>;
261 - reg = <7>;
262 - };
263 - };
264 - };
265 - };
266 - __overrides__ {
267 - addr = <&i2cmux>,"reg:0";
268 - };
269 -};