900cbb2ca852b100da342729f61696d34e1b52ed
[oweals/openwrt.git] / target / linux / brcm2708 / patches-4.19 / 950-0782-overlays-Make-mcp342x-run-time-compatible.patch
1 From e650f4bfbe9a09e5b75d702884a8ba8d9df6ccdf 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