diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-26 22:08:35 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-26 22:08:35 -0500 |
commit | da457d4b93f9d746b0afd4aa65c94759f190d642 (patch) | |
tree | dbd838391c612326bda09e5ea632c9c1e50a7fd0 /arch | |
parent | 0f13864e5b24d9cbe18d125d41bfa4b726a82e40 (diff) | |
parent | ad639b9f2ccb87815384bda4ed4609592a861b8b (diff) |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (27 commits)
[POWERPC] 83xx: Update mpc8349emitx(gp) defconfig for USB
[POWERPC] 83xx: Update mpc832x_rdb_defconfig to enable MMC-over-SPI
[POWERPC] 83xx: MPC832x RDB - remove spidev stub, use mmc_spi
[POWERPC] 8xxx: MDS board RTC fixes
[POWERPC] Fix 8xx build breakage due to _tlbie changes
[POWERPC] Fix device tree interrupt map for Freescale ULI1575 boards
[POWERPC] Fix possible division by zero in scaled time accounting
[POWERPC] spufs: Fix context destroy vs /spu readdir race
[POWERPC] Fix RTAS os-term usage on kernel panic
[POWERPC] 83xx: Handle mpc8360 rev. 2.1 RGMII timing erratum
[POWERPC] Document rgmii-rxid and rgmii-txid phy-connection-types
[POWERPC] 83xx: Fix 2nd UCC entry in mpc832x_mds.dts
[POWERPC] 83xx: mpc832x mds: Fix board PHY reset code
[POWERPC] Fix potential NULL dereference
[POWERPC] vdso: Fixes for cache block sizes
[POWERPC] pasemi: Don't reset mpic at boot
[POWERPC] Fix kmalloc alignment on non-coherent DMA platforms
[POWERPC] Fix build failure on legacy iSeries
[POWERPC] 4xx: Use virtual PVR value to init FPU on arch/ppc 440EP
[POWERPC] 4xx: UIC add mask_ack callback
...
Diffstat (limited to 'arch')
42 files changed, 812 insertions, 231 deletions
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index fcd333c391..c64f3037a1 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts | |||
@@ -57,12 +57,19 @@ | |||
57 | }; | 57 | }; |
58 | 58 | ||
59 | i2c@3000 { | 59 | i2c@3000 { |
60 | #address-cells = <1>; | ||
61 | #size-cells = <0>; | ||
60 | device_type = "i2c"; | 62 | device_type = "i2c"; |
61 | compatible = "fsl-i2c"; | 63 | compatible = "fsl-i2c"; |
62 | reg = <3000 100>; | 64 | reg = <3000 100>; |
63 | interrupts = <e 8>; | 65 | interrupts = <e 8>; |
64 | interrupt-parent = < &ipic >; | 66 | interrupt-parent = < &ipic >; |
65 | dfsrr; | 67 | dfsrr; |
68 | |||
69 | rtc@68 { | ||
70 | compatible = "dallas,ds1374"; | ||
71 | reg = <68>; | ||
72 | }; | ||
66 | }; | 73 | }; |
67 | 74 | ||
68 | serial@4500 { | 75 | serial@4500 { |
@@ -104,7 +111,7 @@ | |||
104 | reg = <700 100>; | 111 | reg = <700 100>; |
105 | device_type = "ipic"; | 112 | device_type = "ipic"; |
106 | }; | 113 | }; |
107 | 114 | ||
108 | par_io@1400 { | 115 | par_io@1400 { |
109 | reg = <1400 100>; | 116 | reg = <1400 100>; |
110 | device_type = "par_io"; | 117 | device_type = "par_io"; |
@@ -117,7 +124,6 @@ | |||
117 | 3 5 1 0 2 0 /* MDC */ | 124 | 3 5 1 0 2 0 /* MDC */ |
118 | 0 d 2 0 1 0 /* RX_CLK (CLK9) */ | 125 | 0 d 2 0 1 0 /* RX_CLK (CLK9) */ |
119 | 3 18 2 0 1 0 /* TX_CLK (CLK10) */ | 126 | 3 18 2 0 1 0 /* TX_CLK (CLK10) */ |
120 | 1 1 1 0 1 0 /* TxD1 */ | ||
121 | 1 0 1 0 1 0 /* TxD0 */ | 127 | 1 0 1 0 1 0 /* TxD0 */ |
122 | 1 1 1 0 1 0 /* TxD1 */ | 128 | 1 1 1 0 1 0 /* TxD1 */ |
123 | 1 2 1 0 1 0 /* TxD2 */ | 129 | 1 2 1 0 1 0 /* TxD2 */ |
@@ -165,11 +171,11 @@ | |||
165 | reg = <e0100000 480>; | 171 | reg = <e0100000 480>; |
166 | brg-frequency = <0>; | 172 | brg-frequency = <0>; |
167 | bus-frequency = <BCD3D80>; | 173 | bus-frequency = <BCD3D80>; |
168 | 174 | ||
169 | muram@10000 { | 175 | muram@10000 { |
170 | device_type = "muram"; | 176 | device_type = "muram"; |
171 | ranges = <0 00010000 00004000>; | 177 | ranges = <0 00010000 00004000>; |
172 | 178 | ||
173 | data-only@0 { | 179 | data-only@0 { |
174 | reg = <0 4000>; | 180 | reg = <0 4000>; |
175 | }; | 181 | }; |
@@ -228,7 +234,7 @@ | |||
228 | compatible = "ucc_geth"; | 234 | compatible = "ucc_geth"; |
229 | model = "UCC"; | 235 | model = "UCC"; |
230 | device-id = <4>; | 236 | device-id = <4>; |
231 | reg = <3000 200>; | 237 | reg = <3200 200>; |
232 | interrupts = <23>; | 238 | interrupts = <23>; |
233 | interrupt-parent = < &qeic >; | 239 | interrupt-parent = < &qeic >; |
234 | /* | 240 | /* |
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index e5a84ef9f4..49363f89cb 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts | |||
@@ -57,15 +57,24 @@ | |||
57 | }; | 57 | }; |
58 | 58 | ||
59 | i2c@3000 { | 59 | i2c@3000 { |
60 | #address-cells = <1>; | ||
61 | #size-cells = <0>; | ||
60 | device_type = "i2c"; | 62 | device_type = "i2c"; |
61 | compatible = "fsl-i2c"; | 63 | compatible = "fsl-i2c"; |
62 | reg = <3000 100>; | 64 | reg = <3000 100>; |
63 | interrupts = <e 8>; | 65 | interrupts = <e 8>; |
64 | interrupt-parent = < &ipic >; | 66 | interrupt-parent = < &ipic >; |
65 | dfsrr; | 67 | dfsrr; |
68 | |||
69 | rtc@68 { | ||
70 | compatible = "dallas,ds1374"; | ||
71 | reg = <68>; | ||
72 | }; | ||
66 | }; | 73 | }; |
67 | 74 | ||
68 | i2c@3100 { | 75 | i2c@3100 { |
76 | #address-cells = <1>; | ||
77 | #size-cells = <0>; | ||
69 | device_type = "i2c"; | 78 | device_type = "i2c"; |
70 | compatible = "fsl-i2c"; | 79 | compatible = "fsl-i2c"; |
71 | reg = <3100 100>; | 80 | reg = <3100 100>; |
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index fbd1573c34..0b2d2b588d 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts | |||
@@ -62,15 +62,24 @@ | |||
62 | }; | 62 | }; |
63 | 63 | ||
64 | i2c@3000 { | 64 | i2c@3000 { |
65 | #address-cells = <1>; | ||
66 | #size-cells = <0>; | ||
65 | device_type = "i2c"; | 67 | device_type = "i2c"; |
66 | compatible = "fsl-i2c"; | 68 | compatible = "fsl-i2c"; |
67 | reg = <3000 100>; | 69 | reg = <3000 100>; |
68 | interrupts = <e 8>; | 70 | interrupts = <e 8>; |
69 | interrupt-parent = < &ipic >; | 71 | interrupt-parent = < &ipic >; |
70 | dfsrr; | 72 | dfsrr; |
73 | |||
74 | rtc@68 { | ||
75 | compatible = "dallas,ds1374"; | ||
76 | reg = <68>; | ||
77 | }; | ||
71 | }; | 78 | }; |
72 | 79 | ||
73 | i2c@3100 { | 80 | i2c@3100 { |
81 | #address-cells = <1>; | ||
82 | #size-cells = <0>; | ||
74 | device_type = "i2c"; | 83 | device_type = "i2c"; |
75 | compatible = "fsl-i2c"; | 84 | compatible = "fsl-i2c"; |
76 | reg = <3100 100>; | 85 | reg = <3100 100>; |
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 3f9d15cf13..6c608de1fc 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -272,24 +272,24 @@ | |||
272 | clock-frequency = <1fca055>; | 272 | clock-frequency = <1fca055>; |
273 | interrupt-parent = <&mpic>; | 273 | interrupt-parent = <&mpic>; |
274 | interrupts = <1b 2>; | 274 | interrupts = <1b 2>; |
275 | interrupt-map-mask = <fb00 0 0 0>; | 275 | interrupt-map-mask = <ff00 0 0 1>; |
276 | interrupt-map = < | 276 | interrupt-map = < |
277 | // IDSEL 0x1c USB | 277 | // IDSEL 0x1c USB |
278 | e000 0 0 0 &i8259 c 2 | 278 | e000 0 0 1 &i8259 c 2 |
279 | e100 0 0 0 &i8259 9 2 | 279 | e100 0 0 1 &i8259 9 2 |
280 | e200 0 0 0 &i8259 a 2 | 280 | e200 0 0 1 &i8259 a 2 |
281 | e300 0 0 0 &i8259 b 2 | 281 | e300 0 0 1 &i8259 b 2 |
282 | 282 | ||
283 | // IDSEL 0x1d Audio | 283 | // IDSEL 0x1d Audio |
284 | e800 0 0 0 &i8259 6 2 | 284 | e800 0 0 1 &i8259 6 2 |
285 | 285 | ||
286 | // IDSEL 0x1e Legacy | 286 | // IDSEL 0x1e Legacy |
287 | f000 0 0 0 &i8259 7 2 | 287 | f000 0 0 1 &i8259 7 2 |
288 | f100 0 0 0 &i8259 7 2 | 288 | f100 0 0 1 &i8259 7 2 |
289 | 289 | ||
290 | // IDSEL 0x1f IDE/SATA | 290 | // IDSEL 0x1f IDE/SATA |
291 | f800 0 0 0 &i8259 e 2 | 291 | f800 0 0 1 &i8259 e 2 |
292 | f900 0 0 0 &i8259 5 2 | 292 | f900 0 0 1 &i8259 5 2 |
293 | >; | 293 | >; |
294 | 294 | ||
295 | pcie@0 { | 295 | pcie@0 { |
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts index d638deec76..0eb44fb964 100644 --- a/arch/powerpc/boot/dts/mpc8572ds.dts +++ b/arch/powerpc/boot/dts/mpc8572ds.dts | |||
@@ -219,36 +219,120 @@ | |||
219 | clock-frequency = <1fca055>; | 219 | clock-frequency = <1fca055>; |
220 | interrupt-parent = <&mpic>; | 220 | interrupt-parent = <&mpic>; |
221 | interrupts = <18 2>; | 221 | interrupts = <18 2>; |
222 | interrupt-map-mask = <fb00 0 0 0>; | 222 | interrupt-map-mask = <ff00 0 0 7>; |
223 | interrupt-map = < | 223 | interrupt-map = < |
224 | /* IDSEL 0x11 - PCI slot 1 */ | 224 | /* IDSEL 0x11 func 0 - PCI slot 1 */ |
225 | 8800 0 0 1 &mpic 2 1 | 225 | 8800 0 0 1 &mpic 2 1 |
226 | 8800 0 0 2 &mpic 3 1 | 226 | 8800 0 0 2 &mpic 3 1 |
227 | 8800 0 0 3 &mpic 4 1 | 227 | 8800 0 0 3 &mpic 4 1 |
228 | 8800 0 0 4 &mpic 1 1 | 228 | 8800 0 0 4 &mpic 1 1 |
229 | 229 | ||
230 | /* IDSEL 0x12 - PCI slot 2 */ | 230 | /* IDSEL 0x11 func 1 - PCI slot 1 */ |
231 | 8900 0 0 1 &mpic 2 1 | ||
232 | 8900 0 0 2 &mpic 3 1 | ||
233 | 8900 0 0 3 &mpic 4 1 | ||
234 | 8900 0 0 4 &mpic 1 1 | ||
235 | |||
236 | /* IDSEL 0x11 func 2 - PCI slot 1 */ | ||
237 | 8a00 0 0 1 &mpic 2 1 | ||
238 | 8a00 0 0 2 &mpic 3 1 | ||
239 | 8a00 0 0 3 &mpic 4 1 | ||
240 | 8a00 0 0 4 &mpic 1 1 | ||
241 | |||
242 | /* IDSEL 0x11 func 3 - PCI slot 1 */ | ||
243 | 8b00 0 0 1 &mpic 2 1 | ||
244 | 8b00 0 0 2 &mpic 3 1 | ||
245 | 8b00 0 0 3 &mpic 4 1 | ||
246 | 8b00 0 0 4 &mpic 1 1 | ||
247 | |||
248 | /* IDSEL 0x11 func 4 - PCI slot 1 */ | ||
249 | 8c00 0 0 1 &mpic 2 1 | ||
250 | 8c00 0 0 2 &mpic 3 1 | ||
251 | 8c00 0 0 3 &mpic 4 1 | ||
252 | 8c00 0 0 4 &mpic 1 1 | ||
253 | |||
254 | /* IDSEL 0x11 func 5 - PCI slot 1 */ | ||
255 | 8d00 0 0 1 &mpic 2 1 | ||
256 | 8d00 0 0 2 &mpic 3 1 | ||
257 | 8d00 0 0 3 &mpic 4 1 | ||
258 | 8d00 0 0 4 &mpic 1 1 | ||
259 | |||
260 | /* IDSEL 0x11 func 6 - PCI slot 1 */ | ||
261 | 8e00 0 0 1 &mpic 2 1 | ||
262 | 8e00 0 0 2 &mpic 3 1 | ||
263 | 8e00 0 0 3 &mpic 4 1 | ||
264 | 8e00 0 0 4 &mpic 1 1 | ||
265 | |||
266 | /* IDSEL 0x11 func 7 - PCI slot 1 */ | ||
267 | 8f00 0 0 1 &mpic 2 1 | ||
268 | 8f00 0 0 2 &mpic 3 1 | ||
269 | 8f00 0 0 3 &mpic 4 1 | ||
270 | 8f00 0 0 4 &mpic 1 1 | ||
271 | |||
272 | /* IDSEL 0x12 func 0 - PCI slot 2 */ | ||
231 | 9000 0 0 1 &mpic 3 1 | 273 | 9000 0 0 1 &mpic 3 1 |
232 | 9000 0 0 2 &mpic 4 1 | 274 | 9000 0 0 2 &mpic 4 1 |
233 | 9000 0 0 3 &mpic 1 1 | 275 | 9000 0 0 3 &mpic 1 1 |
234 | 9000 0 0 4 &mpic 2 1 | 276 | 9000 0 0 4 &mpic 2 1 |
235 | 277 | ||
278 | /* IDSEL 0x12 func 1 - PCI slot 2 */ | ||
279 | 9100 0 0 1 &mpic 3 1 | ||
280 | 9100 0 0 2 &mpic 4 1 | ||
281 | 9100 0 0 3 &mpic 1 1 | ||
282 | 9100 0 0 4 &mpic 2 1 | ||
283 | |||
284 | /* IDSEL 0x12 func 2 - PCI slot 2 */ | ||
285 | 9200 0 0 1 &mpic 3 1 | ||
286 | 9200 0 0 2 &mpic 4 1 | ||
287 | 9200 0 0 3 &mpic 1 1 | ||
288 | 9200 0 0 4 &mpic 2 1 | ||
289 | |||
290 | /* IDSEL 0x12 func 3 - PCI slot 2 */ | ||
291 | 9300 0 0 1 &mpic 3 1 | ||
292 | 9300 0 0 2 &mpic 4 1 | ||
293 | 9300 0 0 3 &mpic 1 1 | ||
294 | 9300 0 0 4 &mpic 2 1 | ||
295 | |||
296 | /* IDSEL 0x12 func 4 - PCI slot 2 */ | ||
297 | 9400 0 0 1 &mpic 3 1 | ||
298 | 9400 0 0 2 &mpic 4 1 | ||
299 | 9400 0 0 3 &mpic 1 1 | ||
300 | 9400 0 0 4 &mpic 2 1 | ||
301 | |||
302 | /* IDSEL 0x12 func 5 - PCI slot 2 */ | ||
303 | 9500 0 0 1 &mpic 3 1 | ||
304 | 9500 0 0 2 &mpic 4 1 | ||
305 | 9500 0 0 3 &mpic 1 1 | ||
306 | 9500 0 0 4 &mpic 2 1 | ||
307 | |||
308 | /* IDSEL 0x12 func 6 - PCI slot 2 */ | ||
309 | 9600 0 0 1 &mpic 3 1 | ||
310 | 9600 0 0 2 &mpic 4 1 | ||
311 | 9600 0 0 3 &mpic 1 1 | ||
312 | 9600 0 0 4 &mpic 2 1 | ||
313 | |||
314 | /* IDSEL 0x12 func 7 - PCI slot 2 */ | ||
315 | 9700 0 0 1 &mpic 3 1 | ||
316 | 9700 0 0 2 &mpic 4 1 | ||
317 | 9700 0 0 3 &mpic 1 1 | ||
318 | 9700 0 0 4 &mpic 2 1 | ||
319 | |||
236 | // IDSEL 0x1c USB | 320 | // IDSEL 0x1c USB |
237 | e000 0 0 0 &i8259 c 2 | 321 | e000 0 0 1 &i8259 c 2 |
238 | e100 0 0 0 &i8259 9 2 | 322 | e100 0 0 1 &i8259 9 2 |
239 | e200 0 0 0 &i8259 a 2 | 323 | e200 0 0 1 &i8259 a 2 |
240 | e300 0 0 0 &i8259 b 2 | 324 | e300 0 0 1 &i8259 b 2 |
241 | 325 | ||
242 | // IDSEL 0x1d Audio | 326 | // IDSEL 0x1d Audio |
243 | e800 0 0 0 &i8259 6 2 | 327 | e800 0 0 1 &i8259 6 2 |
244 | 328 | ||
245 | // IDSEL 0x1e Legacy | 329 | // IDSEL 0x1e Legacy |
246 | f000 0 0 0 &i8259 7 2 | 330 | f000 0 0 1 &i8259 7 2 |
247 | f100 0 0 0 &i8259 7 2 | 331 | f100 0 0 1 &i8259 7 2 |
248 | 332 | ||
249 | // IDSEL 0x1f IDE/SATA | 333 | // IDSEL 0x1f IDE/SATA |
250 | f800 0 0 0 &i8259 e 2 | 334 | f800 0 0 1 &i8259 e 2 |
251 | f900 0 0 0 &i8259 5 2 | 335 | f900 0 0 1 &i8259 5 2 |
252 | 336 | ||
253 | >; | 337 | >; |
254 | 338 | ||
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 367765937a..abb26dc425 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -235,36 +235,120 @@ | |||
235 | clock-frequency = <1fca055>; | 235 | clock-frequency = <1fca055>; |
236 | interrupt-parent = <&mpic>; | 236 | interrupt-parent = <&mpic>; |
237 | interrupts = <18 2>; | 237 | interrupts = <18 2>; |
238 | interrupt-map-mask = <fb00 0 0 0>; | 238 | interrupt-map-mask = <ff00 0 0 7>; |
239 | interrupt-map = < | 239 | interrupt-map = < |
240 | /* IDSEL 0x11 */ | 240 | /* IDSEL 0x11 func 0 - PCI slot 1 */ |
241 | 8800 0 0 1 &i8259 9 2 | 241 | 8800 0 0 1 &mpic 2 1 |
242 | 8800 0 0 2 &i8259 a 2 | 242 | 8800 0 0 2 &mpic 3 1 |
243 | 8800 0 0 3 &i8259 b 2 | 243 | 8800 0 0 3 &mpic 4 1 |
244 | 8800 0 0 4 &i8259 c 2 | 244 | 8800 0 0 4 &mpic 1 1 |
245 | 245 | ||
246 | /* IDSEL 0x12 */ | 246 | /* IDSEL 0x11 func 1 - PCI slot 1 */ |
247 | 9000 0 0 1 &i8259 a 2 | 247 | 8900 0 0 1 &mpic 2 1 |
248 | 9000 0 0 2 &i8259 b 2 | 248 | 8900 0 0 2 &mpic 3 1 |
249 | 9000 0 0 3 &i8259 c 2 | 249 | 8900 0 0 3 &mpic 4 1 |
250 | 9000 0 0 4 &i8259 9 2 | 250 | 8900 0 0 4 &mpic 1 1 |
251 | |||
252 | /* IDSEL 0x11 func 2 - PCI slot 1 */ | ||
253 | 8a00 0 0 1 &mpic 2 1 | ||
254 | 8a00 0 0 2 &mpic 3 1 | ||
255 | 8a00 0 0 3 &mpic 4 1 | ||
256 | 8a00 0 0 4 &mpic 1 1 | ||
257 | |||
258 | /* IDSEL 0x11 func 3 - PCI slot 1 */ | ||
259 | 8b00 0 0 1 &mpic 2 1 | ||
260 | 8b00 0 0 2 &mpic 3 1 | ||
261 | 8b00 0 0 3 &mpic 4 1 | ||
262 | 8b00 0 0 4 &mpic 1 1 | ||
263 | |||
264 | /* IDSEL 0x11 func 4 - PCI slot 1 */ | ||
265 | 8c00 0 0 1 &mpic 2 1 | ||
266 | 8c00 0 0 2 &mpic 3 1 | ||
267 | 8c00 0 0 3 &mpic 4 1 | ||
268 | 8c00 0 0 4 &mpic 1 1 | ||
269 | |||
270 | /* IDSEL 0x11 func 5 - PCI slot 1 */ | ||
271 | 8d00 0 0 1 &mpic 2 1 | ||
272 | 8d00 0 0 2 &mpic 3 1 | ||
273 | 8d00 0 0 3 &mpic 4 1 | ||
274 | 8d00 0 0 4 &mpic 1 1 | ||
275 | |||
276 | /* IDSEL 0x11 func 6 - PCI slot 1 */ | ||
277 | 8e00 0 0 1 &mpic 2 1 | ||
278 | 8e00 0 0 2 &mpic 3 1 | ||
279 | 8e00 0 0 3 &mpic 4 1 | ||
280 | 8e00 0 0 4 &mpic 1 1 | ||
281 | |||
282 | /* IDSEL 0x11 func 7 - PCI slot 1 */ | ||
283 | 8f00 0 0 1 &mpic 2 1 | ||
284 | 8f00 0 0 2 &mpic 3 1 | ||
285 | 8f00 0 0 3 &mpic 4 1 | ||
286 | 8f00 0 0 4 &mpic 1 1 | ||
287 | |||
288 | /* IDSEL 0x12 func 0 - PCI slot 2 */ | ||
289 | 9000 0 0 1 &mpic 3 1 | ||
290 | 9000 0 0 2 &mpic 4 1 | ||
291 | 9000 0 0 3 &mpic 1 1 | ||
292 | 9000 0 0 4 &mpic 2 1 | ||
293 | |||
294 | /* IDSEL 0x12 func 1 - PCI slot 2 */ | ||
295 | 9100 0 0 1 &mpic 3 1 | ||
296 | 9100 0 0 2 &mpic 4 1 | ||
297 | 9100 0 0 3 &mpic 1 1 | ||
298 | 9100 0 0 4 &mpic 2 1 | ||
299 | |||
300 | /* IDSEL 0x12 func 2 - PCI slot 2 */ | ||
301 | 9200 0 0 1 &mpic 3 1 | ||
302 | 9200 0 0 2 &mpic 4 1 | ||
303 | 9200 0 0 3 &mpic 1 1 | ||
304 | 9200 0 0 4 &mpic 2 1 | ||
305 | |||
306 | /* IDSEL 0x12 func 3 - PCI slot 2 */ | ||
307 | 9300 0 0 1 &mpic 3 1 | ||
308 | 9300 0 0 2 &mpic 4 1 | ||
309 | 9300 0 0 3 &mpic 1 1 | ||
310 | 9300 0 0 4 &mpic 2 1 | ||
311 | |||
312 | /* IDSEL 0x12 func 4 - PCI slot 2 */ | ||
313 | 9400 0 0 1 &mpic 3 1 | ||
314 | 9400 0 0 2 &mpic 4 1 | ||
315 | 9400 0 0 3 &mpic 1 1 | ||
316 | 9400 0 0 4 &mpic 2 1 | ||
317 | |||
318 | /* IDSEL 0x12 func 5 - PCI slot 2 */ | ||
319 | 9500 0 0 1 &mpic 3 1 | ||
320 | 9500 0 0 2 &mpic 4 1 | ||
321 | 9500 0 0 3 &mpic 1 1 | ||
322 | 9500 0 0 4 &mpic 2 1 | ||
323 | |||
324 | /* IDSEL 0x12 func 6 - PCI slot 2 */ | ||
325 | 9600 0 0 1 &mpic 3 1 | ||
326 | 9600 0 0 2 &mpic 4 1 | ||
327 | 9600 0 0 3 &mpic 1 1 | ||
328 | 9600 0 0 4 &mpic 2 1 | ||
329 | |||
330 | /* IDSEL 0x12 func 7 - PCI slot 2 */ | ||
331 | 9700 0 0 1 &mpic 3 1 | ||
332 | 9700 0 0 2 &mpic 4 1 | ||
333 | 9700 0 0 3 &mpic 1 1 | ||
334 | 9700 0 0 4 &mpic 2 1 | ||
251 | 335 | ||
252 | // IDSEL 0x1c USB | 336 | // IDSEL 0x1c USB |
253 | e000 0 0 0 &i8259 c 2 | 337 | e000 0 0 1 &i8259 c 2 |
254 | e100 0 0 0 &i8259 9 2 | 338 | e100 0 0 1 &i8259 9 2 |
255 | e200 0 0 0 &i8259 a 2 | 339 | e200 0 0 1 &i8259 a 2 |
256 | e300 0 0 0 &i8259 b 2 | 340 | e300 0 0 1 &i8259 b 2 |
257 | 341 | ||
258 | // IDSEL 0x1d Audio | 342 | // IDSEL 0x1d Audio |
259 | e800 0 0 0 &i8259 6 2 | 343 | e800 0 0 1 &i8259 6 2 |
260 | 344 | ||
261 | // IDSEL 0x1e Legacy | 345 | // IDSEL 0x1e Legacy |
262 | f000 0 0 0 &i8259 7 2 | 346 | f000 0 0 1 &i8259 7 2 |
263 | f100 0 0 0 &i8259 7 2 | 347 | f100 0 0 1 &i8259 7 2 |
264 | 348 | ||
265 | // IDSEL 0x1f IDE/SATA | 349 | // IDSEL 0x1f IDE/SATA |
266 | f800 0 0 0 &i8259 e 2 | 350 | f800 0 0 1 &i8259 e 2 |
267 | f900 0 0 0 &i8259 5 2 | 351 | f900 0 0 1 &i8259 5 2 |
268 | >; | 352 | >; |
269 | 353 | ||
270 | pcie@0 { | 354 | pcie@0 { |
diff --git a/arch/powerpc/configs/mpc832x_mds_defconfig b/arch/powerpc/configs/mpc832x_mds_defconfig index dd68d1818d..e069018276 100644 --- a/arch/powerpc/configs/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/mpc832x_mds_defconfig | |||
@@ -774,7 +774,53 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
774 | # CONFIG_NEW_LEDS is not set | 774 | # CONFIG_NEW_LEDS is not set |
775 | # CONFIG_INFINIBAND is not set | 775 | # CONFIG_INFINIBAND is not set |
776 | # CONFIG_EDAC is not set | 776 | # CONFIG_EDAC is not set |
777 | # CONFIG_RTC_CLASS is not set | 777 | CONFIG_RTC_LIB=y |
778 | CONFIG_RTC_CLASS=y | ||
779 | CONFIG_RTC_HCTOSYS=y | ||
780 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
781 | # CONFIG_RTC_DEBUG is not set | ||
782 | |||
783 | # | ||
784 | # RTC interfaces | ||
785 | # | ||
786 | CONFIG_RTC_INTF_SYSFS=y | ||
787 | CONFIG_RTC_INTF_PROC=y | ||
788 | CONFIG_RTC_INTF_DEV=y | ||
789 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
790 | # CONFIG_RTC_DRV_TEST is not set | ||
791 | |||
792 | # | ||
793 | # I2C RTC drivers | ||
794 | # | ||
795 | # CONFIG_RTC_DRV_DS1307 is not set | ||
796 | CONFIG_RTC_DRV_DS1374=y | ||
797 | # CONFIG_RTC_DRV_DS1672 is not set | ||
798 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
799 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
800 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
801 | # CONFIG_RTC_DRV_X1205 is not set | ||
802 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
803 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
804 | # CONFIG_RTC_DRV_M41T80 is not set | ||
805 | |||
806 | # | ||
807 | # SPI RTC drivers | ||
808 | # | ||
809 | |||
810 | # | ||
811 | # Platform RTC drivers | ||
812 | # | ||
813 | # CONFIG_RTC_DRV_CMOS is not set | ||
814 | # CONFIG_RTC_DRV_DS1553 is not set | ||
815 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
816 | # CONFIG_RTC_DRV_DS1742 is not set | ||
817 | # CONFIG_RTC_DRV_M48T86 is not set | ||
818 | # CONFIG_RTC_DRV_M48T59 is not set | ||
819 | # CONFIG_RTC_DRV_V3020 is not set | ||
820 | |||
821 | # | ||
822 | # on-CPU RTC drivers | ||
823 | # | ||
778 | 824 | ||
779 | # | 825 | # |
780 | # DMA Engine support | 826 | # DMA Engine support |
diff --git a/arch/powerpc/configs/mpc832x_rdb_defconfig b/arch/powerpc/configs/mpc832x_rdb_defconfig index 4f391028c7..7a5b13f414 100644 --- a/arch/powerpc/configs/mpc832x_rdb_defconfig +++ b/arch/powerpc/configs/mpc832x_rdb_defconfig | |||
@@ -685,8 +685,21 @@ CONFIG_I2C_MPC=y | |||
685 | # | 685 | # |
686 | # SPI support | 686 | # SPI support |
687 | # | 687 | # |
688 | # CONFIG_SPI is not set | 688 | CONFIG_SPI=y |
689 | # CONFIG_SPI_MASTER is not set | 689 | CONFIG_SPI_MASTER=y |
690 | |||
691 | # | ||
692 | # SPI Master Controller Drivers | ||
693 | # | ||
694 | CONFIG_SPI_BITBANG=y | ||
695 | CONFIG_SPI_MPC83xx=y | ||
696 | |||
697 | # | ||
698 | # SPI Protocol Masters | ||
699 | # | ||
700 | # CONFIG_SPI_AT25 is not set | ||
701 | # CONFIG_SPI_SPIDEV is not set | ||
702 | # CONFIG_SPI_TLE62X0 is not set | ||
690 | # CONFIG_W1 is not set | 703 | # CONFIG_W1 is not set |
691 | # CONFIG_POWER_SUPPLY is not set | 704 | # CONFIG_POWER_SUPPLY is not set |
692 | CONFIG_HWMON=y | 705 | CONFIG_HWMON=y |
@@ -710,6 +723,7 @@ CONFIG_HWMON=y | |||
710 | # CONFIG_SENSORS_GL520SM is not set | 723 | # CONFIG_SENSORS_GL520SM is not set |
711 | # CONFIG_SENSORS_IT87 is not set | 724 | # CONFIG_SENSORS_IT87 is not set |
712 | # CONFIG_SENSORS_LM63 is not set | 725 | # CONFIG_SENSORS_LM63 is not set |
726 | # CONFIG_SENSORS_LM70 is not set | ||
713 | # CONFIG_SENSORS_LM75 is not set | 727 | # CONFIG_SENSORS_LM75 is not set |
714 | # CONFIG_SENSORS_LM77 is not set | 728 | # CONFIG_SENSORS_LM77 is not set |
715 | # CONFIG_SENSORS_LM78 is not set | 729 | # CONFIG_SENSORS_LM78 is not set |
@@ -896,7 +910,24 @@ CONFIG_USB_MON=y | |||
896 | # USB Gadget Support | 910 | # USB Gadget Support |
897 | # | 911 | # |
898 | # CONFIG_USB_GADGET is not set | 912 | # CONFIG_USB_GADGET is not set |
899 | # CONFIG_MMC is not set | 913 | CONFIG_MMC=y |
914 | # CONFIG_MMC_DEBUG is not set | ||
915 | # CONFIG_MMC_UNSAFE_RESUME is not set | ||
916 | |||
917 | # | ||
918 | # MMC/SD Card Drivers | ||
919 | # | ||
920 | CONFIG_MMC_BLOCK=y | ||
921 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
922 | # CONFIG_SDIO_UART is not set | ||
923 | |||
924 | # | ||
925 | # MMC/SD Host Controller Drivers | ||
926 | # | ||
927 | # CONFIG_MMC_SDHCI is not set | ||
928 | # CONFIG_MMC_WBSD is not set | ||
929 | # CONFIG_MMC_TIFM_SD is not set | ||
930 | CONFIG_MMC_SPI=y | ||
900 | # CONFIG_NEW_LEDS is not set | 931 | # CONFIG_NEW_LEDS is not set |
901 | # CONFIG_INFINIBAND is not set | 932 | # CONFIG_INFINIBAND is not set |
902 | # CONFIG_EDAC is not set | 933 | # CONFIG_EDAC is not set |
@@ -1101,9 +1132,9 @@ CONFIG_UCC=y | |||
1101 | CONFIG_BITREVERSE=y | 1132 | CONFIG_BITREVERSE=y |
1102 | # CONFIG_CRC_CCITT is not set | 1133 | # CONFIG_CRC_CCITT is not set |
1103 | # CONFIG_CRC16 is not set | 1134 | # CONFIG_CRC16 is not set |
1104 | # CONFIG_CRC_ITU_T is not set | 1135 | CONFIG_CRC_ITU_T=y |
1105 | CONFIG_CRC32=y | 1136 | CONFIG_CRC32=y |
1106 | # CONFIG_CRC7 is not set | 1137 | CONFIG_CRC7=y |
1107 | # CONFIG_LIBCRC32C is not set | 1138 | # CONFIG_LIBCRC32C is not set |
1108 | CONFIG_PLIST=y | 1139 | CONFIG_PLIST=y |
1109 | CONFIG_HAS_IOMEM=y | 1140 | CONFIG_HAS_IOMEM=y |
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig index eb28dd85cb..ba512d13f3 100644 --- a/arch/powerpc/configs/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/mpc834x_itx_defconfig | |||
@@ -867,7 +867,7 @@ CONFIG_USB_EHCI_ROOT_HUB_TT=y | |||
867 | CONFIG_USB_EHCI_FSL=y | 867 | CONFIG_USB_EHCI_FSL=y |
868 | # CONFIG_USB_ISP116X_HCD is not set | 868 | # CONFIG_USB_ISP116X_HCD is not set |
869 | # CONFIG_USB_OHCI_HCD is not set | 869 | # CONFIG_USB_OHCI_HCD is not set |
870 | # CONFIG_USB_UHCI_HCD is not set | 870 | CONFIG_USB_UHCI_HCD=y |
871 | # CONFIG_USB_SL811_HCD is not set | 871 | # CONFIG_USB_SL811_HCD is not set |
872 | # CONFIG_USB_R8A66597_HCD is not set | 872 | # CONFIG_USB_R8A66597_HCD is not set |
873 | 873 | ||
diff --git a/arch/powerpc/configs/mpc834x_itxgp_defconfig b/arch/powerpc/configs/mpc834x_itxgp_defconfig index 22b95462c9..9faa948c22 100644 --- a/arch/powerpc/configs/mpc834x_itxgp_defconfig +++ b/arch/powerpc/configs/mpc834x_itxgp_defconfig | |||
@@ -760,15 +760,101 @@ CONFIG_USB_SUPPORT=y | |||
760 | CONFIG_USB_ARCH_HAS_HCD=y | 760 | CONFIG_USB_ARCH_HAS_HCD=y |
761 | CONFIG_USB_ARCH_HAS_OHCI=y | 761 | CONFIG_USB_ARCH_HAS_OHCI=y |
762 | CONFIG_USB_ARCH_HAS_EHCI=y | 762 | CONFIG_USB_ARCH_HAS_EHCI=y |
763 | # CONFIG_USB is not set | 763 | CONFIG_USB=y |
764 | # CONFIG_USB_DEBUG is not set | ||
765 | |||
766 | # | ||
767 | # Miscellaneous USB options | ||
768 | # | ||
769 | # CONFIG_USB_DEVICEFS is not set | ||
770 | CONFIG_USB_DEVICE_CLASS=y | ||
771 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
772 | # CONFIG_USB_OTG is not set | ||
773 | |||
774 | # | ||
775 | # USB Host Controller Drivers | ||
776 | # | ||
777 | CONFIG_USB_EHCI_HCD=y | ||
778 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
764 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 779 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
780 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
765 | CONFIG_USB_EHCI_FSL=y | 781 | CONFIG_USB_EHCI_FSL=y |
782 | # CONFIG_USB_ISP116X_HCD is not set | ||
783 | # CONFIG_USB_OHCI_HCD is not set | ||
784 | CONFIG_USB_UHCI_HCD=y | ||
785 | # CONFIG_USB_SL811_HCD is not set | ||
786 | # CONFIG_USB_R8A66597_HCD is not set | ||
787 | |||
788 | # | ||
789 | # USB Device Class drivers | ||
790 | # | ||
791 | # CONFIG_USB_ACM is not set | ||
792 | # CONFIG_USB_PRINTER is not set | ||
766 | 793 | ||
767 | # | 794 | # |
768 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 795 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
769 | # | 796 | # |
770 | 797 | ||
771 | # | 798 | # |
799 | # may also be needed; see USB_STORAGE Help for more information | ||
800 | # | ||
801 | CONFIG_USB_STORAGE=y | ||
802 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
803 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
804 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
805 | # CONFIG_USB_STORAGE_DPCM is not set | ||
806 | # CONFIG_USB_STORAGE_USBAT is not set | ||
807 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
808 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
809 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
810 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
811 | # CONFIG_USB_STORAGE_KARMA is not set | ||
812 | # CONFIG_USB_LIBUSUAL is not set | ||
813 | |||
814 | # | ||
815 | # USB Imaging devices | ||
816 | # | ||
817 | # CONFIG_USB_MDC800 is not set | ||
818 | # CONFIG_USB_MICROTEK is not set | ||
819 | CONFIG_USB_MON=y | ||
820 | |||
821 | # | ||
822 | # USB port drivers | ||
823 | # | ||
824 | |||
825 | # | ||
826 | # USB Serial Converter support | ||
827 | # | ||
828 | # CONFIG_USB_SERIAL is not set | ||
829 | |||
830 | # | ||
831 | # USB Miscellaneous drivers | ||
832 | # | ||
833 | # CONFIG_USB_EMI62 is not set | ||
834 | # CONFIG_USB_EMI26 is not set | ||
835 | # CONFIG_USB_ADUTUX is not set | ||
836 | # CONFIG_USB_AUERSWALD is not set | ||
837 | # CONFIG_USB_RIO500 is not set | ||
838 | # CONFIG_USB_LEGOTOWER is not set | ||
839 | # CONFIG_USB_LCD is not set | ||
840 | # CONFIG_USB_BERRY_CHARGE is not set | ||
841 | # CONFIG_USB_LED is not set | ||
842 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
843 | # CONFIG_USB_CYTHERM is not set | ||
844 | # CONFIG_USB_PHIDGET is not set | ||
845 | # CONFIG_USB_IDMOUSE is not set | ||
846 | # CONFIG_USB_FTDI_ELAN is not set | ||
847 | # CONFIG_USB_APPLEDISPLAY is not set | ||
848 | # CONFIG_USB_SISUSBVGA is not set | ||
849 | # CONFIG_USB_LD is not set | ||
850 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
851 | # CONFIG_USB_IOWARRIOR is not set | ||
852 | |||
853 | # | ||
854 | # USB DSL modem support | ||
855 | # | ||
856 | |||
857 | # | ||
772 | # USB Gadget Support | 858 | # USB Gadget Support |
773 | # | 859 | # |
774 | # CONFIG_USB_GADGET is not set | 860 | # CONFIG_USB_GADGET is not set |
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig index e59a88e954..356f736a5d 100644 --- a/arch/powerpc/configs/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/mpc834x_mds_defconfig | |||
@@ -721,7 +721,53 @@ CONFIG_USB_EHCI_FSL=y | |||
721 | # CONFIG_NEW_LEDS is not set | 721 | # CONFIG_NEW_LEDS is not set |
722 | # CONFIG_INFINIBAND is not set | 722 | # CONFIG_INFINIBAND is not set |
723 | # CONFIG_EDAC is not set | 723 | # CONFIG_EDAC is not set |
724 | # CONFIG_RTC_CLASS is not set | 724 | CONFIG_RTC_LIB=y |
725 | CONFIG_RTC_CLASS=y | ||
726 | CONFIG_RTC_HCTOSYS=y | ||
727 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
728 | # CONFIG_RTC_DEBUG is not set | ||
729 | |||
730 | # | ||
731 | # RTC interfaces | ||
732 | # | ||
733 | CONFIG_RTC_INTF_SYSFS=y | ||
734 | CONFIG_RTC_INTF_PROC=y | ||
735 | CONFIG_RTC_INTF_DEV=y | ||
736 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
737 | # CONFIG_RTC_DRV_TEST is not set | ||
738 | |||
739 | # | ||
740 | # I2C RTC drivers | ||
741 | # | ||
742 | # CONFIG_RTC_DRV_DS1307 is not set | ||
743 | CONFIG_RTC_DRV_DS1374=y | ||
744 | # CONFIG_RTC_DRV_DS1672 is not set | ||
745 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
746 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
747 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
748 | # CONFIG_RTC_DRV_X1205 is not set | ||
749 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
750 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
751 | # CONFIG_RTC_DRV_M41T80 is not set | ||
752 | |||
753 | # | ||
754 | # SPI RTC drivers | ||
755 | # | ||
756 | |||
757 | # | ||
758 | # Platform RTC drivers | ||
759 | # | ||
760 | # CONFIG_RTC_DRV_CMOS is not set | ||
761 | # CONFIG_RTC_DRV_DS1553 is not set | ||
762 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
763 | # CONFIG_RTC_DRV_DS1742 is not set | ||
764 | # CONFIG_RTC_DRV_M48T86 is not set | ||
765 | # CONFIG_RTC_DRV_M48T59 is not set | ||
766 | # CONFIG_RTC_DRV_V3020 is not set | ||
767 | |||
768 | # | ||
769 | # on-CPU RTC drivers | ||
770 | # | ||
725 | 771 | ||
726 | # | 772 | # |
727 | # DMA Engine support | 773 | # DMA Engine support |
diff --git a/arch/powerpc/configs/mpc836x_mds_defconfig b/arch/powerpc/configs/mpc836x_mds_defconfig index 7565752851..1b4d37570e 100644 --- a/arch/powerpc/configs/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/mpc836x_mds_defconfig | |||
@@ -773,7 +773,53 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
773 | # CONFIG_NEW_LEDS is not set | 773 | # CONFIG_NEW_LEDS is not set |
774 | # CONFIG_INFINIBAND is not set | 774 | # CONFIG_INFINIBAND is not set |
775 | # CONFIG_EDAC is not set | 775 | # CONFIG_EDAC is not set |
776 | # CONFIG_RTC_CLASS is not set | 776 | CONFIG_RTC_LIB=y |
777 | CONFIG_RTC_CLASS=y | ||
778 | CONFIG_RTC_HCTOSYS=y | ||
779 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
780 | # CONFIG_RTC_DEBUG is not set | ||
781 | |||
782 | # | ||
783 | # RTC interfaces | ||
784 | # | ||
785 | CONFIG_RTC_INTF_SYSFS=y | ||
786 | CONFIG_RTC_INTF_PROC=y | ||
787 | CONFIG_RTC_INTF_DEV=y | ||
788 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
789 | # CONFIG_RTC_DRV_TEST is not set | ||
790 | |||
791 | # | ||
792 | # I2C RTC drivers | ||
793 | # | ||
794 | # CONFIG_RTC_DRV_DS1307 is not set | ||
795 | CONFIG_RTC_DRV_DS1374=y | ||
796 | # CONFIG_RTC_DRV_DS1672 is not set | ||
797 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
798 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
799 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
800 | # CONFIG_RTC_DRV_X1205 is not set | ||
801 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
802 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
803 | # CONFIG_RTC_DRV_M41T80 is not set | ||
804 | |||
805 | # | ||
806 | # SPI RTC drivers | ||
807 | # | ||
808 | |||
809 | # | ||
810 | # Platform RTC drivers | ||
811 | # | ||
812 | # CONFIG_RTC_DRV_CMOS is not set | ||
813 | # CONFIG_RTC_DRV_DS1553 is not set | ||
814 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
815 | # CONFIG_RTC_DRV_DS1742 is not set | ||
816 | # CONFIG_RTC_DRV_M48T86 is not set | ||
817 | # CONFIG_RTC_DRV_M48T59 is not set | ||
818 | # CONFIG_RTC_DRV_V3020 is not set | ||
819 | |||
820 | # | ||
821 | # on-CPU RTC drivers | ||
822 | # | ||
777 | 823 | ||
778 | # | 824 | # |
779 | # DMA Engine support | 825 | # DMA Engine support |
diff --git a/arch/powerpc/configs/mpc8568mds_defconfig b/arch/powerpc/configs/mpc8568mds_defconfig index 883d8af9de..d665e7a797 100644 --- a/arch/powerpc/configs/mpc8568mds_defconfig +++ b/arch/powerpc/configs/mpc8568mds_defconfig | |||
@@ -768,7 +768,53 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
768 | # CONFIG_NEW_LEDS is not set | 768 | # CONFIG_NEW_LEDS is not set |
769 | # CONFIG_INFINIBAND is not set | 769 | # CONFIG_INFINIBAND is not set |
770 | # CONFIG_EDAC is not set | 770 | # CONFIG_EDAC is not set |
771 | # CONFIG_RTC_CLASS is not set | 771 | CONFIG_RTC_LIB=y |
772 | CONFIG_RTC_CLASS=y | ||
773 | CONFIG_RTC_HCTOSYS=y | ||
774 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
775 | # CONFIG_RTC_DEBUG is not set | ||
776 | |||
777 | # | ||
778 | # RTC interfaces | ||
779 | # | ||
780 | CONFIG_RTC_INTF_SYSFS=y | ||
781 | CONFIG_RTC_INTF_PROC=y | ||
782 | CONFIG_RTC_INTF_DEV=y | ||
783 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
784 | # CONFIG_RTC_DRV_TEST is not set | ||
785 | |||
786 | # | ||
787 | # I2C RTC drivers | ||
788 | # | ||
789 | # CONFIG_RTC_DRV_DS1307 is not set | ||
790 | CONFIG_RTC_DRV_DS1374=y | ||
791 | # CONFIG_RTC_DRV_DS1672 is not set | ||
792 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
793 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
794 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
795 | # CONFIG_RTC_DRV_X1205 is not set | ||
796 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
797 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
798 | # CONFIG_RTC_DRV_M41T80 is not set | ||
799 | |||
800 | # | ||
801 | # SPI RTC drivers | ||
802 | # | ||
803 | |||
804 | # | ||
805 | # Platform RTC drivers | ||
806 | # | ||
807 | # CONFIG_RTC_DRV_CMOS is not set | ||
808 | # CONFIG_RTC_DRV_DS1553 is not set | ||
809 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
810 | # CONFIG_RTC_DRV_DS1742 is not set | ||
811 | # CONFIG_RTC_DRV_M48T86 is not set | ||
812 | # CONFIG_RTC_DRV_M48T59 is not set | ||
813 | # CONFIG_RTC_DRV_V3020 is not set | ||
814 | |||
815 | # | ||
816 | # on-CPU RTC drivers | ||
817 | # | ||
772 | 818 | ||
773 | # | 819 | # |
774 | # DMA Engine support | 820 | # DMA Engine support |
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index 2c8e756d19..d67bcd84f3 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -284,6 +284,10 @@ int main(void) | |||
284 | DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32)); | 284 | DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32)); |
285 | DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec)); | 285 | DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec)); |
286 | DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); | 286 | DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); |
287 | DEFINE(CFG_ICACHE_BLOCKSZ, offsetof(struct vdso_data, icache_block_size)); | ||
288 | DEFINE(CFG_DCACHE_BLOCKSZ, offsetof(struct vdso_data, dcache_block_size)); | ||
289 | DEFINE(CFG_ICACHE_LOGBLOCKSZ, offsetof(struct vdso_data, icache_log_block_size)); | ||
290 | DEFINE(CFG_DCACHE_LOGBLOCKSZ, offsetof(struct vdso_data, dcache_log_block_size)); | ||
287 | #ifdef CONFIG_PPC64 | 291 | #ifdef CONFIG_PPC64 |
288 | DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64)); | 292 | DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64)); |
289 | DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec)); | 293 | DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec)); |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 2147807982..053cac19f7 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
@@ -19,6 +19,9 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/capability.h> | 20 | #include <linux/capability.h> |
21 | #include <linux/delay.h> | 21 | #include <linux/delay.h> |
22 | #include <linux/smp.h> | ||
23 | #include <linux/completion.h> | ||
24 | #include <linux/cpumask.h> | ||
22 | 25 | ||
23 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
24 | #include <asm/rtas.h> | 27 | #include <asm/rtas.h> |
@@ -34,6 +37,8 @@ | |||
34 | #include <asm/lmb.h> | 37 | #include <asm/lmb.h> |
35 | #include <asm/udbg.h> | 38 | #include <asm/udbg.h> |
36 | #include <asm/syscalls.h> | 39 | #include <asm/syscalls.h> |
40 | #include <asm/smp.h> | ||
41 | #include <asm/atomic.h> | ||
37 | 42 | ||
38 | struct rtas_t rtas = { | 43 | struct rtas_t rtas = { |
39 | .lock = SPIN_LOCK_UNLOCKED | 44 | .lock = SPIN_LOCK_UNLOCKED |
@@ -41,8 +46,10 @@ struct rtas_t rtas = { | |||
41 | EXPORT_SYMBOL(rtas); | 46 | EXPORT_SYMBOL(rtas); |
42 | 47 | ||
43 | struct rtas_suspend_me_data { | 48 | struct rtas_suspend_me_data { |
44 | long waiting; | 49 | atomic_t working; /* number of cpus accessing this struct */ |
45 | struct rtas_args *args; | 50 | int token; /* ibm,suspend-me */ |
51 | int error; | ||
52 | struct completion *complete; /* wait on this until working == 0 */ | ||
46 | }; | 53 | }; |
47 | 54 | ||
48 | DEFINE_SPINLOCK(rtas_data_buf_lock); | 55 | DEFINE_SPINLOCK(rtas_data_buf_lock); |
@@ -631,18 +638,18 @@ void rtas_halt(void) | |||
631 | /* Must be in the RMO region, so we place it here */ | 638 | /* Must be in the RMO region, so we place it here */ |
632 | static char rtas_os_term_buf[2048]; | 639 | static char rtas_os_term_buf[2048]; |
633 | 640 | ||
634 | void rtas_os_term(char *str) | 641 | void rtas_panic_msg(char *str) |
635 | { | 642 | { |
636 | int status; | 643 | snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); |
644 | } | ||
637 | 645 | ||
638 | if (panic_timeout) | 646 | void rtas_os_term(void) |
639 | return; | 647 | { |
648 | int status; | ||
640 | 649 | ||
641 | if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term")) | 650 | if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term")) |
642 | return; | 651 | return; |
643 | 652 | ||
644 | snprintf(rtas_os_term_buf, 2048, "OS panic: %s", str); | ||
645 | |||
646 | do { | 653 | do { |
647 | status = rtas_call(rtas_token("ibm,os-term"), 1, 1, NULL, | 654 | status = rtas_call(rtas_token("ibm,os-term"), 1, 1, NULL, |
648 | __pa(rtas_os_term_buf)); | 655 | __pa(rtas_os_term_buf)); |
@@ -657,50 +664,62 @@ static int ibm_suspend_me_token = RTAS_UNKNOWN_SERVICE; | |||
657 | #ifdef CONFIG_PPC_PSERIES | 664 | #ifdef CONFIG_PPC_PSERIES |
658 | static void rtas_percpu_suspend_me(void *info) | 665 | static void rtas_percpu_suspend_me(void *info) |
659 | { | 666 | { |
660 | int i; | ||
661 | long rc; | 667 | long rc; |
662 | long flags; | 668 | unsigned long msr_save; |
669 | int cpu; | ||
663 | struct rtas_suspend_me_data *data = | 670 | struct rtas_suspend_me_data *data = |
664 | (struct rtas_suspend_me_data *)info; | 671 | (struct rtas_suspend_me_data *)info; |
665 | 672 | ||
666 | /* | 673 | atomic_inc(&data->working); |
667 | * We use "waiting" to indicate our state. As long | 674 | |
668 | * as it is >0, we are still trying to all join up. | 675 | /* really need to ensure MSR.EE is off for H_JOIN */ |
669 | * If it goes to 0, we have successfully joined up and | 676 | msr_save = mfmsr(); |
670 | * one thread got H_CONTINUE. If any error happens, | 677 | mtmsr(msr_save & ~(MSR_EE)); |
671 | * we set it to <0. | 678 | |
672 | */ | 679 | rc = plpar_hcall_norets(H_JOIN); |
673 | local_irq_save(flags); | ||
674 | do { | ||
675 | rc = plpar_hcall_norets(H_JOIN); | ||
676 | smp_rmb(); | ||
677 | } while (rc == H_SUCCESS && data->waiting > 0); | ||
678 | if (rc == H_SUCCESS) | ||
679 | goto out; | ||
680 | 680 | ||
681 | if (rc == H_CONTINUE) { | 681 | mtmsr(msr_save); |
682 | data->waiting = 0; | 682 | |
683 | data->args->args[data->args->nargs] = | 683 | if (rc == H_SUCCESS) { |
684 | rtas_call(ibm_suspend_me_token, 0, 1, NULL); | 684 | /* This cpu was prodded and the suspend is complete. */ |
685 | for_each_possible_cpu(i) | 685 | goto out; |
686 | plpar_hcall_norets(H_PROD,i); | 686 | } else if (rc == H_CONTINUE) { |
687 | /* All other cpus are in H_JOIN, this cpu does | ||
688 | * the suspend. | ||
689 | */ | ||
690 | printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", | ||
691 | smp_processor_id()); | ||
692 | data->error = rtas_call(data->token, 0, 1, NULL); | ||
693 | |||
694 | if (data->error) | ||
695 | printk(KERN_DEBUG "ibm,suspend-me returned %d\n", | ||
696 | data->error); | ||
687 | } else { | 697 | } else { |
688 | data->waiting = -EBUSY; | 698 | printk(KERN_ERR "H_JOIN on cpu %i failed with rc = %ld\n", |
689 | printk(KERN_ERR "Error on H_JOIN hypervisor call\n"); | 699 | smp_processor_id(), rc); |
700 | data->error = rc; | ||
690 | } | 701 | } |
691 | 702 | /* This cpu did the suspend or got an error; in either case, | |
703 | * we need to prod all other other cpus out of join state. | ||
704 | * Extra prods are harmless. | ||
705 | */ | ||
706 | for_each_online_cpu(cpu) | ||
707 | plpar_hcall_norets(H_PROD, get_hard_smp_processor_id(cpu)); | ||
692 | out: | 708 | out: |
693 | local_irq_restore(flags); | 709 | if (atomic_dec_return(&data->working) == 0) |
694 | return; | 710 | complete(data->complete); |
695 | } | 711 | } |
696 | 712 | ||
697 | static int rtas_ibm_suspend_me(struct rtas_args *args) | 713 | static int rtas_ibm_suspend_me(struct rtas_args *args) |
698 | { | 714 | { |
699 | int i; | ||
700 | long state; | 715 | long state; |
701 | long rc; | 716 | long rc; |
702 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; | 717 | unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; |
703 | struct rtas_suspend_me_data data; | 718 | struct rtas_suspend_me_data data; |
719 | DECLARE_COMPLETION_ONSTACK(done); | ||
720 | |||
721 | if (!rtas_service_present("ibm,suspend-me")) | ||
722 | return -ENOSYS; | ||
704 | 723 | ||
705 | /* Make sure the state is valid */ | 724 | /* Make sure the state is valid */ |
706 | rc = plpar_hcall(H_VASI_STATE, retbuf, | 725 | rc = plpar_hcall(H_VASI_STATE, retbuf, |
@@ -721,25 +740,23 @@ static int rtas_ibm_suspend_me(struct rtas_args *args) | |||
721 | return 0; | 740 | return 0; |
722 | } | 741 | } |
723 | 742 | ||
724 | data.waiting = 1; | 743 | atomic_set(&data.working, 0); |
725 | data.args = args; | 744 | data.token = rtas_token("ibm,suspend-me"); |
745 | data.error = 0; | ||
746 | data.complete = &done; | ||
726 | 747 | ||
727 | /* Call function on all CPUs. One of us will make the | 748 | /* Call function on all CPUs. One of us will make the |
728 | * rtas call | 749 | * rtas call |
729 | */ | 750 | */ |
730 | if (on_each_cpu(rtas_percpu_suspend_me, &data, 1, 0)) | 751 | if (on_each_cpu(rtas_percpu_suspend_me, &data, 1, 0)) |
731 | data.waiting = -EINVAL; | 752 | data.error = -EINVAL; |
732 | 753 | ||
733 | if (data.waiting != 0) | 754 | wait_for_completion(&done); |
734 | printk(KERN_ERR "Error doing global join\n"); | ||
735 | 755 | ||
736 | /* Prod each CPU. This won't hurt, and will wake | 756 | if (data.error != 0) |
737 | * anyone we successfully put to sleep with H_JOIN. | 757 | printk(KERN_ERR "Error doing global join\n"); |
738 | */ | ||
739 | for_each_possible_cpu(i) | ||
740 | plpar_hcall_norets(H_PROD, i); | ||
741 | 758 | ||
742 | return data.waiting; | 759 | return data.error; |
743 | } | 760 | } |
744 | #else /* CONFIG_PPC_PSERIES */ | 761 | #else /* CONFIG_PPC_PSERIES */ |
745 | static int rtas_ibm_suspend_me(struct rtas_args *args) | 762 | static int rtas_ibm_suspend_me(struct rtas_args *args) |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index c0d77723ba..a925a8eae1 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -241,8 +241,9 @@ void account_system_vtime(struct task_struct *tsk) | |||
241 | /* deltascaled includes both user and system time. | 241 | /* deltascaled includes both user and system time. |
242 | * Hence scale it based on the purr ratio to estimate | 242 | * Hence scale it based on the purr ratio to estimate |
243 | * the system time */ | 243 | * the system time */ |
244 | deltascaled = deltascaled * get_paca()->system_time / | 244 | if (get_paca()->user_time) |
245 | (get_paca()->system_time + get_paca()->user_time); | 245 | deltascaled = deltascaled * get_paca()->system_time / |
246 | (get_paca()->system_time + get_paca()->user_time); | ||
246 | delta += get_paca()->system_time; | 247 | delta += get_paca()->system_time; |
247 | get_paca()->system_time = 0; | 248 | get_paca()->system_time = 0; |
248 | } | 249 | } |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 2322ba5cce..3702df7dc5 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -699,11 +699,22 @@ static int __init vdso_init(void) | |||
699 | vdso_data->icache_size = ppc64_caches.isize; | 699 | vdso_data->icache_size = ppc64_caches.isize; |
700 | vdso_data->icache_line_size = ppc64_caches.iline_size; | 700 | vdso_data->icache_line_size = ppc64_caches.iline_size; |
701 | 701 | ||
702 | /* XXXOJN: Blocks should be added to ppc64_caches and used instead */ | ||
703 | vdso_data->dcache_block_size = ppc64_caches.dline_size; | ||
704 | vdso_data->icache_block_size = ppc64_caches.iline_size; | ||
705 | vdso_data->dcache_log_block_size = ppc64_caches.log_dline_size; | ||
706 | vdso_data->icache_log_block_size = ppc64_caches.log_iline_size; | ||
707 | |||
702 | /* | 708 | /* |
703 | * Calculate the size of the 64 bits vDSO | 709 | * Calculate the size of the 64 bits vDSO |
704 | */ | 710 | */ |
705 | vdso64_pages = (&vdso64_end - &vdso64_start) >> PAGE_SHIFT; | 711 | vdso64_pages = (&vdso64_end - &vdso64_start) >> PAGE_SHIFT; |
706 | DBG("vdso64_kbase: %p, 0x%x pages\n", vdso64_kbase, vdso64_pages); | 712 | DBG("vdso64_kbase: %p, 0x%x pages\n", vdso64_kbase, vdso64_pages); |
713 | #else | ||
714 | vdso_data->dcache_block_size = L1_CACHE_BYTES; | ||
715 | vdso_data->dcache_log_block_size = L1_CACHE_SHIFT; | ||
716 | vdso_data->icache_block_size = L1_CACHE_BYTES; | ||
717 | vdso_data->icache_log_block_size = L1_CACHE_SHIFT; | ||
707 | #endif /* CONFIG_PPC64 */ | 718 | #endif /* CONFIG_PPC64 */ |
708 | 719 | ||
709 | 720 | ||
diff --git a/arch/powerpc/kernel/vdso32/cacheflush.S b/arch/powerpc/kernel/vdso32/cacheflush.S index 9cb319992c..1ba6feb71b 100644 --- a/arch/powerpc/kernel/vdso32/cacheflush.S +++ b/arch/powerpc/kernel/vdso32/cacheflush.S | |||
@@ -23,29 +23,46 @@ | |||
23 | * | 23 | * |
24 | * Flushes the data cache & invalidate the instruction cache for the | 24 | * Flushes the data cache & invalidate the instruction cache for the |
25 | * provided range [start, end[ | 25 | * provided range [start, end[ |
26 | * | ||
27 | * Note: all CPUs supported by this kernel have a 128 bytes cache | ||
28 | * line size so we don't have to peek that info from the datapage | ||
29 | */ | 26 | */ |
30 | V_FUNCTION_BEGIN(__kernel_sync_dicache) | 27 | V_FUNCTION_BEGIN(__kernel_sync_dicache) |
31 | .cfi_startproc | 28 | .cfi_startproc |
32 | li r5,127 | 29 | mflr r12 |
33 | andc r6,r3,r5 /* round low to line bdy */ | 30 | .cfi_register lr,r12 |
31 | mr r11,r3 | ||
32 | bl __get_datapage@local | ||
33 | mtlr r12 | ||
34 | mr r10,r3 | ||
35 | |||
36 | lwz r7,CFG_DCACHE_BLOCKSZ(r10) | ||
37 | addi r5,r7,-1 | ||
38 | andc r6,r11,r5 /* round low to line bdy */ | ||
34 | subf r8,r6,r4 /* compute length */ | 39 | subf r8,r6,r4 /* compute length */ |
35 | add r8,r8,r5 /* ensure we get enough */ | 40 | add r8,r8,r5 /* ensure we get enough */ |
36 | srwi. r8,r8,7 /* compute line count */ | 41 | lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) |
42 | srw. r8,r8,r9 /* compute line count */ | ||
37 | crclr cr0*4+so | 43 | crclr cr0*4+so |
38 | beqlr /* nothing to do? */ | 44 | beqlr /* nothing to do? */ |
39 | mtctr r8 | 45 | mtctr r8 |
40 | mr r3,r6 | 46 | 1: dcbst 0,r6 |
41 | 1: dcbst 0,r3 | 47 | add r6,r6,r7 |
42 | addi r3,r3,128 | ||
43 | bdnz 1b | 48 | bdnz 1b |
44 | sync | 49 | sync |
50 | |||
51 | /* Now invalidate the instruction cache */ | ||
52 | |||
53 | lwz r7,CFG_ICACHE_BLOCKSZ(r10) | ||
54 | addi r5,r7,-1 | ||
55 | andc r6,r11,r5 /* round low to line bdy */ | ||
56 | subf r8,r6,r4 /* compute length */ | ||
57 | add r8,r8,r5 | ||
58 | lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) | ||
59 | srw. r8,r8,r9 /* compute line count */ | ||
60 | crclr cr0*4+so | ||
61 | beqlr /* nothing to do? */ | ||
45 | mtctr r8 | 62 | mtctr r8 |
46 | 1: icbi 0,r6 | 63 | 2: icbi 0,r6 |
47 | addi r6,r6,128 | 64 | add r6,r6,r7 |
48 | bdnz 1b | 65 | bdnz 2b |
49 | isync | 66 | isync |
50 | li r3,0 | 67 | li r3,0 |
51 | blr | 68 | blr |
diff --git a/arch/powerpc/kernel/vdso64/cacheflush.S b/arch/powerpc/kernel/vdso64/cacheflush.S index 66a36d3cc6..69c5af2b3c 100644 --- a/arch/powerpc/kernel/vdso64/cacheflush.S +++ b/arch/powerpc/kernel/vdso64/cacheflush.S | |||
@@ -23,29 +23,46 @@ | |||
23 | * | 23 | * |
24 | * Flushes the data cache & invalidate the instruction cache for the | 24 | * Flushes the data cache & invalidate the instruction cache for the |
25 | * provided range [start, end[ | 25 | * provided range [start, end[ |
26 | * | ||
27 | * Note: all CPUs supported by this kernel have a 128 bytes cache | ||
28 | * line size so we don't have to peek that info from the datapage | ||
29 | */ | 26 | */ |
30 | V_FUNCTION_BEGIN(__kernel_sync_dicache) | 27 | V_FUNCTION_BEGIN(__kernel_sync_dicache) |
31 | .cfi_startproc | 28 | .cfi_startproc |
32 | li r5,127 | 29 | mflr r12 |
33 | andc r6,r3,r5 /* round low to line bdy */ | 30 | .cfi_register lr,r12 |
31 | mr r11,r3 | ||
32 | bl V_LOCAL_FUNC(__get_datapage) | ||
33 | mtlr r12 | ||
34 | mr r10,r3 | ||
35 | |||
36 | lwz r7,CFG_DCACHE_BLOCKSZ(r10) | ||
37 | addi r5,r7,-1 | ||
38 | andc r6,r11,r5 /* round low to line bdy */ | ||
34 | subf r8,r6,r4 /* compute length */ | 39 | subf r8,r6,r4 /* compute length */ |
35 | add r8,r8,r5 /* ensure we get enough */ | 40 | add r8,r8,r5 /* ensure we get enough */ |
36 | srwi. r8,r8,7 /* compute line count */ | 41 | lwz r9,CFG_DCACHE_LOGBLOCKSZ(r10) |
42 | srw. r8,r8,r9 /* compute line count */ | ||
37 | crclr cr0*4+so | 43 | crclr cr0*4+so |
38 | beqlr /* nothing to do? */ | 44 | beqlr /* nothing to do? */ |
39 | mtctr r8 | 45 | mtctr r8 |
40 | mr r3,r6 | 46 | 1: dcbst 0,r6 |
41 | 1: dcbst 0,r3 | 47 | add r6,r6,r7 |
42 | addi r3,r3,128 | ||
43 | bdnz 1b | 48 | bdnz 1b |
44 | sync | 49 | sync |
50 | |||
51 | /* Now invalidate the instruction cache */ | ||
52 | |||
53 | lwz r7,CFG_ICACHE_BLOCKSZ(r10) | ||
54 | addi r5,r7,-1 | ||
55 | andc r6,r11,r5 /* round low to line bdy */ | ||
56 | subf r8,r6,r4 /* compute length */ | ||
57 | add r8,r8,r5 | ||
58 | lwz r9,CFG_ICACHE_LOGBLOCKSZ(r10) | ||
59 | srw. r8,r8,r9 /* compute line count */ | ||
60 | crclr cr0*4+so | ||
61 | beqlr /* nothing to do? */ | ||
45 | mtctr r8 | 62 | mtctr r8 |
46 | 1: icbi 0,r6 | 63 | 2: icbi 0,r6 |
47 | addi r6,r6,128 | 64 | add r6,r6,r7 |
48 | bdnz 1b | 65 | bdnz 2b |
49 | isync | 66 | isync |
50 | li r3,0 | 67 | li r3,0 |
51 | blr | 68 | blr |
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 81eb96ec13..5402fb6b3a 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -464,7 +464,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, | |||
464 | * we invalidate the TLB here, thus avoiding dcbst | 464 | * we invalidate the TLB here, thus avoiding dcbst |
465 | * misbehaviour. | 465 | * misbehaviour. |
466 | */ | 466 | */ |
467 | _tlbie(address); | 467 | _tlbie(address, 0 /* 8xx doesn't care about PID */); |
468 | #endif | 468 | #endif |
469 | if (!PageReserved(page) | 469 | if (!PageReserved(page) |
470 | && !test_bit(PG_arch_1, &page->flags)) { | 470 | && !test_bit(PG_arch_1, &page->flags)) { |
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index eb3a732e91..ebfd13dc9d 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -56,7 +56,7 @@ extern unsigned long total_lowmem; | |||
56 | * architectures. -- Dan | 56 | * architectures. -- Dan |
57 | */ | 57 | */ |
58 | #if defined(CONFIG_8xx) | 58 | #if defined(CONFIG_8xx) |
59 | #define flush_HPTE(X, va, pg) _tlbie(va) | 59 | #define flush_HPTE(X, va, pg) _tlbie(va, 0 /* 8xx doesn't care about PID */) |
60 | #define MMU_init_hw() do { } while(0) | 60 | #define MMU_init_hw() do { } while(0) |
61 | #define mmu_mapin_ram() (0UL) | 61 | #define mmu_mapin_ram() (0UL) |
62 | 62 | ||
diff --git a/arch/powerpc/mm/stab.c b/arch/powerpc/mm/stab.c index 9e85bda762..50448d5de9 100644 --- a/arch/powerpc/mm/stab.c +++ b/arch/powerpc/mm/stab.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/lmb.h> | 20 | #include <asm/lmb.h> |
21 | #include <asm/abs_addr.h> | 21 | #include <asm/abs_addr.h> |
22 | #include <asm/firmware.h> | 22 | #include <asm/firmware.h> |
23 | #include <asm/iseries/hv_call.h> | ||
23 | 24 | ||
24 | struct stab_entry { | 25 | struct stab_entry { |
25 | unsigned long esid_data; | 26 | unsigned long esid_data; |
diff --git a/arch/powerpc/platforms/40x/walnut.c b/arch/powerpc/platforms/40x/walnut.c index eb0c136b1c..ff6db24317 100644 --- a/arch/powerpc/platforms/40x/walnut.c +++ b/arch/powerpc/platforms/40x/walnut.c | |||
@@ -17,12 +17,13 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/of_platform.h> | ||
21 | |||
20 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
21 | #include <asm/prom.h> | 23 | #include <asm/prom.h> |
22 | #include <asm/udbg.h> | 24 | #include <asm/udbg.h> |
23 | #include <asm/time.h> | 25 | #include <asm/time.h> |
24 | #include <asm/uic.h> | 26 | #include <asm/uic.h> |
25 | #include <asm/of_platform.h> | ||
26 | 27 | ||
27 | static struct of_device_id walnut_of_bus[] = { | 28 | static struct of_device_id walnut_of_bus[] = { |
28 | { .compatible = "ibm,plb3", }, | 29 | { .compatible = "ibm,plb3", }, |
diff --git a/arch/powerpc/platforms/44x/bamboo.c b/arch/powerpc/platforms/44x/bamboo.c index 470e1a3fd7..be23f11218 100644 --- a/arch/powerpc/platforms/44x/bamboo.c +++ b/arch/powerpc/platforms/44x/bamboo.c | |||
@@ -14,12 +14,13 @@ | |||
14 | * option) any later version. | 14 | * option) any later version. |
15 | */ | 15 | */ |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/of_platform.h> | ||
18 | |||
17 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
18 | #include <asm/prom.h> | 20 | #include <asm/prom.h> |
19 | #include <asm/udbg.h> | 21 | #include <asm/udbg.h> |
20 | #include <asm/time.h> | 22 | #include <asm/time.h> |
21 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
22 | #include <asm/of_platform.h> | ||
23 | #include "44x.h" | 24 | #include "44x.h" |
24 | 25 | ||
25 | static struct of_device_id bamboo_of_bus[] = { | 26 | static struct of_device_id bamboo_of_bus[] = { |
diff --git a/arch/powerpc/platforms/44x/ebony.c b/arch/powerpc/platforms/44x/ebony.c index 40e18fcb66..6cd3476767 100644 --- a/arch/powerpc/platforms/44x/ebony.c +++ b/arch/powerpc/platforms/44x/ebony.c | |||
@@ -17,12 +17,13 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/of_platform.h> | ||
21 | |||
20 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
21 | #include <asm/prom.h> | 23 | #include <asm/prom.h> |
22 | #include <asm/udbg.h> | 24 | #include <asm/udbg.h> |
23 | #include <asm/time.h> | 25 | #include <asm/time.h> |
24 | #include <asm/uic.h> | 26 | #include <asm/uic.h> |
25 | #include <asm/of_platform.h> | ||
26 | 27 | ||
27 | #include "44x.h" | 28 | #include "44x.h" |
28 | 29 | ||
diff --git a/arch/powerpc/platforms/44x/sequoia.c b/arch/powerpc/platforms/44x/sequoia.c index 30700b31d4..21a9dd14f2 100644 --- a/arch/powerpc/platforms/44x/sequoia.c +++ b/arch/powerpc/platforms/44x/sequoia.c | |||
@@ -14,12 +14,13 @@ | |||
14 | * option) any later version. | 14 | * option) any later version. |
15 | */ | 15 | */ |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/of_platform.h> | ||
18 | |||
17 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
18 | #include <asm/prom.h> | 20 | #include <asm/prom.h> |
19 | #include <asm/udbg.h> | 21 | #include <asm/udbg.h> |
20 | #include <asm/time.h> | 22 | #include <asm/time.h> |
21 | #include <asm/uic.h> | 23 | #include <asm/uic.h> |
22 | #include <asm/of_platform.h> | ||
23 | #include "44x.h" | 24 | #include "44x.h" |
24 | 25 | ||
25 | static struct of_device_id sequoia_of_bus[] = { | 26 | static struct of_device_id sequoia_of_bus[] = { |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c index 972fa8528a..39ee7a13b2 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c | |||
@@ -90,10 +90,11 @@ static void __init mpc832x_sys_setup_arch(void) | |||
90 | 90 | ||
91 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) | 91 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) |
92 | != NULL){ | 92 | != NULL){ |
93 | /* Reset the Ethernet PHY */ | 93 | /* Reset the Ethernet PHYs */ |
94 | bcsr_regs[9] &= ~0x20; | 94 | #define BCSR8_FETH_RST 0x50 |
95 | bcsr_regs[8] &= ~BCSR8_FETH_RST; | ||
95 | udelay(1000); | 96 | udelay(1000); |
96 | bcsr_regs[9] |= 0x20; | 97 | bcsr_regs[8] |= BCSR8_FETH_RST; |
97 | iounmap(bcsr_regs); | 98 | iounmap(bcsr_regs); |
98 | of_node_put(np); | 99 | of_node_put(np); |
99 | } | 100 | } |
@@ -145,30 +146,6 @@ static void __init mpc832x_sys_init_IRQ(void) | |||
145 | #endif /* CONFIG_QUICC_ENGINE */ | 146 | #endif /* CONFIG_QUICC_ENGINE */ |
146 | } | 147 | } |
147 | 148 | ||
148 | #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) | ||
149 | extern ulong ds1374_get_rtc_time(void); | ||
150 | extern int ds1374_set_rtc_time(ulong); | ||
151 | |||
152 | static int __init mpc832x_rtc_hookup(void) | ||
153 | { | ||
154 | struct timespec tv; | ||
155 | |||
156 | if (!machine_is(mpc832x_mds)) | ||
157 | return 0; | ||
158 | |||
159 | ppc_md.get_rtc_time = ds1374_get_rtc_time; | ||
160 | ppc_md.set_rtc_time = ds1374_set_rtc_time; | ||
161 | |||
162 | tv.tv_nsec = 0; | ||
163 | tv.tv_sec = (ppc_md.get_rtc_time) (); | ||
164 | do_settimeofday(&tv); | ||
165 | |||
166 | return 0; | ||
167 | } | ||
168 | |||
169 | late_initcall(mpc832x_rtc_hookup); | ||
170 | #endif | ||
171 | |||
172 | /* | 149 | /* |
173 | * Called very early, MMU is off, device-tree isn't unflattened | 150 | * Called very early, MMU is off, device-tree isn't unflattened |
174 | */ | 151 | */ |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c index fbca336aa0..d4bd04001b 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c +++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c | |||
@@ -15,7 +15,10 @@ | |||
15 | */ | 15 | */ |
16 | 16 | ||
17 | #include <linux/pci.h> | 17 | #include <linux/pci.h> |
18 | #include <linux/interrupt.h> | ||
18 | #include <linux/spi/spi.h> | 19 | #include <linux/spi/spi.h> |
20 | #include <linux/spi/mmc_spi.h> | ||
21 | #include <linux/mmc/host.h> | ||
19 | 22 | ||
20 | #include <asm/of_platform.h> | 23 | #include <asm/of_platform.h> |
21 | #include <asm/time.h> | 24 | #include <asm/time.h> |
@@ -46,15 +49,16 @@ static void mpc83xx_spi_deactivate_cs(u8 cs, u8 polarity) | |||
46 | par_io_data_set(3, 13, !polarity); | 49 | par_io_data_set(3, 13, !polarity); |
47 | } | 50 | } |
48 | 51 | ||
52 | static struct mmc_spi_platform_data mpc832x_mmc_pdata = { | ||
53 | .ocr_mask = MMC_VDD_33_34, | ||
54 | }; | ||
55 | |||
49 | static struct spi_board_info mpc832x_spi_boardinfo = { | 56 | static struct spi_board_info mpc832x_spi_boardinfo = { |
50 | .bus_num = 0x4c0, | 57 | .bus_num = 0x4c0, |
51 | .chip_select = 0, | 58 | .chip_select = 0, |
52 | .max_speed_hz = 50000000, | 59 | .max_speed_hz = 50000000, |
53 | /* | 60 | .modalias = "mmc_spi", |
54 | * XXX: This is spidev (spi in userspace) stub, should | 61 | .platform_data = &mpc832x_mmc_pdata, |
55 | * be replaced by "mmc_spi" when mmc_spi will hit mainline. | ||
56 | */ | ||
57 | .modalias = "spidev", | ||
58 | }; | 62 | }; |
59 | 63 | ||
60 | static int __init mpc832x_spi_init(void) | 64 | static int __init mpc832x_spi_init(void) |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_mds.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c index 00aed7c226..a81bb3ce6b 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c | |||
@@ -106,30 +106,6 @@ static void __init mpc834x_mds_init_IRQ(void) | |||
106 | ipic_set_default_priority(); | 106 | ipic_set_default_priority(); |
107 | } | 107 | } |
108 | 108 | ||
109 | #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) | ||
110 | extern ulong ds1374_get_rtc_time(void); | ||
111 | extern int ds1374_set_rtc_time(ulong); | ||
112 | |||
113 | static int __init mpc834x_rtc_hookup(void) | ||
114 | { | ||
115 | struct timespec tv; | ||
116 | |||
117 | if (!machine_is(mpc834x_mds)) | ||
118 | return 0; | ||
119 | |||
120 | ppc_md.get_rtc_time = ds1374_get_rtc_time; | ||
121 | ppc_md.set_rtc_time = ds1374_set_rtc_time; | ||
122 | |||
123 | tv.tv_nsec = 0; | ||
124 | tv.tv_sec = (ppc_md.get_rtc_time) (); | ||
125 | do_settimeofday(&tv); | ||
126 | |||
127 | return 0; | ||
128 | } | ||
129 | |||
130 | late_initcall(mpc834x_rtc_hookup); | ||
131 | #endif | ||
132 | |||
133 | /* | 109 | /* |
134 | * Called very early, MMU is off, device-tree isn't unflattened | 110 | * Called very early, MMU is off, device-tree isn't unflattened |
135 | */ | 111 | */ |
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c index 0f3855c95f..e40012f8f4 100644 --- a/arch/powerpc/platforms/83xx/mpc836x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c | |||
@@ -96,14 +96,39 @@ static void __init mpc836x_mds_setup_arch(void) | |||
96 | 96 | ||
97 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) | 97 | if ((np = of_find_compatible_node(NULL, "network", "ucc_geth")) |
98 | != NULL){ | 98 | != NULL){ |
99 | uint svid; | ||
100 | |||
99 | /* Reset the Ethernet PHY */ | 101 | /* Reset the Ethernet PHY */ |
100 | bcsr_regs[9] &= ~0x20; | 102 | #define BCSR9_GETHRST 0x20 |
103 | clrbits8(&bcsr_regs[9], BCSR9_GETHRST); | ||
101 | udelay(1000); | 104 | udelay(1000); |
102 | bcsr_regs[9] |= 0x20; | 105 | setbits8(&bcsr_regs[9], BCSR9_GETHRST); |
106 | |||
107 | /* handle mpc8360ea rev.2.1 erratum 2: RGMII Timing */ | ||
108 | svid = mfspr(SPRN_SVR); | ||
109 | if (svid == 0x80480021) { | ||
110 | void __iomem *immap; | ||
111 | |||
112 | immap = ioremap(get_immrbase() + 0x14a8, 8); | ||
113 | |||
114 | /* | ||
115 | * IMMR + 0x14A8[4:5] = 11 (clk delay for UCC 2) | ||
116 | * IMMR + 0x14A8[18:19] = 11 (clk delay for UCC 1) | ||
117 | */ | ||
118 | setbits32(immap, 0x0c003000); | ||
119 | |||
120 | /* | ||
121 | * IMMR + 0x14AC[20:27] = 10101010 | ||
122 | * (data delay for both UCC's) | ||
123 | */ | ||
124 | clrsetbits_be32(immap + 4, 0xff0, 0xaa0); | ||
125 | |||
126 | iounmap(immap); | ||
127 | } | ||
128 | |||
103 | iounmap(bcsr_regs); | 129 | iounmap(bcsr_regs); |
104 | of_node_put(np); | 130 | of_node_put(np); |
105 | } | 131 | } |
106 | |||
107 | #endif /* CONFIG_QUICC_ENGINE */ | 132 | #endif /* CONFIG_QUICC_ENGINE */ |
108 | } | 133 | } |
109 | 134 | ||
@@ -152,30 +177,6 @@ static void __init mpc836x_mds_init_IRQ(void) | |||
152 | #endif /* CONFIG_QUICC_ENGINE */ | 177 | #endif /* CONFIG_QUICC_ENGINE */ |
153 | } | 178 | } |
154 | 179 | ||
155 | #if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1374) | ||
156 | extern ulong ds1374_get_rtc_time(void); | ||
157 | extern int ds1374_set_rtc_time(ulong); | ||
158 | |||
159 | static int __init mpc8360_rtc_hookup(void) | ||
160 | { | ||
161 | struct timespec tv; | ||
162 | |||
163 | if (!machine_is(mpc836x_mds)) | ||
164 | return 0; | ||
165 | |||
166 | ppc_md.get_rtc_time = ds1374_get_rtc_time; | ||
167 | ppc_md.set_rtc_time = ds1374_set_rtc_time; | ||
168 | |||
169 | tv.tv_nsec = 0; | ||
170 | tv.tv_sec = (ppc_md.get_rtc_time) (); | ||
171 | do_settimeofday(&tv); | ||
172 | |||
173 | return 0; | ||
174 | } | ||
175 | |||
176 | late_initcall(mpc8360_rtc_hookup); | ||
177 | #endif | ||
178 | |||
179 | /* | 180 | /* |
180 | * Called very early, MMU is off, device-tree isn't unflattened | 181 | * Called very early, MMU is off, device-tree isn't unflattened |
181 | */ | 182 | */ |
diff --git a/arch/powerpc/platforms/83xx/usb.c b/arch/powerpc/platforms/83xx/usb.c index eafe7605cd..b45160f8d0 100644 --- a/arch/powerpc/platforms/83xx/usb.c +++ b/arch/powerpc/platforms/83xx/usb.c | |||
@@ -130,7 +130,7 @@ int mpc831x_usb_cfg(void) | |||
130 | out_be32(immap + MPC83XX_SCCR_OFFS, temp); | 130 | out_be32(immap + MPC83XX_SCCR_OFFS, temp); |
131 | 131 | ||
132 | /* Configure pin mux for ULPI. There is no pin mux for UTMI */ | 132 | /* Configure pin mux for ULPI. There is no pin mux for UTMI */ |
133 | if (!strcmp(prop, "ulpi")) { | 133 | if (prop && !strcmp(prop, "ulpi")) { |
134 | temp = in_be32(immap + MPC83XX_SICRL_OFFS); | 134 | temp = in_be32(immap + MPC83XX_SICRL_OFFS); |
135 | temp &= ~MPC831X_SICRL_USB_MASK; | 135 | temp &= ~MPC831X_SICRL_USB_MASK; |
136 | temp |= MPC831X_SICRL_USB_ULPI; | 136 | temp |= MPC831X_SICRL_USB_ULPI; |
@@ -153,13 +153,13 @@ int mpc831x_usb_cfg(void) | |||
153 | usb_regs = ioremap(res.start, res.end - res.start + 1); | 153 | usb_regs = ioremap(res.start, res.end - res.start + 1); |
154 | 154 | ||
155 | /* Using on-chip PHY */ | 155 | /* Using on-chip PHY */ |
156 | if (!strcmp(prop, "utmi_wide") || | 156 | if (prop && (!strcmp(prop, "utmi_wide") || |
157 | !strcmp(prop, "utmi")) { | 157 | !strcmp(prop, "utmi"))) { |
158 | /* Set UTMI_PHY_EN, REFSEL to 48MHZ */ | 158 | /* Set UTMI_PHY_EN, REFSEL to 48MHZ */ |
159 | out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, | 159 | out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, |
160 | CONTROL_UTMI_PHY_EN | CONTROL_REFSEL_48MHZ); | 160 | CONTROL_UTMI_PHY_EN | CONTROL_REFSEL_48MHZ); |
161 | /* Using external UPLI PHY */ | 161 | /* Using external UPLI PHY */ |
162 | } else if (!strcmp(prop, "ulpi")) { | 162 | } else if (prop && !strcmp(prop, "ulpi")) { |
163 | /* Set PHY_CLK_SEL to ULPI */ | 163 | /* Set PHY_CLK_SEL to ULPI */ |
164 | temp = CONTROL_PHY_CLK_SEL_ULPI; | 164 | temp = CONTROL_PHY_CLK_SEL_ULPI; |
165 | #ifdef CONFIG_USB_OTG | 165 | #ifdef CONFIG_USB_OTG |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index 0966d093db..c0e968a4c2 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -171,6 +171,7 @@ static int spufs_rmdir(struct inode *parent, struct dentry *dir) | |||
171 | { | 171 | { |
172 | /* remove all entries */ | 172 | /* remove all entries */ |
173 | spufs_prune_dir(dir); | 173 | spufs_prune_dir(dir); |
174 | d_drop(dir); | ||
174 | 175 | ||
175 | return simple_rmdir(parent, dir); | 176 | return simple_rmdir(parent, dir); |
176 | } | 177 | } |
diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c index e484cac750..653a5eb91c 100644 --- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c +++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c | |||
@@ -144,6 +144,7 @@ static int __init prpmc2800_probe(void) | |||
144 | strncpy(prpmc2800_platform_name, m, | 144 | strncpy(prpmc2800_platform_name, m, |
145 | min((int)len, PLATFORM_NAME_MAX - 1)); | 145 | min((int)len, PLATFORM_NAME_MAX - 1)); |
146 | 146 | ||
147 | _set_L2CR(_get_L2CR() | L2CR_L2E); | ||
147 | return 1; | 148 | return 1; |
148 | } | 149 | } |
149 | 150 | ||
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c index 3a5d112af5..3d62060498 100644 --- a/arch/powerpc/platforms/pasemi/setup.c +++ b/arch/powerpc/platforms/pasemi/setup.c | |||
@@ -214,7 +214,7 @@ static __init void pas_init_IRQ(void) | |||
214 | printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); | 214 | printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); |
215 | 215 | ||
216 | mpic = mpic_alloc(mpic_node, openpic_addr, | 216 | mpic = mpic_alloc(mpic_node, openpic_addr, |
217 | MPIC_PRIMARY|MPIC_LARGE_VECTORS|MPIC_WANTS_RESET, | 217 | MPIC_PRIMARY|MPIC_LARGE_VECTORS, |
218 | 0, 0, " PAS-OPIC "); | 218 | 0, 0, " PAS-OPIC "); |
219 | BUG_ON(!mpic); | 219 | BUG_ON(!mpic); |
220 | 220 | ||
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig index 16e4e401b8..306a9d0749 100644 --- a/arch/powerpc/platforms/pseries/Kconfig +++ b/arch/powerpc/platforms/pseries/Kconfig | |||
@@ -21,7 +21,7 @@ config PPC_SPLPAR | |||
21 | 21 | ||
22 | config EEH | 22 | config EEH |
23 | bool "PCI Extended Error Handling (EEH)" if EMBEDDED | 23 | bool "PCI Extended Error Handling (EEH)" if EMBEDDED |
24 | depends on PPC_PSERIES | 24 | depends on PPC_PSERIES && PCI |
25 | default y if !EMBEDDED | 25 | default y if !EMBEDDED |
26 | 26 | ||
27 | config SCANLOG | 27 | config SCANLOG |
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index fdb9b1c8f9..fdeefe54ea 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -507,7 +507,8 @@ define_machine(pseries) { | |||
507 | .restart = rtas_restart, | 507 | .restart = rtas_restart, |
508 | .power_off = pSeries_power_off, | 508 | .power_off = pSeries_power_off, |
509 | .halt = rtas_halt, | 509 | .halt = rtas_halt, |
510 | .panic = rtas_os_term, | 510 | .panic = rtas_panic_msg, |
511 | .machine_shutdown = rtas_os_term, | ||
511 | .get_boot_time = rtas_get_boot_time, | 512 | .get_boot_time = rtas_get_boot_time, |
512 | .get_rtc_time = rtas_get_rtc_time, | 513 | .get_rtc_time = rtas_get_rtc_time, |
513 | .set_rtc_time = rtas_set_rtc_time, | 514 | .set_rtc_time = rtas_set_rtc_time, |
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c index 5149716c73..847a5496b8 100644 --- a/arch/powerpc/sysdev/uic.c +++ b/arch/powerpc/sysdev/uic.c | |||
@@ -97,6 +97,22 @@ static void uic_ack_irq(unsigned int virq) | |||
97 | spin_unlock_irqrestore(&uic->lock, flags); | 97 | spin_unlock_irqrestore(&uic->lock, flags); |
98 | } | 98 | } |
99 | 99 | ||
100 | static void uic_mask_ack_irq(unsigned int virq) | ||
101 | { | ||
102 | struct uic *uic = get_irq_chip_data(virq); | ||
103 | unsigned int src = uic_irq_to_hw(virq); | ||
104 | unsigned long flags; | ||
105 | u32 er, sr; | ||
106 | |||
107 | sr = 1 << (31-src); | ||
108 | spin_lock_irqsave(&uic->lock, flags); | ||
109 | er = mfdcr(uic->dcrbase + UIC_ER); | ||
110 | er &= ~sr; | ||
111 | mtdcr(uic->dcrbase + UIC_ER, er); | ||
112 | mtdcr(uic->dcrbase + UIC_SR, sr); | ||
113 | spin_unlock_irqrestore(&uic->lock, flags); | ||
114 | } | ||
115 | |||
100 | static int uic_set_irq_type(unsigned int virq, unsigned int flow_type) | 116 | static int uic_set_irq_type(unsigned int virq, unsigned int flow_type) |
101 | { | 117 | { |
102 | struct uic *uic = get_irq_chip_data(virq); | 118 | struct uic *uic = get_irq_chip_data(virq); |
@@ -152,7 +168,7 @@ static struct irq_chip uic_irq_chip = { | |||
152 | .typename = " UIC ", | 168 | .typename = " UIC ", |
153 | .unmask = uic_unmask_irq, | 169 | .unmask = uic_unmask_irq, |
154 | .mask = uic_mask_irq, | 170 | .mask = uic_mask_irq, |
155 | /* .mask_ack = uic_mask_irq_and_ack, */ | 171 | .mask_ack = uic_mask_ack_irq, |
156 | .ack = uic_ack_irq, | 172 | .ack = uic_ack_irq, |
157 | .set_type = uic_set_irq_type, | 173 | .set_type = uic_set_irq_type, |
158 | }; | 174 | }; |
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index aac88c2f3d..5255bd80aa 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c | |||
@@ -312,7 +312,14 @@ early_init(int r3, int r4, int r5) | |||
312 | * Identify the CPU type and fix up code sections | 312 | * Identify the CPU type and fix up code sections |
313 | * that depend on which cpu we have. | 313 | * that depend on which cpu we have. |
314 | */ | 314 | */ |
315 | #if defined(CONFIG_440EP) && defined(CONFIG_PPC_FPU) | ||
316 | /* We pass the virtual PVR here for 440EP as 440EP and 440GR have | ||
317 | * identical PVRs and there is no reliable way to check for the FPU | ||
318 | */ | ||
319 | spec = identify_cpu(offset, (mfspr(SPRN_PVR) | 0x8)); | ||
320 | #else | ||
315 | spec = identify_cpu(offset, mfspr(SPRN_PVR)); | 321 | spec = identify_cpu(offset, mfspr(SPRN_PVR)); |
322 | #endif | ||
316 | do_feature_fixups(spec->cpu_features, | 323 | do_feature_fixups(spec->cpu_features, |
317 | PTRRELOC(&__start___ftr_fixup), | 324 | PTRRELOC(&__start___ftr_fixup), |
318 | PTRRELOC(&__stop___ftr_fixup)); | 325 | PTRRELOC(&__stop___ftr_fixup)); |
diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c index 390dd1995c..dd898d3248 100644 --- a/arch/ppc/mm/init.c +++ b/arch/ppc/mm/init.c | |||
@@ -561,7 +561,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, | |||
561 | * That means the zeroed TLB has to be invalidated | 561 | * That means the zeroed TLB has to be invalidated |
562 | * whenever a page miss occurs. | 562 | * whenever a page miss occurs. |
563 | */ | 563 | */ |
564 | _tlbie(address); | 564 | _tlbie(address, 0 /* 8xx doesn't care about PID */); |
565 | #endif | 565 | #endif |
566 | if (!PageReserved(page) | 566 | if (!PageReserved(page) |
567 | && !test_bit(PG_arch_1, &page->flags)) { | 567 | && !test_bit(PG_arch_1, &page->flags)) { |
diff --git a/arch/ppc/mm/mmu_decl.h b/arch/ppc/mm/mmu_decl.h index f1d4f2109a..b298b60c20 100644 --- a/arch/ppc/mm/mmu_decl.h +++ b/arch/ppc/mm/mmu_decl.h | |||
@@ -49,7 +49,7 @@ extern unsigned int num_tlbcam_entries; | |||
49 | * architectures. -- Dan | 49 | * architectures. -- Dan |
50 | */ | 50 | */ |
51 | #if defined(CONFIG_8xx) | 51 | #if defined(CONFIG_8xx) |
52 | #define flush_HPTE(X, va, pg) _tlbie(va) | 52 | #define flush_HPTE(X, va, pg) _tlbie(va, 0 /* 8xx doesn't care about PID */) |
53 | #define MMU_init_hw() do { } while(0) | 53 | #define MMU_init_hw() do { } while(0) |
54 | #define mmu_mapin_ram() (0UL) | 54 | #define mmu_mapin_ram() (0UL) |
55 | 55 | ||
diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c index a83b0baea0..66a44ff0d9 100644 --- a/arch/ppc/platforms/4xx/yucca.c +++ b/arch/ppc/platforms/4xx/yucca.c | |||
@@ -211,6 +211,7 @@ static void __init yucca_setup_pcie_fpga_rootpoint(int port) | |||
211 | break; | 211 | break; |
212 | 212 | ||
213 | default: | 213 | default: |
214 | iounmap(pcie_reg_fpga_base); | ||
214 | return; | 215 | return; |
215 | } | 216 | } |
216 | 217 | ||
diff --git a/arch/ppc/syslib/virtex_devices.c b/arch/ppc/syslib/virtex_devices.c index ace4ec08de..f658ff3b38 100644 --- a/arch/ppc/syslib/virtex_devices.c +++ b/arch/ppc/syslib/virtex_devices.c | |||
@@ -87,6 +87,29 @@ | |||
87 | }, \ | 87 | }, \ |
88 | } | 88 | } |
89 | 89 | ||
90 | #define XPAR_AC97_CONTROLLER_REFERENCE(num) { \ | ||
91 | .name = "ml403_ac97cr", \ | ||
92 | .id = num, \ | ||
93 | .num_resources = 3, \ | ||
94 | .resource = (struct resource[]) { \ | ||
95 | { \ | ||
96 | .start = XPAR_OPB_AC97_CONTROLLER_REF_##num##_BASEADDR, \ | ||
97 | .end = XPAR_OPB_AC97_CONTROLLER_REF_##num##_HIGHADDR, \ | ||
98 | .flags = IORESOURCE_MEM, \ | ||
99 | }, \ | ||
100 | { \ | ||
101 | .start = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_PLAYBACK_INTERRUPT_INTR, \ | ||
102 | .end = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_PLAYBACK_INTERRUPT_INTR, \ | ||
103 | .flags = IORESOURCE_IRQ, \ | ||
104 | }, \ | ||
105 | { \ | ||
106 | .start = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_RECORD_INTERRUPT_INTR, \ | ||
107 | .end = XPAR_OPB_INTC_0_OPB_AC97_CONTROLLER_REF_##num##_RECORD_INTERRUPT_INTR, \ | ||
108 | .flags = IORESOURCE_IRQ, \ | ||
109 | }, \ | ||
110 | }, \ | ||
111 | } | ||
112 | |||
90 | /* UART 8250 driver platform data table */ | 113 | /* UART 8250 driver platform data table */ |
91 | struct plat_serial8250_port virtex_serial_platform_data[] = { | 114 | struct plat_serial8250_port virtex_serial_platform_data[] = { |
92 | #if defined(XPAR_UARTNS550_0_BASEADDR) | 115 | #if defined(XPAR_UARTNS550_0_BASEADDR) |
@@ -173,6 +196,14 @@ struct platform_device virtex_platform_devices[] = { | |||
173 | #if defined(XPAR_TFT_3_BASEADDR) | 196 | #if defined(XPAR_TFT_3_BASEADDR) |
174 | XPAR_TFT(3), | 197 | XPAR_TFT(3), |
175 | #endif | 198 | #endif |
199 | |||
200 | /* AC97 Controller Reference instances */ | ||
201 | #if defined(XPAR_OPB_AC97_CONTROLLER_REF_0_BASEADDR) | ||
202 | XPAR_AC97_CONTROLLER_REFERENCE(0), | ||
203 | #endif | ||
204 | #if defined(XPAR_OPB_AC97_CONTROLLER_REF_1_BASEADDR) | ||
205 | XPAR_AC97_CONTROLLER_REFERENCE(1), | ||
206 | #endif | ||
176 | }; | 207 | }; |
177 | 208 | ||
178 | /* Early serial support functions */ | 209 | /* Early serial support functions */ |