diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boot/dts/db8500.dtsi | 204 | ||||
-rw-r--r-- | arch/arm/boot/dts/snowball.dts | 32 | ||||
-rw-r--r-- | arch/arm/configs/u8500_defconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-uib.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 32 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 25 |
7 files changed, 281 insertions, 21 deletions
diff --git a/arch/arm/boot/dts/db8500.dtsi b/arch/arm/boot/dts/db8500.dtsi index 881bc3987844..4ad5160018cb 100644 --- a/arch/arm/boot/dts/db8500.dtsi +++ b/arch/arm/boot/dts/db8500.dtsi | |||
@@ -58,6 +58,8 @@ | |||
58 | "st,nomadik-gpio"; | 58 | "st,nomadik-gpio"; |
59 | reg = <0x8012e000 0x80>; | 59 | reg = <0x8012e000 0x80>; |
60 | interrupts = <0 119 0x4>; | 60 | interrupts = <0 119 0x4>; |
61 | interrupt-controller; | ||
62 | #interrupt-cells = <2>; | ||
61 | supports-sleepmode; | 63 | supports-sleepmode; |
62 | gpio-controller; | 64 | gpio-controller; |
63 | #gpio-cells = <2>; | 65 | #gpio-cells = <2>; |
@@ -69,6 +71,8 @@ | |||
69 | "st,nomadik-gpio"; | 71 | "st,nomadik-gpio"; |
70 | reg = <0x8012e080 0x80>; | 72 | reg = <0x8012e080 0x80>; |
71 | interrupts = <0 120 0x4>; | 73 | interrupts = <0 120 0x4>; |
74 | interrupt-controller; | ||
75 | #interrupt-cells = <2>; | ||
72 | supports-sleepmode; | 76 | supports-sleepmode; |
73 | gpio-controller; | 77 | gpio-controller; |
74 | #gpio-cells = <2>; | 78 | #gpio-cells = <2>; |
@@ -80,6 +84,8 @@ | |||
80 | "st,nomadik-gpio"; | 84 | "st,nomadik-gpio"; |
81 | reg = <0x8000e000 0x80>; | 85 | reg = <0x8000e000 0x80>; |
82 | interrupts = <0 121 0x4>; | 86 | interrupts = <0 121 0x4>; |
87 | interrupt-controller; | ||
88 | #interrupt-cells = <2>; | ||
83 | supports-sleepmode; | 89 | supports-sleepmode; |
84 | gpio-controller; | 90 | gpio-controller; |
85 | #gpio-cells = <2>; | 91 | #gpio-cells = <2>; |
@@ -91,6 +97,8 @@ | |||
91 | "st,nomadik-gpio"; | 97 | "st,nomadik-gpio"; |
92 | reg = <0x8000e080 0x80>; | 98 | reg = <0x8000e080 0x80>; |
93 | interrupts = <0 122 0x4>; | 99 | interrupts = <0 122 0x4>; |
100 | interrupt-controller; | ||
101 | #interrupt-cells = <2>; | ||
94 | supports-sleepmode; | 102 | supports-sleepmode; |
95 | gpio-controller; | 103 | gpio-controller; |
96 | #gpio-cells = <2>; | 104 | #gpio-cells = <2>; |
@@ -102,6 +110,8 @@ | |||
102 | "st,nomadik-gpio"; | 110 | "st,nomadik-gpio"; |
103 | reg = <0x8000e100 0x80>; | 111 | reg = <0x8000e100 0x80>; |
104 | interrupts = <0 123 0x4>; | 112 | interrupts = <0 123 0x4>; |
113 | interrupt-controller; | ||
114 | #interrupt-cells = <2>; | ||
105 | supports-sleepmode; | 115 | supports-sleepmode; |
106 | gpio-controller; | 116 | gpio-controller; |
107 | #gpio-cells = <2>; | 117 | #gpio-cells = <2>; |
@@ -113,6 +123,8 @@ | |||
113 | "st,nomadik-gpio"; | 123 | "st,nomadik-gpio"; |
114 | reg = <0x8000e180 0x80>; | 124 | reg = <0x8000e180 0x80>; |
115 | interrupts = <0 124 0x4>; | 125 | interrupts = <0 124 0x4>; |
126 | interrupt-controller; | ||
127 | #interrupt-cells = <2>; | ||
116 | supports-sleepmode; | 128 | supports-sleepmode; |
117 | gpio-controller; | 129 | gpio-controller; |
118 | #gpio-cells = <2>; | 130 | #gpio-cells = <2>; |
@@ -124,6 +136,8 @@ | |||
124 | "st,nomadik-gpio"; | 136 | "st,nomadik-gpio"; |
125 | reg = <0x8011e000 0x80>; | 137 | reg = <0x8011e000 0x80>; |
126 | interrupts = <0 125 0x4>; | 138 | interrupts = <0 125 0x4>; |
139 | interrupt-controller; | ||
140 | #interrupt-cells = <2>; | ||
127 | supports-sleepmode; | 141 | supports-sleepmode; |
128 | gpio-controller; | 142 | gpio-controller; |
129 | #gpio-cells = <2>; | 143 | #gpio-cells = <2>; |
@@ -135,6 +149,8 @@ | |||
135 | "st,nomadik-gpio"; | 149 | "st,nomadik-gpio"; |
136 | reg = <0x8011e080 0x80>; | 150 | reg = <0x8011e080 0x80>; |
137 | interrupts = <0 126 0x4>; | 151 | interrupts = <0 126 0x4>; |
152 | interrupt-controller; | ||
153 | #interrupt-cells = <2>; | ||
138 | supports-sleepmode; | 154 | supports-sleepmode; |
139 | gpio-controller; | 155 | gpio-controller; |
140 | #gpio-cells = <2>; | 156 | #gpio-cells = <2>; |
@@ -146,12 +162,18 @@ | |||
146 | "st,nomadik-gpio"; | 162 | "st,nomadik-gpio"; |
147 | reg = <0xa03fe000 0x80>; | 163 | reg = <0xa03fe000 0x80>; |
148 | interrupts = <0 127 0x4>; | 164 | interrupts = <0 127 0x4>; |
165 | interrupt-controller; | ||
166 | #interrupt-cells = <2>; | ||
149 | supports-sleepmode; | 167 | supports-sleepmode; |
150 | gpio-controller; | 168 | gpio-controller; |
151 | #gpio-cells = <2>; | 169 | #gpio-cells = <2>; |
152 | gpio-bank = <8>; | 170 | gpio-bank = <8>; |
153 | }; | 171 | }; |
154 | 172 | ||
173 | pinctrl { | ||
174 | compatible = "stericsson,nmk_pinctrl"; | ||
175 | }; | ||
176 | |||
155 | usb@a03e0000 { | 177 | usb@a03e0000 { |
156 | compatible = "stericsson,db8500-musb", | 178 | compatible = "stericsson,db8500-musb", |
157 | "mentor,musb"; | 179 | "mentor,musb"; |
@@ -169,20 +191,195 @@ | |||
169 | prcmu@80157000 { | 191 | prcmu@80157000 { |
170 | compatible = "stericsson,db8500-prcmu"; | 192 | compatible = "stericsson,db8500-prcmu"; |
171 | reg = <0x80157000 0x1000>; | 193 | reg = <0x80157000 0x1000>; |
172 | interrupts = <46 47>; | 194 | interrupts = <0 47 0x4>; |
173 | #address-cells = <1>; | 195 | #address-cells = <1>; |
174 | #size-cells = <1>; | 196 | #size-cells = <1>; |
175 | ranges; | 197 | ranges; |
176 | 198 | ||
177 | prcmu-timer-4@80157450 { | 199 | prcmu-timer-4@80157450 { |
178 | compatible = "stericsson,db8500-prcmu-timer-4"; | 200 | compatible = "stericsson,db8500-prcmu-timer-4"; |
179 | reg = <0x80157450 0xC>; | 201 | reg = <0x80157450 0xC>; |
180 | }; | 202 | }; |
181 | 203 | ||
204 | db8500-prcmu-regulators { | ||
205 | compatible = "stericsson,db8500-prcmu-regulator"; | ||
206 | |||
207 | // DB8500_REGULATOR_VAPE | ||
208 | db8500_vape_reg: db8500_vape { | ||
209 | regulator-name = "db8500-vape"; | ||
210 | regulator-always-on; | ||
211 | }; | ||
212 | |||
213 | // DB8500_REGULATOR_VARM | ||
214 | db8500_varm_reg: db8500_varm { | ||
215 | regulator-name = "db8500-varm"; | ||
216 | }; | ||
217 | |||
218 | // DB8500_REGULATOR_VMODEM | ||
219 | db8500_vmodem_reg: db8500_vmodem { | ||
220 | regulator-name = "db8500-vmodem"; | ||
221 | }; | ||
222 | |||
223 | // DB8500_REGULATOR_VPLL | ||
224 | db8500_vpll_reg: db8500_vpll { | ||
225 | regulator-name = "db8500-vpll"; | ||
226 | }; | ||
227 | |||
228 | // DB8500_REGULATOR_VSMPS1 | ||
229 | db8500_vsmps1_reg: db8500_vsmps1 { | ||
230 | regulator-name = "db8500-vsmps1"; | ||
231 | }; | ||
232 | |||
233 | // DB8500_REGULATOR_VSMPS2 | ||
234 | db8500_vsmps2_reg: db8500_vsmps2 { | ||
235 | regulator-name = "db8500-vsmps2"; | ||
236 | }; | ||
237 | |||
238 | // DB8500_REGULATOR_VSMPS3 | ||
239 | db8500_vsmps3_reg: db8500_vsmps3 { | ||
240 | regulator-name = "db8500-vsmps3"; | ||
241 | }; | ||
242 | |||
243 | // DB8500_REGULATOR_VRF1 | ||
244 | db8500_vrf1_reg: db8500_vrf1 { | ||
245 | regulator-name = "db8500-vrf1"; | ||
246 | }; | ||
247 | |||
248 | // DB8500_REGULATOR_SWITCH_SVAMMDSP | ||
249 | db8500_sva_mmdsp_reg: db8500_sva_mmdsp { | ||
250 | regulator-name = "db8500-sva-mmdsp"; | ||
251 | }; | ||
252 | |||
253 | // DB8500_REGULATOR_SWITCH_SVAMMDSPRET | ||
254 | db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { | ||
255 | regulator-name = "db8500-sva-mmdsp-ret"; | ||
256 | }; | ||
257 | |||
258 | // DB8500_REGULATOR_SWITCH_SVAPIPE | ||
259 | db8500_sva_pipe_reg: db8500_sva_pipe { | ||
260 | regulator-name = "db8500_sva_pipe"; | ||
261 | }; | ||
262 | |||
263 | // DB8500_REGULATOR_SWITCH_SIAMMDSP | ||
264 | db8500_sia_mmdsp_reg: db8500_sia_mmdsp { | ||
265 | regulator-name = "db8500_sia_mmdsp"; | ||
266 | }; | ||
267 | |||
268 | // DB8500_REGULATOR_SWITCH_SIAMMDSPRET | ||
269 | db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { | ||
270 | regulator-name = "db8500-sia-mmdsp-ret"; | ||
271 | }; | ||
272 | |||
273 | // DB8500_REGULATOR_SWITCH_SIAPIPE | ||
274 | db8500_sia_pipe_reg: db8500_sia_pipe { | ||
275 | regulator-name = "db8500-sia-pipe"; | ||
276 | }; | ||
277 | |||
278 | // DB8500_REGULATOR_SWITCH_SGA | ||
279 | db8500_sga_reg: db8500_sga { | ||
280 | regulator-name = "db8500-sga"; | ||
281 | vin-supply = <&db8500_vape_reg>; | ||
282 | }; | ||
283 | |||
284 | // DB8500_REGULATOR_SWITCH_B2R2_MCDE | ||
285 | db8500_b2r2_mcde_reg: db8500_b2r2_mcde { | ||
286 | regulator-name = "db8500-b2r2-mcde"; | ||
287 | vin-supply = <&db8500_vape_reg>; | ||
288 | }; | ||
289 | |||
290 | // DB8500_REGULATOR_SWITCH_ESRAM12 | ||
291 | db8500_esram12_reg: db8500_esram12 { | ||
292 | regulator-name = "db8500-esram12"; | ||
293 | }; | ||
294 | |||
295 | // DB8500_REGULATOR_SWITCH_ESRAM12RET | ||
296 | db8500_esram12_ret_reg: db8500_esram12_ret { | ||
297 | regulator-name = "db8500-esram12-ret"; | ||
298 | }; | ||
299 | |||
300 | // DB8500_REGULATOR_SWITCH_ESRAM34 | ||
301 | db8500_esram34_reg: db8500_esram34 { | ||
302 | regulator-name = "db8500-esram34"; | ||
303 | }; | ||
304 | |||
305 | // DB8500_REGULATOR_SWITCH_ESRAM34RET | ||
306 | db8500_esram34_ret_reg: db8500_esram34_ret { | ||
307 | regulator-name = "db8500-esram34-ret"; | ||
308 | }; | ||
309 | }; | ||
310 | |||
182 | ab8500@5 { | 311 | ab8500@5 { |
183 | compatible = "stericsson,ab8500"; | 312 | compatible = "stericsson,ab8500"; |
184 | reg = <5>; /* mailbox 5 is i2c */ | 313 | reg = <5>; /* mailbox 5 is i2c */ |
185 | interrupts = <0 40 0x4>; | 314 | interrupts = <0 40 0x4>; |
315 | |||
316 | ab8500-regulators { | ||
317 | compatible = "stericsson,ab8500-regulator"; | ||
318 | |||
319 | // supplies to the display/camera | ||
320 | ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { | ||
321 | regulator-name = "V-DISPLAY"; | ||
322 | regulator-min-microvolt = <2500000>; | ||
323 | regulator-max-microvolt = <2900000>; | ||
324 | regulator-boot-on; | ||
325 | /* BUG: If turned off MMC will be affected. */ | ||
326 | regulator-always-on; | ||
327 | }; | ||
328 | |||
329 | // supplies to the on-board eMMC | ||
330 | ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { | ||
331 | regulator-name = "V-eMMC1"; | ||
332 | regulator-min-microvolt = <1100000>; | ||
333 | regulator-max-microvolt = <3300000>; | ||
334 | }; | ||
335 | |||
336 | // supply for VAUX3; SDcard slots | ||
337 | ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { | ||
338 | regulator-name = "V-MMC-SD"; | ||
339 | regulator-min-microvolt = <1100000>; | ||
340 | regulator-max-microvolt = <3300000>; | ||
341 | }; | ||
342 | |||
343 | // supply for v-intcore12; VINTCORE12 LDO | ||
344 | ab8500_ldo_initcore_reg: ab8500_ldo_initcore { | ||
345 | regulator-name = "V-INTCORE"; | ||
346 | }; | ||
347 | |||
348 | // supply for tvout; gpadc; TVOUT LDO | ||
349 | ab8500_ldo_tvout_reg: ab8500_ldo_tvout { | ||
350 | regulator-name = "V-TVOUT"; | ||
351 | }; | ||
352 | |||
353 | // supply for ab8500-usb; USB LDO | ||
354 | ab8500_ldo_usb_reg: ab8500_ldo_usb { | ||
355 | regulator-name = "dummy"; | ||
356 | }; | ||
357 | |||
358 | // supply for ab8500-vaudio; VAUDIO LDO | ||
359 | ab8500_ldo_audio_reg: ab8500_ldo_audio { | ||
360 | regulator-name = "V-AUD"; | ||
361 | }; | ||
362 | |||
363 | // supply for v-anamic1 VAMic1-LDO | ||
364 | ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { | ||
365 | regulator-name = "V-AMIC1"; | ||
366 | }; | ||
367 | |||
368 | // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1 | ||
369 | ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { | ||
370 | regulator-name = "V-AMIC2"; | ||
371 | }; | ||
372 | |||
373 | // supply for v-dmic; VDMIC LDO | ||
374 | ab8500_ldo_dmic_reg: ab8500_ldo_dmic { | ||
375 | regulator-name = "V-DMIC"; | ||
376 | }; | ||
377 | |||
378 | // supply for U8500 CSI/DSI; VANA LDO | ||
379 | ab8500_ldo_ana_reg: ab8500_ldo_ana { | ||
380 | regulator-name = "V-CSI/DSI"; | ||
381 | }; | ||
382 | }; | ||
186 | }; | 383 | }; |
187 | }; | 384 | }; |
188 | 385 | ||
@@ -235,7 +432,8 @@ | |||
235 | status = "disabled"; | 432 | status = "disabled"; |
236 | 433 | ||
237 | // Add one of these for each child device | 434 | // Add one of these for each child device |
238 | cs-gpios = <&gpio0 31 &gpio4 14 &gpio4 16 &gpio6 22 &gpio7 0>; | 435 | cs-gpios = <&gpio0 31 0x4 &gpio4 14 0x4 &gpio4 16 0x4 |
436 | &gpio6 22 0x4 &gpio7 0 0x4>; | ||
239 | 437 | ||
240 | }; | 438 | }; |
241 | 439 | ||
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts index d99dc04f0d91..ec3c33975110 100644 --- a/arch/arm/boot/dts/snowball.dts +++ b/arch/arm/boot/dts/snowball.dts | |||
@@ -20,6 +20,16 @@ | |||
20 | reg = <0x00000000 0x20000000>; | 20 | reg = <0x00000000 0x20000000>; |
21 | }; | 21 | }; |
22 | 22 | ||
23 | en_3v3_reg: en_3v3 { | ||
24 | compatible = "regulator-fixed"; | ||
25 | regulator-name = "en-3v3-fixed-supply"; | ||
26 | regulator-min-microvolt = <3300000>; | ||
27 | regulator-max-microvolt = <3300000>; | ||
28 | gpios = <&gpio0 26 0x4>; // 26 | ||
29 | startup-delay-us = <5000>; | ||
30 | enable-active-high; | ||
31 | }; | ||
32 | |||
23 | gpio_keys { | 33 | gpio_keys { |
24 | compatible = "gpio-keys"; | 34 | compatible = "gpio-keys"; |
25 | #address-cells = <1>; | 35 | #address-cells = <1>; |
@@ -30,35 +40,35 @@ | |||
30 | wakeup = <1>; | 40 | wakeup = <1>; |
31 | linux,code = <2>; | 41 | linux,code = <2>; |
32 | label = "userpb"; | 42 | label = "userpb"; |
33 | gpios = <&gpio1 0 0>; | 43 | gpios = <&gpio1 0 0x4>; |
34 | }; | 44 | }; |
35 | button@2 { | 45 | button@2 { |
36 | debounce_interval = <50>; | 46 | debounce_interval = <50>; |
37 | wakeup = <1>; | 47 | wakeup = <1>; |
38 | linux,code = <3>; | 48 | linux,code = <3>; |
39 | label = "extkb1"; | 49 | label = "extkb1"; |
40 | gpios = <&gpio4 23 0>; | 50 | gpios = <&gpio4 23 0x4>; |
41 | }; | 51 | }; |
42 | button@3 { | 52 | button@3 { |
43 | debounce_interval = <50>; | 53 | debounce_interval = <50>; |
44 | wakeup = <1>; | 54 | wakeup = <1>; |
45 | linux,code = <4>; | 55 | linux,code = <4>; |
46 | label = "extkb2"; | 56 | label = "extkb2"; |
47 | gpios = <&gpio4 24 0>; | 57 | gpios = <&gpio4 24 0x4>; |
48 | }; | 58 | }; |
49 | button@4 { | 59 | button@4 { |
50 | debounce_interval = <50>; | 60 | debounce_interval = <50>; |
51 | wakeup = <1>; | 61 | wakeup = <1>; |
52 | linux,code = <5>; | 62 | linux,code = <5>; |
53 | label = "extkb3"; | 63 | label = "extkb3"; |
54 | gpios = <&gpio5 1 0>; | 64 | gpios = <&gpio5 1 0x4>; |
55 | }; | 65 | }; |
56 | button@5 { | 66 | button@5 { |
57 | debounce_interval = <50>; | 67 | debounce_interval = <50>; |
58 | wakeup = <1>; | 68 | wakeup = <1>; |
59 | linux,code = <6>; | 69 | linux,code = <6>; |
60 | label = "extkb4"; | 70 | label = "extkb4"; |
61 | gpios = <&gpio5 2 0>; | 71 | gpios = <&gpio5 2 0x4>; |
62 | }; | 72 | }; |
63 | }; | 73 | }; |
64 | 74 | ||
@@ -66,12 +76,11 @@ | |||
66 | compatible = "gpio-leds"; | 76 | compatible = "gpio-leds"; |
67 | used-led { | 77 | used-led { |
68 | label = "user_led"; | 78 | label = "user_led"; |
69 | gpios = <&gpio4 14>; | 79 | gpios = <&gpio4 14 0x4>; |
70 | }; | 80 | }; |
71 | }; | 81 | }; |
72 | 82 | ||
73 | soc-u9500 { | 83 | soc-u9500 { |
74 | |||
75 | external-bus@50000000 { | 84 | external-bus@50000000 { |
76 | status = "okay"; | 85 | status = "okay"; |
77 | 86 | ||
@@ -80,6 +89,9 @@ | |||
80 | reg = <0 0x10000>; | 89 | reg = <0 0x10000>; |
81 | interrupts = <12 0x1>; | 90 | interrupts = <12 0x1>; |
82 | interrupt-parent = <&gpio4>; | 91 | interrupt-parent = <&gpio4>; |
92 | vdd33a-supply = <&en_3v3_reg>; | ||
93 | vddvario-supply = <&db8500_vape_reg>; | ||
94 | |||
83 | 95 | ||
84 | reg-shift = <1>; | 96 | reg-shift = <1>; |
85 | reg-io-width = <2>; | 97 | reg-io-width = <2>; |
@@ -91,11 +103,13 @@ | |||
91 | 103 | ||
92 | sdi@80126000 { | 104 | sdi@80126000 { |
93 | status = "enabled"; | 105 | status = "enabled"; |
94 | cd-gpios = <&gpio6 26>; | 106 | vmmc-supply = <&ab8500_ldo_aux3_reg>; |
107 | cd-gpios = <&gpio6 26 0x4>; // 218 | ||
95 | }; | 108 | }; |
96 | 109 | ||
97 | sdi@80114000 { | 110 | sdi@80114000 { |
98 | status = "enabled"; | 111 | status = "enabled"; |
112 | vmmc-supply = <&ab8500_ldo_aux2_reg>; | ||
99 | }; | 113 | }; |
100 | 114 | ||
101 | uart@80120000 { | 115 | uart@80120000 { |
@@ -114,7 +128,7 @@ | |||
114 | tc3589x@42 { | 128 | tc3589x@42 { |
115 | //compatible = "tc3589x"; | 129 | //compatible = "tc3589x"; |
116 | reg = <0x42>; | 130 | reg = <0x42>; |
117 | interrupts = <25>; | 131 | gpios = <&gpio6 25 0x4>; |
118 | interrupt-parent = <&gpio6>; | 132 | interrupt-parent = <&gpio6>; |
119 | }; | 133 | }; |
120 | tps61052@33 { | 134 | tps61052@33 { |
diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig index 7e84f453e8a6..2d4f661d1cf6 100644 --- a/arch/arm/configs/u8500_defconfig +++ b/arch/arm/configs/u8500_defconfig | |||
@@ -75,6 +75,7 @@ CONFIG_AB5500_CORE=y | |||
75 | CONFIG_AB8500_CORE=y | 75 | CONFIG_AB8500_CORE=y |
76 | CONFIG_REGULATOR=y | 76 | CONFIG_REGULATOR=y |
77 | CONFIG_REGULATOR_AB8500=y | 77 | CONFIG_REGULATOR_AB8500=y |
78 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | ||
78 | # CONFIG_HID_SUPPORT is not set | 79 | # CONFIG_HID_SUPPORT is not set |
79 | CONFIG_USB_GADGET=y | 80 | CONFIG_USB_GADGET=y |
80 | CONFIG_AB8500_USB=y | 81 | CONFIG_AB8500_USB=y |
diff --git a/arch/arm/mach-ux500/board-mop500-uib.c b/arch/arm/mach-ux500/board-mop500-uib.c index b29a788f498c..1f47d962e3a1 100644 --- a/arch/arm/mach-ux500/board-mop500-uib.c +++ b/arch/arm/mach-ux500/board-mop500-uib.c | |||
@@ -96,7 +96,7 @@ static void __init __mop500_uib_init(struct uib *uib, const char *why) | |||
96 | /* | 96 | /* |
97 | * Detect the UIB attached based on the presence or absence of i2c devices. | 97 | * Detect the UIB attached based on the presence or absence of i2c devices. |
98 | */ | 98 | */ |
99 | static int __init mop500_uib_init(void) | 99 | int __init mop500_uib_init(void) |
100 | { | 100 | { |
101 | struct uib *uib = mop500_uib; | 101 | struct uib *uib = mop500_uib; |
102 | struct i2c_adapter *i2c0; | 102 | struct i2c_adapter *i2c0; |
@@ -131,5 +131,3 @@ static int __init mop500_uib_init(void) | |||
131 | 131 | ||
132 | return 0; | 132 | return 0; |
133 | } | 133 | } |
134 | |||
135 | module_init(mop500_uib_init); | ||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index fba8adea421e..9c74ac545849 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -673,9 +673,15 @@ static void __init u8500_cryp1_hash1_init(struct device *parent) | |||
673 | static struct platform_device *snowball_platform_devs[] __initdata = { | 673 | static struct platform_device *snowball_platform_devs[] __initdata = { |
674 | &snowball_led_dev, | 674 | &snowball_led_dev, |
675 | &snowball_key_dev, | 675 | &snowball_key_dev, |
676 | &snowball_sbnet_dev, | ||
676 | &ab8500_device, | 677 | &ab8500_device, |
677 | }; | 678 | }; |
678 | 679 | ||
680 | static struct platform_device *snowball_of_platform_devs[] __initdata = { | ||
681 | &snowball_led_dev, | ||
682 | &snowball_key_dev, | ||
683 | }; | ||
684 | |||
679 | static void __init mop500_init_machine(void) | 685 | static void __init mop500_init_machine(void) |
680 | { | 686 | { |
681 | struct device *parent = NULL; | 687 | struct device *parent = NULL; |
@@ -710,6 +716,8 @@ static void __init mop500_init_machine(void) | |||
710 | 716 | ||
711 | /* This board has full regulator constraints */ | 717 | /* This board has full regulator constraints */ |
712 | regulator_has_full_constraints(); | 718 | regulator_has_full_constraints(); |
719 | |||
720 | mop500_uib_init(); | ||
713 | } | 721 | } |
714 | 722 | ||
715 | static void __init snowball_init_machine(void) | 723 | static void __init snowball_init_machine(void) |
@@ -774,6 +782,8 @@ static void __init hrefv60_init_machine(void) | |||
774 | 782 | ||
775 | /* This board has full regulator constraints */ | 783 | /* This board has full regulator constraints */ |
776 | regulator_has_full_constraints(); | 784 | regulator_has_full_constraints(); |
785 | |||
786 | mop500_uib_init(); | ||
777 | } | 787 | } |
778 | 788 | ||
779 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | 789 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") |
@@ -834,6 +844,10 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | |||
834 | static const struct of_device_id u8500_local_bus_nodes[] = { | 844 | static const struct of_device_id u8500_local_bus_nodes[] = { |
835 | /* only create devices below soc node */ | 845 | /* only create devices below soc node */ |
836 | { .compatible = "stericsson,db8500", }, | 846 | { .compatible = "stericsson,db8500", }, |
847 | { .compatible = "stericsson,db8500-prcmu", }, | ||
848 | { .compatible = "stericsson,db8500-prcmu-regulator", }, | ||
849 | { .compatible = "stericsson,ab8500", }, | ||
850 | { .compatible = "stericsson,ab8500-regulator", }, | ||
837 | { .compatible = "simple-bus"}, | 851 | { .compatible = "simple-bus"}, |
838 | { }, | 852 | { }, |
839 | }; | 853 | }; |
@@ -852,7 +866,7 @@ static void __init u8500_init_machine(void) | |||
852 | else if (of_machine_is_compatible("st-ericsson,hrefv60+")) | 866 | else if (of_machine_is_compatible("st-ericsson,hrefv60+")) |
853 | hrefv60_pinmaps_init(); | 867 | hrefv60_pinmaps_init(); |
854 | 868 | ||
855 | parent = u8500_init_devices(); | 869 | parent = u8500_of_init_devices(); |
856 | 870 | ||
857 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | 871 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) |
858 | mop500_platform_devs[i]->dev.parent = parent; | 872 | mop500_platform_devs[i]->dev.parent = parent; |
@@ -869,15 +883,23 @@ static void __init u8500_init_machine(void) | |||
869 | ARRAY_SIZE(mop500_platform_devs)); | 883 | ARRAY_SIZE(mop500_platform_devs)); |
870 | 884 | ||
871 | mop500_sdi_init(parent); | 885 | mop500_sdi_init(parent); |
872 | |||
873 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); | 886 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); |
874 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | 887 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); |
875 | i2c_register_board_info(2, mop500_i2c2_devices, | 888 | i2c_register_board_info(2, mop500_i2c2_devices, |
876 | ARRAY_SIZE(mop500_i2c2_devices)); | 889 | ARRAY_SIZE(mop500_i2c2_devices)); |
877 | 890 | ||
891 | mop500_uib_init(); | ||
892 | |||
878 | } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) { | 893 | } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) { |
879 | platform_add_devices(snowball_platform_devs, | 894 | /* |
880 | ARRAY_SIZE(snowball_platform_devs)); | 895 | * Devices to be DT:ed: |
896 | * snowball_led_dev = todo | ||
897 | * snowball_key_dev = todo | ||
898 | * snowball_sbnet_dev = done | ||
899 | * ab8500_device = done | ||
900 | */ | ||
901 | platform_add_devices(snowball_of_platform_devs, | ||
902 | ARRAY_SIZE(snowball_of_platform_devs)); | ||
881 | 903 | ||
882 | snowball_sdi_init(parent); | 904 | snowball_sdi_init(parent); |
883 | } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) { | 905 | } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) { |
@@ -898,6 +920,8 @@ static void __init u8500_init_machine(void) | |||
898 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | 920 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); |
899 | i2c_register_board_info(2, mop500_i2c2_devices, | 921 | i2c_register_board_info(2, mop500_i2c2_devices, |
900 | ARRAY_SIZE(mop500_i2c2_devices)); | 922 | ARRAY_SIZE(mop500_i2c2_devices)); |
923 | |||
924 | mop500_uib_init(); | ||
901 | } | 925 | } |
902 | mop500_i2c_init(parent); | 926 | mop500_i2c_init(parent); |
903 | 927 | ||
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index bc44c07c71a9..2f87b25a908a 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
@@ -89,7 +89,11 @@ void __init mop500_pinmaps_init(void); | |||
89 | void __init snowball_pinmaps_init(void); | 89 | void __init snowball_pinmaps_init(void); |
90 | void __init hrefv60_pinmaps_init(void); | 90 | void __init hrefv60_pinmaps_init(void); |
91 | 91 | ||
92 | int __init mop500_uib_init(void); | ||
92 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, | 93 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, |
93 | unsigned n); | 94 | unsigned n); |
94 | 95 | ||
96 | /* TODO: Once all pieces are DT:ed, remove completely. */ | ||
97 | struct device * __init u8500_of_init_devices(void); | ||
98 | |||
95 | #endif | 99 | #endif |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 16169c4bf6ca..33275eb4c689 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -140,7 +140,6 @@ static struct platform_device *platform_devs[] __initdata = { | |||
140 | static struct platform_device *of_platform_devs[] __initdata = { | 140 | static struct platform_device *of_platform_devs[] __initdata = { |
141 | &u8500_dma40_device, | 141 | &u8500_dma40_device, |
142 | &db8500_pmu_device, | 142 | &db8500_pmu_device, |
143 | &db8500_prcmu_device, | ||
144 | }; | 143 | }; |
145 | 144 | ||
146 | static resource_size_t __initdata db8500_gpio_base[] = { | 145 | static resource_size_t __initdata db8500_gpio_base[] = { |
@@ -222,6 +221,28 @@ struct device * __init u8500_init_devices(void) | |||
222 | platform_device_register_data(parent, | 221 | platform_device_register_data(parent, |
223 | "cpufreq-u8500", -1, NULL, 0); | 222 | "cpufreq-u8500", -1, NULL, 0); |
224 | 223 | ||
224 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | ||
225 | platform_devs[i]->dev.parent = parent; | ||
226 | |||
227 | platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); | ||
228 | |||
229 | return parent; | ||
230 | } | ||
231 | |||
232 | /* TODO: Once all pieces are DT:ed, remove completely. */ | ||
233 | struct device * __init u8500_of_init_devices(void) | ||
234 | { | ||
235 | struct device *parent; | ||
236 | int i; | ||
237 | |||
238 | parent = db8500_soc_device_init(); | ||
239 | |||
240 | db8500_add_rtc(parent); | ||
241 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | ||
242 | |||
243 | platform_device_register_data(parent, | ||
244 | "cpufreq-u8500", -1, NULL, 0); | ||
245 | |||
225 | for (i = 0; i < ARRAY_SIZE(of_platform_devs); i++) | 246 | for (i = 0; i < ARRAY_SIZE(of_platform_devs); i++) |
226 | of_platform_devs[i]->dev.parent = parent; | 247 | of_platform_devs[i]->dev.parent = parent; |
227 | 248 | ||
@@ -229,7 +250,7 @@ struct device * __init u8500_init_devices(void) | |||
229 | * Devices to be DT:ed: | 250 | * Devices to be DT:ed: |
230 | * u8500_dma40_device = todo | 251 | * u8500_dma40_device = todo |
231 | * db8500_pmu_device = todo | 252 | * db8500_pmu_device = todo |
232 | * db8500_prcmu_device = todo | 253 | * db8500_prcmu_device = done |
233 | */ | 254 | */ |
234 | platform_add_devices(of_platform_devs, ARRAY_SIZE(of_platform_devs)); | 255 | platform_add_devices(of_platform_devs, ARRAY_SIZE(of_platform_devs)); |
235 | 256 | ||