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 | |
| 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
...
47 files changed, 832 insertions, 236 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index ac1be25c1e25..e9a3cb1d6b06 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
| @@ -1645,8 +1645,9 @@ platforms are moved over to use the flattened-device-tree model. | |||
| 1645 | MAC addresses passed by the firmware when no information other | 1645 | MAC addresses passed by the firmware when no information other |
| 1646 | than indices is available to associate an address with a device. | 1646 | than indices is available to associate an address with a device. |
| 1647 | - phy-connection-type : a string naming the controller/PHY interface type, | 1647 | - phy-connection-type : a string naming the controller/PHY interface type, |
| 1648 | i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi", | 1648 | i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal |
| 1649 | or "rtbi". | 1649 | Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only), |
| 1650 | "tbi", or "rtbi". | ||
| 1650 | 1651 | ||
| 1651 | Example: | 1652 | Example: |
| 1652 | ucc@2000 { | 1653 | ucc@2000 { |
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index fcd333c391ec..c64f3037a13b 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 e5a84ef9f4b0..49363f89cb71 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 fbd1573c348b..0b2d2b588daa 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 3f9d15cf13e0..6c608de1fc1b 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 d638deec7652..0eb44fb9647d 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 367765937a06..abb26dc42558 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 dd68d1818d6b..e069018276ca 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 4f391028c79c..7a5b13f4140f 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 eb28dd85cb2b..ba512d13f3a3 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 22b95462c913..9faa948c22ad 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 e59a88e95486..356f736a5d3d 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 75657528518e..1b4d37570eb1 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 883d8af9debd..d665e7a797c0 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 2c8e756d19a3..d67bcd84f329 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 214780798289..053cac19f714 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 c0d77723ba11..a925a8eae121 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 2322ba5cce4c..3702df7dc567 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 9cb319992c38..1ba6feb71b31 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 66a36d3cc6ad..69c5af2b3c96 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 81eb96ec13b2..5402fb6b3aae 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 eb3a732e91db..ebfd13dc9d19 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 9e85bda76216..50448d5de9d2 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 eb0c136b1c44..ff6db2431798 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 470e1a3fd755..be23f112184f 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 40e18fcb666c..6cd3476767cc 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 30700b31d43b..21a9dd14f297 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 972fa8528a8c..39ee7a13b25a 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 fbca336aa0ae..d4bd04001b99 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 00aed7c2269e..a81bb3ce6b94 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 0f3855c95ff5..e40012f8f488 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 eafe7605cdac..b45160f8d084 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 0966d093db43..c0e968a4c211 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 e484cac75095..653a5eb91c90 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 3a5d112af5e0..3d62060498b4 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 16e4e401b820..306a9d07491d 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 fdb9b1c8f977..fdeefe54ea91 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 5149716c734d..847a5496b869 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 aac88c2f3db9..5255bd80aa6b 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 390dd1995c2a..dd898d32480e 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 f1d4f2109a99..b298b60c202f 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 a83b0baea011..66a44ff0d926 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 ace4ec08de51..f658ff3b3890 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 */ |
diff --git a/include/asm-powerpc/page_32.h b/include/asm-powerpc/page_32.h index 374d0db37e1c..17110aff26e7 100644 --- a/include/asm-powerpc/page_32.h +++ b/include/asm-powerpc/page_32.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | #define PPC_MEMSTART 0 | 7 | #define PPC_MEMSTART 0 |
| 8 | 8 | ||
| 9 | #ifdef CONFIG_NOT_COHERENT_CACHE | ||
| 10 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | ||
| 11 | #endif | ||
| 12 | |||
| 9 | #ifndef __ASSEMBLY__ | 13 | #ifndef __ASSEMBLY__ |
| 10 | /* | 14 | /* |
| 11 | * The basic type of a PTE - 64 bits for those CPUs with > 32 bit | 15 | * The basic type of a PTE - 64 bits for those CPUs with > 32 bit |
diff --git a/include/asm-powerpc/pci-bridge.h b/include/asm-powerpc/pci-bridge.h index dc318458b5fe..d8bdc79db12e 100644 --- a/include/asm-powerpc/pci-bridge.h +++ b/include/asm-powerpc/pci-bridge.h | |||
| @@ -246,7 +246,6 @@ static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus) | |||
| 246 | return PCI_DN(busdn)->phb; | 246 | return PCI_DN(busdn)->phb; |
| 247 | } | 247 | } |
| 248 | 248 | ||
| 249 | extern void pcibios_free_controller(struct pci_controller *phb); | ||
| 250 | 249 | ||
| 251 | extern void isa_bridge_find_early(struct pci_controller *hose); | 250 | extern void isa_bridge_find_early(struct pci_controller *hose); |
| 252 | 251 | ||
| @@ -282,9 +281,11 @@ extern void | |||
| 282 | pci_process_bridge_OF_ranges(struct pci_controller *hose, | 281 | pci_process_bridge_OF_ranges(struct pci_controller *hose, |
| 283 | struct device_node *dev, int primary); | 282 | struct device_node *dev, int primary); |
| 284 | 283 | ||
| 285 | /* Allocate a new PCI host bridge structure */ | 284 | /* Allocate & free a PCI host bridge structure */ |
| 286 | extern struct pci_controller * | 285 | extern struct pci_controller * |
| 287 | pcibios_alloc_controller(struct device_node *dev); | 286 | pcibios_alloc_controller(struct device_node *dev); |
| 287 | extern void pcibios_free_controller(struct pci_controller *phb); | ||
| 288 | |||
| 288 | #ifdef CONFIG_PCI | 289 | #ifdef CONFIG_PCI |
| 289 | extern unsigned long pci_address_to_pio(phys_addr_t address); | 290 | extern unsigned long pci_address_to_pio(phys_addr_t address); |
| 290 | extern int pcibios_vaddr_is_ioport(void __iomem *address); | 291 | extern int pcibios_vaddr_is_ioport(void __iomem *address); |
diff --git a/include/asm-powerpc/rtas.h b/include/asm-powerpc/rtas.h index 8eaa7b28d9d0..87db8728e82d 100644 --- a/include/asm-powerpc/rtas.h +++ b/include/asm-powerpc/rtas.h | |||
| @@ -164,7 +164,8 @@ extern int rtas_call(int token, int, int, int *, ...); | |||
| 164 | extern void rtas_restart(char *cmd); | 164 | extern void rtas_restart(char *cmd); |
| 165 | extern void rtas_power_off(void); | 165 | extern void rtas_power_off(void); |
| 166 | extern void rtas_halt(void); | 166 | extern void rtas_halt(void); |
| 167 | extern void rtas_os_term(char *str); | 167 | extern void rtas_panic_msg(char *str); |
| 168 | extern void rtas_os_term(void); | ||
| 168 | extern int rtas_get_sensor(int sensor, int index, int *state); | 169 | extern int rtas_get_sensor(int sensor, int index, int *state); |
| 169 | extern int rtas_get_power_level(int powerdomain, int *level); | 170 | extern int rtas_get_power_level(int powerdomain, int *level); |
| 170 | extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); | 171 | extern int rtas_set_power_level(int powerdomain, int level, int *setlevel); |
diff --git a/include/asm-powerpc/vdso_datapage.h b/include/asm-powerpc/vdso_datapage.h index 8a94f0eba5e9..f01393224b52 100644 --- a/include/asm-powerpc/vdso_datapage.h +++ b/include/asm-powerpc/vdso_datapage.h | |||
| @@ -77,6 +77,10 @@ struct vdso_data { | |||
| 77 | /* those additional ones don't have to be located anywhere | 77 | /* those additional ones don't have to be located anywhere |
| 78 | * special as they were not part of the original systemcfg | 78 | * special as they were not part of the original systemcfg |
| 79 | */ | 79 | */ |
| 80 | __u32 dcache_block_size; /* L1 d-cache block size */ | ||
| 81 | __u32 icache_block_size; /* L1 i-cache block size */ | ||
| 82 | __u32 dcache_log_block_size; /* L1 d-cache log block size */ | ||
| 83 | __u32 icache_log_block_size; /* L1 i-cache log block size */ | ||
| 80 | __s32 wtom_clock_sec; /* Wall to monotonic clock */ | 84 | __s32 wtom_clock_sec; /* Wall to monotonic clock */ |
| 81 | __s32 wtom_clock_nsec; | 85 | __s32 wtom_clock_nsec; |
| 82 | __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */ | 86 | __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */ |
| @@ -99,6 +103,10 @@ struct vdso_data { | |||
| 99 | __s32 wtom_clock_sec; /* Wall to monotonic clock */ | 103 | __s32 wtom_clock_sec; /* Wall to monotonic clock */ |
| 100 | __s32 wtom_clock_nsec; | 104 | __s32 wtom_clock_nsec; |
| 101 | __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */ | 105 | __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */ |
| 106 | __u32 dcache_block_size; /* L1 d-cache block size */ | ||
| 107 | __u32 icache_block_size; /* L1 i-cache block size */ | ||
| 108 | __u32 dcache_log_block_size; /* L1 d-cache log block size */ | ||
| 109 | __u32 icache_log_block_size; /* L1 i-cache log block size */ | ||
| 102 | }; | 110 | }; |
| 103 | 111 | ||
| 104 | #endif /* CONFIG_PPC64 */ | 112 | #endif /* CONFIG_PPC64 */ |
