1b4809db0d854a9d14e57b10dfcaf423b2809ea0
[openwrt/openwrt.git] / target / linux / bcm27xx / patches-5.4 / 950-0364-overlays-Make-mcp342x-run-time-compatible.patch
1 From 00f01136b1c165e0f4a190fcb5ec8aa11428362f Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Mon, 9 Dec 2019 12:32:20 +0000
4 Subject: [PATCH] overlays: Make mcp342x run-time compatible
5
6 The order of processing of run-time overlays differs from that done by
7 the firmware. This means that certain parameter processing techniques
8 are not compatible with run-time use. The mcp342x overlay is one such
9 overlay, but it is easy to change the implementation without changing
10 the interface.
11
12 See: https://www.raspberrypi.org/forums/viewtopic.php?f=107&t=258294
13
14 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
15 ---
16 .../arm/boot/dts/overlays/mcp342x-overlay.dts | 133 ++++++++++++++----
17 1 file changed, 102 insertions(+), 31 deletions(-)
18
19 --- a/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
20 +++ b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
21 @@ -8,14 +8,15 @@
22
23 fragment@0 {
24 target = <&i2c1>;
25 - __overlay__ {
26 + __dormant__ {
27 #address-cells = <1>;
28 #size-cells = <0>;
29
30 status = "okay";
31
32 - mcp342x: mcp@68 {
33 + mcp3421: mcp@68 {
34 reg = <0x68>;
35 + compatible = "microchip,mcp3421";
36
37 status = "okay";
38 };
39 @@ -23,71 +24,141 @@
40 };
41
42 fragment@1 {
43 - target = <&mcp342x>;
44 + target = <&i2c1>;
45 __dormant__ {
46 - compatible = "microchip,mcp3421";
47 + #address-cells = <1>;
48 + #size-cells = <0>;
49 +
50 + status = "okay";
51 +
52 + mcp3422: mcp@68 {
53 + reg = <0x68>;
54 + compatible = "microchip,mcp3422";
55 +
56 + status = "okay";
57 + };
58 };
59 };
60
61 fragment@2 {
62 - target = <&mcp342x>;
63 + target = <&i2c1>;
64 __dormant__ {
65 - compatible = "microchip,mcp3422";
66 + #address-cells = <1>;
67 + #size-cells = <0>;
68 +
69 + status = "okay";
70 +
71 + mcp3423: mcp@68 {
72 + reg = <0x68>;
73 + compatible = "microchip,mcp3423";
74 +
75 + status = "okay";
76 + };
77 };
78 };
79
80 fragment@3 {
81 - target = <&mcp342x>;
82 + target = <&i2c1>;
83 __dormant__ {
84 - compatible = "microchip,mcp3423";
85 + #address-cells = <1>;
86 + #size-cells = <0>;
87 +
88 + status = "okay";
89 +
90 + mcp3424: mcp@68 {
91 + reg = <0x68>;
92 + compatible = "microchip,mcp3424";
93 +
94 + status = "okay";
95 + };
96 };
97 };
98
99 fragment@4 {
100 - target = <&mcp342x>;
101 + target = <&i2c1>;
102 __dormant__ {
103 - compatible = "microchip,mcp3424";
104 + #address-cells = <1>;
105 + #size-cells = <0>;
106 +
107 + status = "okay";
108 +
109 + mcp3425: mcp@68 {
110 + reg = <0x68>;
111 + compatible = "microchip,mcp3425","mcp3425";
112 +
113 + status = "okay";
114 + };
115 };
116 };
117
118 fragment@5 {
119 - target = <&mcp342x>;
120 + target = <&i2c1>;
121 __dormant__ {
122 - compatible = "microchip,mcp3425";
123 + #address-cells = <1>;
124 + #size-cells = <0>;
125 +
126 + status = "okay";
127 +
128 + mcp3426: mcp@68 {
129 + reg = <0x68>;
130 + compatible = "microchip,mcp3426";
131 +
132 + status = "okay";
133 + };
134 };
135 };
136
137 fragment@6 {
138 - target = <&mcp342x>;
139 + target = <&i2c1>;
140 __dormant__ {
141 - compatible = "microchip,mcp3426";
142 + #address-cells = <1>;
143 + #size-cells = <0>;
144 +
145 + status = "okay";
146 +
147 + mcp3427: mcp@68 {
148 + reg = <0x68>;
149 + compatible = "microchip,mcp3427";
150 +
151 + status = "okay";
152 + };
153 };
154 };
155
156 fragment@7 {
157 - target = <&mcp342x>;
158 + target = <&i2c1>;
159 __dormant__ {
160 - compatible = "microchip,mcp3427";
161 - };
162 - };
163 + #address-cells = <1>;
164 + #size-cells = <0>;
165
166 - fragment@8 {
167 - target = <&mcp342x>;
168 - __dormant__ {
169 - compatible = "microchip,mcp3428";
170 + status = "okay";
171 +
172 + mcp3428: mcp@68 {
173 + reg = <0x68>;
174 + compatible = "microchip,mcp3428";
175 +
176 + status = "okay";
177 + };
178 };
179 };
180
181 __overrides__ {
182 - addr = <&mcp342x>,"reg:0";
183 - mcp3421 = <0>,"=1";
184 - mcp3422 = <0>,"=2";
185 - mcp3423 = <0>,"=3";
186 - mcp3424 = <0>,"=4";
187 - mcp3425 = <0>,"=5";
188 - mcp3426 = <0>,"=6";
189 - mcp3427 = <0>,"=7";
190 - mcp3428 = <0>,"=8";
191 + addr = <&mcp3421>,"reg:0",
192 + <&mcp3422>,"reg:0",
193 + <&mcp3423>,"reg:0",
194 + <&mcp3424>,"reg:0",
195 + <&mcp3425>,"reg:0",
196 + <&mcp3426>,"reg:0",
197 + <&mcp3427>,"reg:0",
198 + <&mcp3428>,"reg:0";
199 + mcp3421 = <0>,"=0";
200 + mcp3422 = <0>,"=1";
201 + mcp3423 = <0>,"=2";
202 + mcp3424 = <0>,"=3";
203 + mcp3425 = <0>,"=4";
204 + mcp3426 = <0>,"=5";
205 + mcp3427 = <0>,"=6";
206 + mcp3428 = <0>,"=7";
207 };
208 };
209