diff options
author | Paul Mackerras <paulus@samba.org> | 2007-08-28 01:56:11 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-08-28 01:56:11 -0400 |
commit | 35438c4327df18dbf5e7f597b69299119f4a14de (patch) | |
tree | a4589d731015db93f2eba8f84ffb1f48a8084020 /arch/powerpc | |
parent | 2f6c9d961081dc7b109eb19166244bcb2a5dfc28 (diff) | |
parent | b07d68b5ca4d55a16fab223d63d5fb36f89ff42f (diff) |
Merge branch 'linux-2.6' into for-2.6.24
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/boot/dts/mpc8544ds.dts | 88 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/mpc8641_hpcn.dts | 114 | ||||
-rw-r--r-- | arch/powerpc/configs/cell_defconfig | 220 | ||||
-rw-r--r-- | arch/powerpc/kernel/traps.c | 4 | ||||
-rw-r--r-- | arch/powerpc/mm/slb.c | 36 | ||||
-rw-r--r-- | arch/powerpc/platforms/85xx/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/85xx/mpc8544_ds.c | 214 | ||||
-rw-r--r-- | arch/powerpc/platforms/86xx/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | 224 | ||||
-rw-r--r-- | arch/powerpc/platforms/Kconfig | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/Makefile | 3 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/cbe_regs.h | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/cbe_thermal.c | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/pervasive.c | 26 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spu_manage.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/fsl_uli1575.c | 255 | ||||
-rw-r--r-- | arch/powerpc/platforms/pasemi/iommu.c | 6 | ||||
-rw-r--r-- | arch/powerpc/sysdev/axonram.c | 46 | ||||
-rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 2 | ||||
-rw-r--r-- | arch/powerpc/sysdev/fsl_soc.c | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/rtc_cmos_setup.c | 17 |
21 files changed, 532 insertions, 750 deletions
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts index 4680e2010887..3e79bf0a3159 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dts +++ b/arch/powerpc/boot/dts/mpc8544ds.dts | |||
@@ -44,8 +44,18 @@ | |||
44 | #size-cells = <1>; | 44 | #size-cells = <1>; |
45 | #interrupt-cells = <2>; | 45 | #interrupt-cells = <2>; |
46 | device_type = "soc"; | 46 | device_type = "soc"; |
47 | ranges = <0 e0000000 00100000>; | 47 | |
48 | reg = <e0000000 00100000>; // CCSRBAR 1M | 48 | |
49 | ranges = <00001000 e0001000 000ff000 | ||
50 | 80000000 80000000 20000000 | ||
51 | a0000000 a0000000 10000000 | ||
52 | b0000000 b0000000 00100000 | ||
53 | c0000000 c0000000 20000000 | ||
54 | b0100000 b0100000 00100000 | ||
55 | e1000000 e1000000 00010000 | ||
56 | e1010000 e1010000 00010000 | ||
57 | e1020000 e1020000 00010000>; | ||
58 | reg = <e0000000 00001000>; // CCSRBAR 1M | ||
49 | bus-frequency = <0>; // Filled out by uboot. | 59 | bus-frequency = <0>; // Filled out by uboot. |
50 | 60 | ||
51 | memory-controller@2000 { | 61 | memory-controller@2000 { |
@@ -161,8 +171,8 @@ | |||
161 | interrupt-parent = <&mpic>; | 171 | interrupt-parent = <&mpic>; |
162 | interrupts = <18 2>; | 172 | interrupts = <18 2>; |
163 | bus-range = <0 ff>; | 173 | bus-range = <0 ff>; |
164 | ranges = <02000000 0 80000000 80000000 0 10000000 | 174 | ranges = <02000000 0 c0000000 c0000000 0 20000000 |
165 | 01000000 0 00000000 e2000000 0 00800000>; | 175 | 01000000 0 00000000 e1000000 0 00010000>; |
166 | clock-frequency = <3f940aa>; | 176 | clock-frequency = <3f940aa>; |
167 | #interrupt-cells = <1>; | 177 | #interrupt-cells = <1>; |
168 | #size-cells = <2>; | 178 | #size-cells = <2>; |
@@ -178,8 +188,8 @@ | |||
178 | #address-cells = <3>; | 188 | #address-cells = <3>; |
179 | reg = <9000 1000>; | 189 | reg = <9000 1000>; |
180 | bus-range = <0 ff>; | 190 | bus-range = <0 ff>; |
181 | ranges = <02000000 0 90000000 90000000 0 10000000 | 191 | ranges = <02000000 0 80000000 80000000 0 20000000 |
182 | 01000000 0 00000000 e3000000 0 00800000>; | 192 | 01000000 0 00000000 e1010000 0 00010000>; |
183 | clock-frequency = <1fca055>; | 193 | clock-frequency = <1fca055>; |
184 | interrupt-parent = <&mpic>; | 194 | interrupt-parent = <&mpic>; |
185 | interrupts = <1a 2>; | 195 | interrupts = <1a 2>; |
@@ -202,7 +212,7 @@ | |||
202 | reg = <a000 1000>; | 212 | reg = <a000 1000>; |
203 | bus-range = <0 ff>; | 213 | bus-range = <0 ff>; |
204 | ranges = <02000000 0 a0000000 a0000000 0 10000000 | 214 | ranges = <02000000 0 a0000000 a0000000 0 10000000 |
205 | 01000000 0 00000000 e2800000 0 00800000>; | 215 | 01000000 0 00000000 e1020000 0 00010000>; |
206 | clock-frequency = <1fca055>; | 216 | clock-frequency = <1fca055>; |
207 | interrupt-parent = <&mpic>; | 217 | interrupt-parent = <&mpic>; |
208 | interrupts = <19 2>; | 218 | interrupts = <19 2>; |
@@ -224,49 +234,29 @@ | |||
224 | #address-cells = <3>; | 234 | #address-cells = <3>; |
225 | reg = <b000 1000>; | 235 | reg = <b000 1000>; |
226 | bus-range = <0 ff>; | 236 | bus-range = <0 ff>; |
227 | ranges = <02000000 0 b0000000 b0000000 0 10000000 | 237 | ranges = <02000000 0 b0000000 b0000000 0 00100000 |
228 | 01000000 0 00000000 e3800000 0 00800000>; | 238 | 01000000 0 00000000 b0100000 0 00100000>; |
229 | clock-frequency = <1fca055>; | 239 | clock-frequency = <1fca055>; |
230 | interrupt-parent = <&mpic>; | 240 | interrupt-parent = <&mpic>; |
231 | interrupts = <1b 2>; | 241 | interrupts = <1b 2>; |
232 | interrupt-map-mask = <f800 0 0 7>; | 242 | interrupt-map-mask = <fb00 0 0 0>; |
233 | interrupt-map = < | 243 | interrupt-map = < |
234 | |||
235 | // IDSEL 0x1a | ||
236 | d000 0 0 1 &i8259 6 2 | ||
237 | d000 0 0 2 &i8259 3 2 | ||
238 | d000 0 0 3 &i8259 4 2 | ||
239 | d000 0 0 4 &i8259 5 2 | ||
240 | |||
241 | // IDSEL 0x1b | ||
242 | d800 0 0 1 &i8259 5 2 | ||
243 | d800 0 0 2 &i8259 0 0 | ||
244 | d800 0 0 3 &i8259 0 0 | ||
245 | d800 0 0 4 &i8259 0 0 | ||
246 | |||
247 | // IDSEL 0x1c USB | 244 | // IDSEL 0x1c USB |
248 | e000 0 0 1 &i8259 9 2 | 245 | e000 0 0 0 &i8259 c 2 |
249 | e000 0 0 2 &i8259 a 2 | 246 | e100 0 0 0 &i8259 9 2 |
250 | e000 0 0 3 &i8259 c 2 | 247 | e200 0 0 0 &i8259 a 2 |
251 | e000 0 0 4 &i8259 7 2 | 248 | e300 0 0 0 &i8259 b 2 |
252 | 249 | ||
253 | // IDSEL 0x1d Audio | 250 | // IDSEL 0x1d Audio |
254 | e800 0 0 1 &i8259 9 2 | 251 | e800 0 0 0 &i8259 6 2 |
255 | e800 0 0 2 &i8259 a 2 | ||
256 | e800 0 0 3 &i8259 b 2 | ||
257 | e800 0 0 4 &i8259 0 0 | ||
258 | 252 | ||
259 | // IDSEL 0x1e Legacy | 253 | // IDSEL 0x1e Legacy |
260 | f000 0 0 1 &i8259 c 2 | 254 | f000 0 0 0 &i8259 7 2 |
261 | f000 0 0 2 &i8259 0 0 | 255 | f100 0 0 0 &i8259 7 2 |
262 | f000 0 0 3 &i8259 0 0 | ||
263 | f000 0 0 4 &i8259 0 0 | ||
264 | 256 | ||
265 | // IDSEL 0x1f IDE/SATA | 257 | // IDSEL 0x1f IDE/SATA |
266 | f800 0 0 1 &i8259 6 2 | 258 | f800 0 0 0 &i8259 e 2 |
267 | f800 0 0 2 &i8259 0 0 | 259 | f900 0 0 0 &i8259 5 2 |
268 | f800 0 0 3 &i8259 0 0 | ||
269 | f800 0 0 4 &i8259 0 0 | ||
270 | >; | 260 | >; |
271 | uli1575@0 { | 261 | uli1575@0 { |
272 | reg = <0 0 0 0 0>; | 262 | reg = <0 0 0 0 0>; |
@@ -274,10 +264,10 @@ | |||
274 | #address-cells = <3>; | 264 | #address-cells = <3>; |
275 | ranges = <02000000 0 b0000000 | 265 | ranges = <02000000 0 b0000000 |
276 | 02000000 0 b0000000 | 266 | 02000000 0 b0000000 |
277 | 0 10000000 | 267 | 0 00100000 |
278 | 01000000 0 00000000 | 268 | 01000000 0 00000000 |
279 | 01000000 0 00000000 | 269 | 01000000 0 00000000 |
280 | 0 00080000>; | 270 | 0 00100000>; |
281 | 271 | ||
282 | pci_bridge@0 { | 272 | pci_bridge@0 { |
283 | reg = <0 0 0 0 0>; | 273 | reg = <0 0 0 0 0>; |
@@ -285,10 +275,10 @@ | |||
285 | #address-cells = <3>; | 275 | #address-cells = <3>; |
286 | ranges = <02000000 0 b0000000 | 276 | ranges = <02000000 0 b0000000 |
287 | 02000000 0 b0000000 | 277 | 02000000 0 b0000000 |
288 | 0 20000000 | 278 | 0 00100000 |
289 | 01000000 0 00000000 | 279 | 01000000 0 00000000 |
290 | 01000000 0 00000000 | 280 | 01000000 0 00000000 |
291 | 0 00100000>; | 281 | 0 00100000>; |
292 | 282 | ||
293 | isa@1e { | 283 | isa@1e { |
294 | device_type = "isa"; | 284 | device_type = "isa"; |
@@ -296,7 +286,8 @@ | |||
296 | #size-cells = <1>; | 286 | #size-cells = <1>; |
297 | #address-cells = <2>; | 287 | #address-cells = <2>; |
298 | reg = <f000 0 0 0 0>; | 288 | reg = <f000 0 0 0 0>; |
299 | ranges = <1 0 01000000 0 0 | 289 | ranges = <1 0 |
290 | 01000000 0 0 | ||
300 | 00001000>; | 291 | 00001000>; |
301 | interrupt-parent = <&i8259>; | 292 | interrupt-parent = <&i8259>; |
302 | 293 | ||
@@ -312,8 +303,7 @@ | |||
312 | built-in; | 303 | built-in; |
313 | compatible = "chrp,iic"; | 304 | compatible = "chrp,iic"; |
314 | interrupts = <9 2>; | 305 | interrupts = <9 2>; |
315 | interrupt-parent = | 306 | interrupt-parent = <&mpic>; |
316 | <&mpic>; | ||
317 | }; | 307 | }; |
318 | 308 | ||
319 | i8042@60 { | 309 | i8042@60 { |
@@ -321,8 +311,7 @@ | |||
321 | #address-cells = <1>; | 311 | #address-cells = <1>; |
322 | reg = <1 60 1 1 64 1>; | 312 | reg = <1 60 1 1 64 1>; |
323 | interrupts = <1 3 c 3>; | 313 | interrupts = <1 3 c 3>; |
324 | interrupt-parent = | 314 | interrupt-parent = <&i8259>; |
325 | <&i8259>; | ||
326 | 315 | ||
327 | keyboard@0 { | 316 | keyboard@0 { |
328 | reg = <0>; | 317 | reg = <0>; |
@@ -336,8 +325,7 @@ | |||
336 | }; | 325 | }; |
337 | 326 | ||
338 | rtc@70 { | 327 | rtc@70 { |
339 | compatible = | 328 | compatible = "pnpPNP,b00"; |
340 | "pnpPNP,b00"; | ||
341 | reg = <1 70 2>; | 329 | reg = <1 70 2>; |
342 | }; | 330 | }; |
343 | 331 | ||
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 5d82709cfcbb..b0166e5c177e 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts | |||
@@ -224,98 +224,36 @@ | |||
224 | clock-frequency = <1fca055>; | 224 | clock-frequency = <1fca055>; |
225 | interrupt-parent = <&mpic>; | 225 | interrupt-parent = <&mpic>; |
226 | interrupts = <18 2>; | 226 | interrupts = <18 2>; |
227 | interrupt-map-mask = <f800 0 0 7>; | 227 | interrupt-map-mask = <fb00 0 0 0>; |
228 | interrupt-map = < | 228 | interrupt-map = < |
229 | /* IDSEL 0x11 */ | 229 | /* IDSEL 0x11 */ |
230 | 8800 0 0 1 &i8259 3 2 | 230 | 8800 0 0 1 &i8259 9 2 |
231 | 8800 0 0 2 &i8259 4 2 | 231 | 8800 0 0 2 &i8259 a 2 |
232 | 8800 0 0 3 &i8259 5 2 | 232 | 8800 0 0 3 &i8259 b 2 |
233 | 8800 0 0 4 &i8259 6 2 | 233 | 8800 0 0 4 &i8259 c 2 |
234 | 234 | ||
235 | /* IDSEL 0x12 */ | 235 | /* IDSEL 0x12 */ |
236 | 9000 0 0 1 &i8259 4 2 | 236 | 9000 0 0 1 &i8259 a 2 |
237 | 9000 0 0 2 &i8259 5 2 | 237 | 9000 0 0 2 &i8259 b 2 |
238 | 9000 0 0 3 &i8259 6 2 | 238 | 9000 0 0 3 &i8259 c 2 |
239 | 9000 0 0 4 &i8259 3 2 | 239 | 9000 0 0 4 &i8259 9 2 |
240 | 240 | ||
241 | /* IDSEL 0x13 */ | 241 | // IDSEL 0x1c USB |
242 | 9800 0 0 1 &i8259 0 0 | 242 | e000 0 0 0 &i8259 c 2 |
243 | 9800 0 0 2 &i8259 0 0 | 243 | e100 0 0 0 &i8259 9 2 |
244 | 9800 0 0 3 &i8259 0 0 | 244 | e200 0 0 0 &i8259 a 2 |
245 | 9800 0 0 4 &i8259 0 0 | 245 | e300 0 0 0 &i8259 b 2 |
246 | 246 | ||
247 | /* IDSEL 0x14 */ | 247 | // IDSEL 0x1d Audio |
248 | a000 0 0 1 &i8259 0 0 | 248 | e800 0 0 0 &i8259 6 2 |
249 | a000 0 0 2 &i8259 0 0 | 249 | |
250 | a000 0 0 3 &i8259 0 0 | 250 | // IDSEL 0x1e Legacy |
251 | a000 0 0 4 &i8259 0 0 | 251 | f000 0 0 0 &i8259 7 2 |
252 | 252 | f100 0 0 0 &i8259 7 2 | |
253 | /* IDSEL 0x15 */ | 253 | |
254 | a800 0 0 1 &i8259 0 0 | 254 | // IDSEL 0x1f IDE/SATA |
255 | a800 0 0 2 &i8259 0 0 | 255 | f800 0 0 0 &i8259 e 2 |
256 | a800 0 0 3 &i8259 0 0 | 256 | f900 0 0 0 &i8259 5 2 |
257 | a800 0 0 4 &i8259 0 0 | ||
258 | |||
259 | /* IDSEL 0x16 */ | ||
260 | b000 0 0 1 &i8259 0 0 | ||
261 | b000 0 0 2 &i8259 0 0 | ||
262 | b000 0 0 3 &i8259 0 0 | ||
263 | b000 0 0 4 &i8259 0 0 | ||
264 | |||
265 | /* IDSEL 0x17 */ | ||
266 | b800 0 0 1 &i8259 0 0 | ||
267 | b800 0 0 2 &i8259 0 0 | ||
268 | b800 0 0 3 &i8259 0 0 | ||
269 | b800 0 0 4 &i8259 0 0 | ||
270 | |||
271 | /* IDSEL 0x18 */ | ||
272 | c000 0 0 1 &i8259 0 0 | ||
273 | c000 0 0 2 &i8259 0 0 | ||
274 | c000 0 0 3 &i8259 0 0 | ||
275 | c000 0 0 4 &i8259 0 0 | ||
276 | |||
277 | /* IDSEL 0x19 */ | ||
278 | c800 0 0 1 &i8259 0 0 | ||
279 | c800 0 0 2 &i8259 0 0 | ||
280 | c800 0 0 3 &i8259 0 0 | ||
281 | c800 0 0 4 &i8259 0 0 | ||
282 | |||
283 | /* IDSEL 0x1a */ | ||
284 | d000 0 0 1 &i8259 6 2 | ||
285 | d000 0 0 2 &i8259 3 2 | ||
286 | d000 0 0 3 &i8259 4 2 | ||
287 | d000 0 0 4 &i8259 5 2 | ||
288 | |||
289 | |||
290 | /* IDSEL 0x1b */ | ||
291 | d800 0 0 1 &i8259 5 2 | ||
292 | d800 0 0 2 &i8259 0 0 | ||
293 | d800 0 0 3 &i8259 0 0 | ||
294 | d800 0 0 4 &i8259 0 0 | ||
295 | |||
296 | /* IDSEL 0x1c */ | ||
297 | e000 0 0 1 &i8259 9 2 | ||
298 | e000 0 0 2 &i8259 a 2 | ||
299 | e000 0 0 3 &i8259 c 2 | ||
300 | e000 0 0 4 &i8259 7 2 | ||
301 | |||
302 | /* IDSEL 0x1d */ | ||
303 | e800 0 0 1 &i8259 9 2 | ||
304 | e800 0 0 2 &i8259 a 2 | ||
305 | e800 0 0 3 &i8259 b 2 | ||
306 | e800 0 0 4 &i8259 0 0 | ||
307 | |||
308 | /* IDSEL 0x1e */ | ||
309 | f000 0 0 1 &i8259 c 2 | ||
310 | f000 0 0 2 &i8259 0 0 | ||
311 | f000 0 0 3 &i8259 0 0 | ||
312 | f000 0 0 4 &i8259 0 0 | ||
313 | |||
314 | /* IDSEL 0x1f */ | ||
315 | f800 0 0 1 &i8259 6 2 | ||
316 | f800 0 0 2 &i8259 0 0 | ||
317 | f800 0 0 3 &i8259 0 0 | ||
318 | f800 0 0 4 &i8259 0 0 | ||
319 | >; | 257 | >; |
320 | uli1575@0 { | 258 | uli1575@0 { |
321 | reg = <0 0 0 0 0>; | 259 | reg = <0 0 0 0 0>; |
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index d9ac24e8de16..8b47c846421c 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_defconfig | |||
@@ -1,9 +1,23 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22-rc6 | 3 | # Linux kernel version: 2.6.23-rc3 |
4 | # Tue Jun 26 12:32:34 2007 | 4 | # Wed Aug 22 15:19:19 2007 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_POWER4_ONLY is not set | ||
12 | CONFIG_POWER3=y | ||
13 | CONFIG_POWER4=y | ||
14 | CONFIG_PPC_FPU=y | ||
15 | CONFIG_ALTIVEC=y | ||
16 | CONFIG_PPC_STD_MMU=y | ||
17 | CONFIG_PPC_MM_SLICES=y | ||
18 | CONFIG_VIRT_CPU_ACCOUNTING=y | ||
19 | CONFIG_SMP=y | ||
20 | CONFIG_NR_CPUS=4 | ||
7 | CONFIG_64BIT=y | 21 | CONFIG_64BIT=y |
8 | CONFIG_PPC_MERGE=y | 22 | CONFIG_PPC_MERGE=y |
9 | CONFIG_MMU=y | 23 | CONFIG_MMU=y |
@@ -15,6 +29,7 @@ CONFIG_ARCH_HAS_ILOG2_U64=y | |||
15 | CONFIG_GENERIC_HWEIGHT=y | 29 | CONFIG_GENERIC_HWEIGHT=y |
16 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 30 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
17 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 31 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
32 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | ||
18 | CONFIG_PPC=y | 33 | CONFIG_PPC=y |
19 | CONFIG_EARLY_PRINTK=y | 34 | CONFIG_EARLY_PRINTK=y |
20 | CONFIG_COMPAT=y | 35 | CONFIG_COMPAT=y |
@@ -22,51 +37,33 @@ CONFIG_SYSVIPC_COMPAT=y | |||
22 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 37 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
23 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 38 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y |
24 | CONFIG_PPC_OF=y | 39 | CONFIG_PPC_OF=y |
40 | CONFIG_OF=y | ||
25 | CONFIG_PPC_UDBG_16550=y | 41 | CONFIG_PPC_UDBG_16550=y |
26 | # CONFIG_GENERIC_TBSYNC is not set | 42 | # CONFIG_GENERIC_TBSYNC is not set |
27 | CONFIG_AUDIT_ARCH=y | 43 | CONFIG_AUDIT_ARCH=y |
28 | CONFIG_GENERIC_BUG=y | 44 | CONFIG_GENERIC_BUG=y |
29 | # CONFIG_DEFAULT_UIMAGE is not set | 45 | # CONFIG_DEFAULT_UIMAGE is not set |
30 | |||
31 | # | ||
32 | # Processor support | ||
33 | # | ||
34 | # CONFIG_POWER4_ONLY is not set | ||
35 | CONFIG_POWER3=y | ||
36 | CONFIG_POWER4=y | ||
37 | CONFIG_PPC_FPU=y | ||
38 | # CONFIG_PPC_DCR_NATIVE is not set | 46 | # CONFIG_PPC_DCR_NATIVE is not set |
39 | CONFIG_PPC_DCR_MMIO=y | 47 | CONFIG_PPC_DCR_MMIO=y |
40 | CONFIG_PPC_DCR=y | 48 | CONFIG_PPC_DCR=y |
41 | CONFIG_PPC_OF_PLATFORM_PCI=y | 49 | CONFIG_PPC_OF_PLATFORM_PCI=y |
42 | CONFIG_ALTIVEC=y | ||
43 | CONFIG_PPC_STD_MMU=y | ||
44 | CONFIG_PPC_MM_SLICES=y | ||
45 | CONFIG_VIRT_CPU_ACCOUNTING=y | ||
46 | CONFIG_SMP=y | ||
47 | CONFIG_NR_CPUS=4 | ||
48 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 50 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
49 | 51 | ||
50 | # | 52 | # |
51 | # Code maturity level options | 53 | # General setup |
52 | # | 54 | # |
53 | CONFIG_EXPERIMENTAL=y | 55 | CONFIG_EXPERIMENTAL=y |
54 | CONFIG_LOCK_KERNEL=y | 56 | CONFIG_LOCK_KERNEL=y |
55 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 57 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
56 | |||
57 | # | ||
58 | # General setup | ||
59 | # | ||
60 | CONFIG_LOCALVERSION="" | 58 | CONFIG_LOCALVERSION="" |
61 | CONFIG_LOCALVERSION_AUTO=y | 59 | CONFIG_LOCALVERSION_AUTO=y |
62 | CONFIG_SWAP=y | 60 | CONFIG_SWAP=y |
63 | CONFIG_SYSVIPC=y | 61 | CONFIG_SYSVIPC=y |
64 | # CONFIG_IPC_NS is not set | ||
65 | CONFIG_SYSVIPC_SYSCTL=y | 62 | CONFIG_SYSVIPC_SYSCTL=y |
66 | # CONFIG_POSIX_MQUEUE is not set | 63 | # CONFIG_POSIX_MQUEUE is not set |
67 | # CONFIG_BSD_PROCESS_ACCT is not set | 64 | # CONFIG_BSD_PROCESS_ACCT is not set |
68 | # CONFIG_TASKSTATS is not set | 65 | # CONFIG_TASKSTATS is not set |
69 | # CONFIG_UTS_NS is not set | 66 | # CONFIG_USER_NS is not set |
70 | # CONFIG_AUDIT is not set | 67 | # CONFIG_AUDIT is not set |
71 | CONFIG_IKCONFIG=y | 68 | CONFIG_IKCONFIG=y |
72 | CONFIG_IKCONFIG_PROC=y | 69 | CONFIG_IKCONFIG_PROC=y |
@@ -96,16 +93,13 @@ CONFIG_TIMERFD=y | |||
96 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
97 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
98 | CONFIG_VM_EVENT_COUNTERS=y | 95 | CONFIG_VM_EVENT_COUNTERS=y |
99 | CONFIG_SLAB=y | 96 | CONFIG_SLUB_DEBUG=y |
100 | # CONFIG_SLUB is not set | 97 | # CONFIG_SLAB is not set |
98 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | 99 | # CONFIG_SLOB is not set |
102 | CONFIG_RT_MUTEXES=y | 100 | CONFIG_RT_MUTEXES=y |
103 | # CONFIG_TINY_SHMEM is not set | 101 | # CONFIG_TINY_SHMEM is not set |
104 | CONFIG_BASE_SMALL=0 | 102 | CONFIG_BASE_SMALL=0 |
105 | |||
106 | # | ||
107 | # Loadable module support | ||
108 | # | ||
109 | CONFIG_MODULES=y | 103 | CONFIG_MODULES=y |
110 | CONFIG_MODULE_UNLOAD=y | 104 | CONFIG_MODULE_UNLOAD=y |
111 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 105 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
@@ -113,12 +107,9 @@ CONFIG_MODULE_UNLOAD=y | |||
113 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 107 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
114 | CONFIG_KMOD=y | 108 | CONFIG_KMOD=y |
115 | CONFIG_STOP_MACHINE=y | 109 | CONFIG_STOP_MACHINE=y |
116 | |||
117 | # | ||
118 | # Block layer | ||
119 | # | ||
120 | CONFIG_BLOCK=y | 110 | CONFIG_BLOCK=y |
121 | # CONFIG_BLK_DEV_IO_TRACE is not set | 111 | # CONFIG_BLK_DEV_IO_TRACE is not set |
112 | # CONFIG_BLK_DEV_BSG is not set | ||
122 | 113 | ||
123 | # | 114 | # |
124 | # IO Schedulers | 115 | # IO Schedulers |
@@ -138,7 +129,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
138 | # | 129 | # |
139 | CONFIG_PPC_MULTIPLATFORM=y | 130 | CONFIG_PPC_MULTIPLATFORM=y |
140 | # CONFIG_EMBEDDED6xx is not set | 131 | # CONFIG_EMBEDDED6xx is not set |
141 | # CONFIG_APUS is not set | 132 | # CONFIG_PPC_82xx is not set |
133 | # CONFIG_PPC_83xx is not set | ||
134 | # CONFIG_PPC_86xx is not set | ||
142 | # CONFIG_PPC_PSERIES is not set | 135 | # CONFIG_PPC_PSERIES is not set |
143 | # CONFIG_PPC_ISERIES is not set | 136 | # CONFIG_PPC_ISERIES is not set |
144 | # CONFIG_PPC_MPC52xx is not set | 137 | # CONFIG_PPC_MPC52xx is not set |
@@ -158,7 +151,11 @@ CONFIG_PS3_HTAB_SIZE=20 | |||
158 | CONFIG_PS3_USE_LPAR_ADDR=y | 151 | CONFIG_PS3_USE_LPAR_ADDR=y |
159 | CONFIG_PS3_VUART=y | 152 | CONFIG_PS3_VUART=y |
160 | CONFIG_PS3_PS3AV=y | 153 | CONFIG_PS3_PS3AV=y |
161 | CONFIG_PS3_SYS_MANAGER=y | 154 | CONFIG_PS3_SYS_MANAGER=m |
155 | CONFIG_PS3_STORAGE=y | ||
156 | CONFIG_PS3_DISK=y | ||
157 | CONFIG_PS3_ROM=m | ||
158 | CONFIG_PS3_FLASH=m | ||
162 | CONFIG_PPC_CELL=y | 159 | CONFIG_PPC_CELL=y |
163 | CONFIG_PPC_CELL_NATIVE=y | 160 | CONFIG_PPC_CELL_NATIVE=y |
164 | CONFIG_PPC_IBM_CELL_BLADE=y | 161 | CONFIG_PPC_IBM_CELL_BLADE=y |
@@ -171,6 +168,7 @@ CONFIG_SPU_BASE=y | |||
171 | CONFIG_CBE_RAS=y | 168 | CONFIG_CBE_RAS=y |
172 | CONFIG_CBE_THERM=m | 169 | CONFIG_CBE_THERM=m |
173 | CONFIG_CBE_CPUFREQ=m | 170 | CONFIG_CBE_CPUFREQ=m |
171 | CONFIG_CBE_CPUFREQ_PMI=m | ||
174 | # CONFIG_PQ2ADS is not set | 172 | # CONFIG_PQ2ADS is not set |
175 | CONFIG_PPC_NATIVE=y | 173 | CONFIG_PPC_NATIVE=y |
176 | CONFIG_UDBG_RTAS_CONSOLE=y | 174 | CONFIG_UDBG_RTAS_CONSOLE=y |
@@ -183,7 +181,7 @@ CONFIG_PPC_RTAS=y | |||
183 | # CONFIG_RTAS_ERROR_LOGGING is not set | 181 | # CONFIG_RTAS_ERROR_LOGGING is not set |
184 | CONFIG_RTAS_PROC=y | 182 | CONFIG_RTAS_PROC=y |
185 | CONFIG_RTAS_FLASH=y | 183 | CONFIG_RTAS_FLASH=y |
186 | # CONFIG_PPC_PMI is not set | 184 | CONFIG_PPC_PMI=m |
187 | CONFIG_MMIO_NVRAM=y | 185 | CONFIG_MMIO_NVRAM=y |
188 | # CONFIG_PPC_MPC106 is not set | 186 | # CONFIG_PPC_MPC106 is not set |
189 | # CONFIG_PPC_970_NAP is not set | 187 | # CONFIG_PPC_970_NAP is not set |
@@ -206,6 +204,8 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y | |||
206 | # CPU Frequency drivers | 204 | # CPU Frequency drivers |
207 | # | 205 | # |
208 | # CONFIG_CPM2 is not set | 206 | # CONFIG_CPM2 is not set |
207 | CONFIG_AXON_RAM=m | ||
208 | # CONFIG_FSL_ULI1575 is not set | ||
209 | 209 | ||
210 | # | 210 | # |
211 | # Kernel options | 211 | # Kernel options |
@@ -248,6 +248,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
248 | CONFIG_MIGRATION=y | 248 | CONFIG_MIGRATION=y |
249 | CONFIG_RESOURCES_64BIT=y | 249 | CONFIG_RESOURCES_64BIT=y |
250 | CONFIG_ZONE_DMA_FLAG=1 | 250 | CONFIG_ZONE_DMA_FLAG=1 |
251 | CONFIG_BOUNCE=y | ||
251 | CONFIG_ARCH_MEMORY_PROBE=y | 252 | CONFIG_ARCH_MEMORY_PROBE=y |
252 | CONFIG_NODES_SPAN_OTHER_NODES=y | 253 | CONFIG_NODES_SPAN_OTHER_NODES=y |
253 | CONFIG_PPC_HAS_HASH_64K=y | 254 | CONFIG_PPC_HAS_HASH_64K=y |
@@ -268,7 +269,9 @@ CONFIG_GENERIC_ISA_DMA=y | |||
268 | # CONFIG_PPC_INDIRECT_PCI is not set | 269 | # CONFIG_PPC_INDIRECT_PCI is not set |
269 | CONFIG_PCI=y | 270 | CONFIG_PCI=y |
270 | CONFIG_PCI_DOMAINS=y | 271 | CONFIG_PCI_DOMAINS=y |
272 | CONFIG_PCI_SYSCALL=y | ||
271 | CONFIG_PCIEPORTBUS=y | 273 | CONFIG_PCIEPORTBUS=y |
274 | CONFIG_PCIEAER=y | ||
272 | CONFIG_ARCH_SUPPORTS_MSI=y | 275 | CONFIG_ARCH_SUPPORTS_MSI=y |
273 | # CONFIG_PCI_MSI is not set | 276 | # CONFIG_PCI_MSI is not set |
274 | # CONFIG_PCI_DEBUG is not set | 277 | # CONFIG_PCI_DEBUG is not set |
@@ -359,6 +362,7 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m | |||
359 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 362 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
360 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 363 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
361 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 364 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
365 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | ||
362 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 366 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
363 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 367 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
364 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | 368 | CONFIG_NETFILTER_XT_MATCH_DCCP=m |
@@ -377,6 +381,7 @@ CONFIG_NETFILTER_XT_MATCH_SCTP=m | |||
377 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | 381 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m |
378 | CONFIG_NETFILTER_XT_MATCH_STRING=m | 382 | CONFIG_NETFILTER_XT_MATCH_STRING=m |
379 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | 383 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m |
384 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
380 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | 385 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m |
381 | 386 | ||
382 | # | 387 | # |
@@ -448,6 +453,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
448 | # CONFIG_MAC80211 is not set | 453 | # CONFIG_MAC80211 is not set |
449 | # CONFIG_IEEE80211 is not set | 454 | # CONFIG_IEEE80211 is not set |
450 | # CONFIG_RFKILL is not set | 455 | # CONFIG_RFKILL is not set |
456 | # CONFIG_NET_9P is not set | ||
451 | 457 | ||
452 | # | 458 | # |
453 | # Device Drivers | 459 | # Device Drivers |
@@ -462,28 +468,12 @@ CONFIG_FW_LOADER=y | |||
462 | # CONFIG_DEBUG_DRIVER is not set | 468 | # CONFIG_DEBUG_DRIVER is not set |
463 | # CONFIG_DEBUG_DEVRES is not set | 469 | # CONFIG_DEBUG_DEVRES is not set |
464 | # CONFIG_SYS_HYPERVISOR is not set | 470 | # CONFIG_SYS_HYPERVISOR is not set |
465 | |||
466 | # | ||
467 | # Connector - unified userspace <-> kernelspace linker | ||
468 | # | ||
469 | # CONFIG_CONNECTOR is not set | 471 | # CONFIG_CONNECTOR is not set |
470 | # CONFIG_MTD is not set | 472 | # CONFIG_MTD is not set |
471 | 473 | CONFIG_OF_DEVICE=y | |
472 | # | ||
473 | # Parallel port support | ||
474 | # | ||
475 | # CONFIG_PARPORT is not set | 474 | # CONFIG_PARPORT is not set |
476 | 475 | CONFIG_BLK_DEV=y | |
477 | # | ||
478 | # Plug and Play support | ||
479 | # | ||
480 | # CONFIG_PNPACPI is not set | ||
481 | |||
482 | # | ||
483 | # Block devices | ||
484 | # | ||
485 | # CONFIG_BLK_DEV_FD is not set | 476 | # CONFIG_BLK_DEV_FD is not set |
486 | # CONFIG_BLK_CPQ_DA is not set | ||
487 | # CONFIG_BLK_CPQ_CISS_DA is not set | 477 | # CONFIG_BLK_CPQ_CISS_DA is not set |
488 | # CONFIG_BLK_DEV_DAC960 is not set | 478 | # CONFIG_BLK_DEV_DAC960 is not set |
489 | # CONFIG_BLK_DEV_UMEM is not set | 479 | # CONFIG_BLK_DEV_UMEM is not set |
@@ -499,14 +489,11 @@ CONFIG_BLK_DEV_RAM_SIZE=131072 | |||
499 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 489 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
500 | # CONFIG_CDROM_PKTCDVD is not set | 490 | # CONFIG_CDROM_PKTCDVD is not set |
501 | # CONFIG_ATA_OVER_ETH is not set | 491 | # CONFIG_ATA_OVER_ETH is not set |
502 | 492 | CONFIG_MISC_DEVICES=y | |
503 | # | ||
504 | # Misc devices | ||
505 | # | ||
506 | # CONFIG_PHANTOM is not set | 493 | # CONFIG_PHANTOM is not set |
494 | # CONFIG_EEPROM_93CX6 is not set | ||
507 | # CONFIG_SGI_IOC4 is not set | 495 | # CONFIG_SGI_IOC4 is not set |
508 | # CONFIG_TIFM_CORE is not set | 496 | # CONFIG_TIFM_CORE is not set |
509 | # CONFIG_BLINK is not set | ||
510 | CONFIG_IDE=y | 497 | CONFIG_IDE=y |
511 | CONFIG_BLK_DEV_IDE=y | 498 | CONFIG_BLK_DEV_IDE=y |
512 | 499 | ||
@@ -572,6 +559,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
572 | # | 559 | # |
573 | # CONFIG_RAID_ATTRS is not set | 560 | # CONFIG_RAID_ATTRS is not set |
574 | CONFIG_SCSI=y | 561 | CONFIG_SCSI=y |
562 | CONFIG_SCSI_DMA=y | ||
575 | # CONFIG_SCSI_TGT is not set | 563 | # CONFIG_SCSI_TGT is not set |
576 | # CONFIG_SCSI_NETLINK is not set | 564 | # CONFIG_SCSI_NETLINK is not set |
577 | CONFIG_SCSI_PROC_FS=y | 565 | CONFIG_SCSI_PROC_FS=y |
@@ -604,10 +592,7 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
604 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 592 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
605 | CONFIG_SCSI_SAS_ATTRS=y | 593 | CONFIG_SCSI_SAS_ATTRS=y |
606 | # CONFIG_SCSI_SAS_LIBSAS is not set | 594 | # CONFIG_SCSI_SAS_LIBSAS is not set |
607 | 595 | CONFIG_SCSI_LOWLEVEL=y | |
608 | # | ||
609 | # SCSI low-level drivers | ||
610 | # | ||
611 | # CONFIG_ISCSI_TCP is not set | 596 | # CONFIG_ISCSI_TCP is not set |
612 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 597 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
613 | # CONFIG_SCSI_3W_9XXX is not set | 598 | # CONFIG_SCSI_3W_9XXX is not set |
@@ -622,7 +607,6 @@ CONFIG_SCSI_SAS_ATTRS=y | |||
622 | # CONFIG_MEGARAID_LEGACY is not set | 607 | # CONFIG_MEGARAID_LEGACY is not set |
623 | # CONFIG_MEGARAID_SAS is not set | 608 | # CONFIG_MEGARAID_SAS is not set |
624 | # CONFIG_SCSI_HPTIOP is not set | 609 | # CONFIG_SCSI_HPTIOP is not set |
625 | # CONFIG_SCSI_BUSLOGIC is not set | ||
626 | # CONFIG_SCSI_DMX3191D is not set | 610 | # CONFIG_SCSI_DMX3191D is not set |
627 | # CONFIG_SCSI_EATA is not set | 611 | # CONFIG_SCSI_EATA is not set |
628 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 612 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
@@ -696,10 +680,6 @@ CONFIG_PATA_PDC2027X=m | |||
696 | # CONFIG_PATA_VIA is not set | 680 | # CONFIG_PATA_VIA is not set |
697 | # CONFIG_PATA_WINBOND is not set | 681 | # CONFIG_PATA_WINBOND is not set |
698 | # CONFIG_PATA_SCC is not set | 682 | # CONFIG_PATA_SCC is not set |
699 | |||
700 | # | ||
701 | # Multi-device support (RAID and LVM) | ||
702 | # | ||
703 | CONFIG_MD=y | 683 | CONFIG_MD=y |
704 | CONFIG_BLK_DEV_MD=m | 684 | CONFIG_BLK_DEV_MD=m |
705 | CONFIG_MD_LINEAR=m | 685 | CONFIG_MD_LINEAR=m |
@@ -717,6 +697,7 @@ CONFIG_DM_MIRROR=m | |||
717 | CONFIG_DM_ZERO=m | 697 | CONFIG_DM_ZERO=m |
718 | CONFIG_DM_MULTIPATH=m | 698 | CONFIG_DM_MULTIPATH=m |
719 | # CONFIG_DM_MULTIPATH_EMC is not set | 699 | # CONFIG_DM_MULTIPATH_EMC is not set |
700 | # CONFIG_DM_MULTIPATH_RDAC is not set | ||
720 | # CONFIG_DM_DELAY is not set | 701 | # CONFIG_DM_DELAY is not set |
721 | 702 | ||
722 | # | 703 | # |
@@ -728,43 +709,30 @@ CONFIG_FUSION=y | |||
728 | CONFIG_FUSION_SAS=y | 709 | CONFIG_FUSION_SAS=y |
729 | CONFIG_FUSION_MAX_SGE=128 | 710 | CONFIG_FUSION_MAX_SGE=128 |
730 | # CONFIG_FUSION_CTL is not set | 711 | # CONFIG_FUSION_CTL is not set |
712 | # CONFIG_FUSION_LOGGING is not set | ||
731 | 713 | ||
732 | # | 714 | # |
733 | # IEEE 1394 (FireWire) support | 715 | # IEEE 1394 (FireWire) support |
734 | # | 716 | # |
735 | # CONFIG_FIREWIRE is not set | 717 | # CONFIG_FIREWIRE is not set |
736 | # CONFIG_IEEE1394 is not set | 718 | # CONFIG_IEEE1394 is not set |
737 | |||
738 | # | ||
739 | # I2O device support | ||
740 | # | ||
741 | # CONFIG_I2O is not set | 719 | # CONFIG_I2O is not set |
742 | # CONFIG_MACINTOSH_DRIVERS is not set | 720 | # CONFIG_MACINTOSH_DRIVERS is not set |
743 | |||
744 | # | ||
745 | # Network device support | ||
746 | # | ||
747 | CONFIG_NETDEVICES=y | 721 | CONFIG_NETDEVICES=y |
722 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
748 | # CONFIG_DUMMY is not set | 723 | # CONFIG_DUMMY is not set |
749 | CONFIG_BONDING=m | 724 | CONFIG_BONDING=m |
725 | CONFIG_MACVLAN=m | ||
750 | # CONFIG_EQUALIZER is not set | 726 | # CONFIG_EQUALIZER is not set |
751 | CONFIG_TUN=y | 727 | CONFIG_TUN=y |
752 | # CONFIG_ARCNET is not set | 728 | # CONFIG_ARCNET is not set |
753 | # CONFIG_PHYLIB is not set | 729 | # CONFIG_PHYLIB is not set |
754 | |||
755 | # | ||
756 | # Ethernet (10 or 100Mbit) | ||
757 | # | ||
758 | CONFIG_NET_ETHERNET=y | 730 | CONFIG_NET_ETHERNET=y |
759 | CONFIG_MII=y | 731 | CONFIG_MII=y |
760 | # CONFIG_HAPPYMEAL is not set | 732 | # CONFIG_HAPPYMEAL is not set |
761 | # CONFIG_SUNGEM is not set | 733 | # CONFIG_SUNGEM is not set |
762 | # CONFIG_CASSINI is not set | 734 | # CONFIG_CASSINI is not set |
763 | # CONFIG_NET_VENDOR_3COM is not set | 735 | # CONFIG_NET_VENDOR_3COM is not set |
764 | |||
765 | # | ||
766 | # Tulip family network device support | ||
767 | # | ||
768 | # CONFIG_NET_TULIP is not set | 736 | # CONFIG_NET_TULIP is not set |
769 | # CONFIG_HP100 is not set | 737 | # CONFIG_HP100 is not set |
770 | # CONFIG_NET_PCI is not set | 738 | # CONFIG_NET_PCI is not set |
@@ -781,11 +749,12 @@ CONFIG_E1000_NAPI=y | |||
781 | # CONFIG_SIS190 is not set | 749 | # CONFIG_SIS190 is not set |
782 | CONFIG_SKGE=m | 750 | CONFIG_SKGE=m |
783 | CONFIG_SKY2=m | 751 | CONFIG_SKY2=m |
784 | # CONFIG_SK98LIN is not set | 752 | # CONFIG_SKY2_DEBUG is not set |
785 | # CONFIG_VIA_VELOCITY is not set | 753 | # CONFIG_VIA_VELOCITY is not set |
786 | CONFIG_TIGON3=y | 754 | CONFIG_TIGON3=y |
787 | # CONFIG_BNX2 is not set | 755 | # CONFIG_BNX2 is not set |
788 | CONFIG_SPIDER_NET=y | 756 | CONFIG_SPIDER_NET=y |
757 | CONFIG_GELIC_NET=m | ||
789 | # CONFIG_QLA3XXX is not set | 758 | # CONFIG_QLA3XXX is not set |
790 | # CONFIG_ATL1 is not set | 759 | # CONFIG_ATL1 is not set |
791 | CONFIG_NETDEV_10000=y | 760 | CONFIG_NETDEV_10000=y |
@@ -824,15 +793,7 @@ CONFIG_NETDEV_10000=y | |||
824 | # CONFIG_NETCONSOLE is not set | 793 | # CONFIG_NETCONSOLE is not set |
825 | # CONFIG_NETPOLL is not set | 794 | # CONFIG_NETPOLL is not set |
826 | # CONFIG_NET_POLL_CONTROLLER is not set | 795 | # CONFIG_NET_POLL_CONTROLLER is not set |
827 | |||
828 | # | ||
829 | # ISDN subsystem | ||
830 | # | ||
831 | # CONFIG_ISDN is not set | 796 | # CONFIG_ISDN is not set |
832 | |||
833 | # | ||
834 | # Telephony Support | ||
835 | # | ||
836 | # CONFIG_PHONE is not set | 797 | # CONFIG_PHONE is not set |
837 | 798 | ||
838 | # | 799 | # |
@@ -925,10 +886,6 @@ CONFIG_UNIX98_PTYS=y | |||
925 | CONFIG_HVC_DRIVER=y | 886 | CONFIG_HVC_DRIVER=y |
926 | CONFIG_HVC_RTAS=y | 887 | CONFIG_HVC_RTAS=y |
927 | CONFIG_HVC_BEAT=y | 888 | CONFIG_HVC_BEAT=y |
928 | |||
929 | # | ||
930 | # IPMI | ||
931 | # | ||
932 | CONFIG_IPMI_HANDLER=m | 889 | CONFIG_IPMI_HANDLER=m |
933 | # CONFIG_IPMI_PANIC_EVENT is not set | 890 | # CONFIG_IPMI_PANIC_EVENT is not set |
934 | CONFIG_IPMI_DEVICE_INTERFACE=m | 891 | CONFIG_IPMI_DEVICE_INTERFACE=m |
@@ -963,10 +920,6 @@ CONFIG_GEN_RTC=y | |||
963 | # CONFIG_DRM is not set | 920 | # CONFIG_DRM is not set |
964 | # CONFIG_RAW_DRIVER is not set | 921 | # CONFIG_RAW_DRIVER is not set |
965 | # CONFIG_HANGCHECK_TIMER is not set | 922 | # CONFIG_HANGCHECK_TIMER is not set |
966 | |||
967 | # | ||
968 | # TPM devices | ||
969 | # | ||
970 | # CONFIG_TCG_TPM is not set | 923 | # CONFIG_TCG_TPM is not set |
971 | CONFIG_DEVPORT=y | 924 | CONFIG_DEVPORT=y |
972 | CONFIG_I2C=y | 925 | CONFIG_I2C=y |
@@ -1000,6 +953,7 @@ CONFIG_I2C_ALGOBIT=y | |||
1000 | # CONFIG_I2C_SIS5595 is not set | 953 | # CONFIG_I2C_SIS5595 is not set |
1001 | # CONFIG_I2C_SIS630 is not set | 954 | # CONFIG_I2C_SIS630 is not set |
1002 | # CONFIG_I2C_SIS96X is not set | 955 | # CONFIG_I2C_SIS96X is not set |
956 | # CONFIG_I2C_TAOS_EVM is not set | ||
1003 | # CONFIG_I2C_STUB is not set | 957 | # CONFIG_I2C_STUB is not set |
1004 | # CONFIG_I2C_TINY_USB is not set | 958 | # CONFIG_I2C_TINY_USB is not set |
1005 | # CONFIG_I2C_VIA is not set | 959 | # CONFIG_I2C_VIA is not set |
@@ -1011,11 +965,13 @@ CONFIG_I2C_ALGOBIT=y | |||
1011 | # | 965 | # |
1012 | # CONFIG_SENSORS_DS1337 is not set | 966 | # CONFIG_SENSORS_DS1337 is not set |
1013 | # CONFIG_SENSORS_DS1374 is not set | 967 | # CONFIG_SENSORS_DS1374 is not set |
968 | # CONFIG_DS1682 is not set | ||
1014 | # CONFIG_SENSORS_EEPROM is not set | 969 | # CONFIG_SENSORS_EEPROM is not set |
1015 | # CONFIG_SENSORS_PCF8574 is not set | 970 | # CONFIG_SENSORS_PCF8574 is not set |
1016 | # CONFIG_SENSORS_PCA9539 is not set | 971 | # CONFIG_SENSORS_PCA9539 is not set |
1017 | # CONFIG_SENSORS_PCF8591 is not set | 972 | # CONFIG_SENSORS_PCF8591 is not set |
1018 | # CONFIG_SENSORS_MAX6875 is not set | 973 | # CONFIG_SENSORS_MAX6875 is not set |
974 | # CONFIG_SENSORS_TSL2550 is not set | ||
1019 | # CONFIG_I2C_DEBUG_CORE is not set | 975 | # CONFIG_I2C_DEBUG_CORE is not set |
1020 | # CONFIG_I2C_DEBUG_ALGO is not set | 976 | # CONFIG_I2C_DEBUG_ALGO is not set |
1021 | # CONFIG_I2C_DEBUG_BUS is not set | 977 | # CONFIG_I2C_DEBUG_BUS is not set |
@@ -1026,11 +982,8 @@ CONFIG_I2C_ALGOBIT=y | |||
1026 | # | 982 | # |
1027 | # CONFIG_SPI is not set | 983 | # CONFIG_SPI is not set |
1028 | # CONFIG_SPI_MASTER is not set | 984 | # CONFIG_SPI_MASTER is not set |
1029 | |||
1030 | # | ||
1031 | # Dallas's 1-wire bus | ||
1032 | # | ||
1033 | # CONFIG_W1 is not set | 985 | # CONFIG_W1 is not set |
986 | # CONFIG_POWER_SUPPLY is not set | ||
1034 | # CONFIG_HWMON is not set | 987 | # CONFIG_HWMON is not set |
1035 | 988 | ||
1036 | # | 989 | # |
@@ -1055,6 +1008,7 @@ CONFIG_I2C_ALGOBIT=y | |||
1055 | # | 1008 | # |
1056 | # CONFIG_DISPLAY_SUPPORT is not set | 1009 | # CONFIG_DISPLAY_SUPPORT is not set |
1057 | # CONFIG_VGASTATE is not set | 1010 | # CONFIG_VGASTATE is not set |
1011 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
1058 | # CONFIG_FB is not set | 1012 | # CONFIG_FB is not set |
1059 | # CONFIG_FB_IBM_GXT4500 is not set | 1013 | # CONFIG_FB_IBM_GXT4500 is not set |
1060 | 1014 | ||
@@ -1068,10 +1022,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
1068 | # Sound | 1022 | # Sound |
1069 | # | 1023 | # |
1070 | # CONFIG_SOUND is not set | 1024 | # CONFIG_SOUND is not set |
1071 | 1025 | CONFIG_HID_SUPPORT=y | |
1072 | # | ||
1073 | # HID Devices | ||
1074 | # | ||
1075 | CONFIG_HID=m | 1026 | CONFIG_HID=m |
1076 | # CONFIG_HID_DEBUG is not set | 1027 | # CONFIG_HID_DEBUG is not set |
1077 | 1028 | ||
@@ -1085,10 +1036,7 @@ CONFIG_HID=m | |||
1085 | # | 1036 | # |
1086 | # CONFIG_USB_KBD is not set | 1037 | # CONFIG_USB_KBD is not set |
1087 | # CONFIG_USB_MOUSE is not set | 1038 | # CONFIG_USB_MOUSE is not set |
1088 | 1039 | CONFIG_USB_SUPPORT=y | |
1089 | # | ||
1090 | # USB support | ||
1091 | # | ||
1092 | CONFIG_USB_ARCH_HAS_HCD=y | 1040 | CONFIG_USB_ARCH_HAS_HCD=y |
1093 | CONFIG_USB_ARCH_HAS_OHCI=y | 1041 | CONFIG_USB_ARCH_HAS_OHCI=y |
1094 | CONFIG_USB_ARCH_HAS_EHCI=y | 1042 | CONFIG_USB_ARCH_HAS_EHCI=y |
@@ -1122,6 +1070,7 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | |||
1122 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1070 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
1123 | # CONFIG_USB_UHCI_HCD is not set | 1071 | # CONFIG_USB_UHCI_HCD is not set |
1124 | # CONFIG_USB_SL811_HCD is not set | 1072 | # CONFIG_USB_SL811_HCD is not set |
1073 | # CONFIG_USB_R8A66597_HCD is not set | ||
1125 | 1074 | ||
1126 | # | 1075 | # |
1127 | # USB Device Class drivers | 1076 | # USB Device Class drivers |
@@ -1199,23 +1148,7 @@ CONFIG_USB_MON=y | |||
1199 | # | 1148 | # |
1200 | # CONFIG_USB_GADGET is not set | 1149 | # CONFIG_USB_GADGET is not set |
1201 | # CONFIG_MMC is not set | 1150 | # CONFIG_MMC is not set |
1202 | |||
1203 | # | ||
1204 | # LED devices | ||
1205 | # | ||
1206 | # CONFIG_NEW_LEDS is not set | 1151 | # CONFIG_NEW_LEDS is not set |
1207 | |||
1208 | # | ||
1209 | # LED drivers | ||
1210 | # | ||
1211 | |||
1212 | # | ||
1213 | # LED Triggers | ||
1214 | # | ||
1215 | |||
1216 | # | ||
1217 | # InfiniBand support | ||
1218 | # | ||
1219 | CONFIG_INFINIBAND=m | 1152 | CONFIG_INFINIBAND=m |
1220 | CONFIG_INFINIBAND_USER_MAD=m | 1153 | CONFIG_INFINIBAND_USER_MAD=m |
1221 | CONFIG_INFINIBAND_USER_ACCESS=m | 1154 | CONFIG_INFINIBAND_USER_ACCESS=m |
@@ -1231,14 +1164,13 @@ CONFIG_INFINIBAND_IPOIB_DEBUG=y | |||
1231 | CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y | 1164 | CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y |
1232 | # CONFIG_INFINIBAND_SRP is not set | 1165 | # CONFIG_INFINIBAND_SRP is not set |
1233 | # CONFIG_INFINIBAND_ISER is not set | 1166 | # CONFIG_INFINIBAND_ISER is not set |
1167 | CONFIG_EDAC=y | ||
1234 | 1168 | ||
1235 | # | 1169 | # |
1236 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1170 | # Reporting subsystems |
1237 | # | ||
1238 | |||
1239 | # | ||
1240 | # Real Time Clock | ||
1241 | # | 1171 | # |
1172 | # CONFIG_EDAC_DEBUG is not set | ||
1173 | CONFIG_EDAC_MM_EDAC=y | ||
1242 | # CONFIG_RTC_CLASS is not set | 1174 | # CONFIG_RTC_CLASS is not set |
1243 | 1175 | ||
1244 | # | 1176 | # |
@@ -1255,6 +1187,12 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y | |||
1255 | # | 1187 | # |
1256 | 1188 | ||
1257 | # | 1189 | # |
1190 | # Userspace I/O | ||
1191 | # | ||
1192 | CONFIG_UIO=m | ||
1193 | # CONFIG_UIO_CIF is not set | ||
1194 | |||
1195 | # | ||
1258 | # File systems | 1196 | # File systems |
1259 | # | 1197 | # |
1260 | CONFIG_EXT2_FS=y | 1198 | CONFIG_EXT2_FS=y |
@@ -1357,7 +1295,6 @@ CONFIG_SUNRPC=y | |||
1357 | # CONFIG_NCP_FS is not set | 1295 | # CONFIG_NCP_FS is not set |
1358 | # CONFIG_CODA_FS is not set | 1296 | # CONFIG_CODA_FS is not set |
1359 | # CONFIG_AFS_FS is not set | 1297 | # CONFIG_AFS_FS is not set |
1360 | # CONFIG_9P_FS is not set | ||
1361 | 1298 | ||
1362 | # | 1299 | # |
1363 | # Partition Types | 1300 | # Partition Types |
@@ -1439,6 +1376,7 @@ CONFIG_BITREVERSE=y | |||
1439 | # CONFIG_CRC16 is not set | 1376 | # CONFIG_CRC16 is not set |
1440 | # CONFIG_CRC_ITU_T is not set | 1377 | # CONFIG_CRC_ITU_T is not set |
1441 | CONFIG_CRC32=y | 1378 | CONFIG_CRC32=y |
1379 | # CONFIG_CRC7 is not set | ||
1442 | # CONFIG_LIBCRC32C is not set | 1380 | # CONFIG_LIBCRC32C is not set |
1443 | CONFIG_ZLIB_INFLATE=m | 1381 | CONFIG_ZLIB_INFLATE=m |
1444 | CONFIG_ZLIB_DEFLATE=m | 1382 | CONFIG_ZLIB_DEFLATE=m |
@@ -1471,9 +1409,10 @@ CONFIG_DEBUG_FS=y | |||
1471 | CONFIG_DEBUG_KERNEL=y | 1409 | CONFIG_DEBUG_KERNEL=y |
1472 | # CONFIG_DEBUG_SHIRQ is not set | 1410 | # CONFIG_DEBUG_SHIRQ is not set |
1473 | # CONFIG_DETECT_SOFTLOCKUP is not set | 1411 | # CONFIG_DETECT_SOFTLOCKUP is not set |
1412 | CONFIG_SCHED_DEBUG=y | ||
1474 | # CONFIG_SCHEDSTATS is not set | 1413 | # CONFIG_SCHEDSTATS is not set |
1475 | # CONFIG_TIMER_STATS is not set | 1414 | # CONFIG_TIMER_STATS is not set |
1476 | # CONFIG_DEBUG_SLAB is not set | 1415 | # CONFIG_SLUB_DEBUG_ON is not set |
1477 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1416 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1478 | # CONFIG_RT_MUTEX_TESTER is not set | 1417 | # CONFIG_RT_MUTEX_TESTER is not set |
1479 | # CONFIG_DEBUG_SPINLOCK is not set | 1418 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1504,10 +1443,6 @@ CONFIG_IRQSTACKS=y | |||
1504 | # | 1443 | # |
1505 | # CONFIG_KEYS is not set | 1444 | # CONFIG_KEYS is not set |
1506 | # CONFIG_SECURITY is not set | 1445 | # CONFIG_SECURITY is not set |
1507 | |||
1508 | # | ||
1509 | # Cryptographic options | ||
1510 | # | ||
1511 | CONFIG_CRYPTO=y | 1446 | CONFIG_CRYPTO=y |
1512 | CONFIG_CRYPTO_ALGAPI=y | 1447 | CONFIG_CRYPTO_ALGAPI=y |
1513 | CONFIG_CRYPTO_BLKCIPHER=m | 1448 | CONFIG_CRYPTO_BLKCIPHER=m |
@@ -1546,7 +1481,4 @@ CONFIG_CRYPTO_DEFLATE=m | |||
1546 | # CONFIG_CRYPTO_CRC32C is not set | 1481 | # CONFIG_CRYPTO_CRC32C is not set |
1547 | # CONFIG_CRYPTO_CAMELLIA is not set | 1482 | # CONFIG_CRYPTO_CAMELLIA is not set |
1548 | # CONFIG_CRYPTO_TEST is not set | 1483 | # CONFIG_CRYPTO_TEST is not set |
1549 | 1484 | CONFIG_CRYPTO_HW=y | |
1550 | # | ||
1551 | # Hardware crypto devices | ||
1552 | # | ||
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 2bb1cb911783..d8502e377518 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -299,7 +299,7 @@ static inline int check_io_access(struct pt_regs *regs) | |||
299 | #ifndef CONFIG_FSL_BOOKE | 299 | #ifndef CONFIG_FSL_BOOKE |
300 | #define get_mc_reason(regs) ((regs)->dsisr) | 300 | #define get_mc_reason(regs) ((regs)->dsisr) |
301 | #else | 301 | #else |
302 | #define get_mc_reason(regs) (mfspr(SPRN_MCSR)) | 302 | #define get_mc_reason(regs) (mfspr(SPRN_MCSR) & MCSR_MASK) |
303 | #endif | 303 | #endif |
304 | #define REASON_FP ESR_FP | 304 | #define REASON_FP ESR_FP |
305 | #define REASON_ILLEGAL (ESR_PIL | ESR_PUO) | 305 | #define REASON_ILLEGAL (ESR_PIL | ESR_PUO) |
@@ -414,8 +414,6 @@ void machine_check_exception(struct pt_regs *regs) | |||
414 | printk("Data Cache Push Parity Error\n"); | 414 | printk("Data Cache Push Parity Error\n"); |
415 | if (reason & MCSR_DCPERR) | 415 | if (reason & MCSR_DCPERR) |
416 | printk("Data Cache Parity Error\n"); | 416 | printk("Data Cache Parity Error\n"); |
417 | if (reason & MCSR_GL_CI) | ||
418 | printk("Guarded Load or Cache-Inhibited stwcx.\n"); | ||
419 | if (reason & MCSR_BUS_IAERR) | 417 | if (reason & MCSR_BUS_IAERR) |
420 | printk("Bus - Instruction Address Error\n"); | 418 | printk("Bus - Instruction Address Error\n"); |
421 | if (reason & MCSR_BUS_RAERR) | 419 | if (reason & MCSR_BUS_RAERR) |
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index a73d2d700973..ff1811ac6c81 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c | |||
@@ -74,6 +74,22 @@ static inline void slb_shadow_clear(unsigned long entry) | |||
74 | get_slb_shadow()->save_area[entry].esid = 0; | 74 | get_slb_shadow()->save_area[entry].esid = 0; |
75 | } | 75 | } |
76 | 76 | ||
77 | static inline void create_shadowed_slbe(unsigned long ea, unsigned long flags, | ||
78 | unsigned long entry) | ||
79 | { | ||
80 | /* | ||
81 | * Updating the shadow buffer before writing the SLB ensures | ||
82 | * we don't get a stale entry here if we get preempted by PHYP | ||
83 | * between these two statements. | ||
84 | */ | ||
85 | slb_shadow_update(ea, flags, entry); | ||
86 | |||
87 | asm volatile("slbmte %0,%1" : | ||
88 | : "r" (mk_vsid_data(ea, flags)), | ||
89 | "r" (mk_esid_data(ea, entry)) | ||
90 | : "memory" ); | ||
91 | } | ||
92 | |||
77 | void slb_flush_and_rebolt(void) | 93 | void slb_flush_and_rebolt(void) |
78 | { | 94 | { |
79 | /* If you change this make sure you change SLB_NUM_BOLTED | 95 | /* If you change this make sure you change SLB_NUM_BOLTED |
@@ -226,12 +242,16 @@ void slb_initialize(void) | |||
226 | vflags = SLB_VSID_KERNEL | vmalloc_llp; | 242 | vflags = SLB_VSID_KERNEL | vmalloc_llp; |
227 | 243 | ||
228 | /* Invalidate the entire SLB (even slot 0) & all the ERATS */ | 244 | /* Invalidate the entire SLB (even slot 0) & all the ERATS */ |
229 | slb_shadow_update(PAGE_OFFSET, lflags, 0); | 245 | asm volatile("isync":::"memory"); |
230 | asm volatile("isync; slbia; sync; slbmte %0,%1; isync" :: | 246 | asm volatile("slbmte %0,%0"::"r" (0) : "memory"); |
231 | "r" (get_slb_shadow()->save_area[0].vsid), | 247 | asm volatile("isync; slbia; isync":::"memory"); |
232 | "r" (get_slb_shadow()->save_area[0].esid) : "memory"); | 248 | create_shadowed_slbe(PAGE_OFFSET, lflags, 0); |
233 | 249 | ||
234 | slb_shadow_update(VMALLOC_START, vflags, 1); | 250 | create_shadowed_slbe(VMALLOC_START, vflags, 1); |
235 | 251 | ||
236 | slb_flush_and_rebolt(); | 252 | /* We don't bolt the stack for the time being - we're in boot, |
253 | * so the stack is in the bolted segment. By the time it goes | ||
254 | * elsewhere, we'll call _switch() which will bolt in the new | ||
255 | * one. */ | ||
256 | asm volatile("isync":::"memory"); | ||
237 | } | 257 | } |
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index f58184086c8c..f620171ad6b1 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig | |||
@@ -33,6 +33,7 @@ config MPC8544_DS | |||
33 | bool "Freescale MPC8544 DS" | 33 | bool "Freescale MPC8544 DS" |
34 | select PPC_I8259 | 34 | select PPC_I8259 |
35 | select DEFAULT_UIMAGE | 35 | select DEFAULT_UIMAGE |
36 | select FSL_ULI1575 | ||
36 | help | 37 | help |
37 | This option enables support for the MPC8544 DS board | 38 | This option enables support for the MPC8544 DS board |
38 | 39 | ||
diff --git a/arch/powerpc/platforms/85xx/mpc8544_ds.c b/arch/powerpc/platforms/85xx/mpc8544_ds.c index 4905f6f8903b..0f834d8be444 100644 --- a/arch/powerpc/platforms/85xx/mpc8544_ds.c +++ b/arch/powerpc/platforms/85xx/mpc8544_ds.c | |||
@@ -114,211 +114,25 @@ void __init mpc8544_ds_pic_init(void) | |||
114 | } | 114 | } |
115 | 115 | ||
116 | #ifdef CONFIG_PCI | 116 | #ifdef CONFIG_PCI |
117 | enum pirq { PIRQA = 8, PIRQB, PIRQC, PIRQD, PIRQE, PIRQF, PIRQG, PIRQH }; | 117 | extern int uses_fsl_uli_m1575; |
118 | extern int uli_exclude_device(struct pci_controller *hose, | ||
119 | u_char bus, u_char devfn); | ||
118 | 120 | ||
119 | /* | 121 | static int mpc85xx_exclude_device(struct pci_controller *hose, |
120 | * Value in table -- IRQ number | 122 | u_char bus, u_char devfn) |
121 | */ | ||
122 | const unsigned char uli1575_irq_route_table[16] = { | ||
123 | 0, /* 0: Reserved */ | ||
124 | 0x8, | ||
125 | 0, /* 2: Reserved */ | ||
126 | 0x2, | ||
127 | 0x4, | ||
128 | 0x5, | ||
129 | 0x7, | ||
130 | 0x6, | ||
131 | 0, /* 8: Reserved */ | ||
132 | 0x1, | ||
133 | 0x3, | ||
134 | 0x9, | ||
135 | 0xb, | ||
136 | 0, /* 13: Reserved */ | ||
137 | 0xd, | ||
138 | 0xf, | ||
139 | }; | ||
140 | |||
141 | static int __devinit | ||
142 | get_pci_irq_from_of(struct pci_controller *hose, int slot, int pin) | ||
143 | { | ||
144 | struct of_irq oirq; | ||
145 | u32 laddr[3]; | ||
146 | struct device_node *hosenode = hose ? hose->arch_data : NULL; | ||
147 | |||
148 | if (!hosenode) | ||
149 | return -EINVAL; | ||
150 | |||
151 | laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(slot, 0) << 8); | ||
152 | laddr[1] = laddr[2] = 0; | ||
153 | of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq); | ||
154 | DBG("mpc8544_ds: pci irq addr %x, slot %d, pin %d, irq %d\n", | ||
155 | laddr[0], slot, pin, oirq.specifier[0]); | ||
156 | return oirq.specifier[0]; | ||
157 | } | ||
158 | |||
159 | /*8259*/ | ||
160 | static void __devinit quirk_uli1575(struct pci_dev *dev) | ||
161 | { | ||
162 | unsigned short temp; | ||
163 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | ||
164 | unsigned char irq2pin[16]; | ||
165 | unsigned long pirq_map_word = 0; | ||
166 | u32 irq; | ||
167 | int i; | ||
168 | |||
169 | /* | ||
170 | * ULI1575 interrupts route setup | ||
171 | */ | ||
172 | memset(irq2pin, 0, 16); /* Initialize default value 0 */ | ||
173 | |||
174 | irq2pin[6]=PIRQA+3; /* enabled mapping for IRQ6 to PIRQD, used by SATA */ | ||
175 | |||
176 | /* | ||
177 | * PIRQE -> PIRQF mapping set manually | ||
178 | * | ||
179 | * IRQ pin IRQ# | ||
180 | * PIRQE ---- 9 | ||
181 | * PIRQF ---- 10 | ||
182 | * PIRQG ---- 11 | ||
183 | * PIRQH ---- 12 | ||
184 | */ | ||
185 | for (i = 0; i < 4; i++) | ||
186 | irq2pin[i + 9] = PIRQE + i; | ||
187 | |||
188 | /* Set IRQ-PIRQ Mapping to ULI1575 */ | ||
189 | for (i = 0; i < 16; i++) | ||
190 | if (irq2pin[i]) | ||
191 | pirq_map_word |= (uli1575_irq_route_table[i] & 0xf) | ||
192 | << ((irq2pin[i] - PIRQA) * 4); | ||
193 | |||
194 | pirq_map_word |= 1<<26; /* disable INTx in EP mode*/ | ||
195 | |||
196 | /* ULI1575 IRQ mapping conf register default value is 0xb9317542 */ | ||
197 | DBG("Setup ULI1575 IRQ mapping configuration register value = 0x%x\n", | ||
198 | (int)pirq_map_word); | ||
199 | pci_write_config_dword(dev, 0x48, pirq_map_word); | ||
200 | |||
201 | #define ULI1575_SET_DEV_IRQ(slot, pin, reg) \ | ||
202 | do { \ | ||
203 | int irq; \ | ||
204 | irq = get_pci_irq_from_of(hose, slot, pin); \ | ||
205 | if (irq > 0 && irq < 16) \ | ||
206 | pci_write_config_byte(dev, reg, irq2pin[irq]); \ | ||
207 | else \ | ||
208 | printk(KERN_WARNING "ULI1575 device" \ | ||
209 | "(slot %d, pin %d) irq %d is invalid.\n", \ | ||
210 | slot, pin, irq); \ | ||
211 | } while(0) | ||
212 | |||
213 | /* USB 1.1 OHCI controller 1, slot 28, pin 1 */ | ||
214 | ULI1575_SET_DEV_IRQ(28, 1, 0x86); | ||
215 | |||
216 | /* USB 1.1 OHCI controller 2, slot 28, pin 2 */ | ||
217 | ULI1575_SET_DEV_IRQ(28, 2, 0x87); | ||
218 | |||
219 | /* USB 1.1 OHCI controller 3, slot 28, pin 3 */ | ||
220 | ULI1575_SET_DEV_IRQ(28, 3, 0x88); | ||
221 | |||
222 | /* USB 2.0 controller, slot 28, pin 4 */ | ||
223 | irq = get_pci_irq_from_of(hose, 28, 4); | ||
224 | if (irq >= 0 && irq <= 15) | ||
225 | pci_write_config_dword(dev, 0x74, uli1575_irq_route_table[irq]); | ||
226 | |||
227 | /* Audio controller, slot 29, pin 1 */ | ||
228 | ULI1575_SET_DEV_IRQ(29, 1, 0x8a); | ||
229 | |||
230 | /* Modem controller, slot 29, pin 2 */ | ||
231 | ULI1575_SET_DEV_IRQ(29, 2, 0x8b); | ||
232 | |||
233 | /* HD audio controller, slot 29, pin 3 */ | ||
234 | ULI1575_SET_DEV_IRQ(29, 3, 0x8c); | ||
235 | |||
236 | /* SMB interrupt: slot 30, pin 1 */ | ||
237 | ULI1575_SET_DEV_IRQ(30, 1, 0x8e); | ||
238 | |||
239 | /* PMU ACPI SCI interrupt: slot 30, pin 2 */ | ||
240 | ULI1575_SET_DEV_IRQ(30, 2, 0x8f); | ||
241 | |||
242 | /* Serial ATA interrupt: slot 31, pin 1 */ | ||
243 | ULI1575_SET_DEV_IRQ(31, 1, 0x8d); | ||
244 | |||
245 | /* Primary PATA IDE IRQ: 14 | ||
246 | * Secondary PATA IDE IRQ: 15 | ||
247 | */ | ||
248 | pci_write_config_byte(dev, 0x44, 0x30 | uli1575_irq_route_table[14]); | ||
249 | pci_write_config_byte(dev, 0x75, uli1575_irq_route_table[15]); | ||
250 | |||
251 | /* Set IRQ14 and IRQ15 to legacy IRQs */ | ||
252 | pci_read_config_word(dev, 0x46, &temp); | ||
253 | temp |= 0xc000; | ||
254 | pci_write_config_word(dev, 0x46, temp); | ||
255 | |||
256 | /* Set i8259 interrupt trigger | ||
257 | * IRQ 3: Level | ||
258 | * IRQ 4: Level | ||
259 | * IRQ 5: Level | ||
260 | * IRQ 6: Level | ||
261 | * IRQ 7: Level | ||
262 | * IRQ 9: Level | ||
263 | * IRQ 10: Level | ||
264 | * IRQ 11: Level | ||
265 | * IRQ 12: Level | ||
266 | * IRQ 14: Edge | ||
267 | * IRQ 15: Edge | ||
268 | */ | ||
269 | outb(0xfa, 0x4d0); | ||
270 | outb(0x1e, 0x4d1); | ||
271 | |||
272 | #undef ULI1575_SET_DEV_IRQ | ||
273 | } | ||
274 | |||
275 | /* SATA */ | ||
276 | static void __devinit quirk_uli5288(struct pci_dev *dev) | ||
277 | { | 123 | { |
278 | unsigned char c; | 124 | struct device_node* node; |
279 | 125 | struct resource rsrc; | |
280 | pci_read_config_byte(dev, 0x83, &c); | ||
281 | c |= 0x80; /* read/write lock */ | ||
282 | pci_write_config_byte(dev, 0x83, c); | ||
283 | |||
284 | pci_write_config_byte(dev, 0x09, 0x01); /* Base class code: storage */ | ||
285 | pci_write_config_byte(dev, 0x0a, 0x06); /* IDE disk */ | ||
286 | 126 | ||
287 | pci_read_config_byte(dev, 0x83, &c); | 127 | node = (struct device_node *)hose->arch_data; |
288 | c &= 0x7f; | 128 | of_address_to_resource(node, 0, &rsrc); |
289 | pci_write_config_byte(dev, 0x83, c); | ||
290 | |||
291 | pci_read_config_byte(dev, 0x84, &c); | ||
292 | c |= 0x01; /* emulated PATA mode enabled */ | ||
293 | pci_write_config_byte(dev, 0x84, c); | ||
294 | } | ||
295 | 129 | ||
296 | /* PATA */ | 130 | if ((rsrc.start & 0xfffff) == 0xb000) { |
297 | static void __devinit quirk_uli5229(struct pci_dev *dev) | 131 | return uli_exclude_device(hose, bus, devfn); |
298 | { | 132 | } |
299 | unsigned short temp; | ||
300 | pci_write_config_word(dev, 0x04, 0x0405); /* MEM IO MSI */ | ||
301 | pci_read_config_word(dev, 0x4a, &temp); | ||
302 | temp |= 0x1000; /* Enable Native IRQ 14/15 */ | ||
303 | pci_write_config_word(dev, 0x4a, temp); | ||
304 | } | ||
305 | 133 | ||
306 | /*Bridge*/ | 134 | return PCIBIOS_SUCCESSFUL; |
307 | static void __devinit early_uli5249(struct pci_dev *dev) | ||
308 | { | ||
309 | unsigned char temp; | ||
310 | pci_write_config_word(dev, 0x04, 0x0007); /* mem access */ | ||
311 | pci_read_config_byte(dev, 0x7c, &temp); | ||
312 | pci_write_config_byte(dev, 0x7c, 0x80); /* R/W lock control */ | ||
313 | pci_write_config_byte(dev, 0x09, 0x01); /* set as pci-pci bridge */ | ||
314 | pci_write_config_byte(dev, 0x7c, temp); /* restore pci bus debug control */ | ||
315 | dev->class |= 0x1; | ||
316 | } | 135 | } |
317 | |||
318 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575); | ||
319 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288); | ||
320 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229); | ||
321 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249); | ||
322 | #endif /* CONFIG_PCI */ | 136 | #endif /* CONFIG_PCI */ |
323 | 137 | ||
324 | /* | 138 | /* |
@@ -342,6 +156,8 @@ static void __init mpc8544_ds_setup_arch(void) | |||
342 | else | 156 | else |
343 | fsl_add_bridge(np, 0); | 157 | fsl_add_bridge(np, 0); |
344 | } | 158 | } |
159 | uses_fsl_uli_m1575 = 1; | ||
160 | ppc_md.pci_exclude_device = mpc85xx_exclude_device; | ||
345 | #endif | 161 | #endif |
346 | 162 | ||
347 | printk("MPC8544 DS board from Freescale Semiconductor\n"); | 163 | printk("MPC8544 DS board from Freescale Semiconductor\n"); |
diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig index 343b76d0d793..685b2fbbbe00 100644 --- a/arch/powerpc/platforms/86xx/Kconfig +++ b/arch/powerpc/platforms/86xx/Kconfig | |||
@@ -7,6 +7,7 @@ config MPC8641_HPCN | |||
7 | bool "Freescale MPC8641 HPCN" | 7 | bool "Freescale MPC8641 HPCN" |
8 | select PPC_I8259 | 8 | select PPC_I8259 |
9 | select DEFAULT_UIMAGE | 9 | select DEFAULT_UIMAGE |
10 | select FSL_ULI1575 | ||
10 | help | 11 | help |
11 | This option enables support for the MPC8641 HPCN board. | 12 | This option enables support for the MPC8641 HPCN board. |
12 | 13 | ||
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c index e9eaa0749ae6..56b27caf7a27 100644 --- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | |||
@@ -107,220 +107,25 @@ mpc86xx_hpcn_init_irq(void) | |||
107 | } | 107 | } |
108 | 108 | ||
109 | #ifdef CONFIG_PCI | 109 | #ifdef CONFIG_PCI |
110 | extern int uses_fsl_uli_m1575; | ||
111 | extern int uli_exclude_device(struct pci_controller *hose, | ||
112 | u_char bus, u_char devfn); | ||
110 | 113 | ||
111 | enum pirq{PIRQA = 8, PIRQB, PIRQC, PIRQD, PIRQE, PIRQF, PIRQG, PIRQH}; | 114 | static int mpc86xx_exclude_device(struct pci_controller *hose, |
112 | const unsigned char uli1575_irq_route_table[16] = { | 115 | u_char bus, u_char devfn) |
113 | 0, /* 0: Reserved */ | ||
114 | 0x8, /* 1: 0b1000 */ | ||
115 | 0, /* 2: Reserved */ | ||
116 | 0x2, /* 3: 0b0010 */ | ||
117 | 0x4, /* 4: 0b0100 */ | ||
118 | 0x5, /* 5: 0b0101 */ | ||
119 | 0x7, /* 6: 0b0111 */ | ||
120 | 0x6, /* 7: 0b0110 */ | ||
121 | 0, /* 8: Reserved */ | ||
122 | 0x1, /* 9: 0b0001 */ | ||
123 | 0x3, /* 10: 0b0011 */ | ||
124 | 0x9, /* 11: 0b1001 */ | ||
125 | 0xb, /* 12: 0b1011 */ | ||
126 | 0, /* 13: Reserved */ | ||
127 | 0xd, /* 14, 0b1101 */ | ||
128 | 0xf, /* 15, 0b1111 */ | ||
129 | }; | ||
130 | |||
131 | static int __devinit | ||
132 | get_pci_irq_from_of(struct pci_controller *hose, int slot, int pin) | ||
133 | { | ||
134 | struct of_irq oirq; | ||
135 | u32 laddr[3]; | ||
136 | struct device_node *hosenode = hose ? hose->arch_data : NULL; | ||
137 | |||
138 | if (!hosenode) return -EINVAL; | ||
139 | |||
140 | laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(slot, 0) << 8); | ||
141 | laddr[1] = laddr[2] = 0; | ||
142 | of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq); | ||
143 | DBG("mpc86xx_hpcn: pci irq addr %x, slot %d, pin %d, irq %d\n", | ||
144 | laddr[0], slot, pin, oirq.specifier[0]); | ||
145 | return oirq.specifier[0]; | ||
146 | } | ||
147 | |||
148 | static void __devinit quirk_uli1575(struct pci_dev *dev) | ||
149 | { | ||
150 | unsigned short temp; | ||
151 | struct pci_controller *hose = pci_bus_to_host(dev->bus); | ||
152 | unsigned char irq2pin[16], c; | ||
153 | unsigned long pirq_map_word = 0; | ||
154 | u32 irq; | ||
155 | int i; | ||
156 | |||
157 | /* | ||
158 | * ULI1575 interrupts route setup | ||
159 | */ | ||
160 | memset(irq2pin, 0, 16); /* Initialize default value 0 */ | ||
161 | |||
162 | /* | ||
163 | * PIRQA -> PIRQD mapping read from OF-tree | ||
164 | * | ||
165 | * interrupts for PCI slot0 -- PIRQA / PIRQB / PIRQC / PIRQD | ||
166 | * PCI slot1 -- PIRQB / PIRQC / PIRQD / PIRQA | ||
167 | */ | ||
168 | for (i = 0; i < 4; i++){ | ||
169 | irq = get_pci_irq_from_of(hose, 17, i + 1); | ||
170 | if (irq > 0 && irq < 16) | ||
171 | irq2pin[irq] = PIRQA + i; | ||
172 | else | ||
173 | printk(KERN_WARNING "ULI1575 device" | ||
174 | "(slot %d, pin %d) irq %d is invalid.\n", | ||
175 | 17, i, irq); | ||
176 | } | ||
177 | |||
178 | /* | ||
179 | * PIRQE -> PIRQF mapping set manually | ||
180 | * | ||
181 | * IRQ pin IRQ# | ||
182 | * PIRQE ---- 9 | ||
183 | * PIRQF ---- 10 | ||
184 | * PIRQG ---- 11 | ||
185 | * PIRQH ---- 12 | ||
186 | */ | ||
187 | for (i = 0; i < 4; i++) irq2pin[i + 9] = PIRQE + i; | ||
188 | |||
189 | /* Set IRQ-PIRQ Mapping to ULI1575 */ | ||
190 | for (i = 0; i < 16; i++) | ||
191 | if (irq2pin[i]) | ||
192 | pirq_map_word |= (uli1575_irq_route_table[i] & 0xf) | ||
193 | << ((irq2pin[i] - PIRQA) * 4); | ||
194 | |||
195 | /* ULI1575 IRQ mapping conf register default value is 0xb9317542 */ | ||
196 | DBG("Setup ULI1575 IRQ mapping configuration register value = 0x%x\n", | ||
197 | pirq_map_word); | ||
198 | pci_write_config_dword(dev, 0x48, pirq_map_word); | ||
199 | |||
200 | #define ULI1575_SET_DEV_IRQ(slot, pin, reg) \ | ||
201 | do { \ | ||
202 | int irq; \ | ||
203 | irq = get_pci_irq_from_of(hose, slot, pin); \ | ||
204 | if (irq > 0 && irq < 16) \ | ||
205 | pci_write_config_byte(dev, reg, irq2pin[irq]); \ | ||
206 | else \ | ||
207 | printk(KERN_WARNING "ULI1575 device" \ | ||
208 | "(slot %d, pin %d) irq %d is invalid.\n", \ | ||
209 | slot, pin, irq); \ | ||
210 | } while(0) | ||
211 | |||
212 | /* USB 1.1 OHCI controller 1, slot 28, pin 1 */ | ||
213 | ULI1575_SET_DEV_IRQ(28, 1, 0x86); | ||
214 | |||
215 | /* USB 1.1 OHCI controller 2, slot 28, pin 2 */ | ||
216 | ULI1575_SET_DEV_IRQ(28, 2, 0x87); | ||
217 | |||
218 | /* USB 1.1 OHCI controller 3, slot 28, pin 3 */ | ||
219 | ULI1575_SET_DEV_IRQ(28, 3, 0x88); | ||
220 | |||
221 | /* USB 2.0 controller, slot 28, pin 4 */ | ||
222 | irq = get_pci_irq_from_of(hose, 28, 4); | ||
223 | if (irq >= 0 && irq <=15) | ||
224 | pci_write_config_dword(dev, 0x74, uli1575_irq_route_table[irq]); | ||
225 | |||
226 | /* Audio controller, slot 29, pin 1 */ | ||
227 | ULI1575_SET_DEV_IRQ(29, 1, 0x8a); | ||
228 | |||
229 | /* Modem controller, slot 29, pin 2 */ | ||
230 | ULI1575_SET_DEV_IRQ(29, 2, 0x8b); | ||
231 | |||
232 | /* HD audio controller, slot 29, pin 3 */ | ||
233 | ULI1575_SET_DEV_IRQ(29, 3, 0x8c); | ||
234 | |||
235 | /* SMB interrupt: slot 30, pin 1 */ | ||
236 | ULI1575_SET_DEV_IRQ(30, 1, 0x8e); | ||
237 | |||
238 | /* PMU ACPI SCI interrupt: slot 30, pin 2 */ | ||
239 | ULI1575_SET_DEV_IRQ(30, 2, 0x8f); | ||
240 | |||
241 | /* Serial ATA interrupt: slot 31, pin 1 */ | ||
242 | ULI1575_SET_DEV_IRQ(31, 1, 0x8d); | ||
243 | |||
244 | /* Primary PATA IDE IRQ: 14 | ||
245 | * Secondary PATA IDE IRQ: 15 | ||
246 | */ | ||
247 | pci_write_config_byte(dev, 0x44, 0x30 | uli1575_irq_route_table[14]); | ||
248 | pci_write_config_byte(dev, 0x75, uli1575_irq_route_table[15]); | ||
249 | |||
250 | /* Set IRQ14 and IRQ15 to legacy IRQs */ | ||
251 | pci_read_config_word(dev, 0x46, &temp); | ||
252 | temp |= 0xc000; | ||
253 | pci_write_config_word(dev, 0x46, temp); | ||
254 | |||
255 | /* Set i8259 interrupt trigger | ||
256 | * IRQ 3: Level | ||
257 | * IRQ 4: Level | ||
258 | * IRQ 5: Level | ||
259 | * IRQ 6: Level | ||
260 | * IRQ 7: Level | ||
261 | * IRQ 9: Level | ||
262 | * IRQ 10: Level | ||
263 | * IRQ 11: Level | ||
264 | * IRQ 12: Level | ||
265 | * IRQ 14: Edge | ||
266 | * IRQ 15: Edge | ||
267 | */ | ||
268 | outb(0xfa, 0x4d0); | ||
269 | outb(0x1e, 0x4d1); | ||
270 | |||
271 | #undef ULI1575_SET_DEV_IRQ | ||
272 | |||
273 | /* Disable the HD interface and enable the AC97 interface. */ | ||
274 | pci_read_config_byte(dev, 0xb8, &c); | ||
275 | c &= 0x7f; | ||
276 | pci_write_config_byte(dev, 0xb8, c); | ||
277 | } | ||
278 | |||
279 | static void __devinit quirk_uli5288(struct pci_dev *dev) | ||
280 | { | 116 | { |
281 | unsigned char c; | 117 | struct device_node* node; |
118 | struct resource rsrc; | ||
282 | 119 | ||
283 | pci_read_config_byte(dev,0x83,&c); | 120 | node = (struct device_node *)hose->arch_data; |
284 | c |= 0x80; | 121 | of_address_to_resource(node, 0, &rsrc); |
285 | pci_write_config_byte(dev, 0x83, c); | ||
286 | 122 | ||
287 | pci_write_config_byte(dev, 0x09, 0x01); | 123 | if ((rsrc.start & 0xfffff) == 0x8000) { |
288 | pci_write_config_byte(dev, 0x0a, 0x06); | 124 | return uli_exclude_device(hose, bus, devfn); |
289 | 125 | } | |
290 | pci_read_config_byte(dev,0x83,&c); | ||
291 | c &= 0x7f; | ||
292 | pci_write_config_byte(dev, 0x83, c); | ||
293 | |||
294 | pci_read_config_byte(dev,0x84,&c); | ||
295 | c |= 0x01; | ||
296 | pci_write_config_byte(dev, 0x84, c); | ||
297 | } | ||
298 | |||
299 | static void __devinit quirk_uli5229(struct pci_dev *dev) | ||
300 | { | ||
301 | unsigned short temp; | ||
302 | pci_write_config_word(dev, 0x04, 0x0405); | ||
303 | dev->class &= ~0x5; | ||
304 | pci_read_config_word(dev, 0x4a, &temp); | ||
305 | temp |= 0x1000; | ||
306 | pci_write_config_word(dev, 0x4a, temp); | ||
307 | } | ||
308 | 126 | ||
309 | static void __devinit early_uli5249(struct pci_dev *dev) | 127 | return PCIBIOS_SUCCESSFUL; |
310 | { | ||
311 | unsigned char temp; | ||
312 | pci_write_config_word(dev, 0x04, 0x0007); | ||
313 | pci_read_config_byte(dev, 0x7c, &temp); | ||
314 | pci_write_config_byte(dev, 0x7c, 0x80); | ||
315 | pci_write_config_byte(dev, 0x09, 0x01); | ||
316 | pci_write_config_byte(dev, 0x7c, temp); | ||
317 | dev->class |= 0x1; | ||
318 | } | 128 | } |
319 | |||
320 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575); | ||
321 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288); | ||
322 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229); | ||
323 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249); | ||
324 | #endif /* CONFIG_PCI */ | 129 | #endif /* CONFIG_PCI */ |
325 | 130 | ||
326 | 131 | ||
@@ -353,6 +158,9 @@ mpc86xx_hpcn_setup_arch(void) | |||
353 | else | 158 | else |
354 | fsl_add_bridge(np, 0); | 159 | fsl_add_bridge(np, 0); |
355 | } | 160 | } |
161 | uses_fsl_uli_m1575 = 1; | ||
162 | ppc_md.pci_exclude_device = mpc86xx_exclude_device; | ||
163 | |||
356 | #endif | 164 | #endif |
357 | 165 | ||
358 | printk("MPC86xx HPCN board from Freescale Semiconductor\n"); | 166 | printk("MPC86xx HPCN board from Freescale Semiconductor\n"); |
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig index 2c937fb207fe..041df77ec117 100644 --- a/arch/powerpc/platforms/Kconfig +++ b/arch/powerpc/platforms/Kconfig | |||
@@ -283,4 +283,12 @@ config AXON_RAM | |||
283 | minor numbers are available in /proc/devices, /proc/partitions or | 283 | minor numbers are available in /proc/devices, /proc/partitions or |
284 | in /sys/block/axonram?/dev. | 284 | in /sys/block/axonram?/dev. |
285 | 285 | ||
286 | config FSL_ULI1575 | ||
287 | bool | ||
288 | default n | ||
289 | help | ||
290 | Supports for the ULI1575 PCIe south bridge that exists on some | ||
291 | Freescale reference boards. The boards all use the ULI in pretty | ||
292 | much the same way. | ||
293 | |||
286 | endmenu | 294 | endmenu |
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile index d6e041a46d25..d44e832b01f2 100644 --- a/arch/powerpc/platforms/Makefile +++ b/arch/powerpc/platforms/Makefile | |||
@@ -1,3 +1,6 @@ | |||
1 | |||
2 | obj-$(CONFIG_FSL_ULI1575) += fsl_uli1575.o | ||
3 | |||
1 | ifeq ($(CONFIG_PPC_MERGE),y) | 4 | ifeq ($(CONFIG_PPC_MERGE),y) |
2 | obj-$(CONFIG_PPC_PMAC) += powermac/ | 5 | obj-$(CONFIG_PPC_PMAC) += powermac/ |
3 | else | 6 | else |
diff --git a/arch/powerpc/platforms/cell/cbe_regs.h b/arch/powerpc/platforms/cell/cbe_regs.h index 17d597144877..b24025f2ac7a 100644 --- a/arch/powerpc/platforms/cell/cbe_regs.h +++ b/arch/powerpc/platforms/cell/cbe_regs.h | |||
@@ -113,10 +113,14 @@ struct cbe_pmd_regs { | |||
113 | u64 checkstop_fir; /* 0x0c00 */ | 113 | u64 checkstop_fir; /* 0x0c00 */ |
114 | u64 recoverable_fir; /* 0x0c08 */ | 114 | u64 recoverable_fir; /* 0x0c08 */ |
115 | u64 spec_att_mchk_fir; /* 0x0c10 */ | 115 | u64 spec_att_mchk_fir; /* 0x0c10 */ |
116 | u64 fir_mode_reg; /* 0x0c18 */ | 116 | u32 fir_mode_reg; /* 0x0c18 */ |
117 | u8 pad_0x0c1c_0x0c20 [4]; /* 0x0c1c */ | ||
118 | #define CBE_PMD_FIR_MODE_M8 0x00800 | ||
117 | u64 fir_enable_mask; /* 0x0c20 */ | 119 | u64 fir_enable_mask; /* 0x0c20 */ |
118 | 120 | ||
119 | u8 pad_0x0c28_0x1000 [0x1000 - 0x0c28]; /* 0x0c28 */ | 121 | u8 pad_0x0c28_0x0ca8 [0x0ca8 - 0x0c28]; /* 0x0c28 */ |
122 | u64 ras_esc_0; /* 0x0ca8 */ | ||
123 | u8 pad_0x0cb0_0x1000 [0x1000 - 0x0cb0]; /* 0x0cb0 */ | ||
120 | }; | 124 | }; |
121 | 125 | ||
122 | extern struct cbe_pmd_regs __iomem *cbe_get_pmd_regs(struct device_node *np); | 126 | extern struct cbe_pmd_regs __iomem *cbe_get_pmd_regs(struct device_node *np); |
diff --git a/arch/powerpc/platforms/cell/cbe_thermal.c b/arch/powerpc/platforms/cell/cbe_thermal.c index e4132f8f51b3..fb5eda48467d 100644 --- a/arch/powerpc/platforms/cell/cbe_thermal.c +++ b/arch/powerpc/platforms/cell/cbe_thermal.c | |||
@@ -88,17 +88,13 @@ static struct cbe_pmd_regs __iomem *get_pmd_regs(struct sys_device *sysdev) | |||
88 | /* returns the value for a given spu in a given register */ | 88 | /* returns the value for a given spu in a given register */ |
89 | static u8 spu_read_register_value(struct sys_device *sysdev, union spe_reg __iomem *reg) | 89 | static u8 spu_read_register_value(struct sys_device *sysdev, union spe_reg __iomem *reg) |
90 | { | 90 | { |
91 | const unsigned int *id; | ||
92 | union spe_reg value; | 91 | union spe_reg value; |
93 | struct spu *spu; | 92 | struct spu *spu; |
94 | 93 | ||
95 | /* getting the id from the reg attribute will not work on future device-tree layouts | ||
96 | * in future we should store the id to the spu struct and use it here */ | ||
97 | spu = container_of(sysdev, struct spu, sysdev); | 94 | spu = container_of(sysdev, struct spu, sysdev); |
98 | id = of_get_property(spu_devnode(spu), "reg", NULL); | ||
99 | value.val = in_be64(®->val); | 95 | value.val = in_be64(®->val); |
100 | 96 | ||
101 | return value.spe[*id]; | 97 | return value.spe[spu->spe_id]; |
102 | } | 98 | } |
103 | 99 | ||
104 | static ssize_t spu_show_temp(struct sys_device *sysdev, char *buf) | 100 | static ssize_t spu_show_temp(struct sys_device *sysdev, char *buf) |
diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c index 812bf563ed65..4ede22d363fa 100644 --- a/arch/powerpc/platforms/cell/pervasive.c +++ b/arch/powerpc/platforms/cell/pervasive.c | |||
@@ -38,6 +38,8 @@ | |||
38 | #include "pervasive.h" | 38 | #include "pervasive.h" |
39 | #include "cbe_regs.h" | 39 | #include "cbe_regs.h" |
40 | 40 | ||
41 | static int sysreset_hack; | ||
42 | |||
41 | static void cbe_power_save(void) | 43 | static void cbe_power_save(void) |
42 | { | 44 | { |
43 | unsigned long ctrl, thread_switch_control; | 45 | unsigned long ctrl, thread_switch_control; |
@@ -85,6 +87,9 @@ static void cbe_power_save(void) | |||
85 | 87 | ||
86 | static int cbe_system_reset_exception(struct pt_regs *regs) | 88 | static int cbe_system_reset_exception(struct pt_regs *regs) |
87 | { | 89 | { |
90 | int cpu; | ||
91 | struct cbe_pmd_regs __iomem *pmd; | ||
92 | |||
88 | switch (regs->msr & SRR1_WAKEMASK) { | 93 | switch (regs->msr & SRR1_WAKEMASK) { |
89 | case SRR1_WAKEEE: | 94 | case SRR1_WAKEEE: |
90 | do_IRQ(regs); | 95 | do_IRQ(regs); |
@@ -93,6 +98,18 @@ static int cbe_system_reset_exception(struct pt_regs *regs) | |||
93 | timer_interrupt(regs); | 98 | timer_interrupt(regs); |
94 | break; | 99 | break; |
95 | case SRR1_WAKEMT: | 100 | case SRR1_WAKEMT: |
101 | /* | ||
102 | * The BMC can inject user triggered system reset exceptions, | ||
103 | * but cannot set the system reset reason in srr1, | ||
104 | * so check an extra register here. | ||
105 | */ | ||
106 | if (sysreset_hack && (cpu = smp_processor_id()) == 0) { | ||
107 | pmd = cbe_get_cpu_pmd_regs(cpu); | ||
108 | if (in_be64(&pmd->ras_esc_0) & 0xffff) { | ||
109 | out_be64(&pmd->ras_esc_0, 0); | ||
110 | return 0; | ||
111 | } | ||
112 | } | ||
96 | break; | 113 | break; |
97 | #ifdef CONFIG_CBE_RAS | 114 | #ifdef CONFIG_CBE_RAS |
98 | case SRR1_WAKESYSERR: | 115 | case SRR1_WAKESYSERR: |
@@ -113,9 +130,12 @@ static int cbe_system_reset_exception(struct pt_regs *regs) | |||
113 | void __init cbe_pervasive_init(void) | 130 | void __init cbe_pervasive_init(void) |
114 | { | 131 | { |
115 | int cpu; | 132 | int cpu; |
133 | |||
116 | if (!cpu_has_feature(CPU_FTR_PAUSE_ZERO)) | 134 | if (!cpu_has_feature(CPU_FTR_PAUSE_ZERO)) |
117 | return; | 135 | return; |
118 | 136 | ||
137 | sysreset_hack = machine_is_compatible("IBM,CBPLUS-1.0"); | ||
138 | |||
119 | for_each_possible_cpu(cpu) { | 139 | for_each_possible_cpu(cpu) { |
120 | struct cbe_pmd_regs __iomem *regs = cbe_get_cpu_pmd_regs(cpu); | 140 | struct cbe_pmd_regs __iomem *regs = cbe_get_cpu_pmd_regs(cpu); |
121 | if (!regs) | 141 | if (!regs) |
@@ -124,6 +144,12 @@ void __init cbe_pervasive_init(void) | |||
124 | /* Enable Pause(0) control bit */ | 144 | /* Enable Pause(0) control bit */ |
125 | out_be64(®s->pmcr, in_be64(®s->pmcr) | | 145 | out_be64(®s->pmcr, in_be64(®s->pmcr) | |
126 | CBE_PMD_PAUSE_ZERO_CONTROL); | 146 | CBE_PMD_PAUSE_ZERO_CONTROL); |
147 | |||
148 | /* Enable JTAG system-reset hack */ | ||
149 | if (sysreset_hack) | ||
150 | out_be32(®s->fir_mode_reg, | ||
151 | in_be32(®s->fir_mode_reg) | | ||
152 | CBE_PMD_FIR_MODE_M8); | ||
127 | } | 153 | } |
128 | 154 | ||
129 | ppc_md.power_save = cbe_power_save; | 155 | ppc_md.power_save = cbe_power_save; |
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c index 5eb88346181a..7c0668a9dcc7 100644 --- a/arch/powerpc/platforms/cell/spu_manage.c +++ b/arch/powerpc/platforms/cell/spu_manage.c | |||
@@ -48,7 +48,7 @@ static u64 __init find_spu_unit_number(struct device_node *spe) | |||
48 | { | 48 | { |
49 | const unsigned int *prop; | 49 | const unsigned int *prop; |
50 | int proplen; | 50 | int proplen; |
51 | prop = of_get_property(spe, "unit-id", &proplen); | 51 | prop = of_get_property(spe, "physical-id", &proplen); |
52 | if (proplen == 4) | 52 | if (proplen == 4) |
53 | return (u64)*prop; | 53 | return (u64)*prop; |
54 | 54 | ||
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c new file mode 100644 index 000000000000..afc9141be63e --- /dev/null +++ b/arch/powerpc/platforms/fsl_uli1575.c | |||
@@ -0,0 +1,255 @@ | |||
1 | /* | ||
2 | * ULI M1575 setup code - specific to Freescale boards | ||
3 | * | ||
4 | * Copyright 2007 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | #include <linux/stddef.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/pci.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <linux/mc146818rtc.h> | ||
17 | |||
18 | #include <asm/system.h> | ||
19 | #include <asm/pci-bridge.h> | ||
20 | |||
21 | #define ULI_PIRQA 0x08 | ||
22 | #define ULI_PIRQB 0x09 | ||
23 | #define ULI_PIRQC 0x0a | ||
24 | #define ULI_PIRQD 0x0b | ||
25 | #define ULI_PIRQE 0x0c | ||
26 | #define ULI_PIRQF 0x0d | ||
27 | #define ULI_PIRQG 0x0e | ||
28 | |||
29 | #define ULI_8259_NONE 0x00 | ||
30 | #define ULI_8259_IRQ1 0x08 | ||
31 | #define ULI_8259_IRQ3 0x02 | ||
32 | #define ULI_8259_IRQ4 0x04 | ||
33 | #define ULI_8259_IRQ5 0x05 | ||
34 | #define ULI_8259_IRQ6 0x07 | ||
35 | #define ULI_8259_IRQ7 0x06 | ||
36 | #define ULI_8259_IRQ9 0x01 | ||
37 | #define ULI_8259_IRQ10 0x03 | ||
38 | #define ULI_8259_IRQ11 0x09 | ||
39 | #define ULI_8259_IRQ12 0x0b | ||
40 | #define ULI_8259_IRQ14 0x0d | ||
41 | #define ULI_8259_IRQ15 0x0f | ||
42 | |||
43 | u8 uli_pirq_to_irq[8] = { | ||
44 | ULI_8259_IRQ9, /* PIRQA */ | ||
45 | ULI_8259_IRQ10, /* PIRQB */ | ||
46 | ULI_8259_IRQ11, /* PIRQC */ | ||
47 | ULI_8259_IRQ12, /* PIRQD */ | ||
48 | ULI_8259_IRQ5, /* PIRQE */ | ||
49 | ULI_8259_IRQ6, /* PIRQF */ | ||
50 | ULI_8259_IRQ7, /* PIRQG */ | ||
51 | ULI_8259_NONE, /* PIRQH */ | ||
52 | }; | ||
53 | |||
54 | /* set in board code if you want this quirks to do something */ | ||
55 | int uses_fsl_uli_m1575; | ||
56 | |||
57 | /* Bridge */ | ||
58 | static void __devinit early_uli5249(struct pci_dev *dev) | ||
59 | { | ||
60 | unsigned char temp; | ||
61 | |||
62 | if (!uses_fsl_uli_m1575) | ||
63 | return; | ||
64 | |||
65 | pci_write_config_word(dev, PCI_COMMAND, PCI_COMMAND_IO | | ||
66 | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER); | ||
67 | |||
68 | /* read/write lock */ | ||
69 | pci_read_config_byte(dev, 0x7c, &temp); | ||
70 | pci_write_config_byte(dev, 0x7c, 0x80); | ||
71 | |||
72 | /* set as P2P bridge */ | ||
73 | pci_write_config_byte(dev, PCI_CLASS_PROG, 0x01); | ||
74 | dev->class |= 0x1; | ||
75 | |||
76 | /* restore lock */ | ||
77 | pci_write_config_byte(dev, 0x7c, temp); | ||
78 | } | ||
79 | |||
80 | |||
81 | static void __devinit quirk_uli1575(struct pci_dev *dev) | ||
82 | { | ||
83 | int i; | ||
84 | |||
85 | if (!uses_fsl_uli_m1575) | ||
86 | return; | ||
87 | |||
88 | /* | ||
89 | * ULI1575 interrupts route setup | ||
90 | */ | ||
91 | |||
92 | /* ULI1575 IRQ mapping conf register maps PIRQx to IRQn */ | ||
93 | for (i = 0; i < 4; i++) { | ||
94 | u8 val = uli_pirq_to_irq[i*2] | (uli_pirq_to_irq[i*2+1] << 4); | ||
95 | pci_write_config_byte(dev, 0x48 + i, val); | ||
96 | } | ||
97 | |||
98 | /* USB 1.1 OHCI controller 1: dev 28, func 0 - IRQ12 */ | ||
99 | pci_write_config_byte(dev, 0x86, ULI_PIRQD); | ||
100 | |||
101 | /* USB 1.1 OHCI controller 2: dev 28, func 1 - IRQ9 */ | ||
102 | pci_write_config_byte(dev, 0x87, ULI_PIRQA); | ||
103 | |||
104 | /* USB 1.1 OHCI controller 3: dev 28, func 2 - IRQ10 */ | ||
105 | pci_write_config_byte(dev, 0x88, ULI_PIRQB); | ||
106 | |||
107 | /* Lan controller: dev 27, func 0 - IRQ6 */ | ||
108 | pci_write_config_byte(dev, 0x89, ULI_PIRQF); | ||
109 | |||
110 | /* AC97 Audio controller: dev 29, func 0 - IRQ6 */ | ||
111 | pci_write_config_byte(dev, 0x8a, ULI_PIRQF); | ||
112 | |||
113 | /* Modem controller: dev 29, func 1 - IRQ6 */ | ||
114 | pci_write_config_byte(dev, 0x8b, ULI_PIRQF); | ||
115 | |||
116 | /* HD Audio controller: dev 29, func 2 - IRQ6 */ | ||
117 | pci_write_config_byte(dev, 0x8c, ULI_PIRQF); | ||
118 | |||
119 | /* SATA controller: dev 31, func 1 - IRQ5 */ | ||
120 | pci_write_config_byte(dev, 0x8d, ULI_PIRQE); | ||
121 | |||
122 | /* SMB interrupt: dev 30, func 1 - IRQ7 */ | ||
123 | pci_write_config_byte(dev, 0x8e, ULI_PIRQG); | ||
124 | |||
125 | /* PMU ACPI SCI interrupt: dev 30, func 2 - IRQ7 */ | ||
126 | pci_write_config_byte(dev, 0x8f, ULI_PIRQG); | ||
127 | |||
128 | /* USB 2.0 controller: dev 28, func 3 */ | ||
129 | pci_write_config_byte(dev, 0x74, ULI_8259_IRQ11); | ||
130 | |||
131 | /* Primary PATA IDE IRQ: 14 | ||
132 | * Secondary PATA IDE IRQ: 15 | ||
133 | */ | ||
134 | pci_write_config_byte(dev, 0x44, 0x30 | ULI_8259_IRQ14); | ||
135 | pci_write_config_byte(dev, 0x75, ULI_8259_IRQ15); | ||
136 | } | ||
137 | |||
138 | static void __devinit quirk_final_uli1575(struct pci_dev *dev) | ||
139 | { | ||
140 | /* Set i8259 interrupt trigger | ||
141 | * IRQ 3: Level | ||
142 | * IRQ 4: Level | ||
143 | * IRQ 5: Level | ||
144 | * IRQ 6: Level | ||
145 | * IRQ 7: Level | ||
146 | * IRQ 9: Level | ||
147 | * IRQ 10: Level | ||
148 | * IRQ 11: Level | ||
149 | * IRQ 12: Level | ||
150 | * IRQ 14: Edge | ||
151 | * IRQ 15: Edge | ||
152 | */ | ||
153 | if (!uses_fsl_uli_m1575) | ||
154 | return; | ||
155 | |||
156 | outb(0xfa, 0x4d0); | ||
157 | outb(0x1e, 0x4d1); | ||
158 | |||
159 | /* setup RTC */ | ||
160 | CMOS_WRITE(RTC_SET, RTC_CONTROL); | ||
161 | CMOS_WRITE(RTC_24H, RTC_CONTROL); | ||
162 | |||
163 | /* ensure month, date, and week alarm fields are ignored */ | ||
164 | CMOS_WRITE(0, RTC_VALID); | ||
165 | |||
166 | outb_p(0x7c, 0x72); | ||
167 | outb_p(RTC_ALARM_DONT_CARE, 0x73); | ||
168 | |||
169 | outb_p(0x7d, 0x72); | ||
170 | outb_p(RTC_ALARM_DONT_CARE, 0x73); | ||
171 | } | ||
172 | |||
173 | /* SATA */ | ||
174 | static void __devinit quirk_uli5288(struct pci_dev *dev) | ||
175 | { | ||
176 | unsigned char c; | ||
177 | unsigned int d; | ||
178 | |||
179 | if (!uses_fsl_uli_m1575) | ||
180 | return; | ||
181 | |||
182 | /* read/write lock */ | ||
183 | pci_read_config_byte(dev, 0x83, &c); | ||
184 | pci_write_config_byte(dev, 0x83, c|0x80); | ||
185 | |||
186 | pci_read_config_dword(dev, PCI_CLASS_REVISION, &d); | ||
187 | d = (d & 0xff) | (PCI_CLASS_STORAGE_SATA_AHCI << 8); | ||
188 | pci_write_config_dword(dev, PCI_CLASS_REVISION, d); | ||
189 | |||
190 | /* restore lock */ | ||
191 | pci_write_config_byte(dev, 0x83, c); | ||
192 | |||
193 | /* disable emulated PATA mode enabled */ | ||
194 | pci_read_config_byte(dev, 0x84, &c); | ||
195 | pci_write_config_byte(dev, 0x84, c & ~0x01); | ||
196 | } | ||
197 | |||
198 | /* PATA */ | ||
199 | static void __devinit quirk_uli5229(struct pci_dev *dev) | ||
200 | { | ||
201 | unsigned short temp; | ||
202 | |||
203 | if (!uses_fsl_uli_m1575) | ||
204 | return; | ||
205 | |||
206 | pci_write_config_word(dev, PCI_COMMAND, PCI_COMMAND_INTX_DISABLE | | ||
207 | PCI_COMMAND_MASTER | PCI_COMMAND_IO); | ||
208 | |||
209 | /* Enable Native IRQ 14/15 */ | ||
210 | pci_read_config_word(dev, 0x4a, &temp); | ||
211 | pci_write_config_word(dev, 0x4a, temp | 0x1000); | ||
212 | } | ||
213 | |||
214 | /* We have to do a dummy read on the P2P for the RTC to work, WTF */ | ||
215 | static void __devinit quirk_final_uli5249(struct pci_dev *dev) | ||
216 | { | ||
217 | int i; | ||
218 | u8 *dummy; | ||
219 | struct pci_bus *bus = dev->bus; | ||
220 | |||
221 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { | ||
222 | if ((bus->resource[i]) && | ||
223 | (bus->resource[i]->flags & IORESOURCE_MEM)) { | ||
224 | dummy = ioremap(bus->resource[i]->start, 0x4); | ||
225 | if (dummy) { | ||
226 | in_8(dummy); | ||
227 | iounmap(dummy); | ||
228 | } | ||
229 | break; | ||
230 | } | ||
231 | } | ||
232 | } | ||
233 | |||
234 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AL, 0x5249, early_uli5249); | ||
235 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x1575, quirk_uli1575); | ||
236 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5288, quirk_uli5288); | ||
237 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, 0x5229, quirk_uli5229); | ||
238 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x5249, quirk_final_uli5249); | ||
239 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, 0x1575, quirk_final_uli1575); | ||
240 | |||
241 | int uli_exclude_device(struct pci_controller *hose, | ||
242 | u_char bus, u_char devfn) | ||
243 | { | ||
244 | if (bus == (hose->first_busno + 2)) { | ||
245 | /* exclude Modem controller */ | ||
246 | if ((PCI_SLOT(devfn) == 29) && (PCI_FUNC(devfn) == 1)) | ||
247 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
248 | |||
249 | /* exclude HD Audio controller */ | ||
250 | if ((PCI_SLOT(devfn) == 29) && (PCI_FUNC(devfn) == 2)) | ||
251 | return PCIBIOS_DEVICE_NOT_FOUND; | ||
252 | } | ||
253 | |||
254 | return PCIBIOS_SUCCESSFUL; | ||
255 | } | ||
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c index c910ec9c2bdf..6c42787fb382 100644 --- a/arch/powerpc/platforms/pasemi/iommu.c +++ b/arch/powerpc/platforms/pasemi/iommu.c | |||
@@ -93,7 +93,7 @@ static void iobmap_build(struct iommu_table *tbl, long index, | |||
93 | 93 | ||
94 | pr_debug("iobmap: build at: %lx, %lx, addr: %lx\n", index, npages, uaddr); | 94 | pr_debug("iobmap: build at: %lx, %lx, addr: %lx\n", index, npages, uaddr); |
95 | 95 | ||
96 | bus_addr = (tbl->it_offset + index) << PAGE_SHIFT; | 96 | bus_addr = (tbl->it_offset + index) << IOBMAP_PAGE_SHIFT; |
97 | 97 | ||
98 | ip = ((u32 *)tbl->it_base) + index; | 98 | ip = ((u32 *)tbl->it_base) + index; |
99 | 99 | ||
@@ -118,7 +118,7 @@ static void iobmap_free(struct iommu_table *tbl, long index, | |||
118 | 118 | ||
119 | pr_debug("iobmap: free at: %lx, %lx\n", index, npages); | 119 | pr_debug("iobmap: free at: %lx, %lx\n", index, npages); |
120 | 120 | ||
121 | bus_addr = (tbl->it_offset + index) << PAGE_SHIFT; | 121 | bus_addr = (tbl->it_offset + index) << IOBMAP_PAGE_SHIFT; |
122 | 122 | ||
123 | ip = ((u32 *)tbl->it_base) + index; | 123 | ip = ((u32 *)tbl->it_base) + index; |
124 | 124 | ||
@@ -137,7 +137,7 @@ static void iommu_table_iobmap_setup(void) | |||
137 | iommu_table_iobmap.it_busno = 0; | 137 | iommu_table_iobmap.it_busno = 0; |
138 | iommu_table_iobmap.it_offset = 0; | 138 | iommu_table_iobmap.it_offset = 0; |
139 | /* it_size is in number of entries */ | 139 | /* it_size is in number of entries */ |
140 | iommu_table_iobmap.it_size = 0x80000000 >> PAGE_SHIFT; | 140 | iommu_table_iobmap.it_size = 0x80000000 >> IOBMAP_PAGE_SHIFT; |
141 | 141 | ||
142 | /* Initialize the common IOMMU code */ | 142 | /* Initialize the common IOMMU code */ |
143 | iommu_table_iobmap.it_base = (unsigned long)iob_l2_base; | 143 | iommu_table_iobmap.it_base = (unsigned long)iob_l2_base; |
diff --git a/arch/powerpc/sysdev/axonram.c b/arch/powerpc/sysdev/axonram.c index 2326d5dc5752..ab037a3a40db 100644 --- a/arch/powerpc/sysdev/axonram.c +++ b/arch/powerpc/sysdev/axonram.c | |||
@@ -59,8 +59,7 @@ | |||
59 | struct axon_ram_bank { | 59 | struct axon_ram_bank { |
60 | struct of_device *device; | 60 | struct of_device *device; |
61 | struct gendisk *disk; | 61 | struct gendisk *disk; |
62 | unsigned int irq_correctable; | 62 | unsigned int irq_id; |
63 | unsigned int irq_uncorrectable; | ||
64 | unsigned long ph_addr; | 63 | unsigned long ph_addr; |
65 | unsigned long io_addr; | 64 | unsigned long io_addr; |
66 | unsigned long size; | 65 | unsigned long size; |
@@ -93,16 +92,9 @@ axon_ram_irq_handler(int irq, void *dev) | |||
93 | 92 | ||
94 | BUG_ON(!bank); | 93 | BUG_ON(!bank); |
95 | 94 | ||
96 | if (irq == bank->irq_correctable) { | 95 | dev_err(&device->dev, "Correctable memory error occured\n"); |
97 | dev_err(&device->dev, "Correctable memory error occured\n"); | 96 | bank->ecc_counter++; |
98 | bank->ecc_counter++; | 97 | return IRQ_HANDLED; |
99 | return IRQ_HANDLED; | ||
100 | } else if (irq == bank->irq_uncorrectable) { | ||
101 | dev_err(&device->dev, "Uncorrectable memory error occured\n"); | ||
102 | panic("Critical ECC error on %s", device->node->full_name); | ||
103 | } | ||
104 | |||
105 | return IRQ_NONE; | ||
106 | } | 98 | } |
107 | 99 | ||
108 | /** | 100 | /** |
@@ -259,28 +251,18 @@ axon_ram_probe(struct of_device *device, const struct of_device_id *device_id) | |||
259 | blk_queue_hardsect_size(bank->disk->queue, AXON_RAM_SECTOR_SIZE); | 251 | blk_queue_hardsect_size(bank->disk->queue, AXON_RAM_SECTOR_SIZE); |
260 | add_disk(bank->disk); | 252 | add_disk(bank->disk); |
261 | 253 | ||
262 | bank->irq_correctable = irq_of_parse_and_map(device->node, 0); | 254 | bank->irq_id = irq_of_parse_and_map(device->node, 0); |
263 | bank->irq_uncorrectable = irq_of_parse_and_map(device->node, 1); | 255 | if (bank->irq_id == NO_IRQ) { |
264 | if ((bank->irq_correctable <= 0) || (bank->irq_uncorrectable <= 0)) { | ||
265 | dev_err(&device->dev, "Cannot access ECC interrupt ID\n"); | 256 | dev_err(&device->dev, "Cannot access ECC interrupt ID\n"); |
266 | rc = -EFAULT; | 257 | rc = -EFAULT; |
267 | goto failed; | 258 | goto failed; |
268 | } | 259 | } |
269 | 260 | ||
270 | rc = request_irq(bank->irq_correctable, axon_ram_irq_handler, | 261 | rc = request_irq(bank->irq_id, axon_ram_irq_handler, |
271 | AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device); | ||
272 | if (rc != 0) { | ||
273 | dev_err(&device->dev, "Cannot register ECC interrupt handler\n"); | ||
274 | bank->irq_correctable = bank->irq_uncorrectable = 0; | ||
275 | rc = -EFAULT; | ||
276 | goto failed; | ||
277 | } | ||
278 | |||
279 | rc = request_irq(bank->irq_uncorrectable, axon_ram_irq_handler, | ||
280 | AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device); | 262 | AXON_RAM_IRQ_FLAGS, bank->disk->disk_name, device); |
281 | if (rc != 0) { | 263 | if (rc != 0) { |
282 | dev_err(&device->dev, "Cannot register ECC interrupt handler\n"); | 264 | dev_err(&device->dev, "Cannot register ECC interrupt handler\n"); |
283 | bank->irq_uncorrectable = 0; | 265 | bank->irq_id = NO_IRQ; |
284 | rc = -EFAULT; | 266 | rc = -EFAULT; |
285 | goto failed; | 267 | goto failed; |
286 | } | 268 | } |
@@ -296,13 +278,9 @@ axon_ram_probe(struct of_device *device, const struct of_device_id *device_id) | |||
296 | 278 | ||
297 | failed: | 279 | failed: |
298 | if (bank != NULL) { | 280 | if (bank != NULL) { |
299 | if (bank->irq_uncorrectable > 0) | 281 | if (bank->irq_id != NO_IRQ) |
300 | free_irq(bank->irq_uncorrectable, device); | 282 | free_irq(bank->irq_id, device); |
301 | if (bank->irq_correctable > 0) | ||
302 | free_irq(bank->irq_correctable, device); | ||
303 | if (bank->disk != NULL) { | 283 | if (bank->disk != NULL) { |
304 | if (bank->disk->queue != NULL) | ||
305 | blk_cleanup_queue(bank->disk->queue); | ||
306 | if (bank->disk->major > 0) | 284 | if (bank->disk->major > 0) |
307 | unregister_blkdev(bank->disk->major, | 285 | unregister_blkdev(bank->disk->major, |
308 | bank->disk->disk_name); | 286 | bank->disk->disk_name); |
@@ -329,9 +307,7 @@ axon_ram_remove(struct of_device *device) | |||
329 | BUG_ON(!bank || !bank->disk); | 307 | BUG_ON(!bank || !bank->disk); |
330 | 308 | ||
331 | device_remove_file(&device->dev, &dev_attr_ecc); | 309 | device_remove_file(&device->dev, &dev_attr_ecc); |
332 | free_irq(bank->irq_uncorrectable, device); | 310 | free_irq(bank->irq_id, device); |
333 | free_irq(bank->irq_correctable, device); | ||
334 | blk_cleanup_queue(bank->disk->queue); | ||
335 | unregister_blkdev(bank->disk->major, bank->disk->disk_name); | 311 | unregister_blkdev(bank->disk->major, bank->disk->disk_name); |
336 | del_gendisk(bank->disk); | 312 | del_gendisk(bank->disk); |
337 | iounmap((void __iomem *) bank->io_addr); | 313 | iounmap((void __iomem *) bank->io_addr); |
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index 9fb0ce5c7176..114c90f8f560 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
@@ -251,6 +251,8 @@ DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568E, quirk_fsl_pcie_transpare | |||
251 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent); | 251 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8568, quirk_fsl_pcie_transparent); |
252 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent); | 252 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567E, quirk_fsl_pcie_transparent); |
253 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent); | 253 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8567, quirk_fsl_pcie_transparent); |
254 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transparent); | ||
255 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); | ||
254 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); | 256 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); |
255 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); | 257 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); |
256 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); | 258 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); |
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 565f57d777fe..f3abce11bead 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | #include <linux/device.h> | 23 | #include <linux/device.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/of_platform.h> | ||
25 | #include <linux/phy.h> | 26 | #include <linux/phy.h> |
26 | #include <linux/fsl_devices.h> | 27 | #include <linux/fsl_devices.h> |
27 | #include <linux/fs_enet_pd.h> | 28 | #include <linux/fs_enet_pd.h> |
diff --git a/arch/powerpc/sysdev/rtc_cmos_setup.c b/arch/powerpc/sysdev/rtc_cmos_setup.c index e276048b8c5f..0c9ac7ee08fb 100644 --- a/arch/powerpc/sysdev/rtc_cmos_setup.c +++ b/arch/powerpc/sysdev/rtc_cmos_setup.c | |||
@@ -20,14 +20,16 @@ static int __init add_rtc(void) | |||
20 | { | 20 | { |
21 | struct device_node *np; | 21 | struct device_node *np; |
22 | struct platform_device *pd; | 22 | struct platform_device *pd; |
23 | struct resource res; | 23 | struct resource res[2]; |
24 | int ret; | 24 | int ret; |
25 | 25 | ||
26 | memset(&res, 0, sizeof(res)); | ||
27 | |||
26 | np = of_find_compatible_node(NULL, NULL, "pnpPNP,b00"); | 28 | np = of_find_compatible_node(NULL, NULL, "pnpPNP,b00"); |
27 | if (!np) | 29 | if (!np) |
28 | return -ENODEV; | 30 | return -ENODEV; |
29 | 31 | ||
30 | ret = of_address_to_resource(np, 0, &res); | 32 | ret = of_address_to_resource(np, 0, &res[0]); |
31 | of_node_put(np); | 33 | of_node_put(np); |
32 | if (ret) | 34 | if (ret) |
33 | return ret; | 35 | return ret; |
@@ -36,11 +38,18 @@ static int __init add_rtc(void) | |||
36 | * RTC_PORT(x) is hardcoded in asm/mc146818rtc.h. Verify that the | 38 | * RTC_PORT(x) is hardcoded in asm/mc146818rtc.h. Verify that the |
37 | * address provided by the device node matches. | 39 | * address provided by the device node matches. |
38 | */ | 40 | */ |
39 | if (res.start != RTC_PORT(0)) | 41 | if (res[0].start != RTC_PORT(0)) |
40 | return -EINVAL; | 42 | return -EINVAL; |
41 | 43 | ||
44 | /* Use a fixed interrupt value of 8 since on PPC if we are using this | ||
45 | * its off an i8259 which we ensure has interrupt numbers 0..15. */ | ||
46 | res[1].start = 8; | ||
47 | res[1].end = 8; | ||
48 | res[1].flags = IORESOURCE_IRQ; | ||
49 | |||
42 | pd = platform_device_register_simple("rtc_cmos", -1, | 50 | pd = platform_device_register_simple("rtc_cmos", -1, |
43 | &res, 1); | 51 | &res[0], 2); |
52 | |||
44 | if (IS_ERR(pd)) | 53 | if (IS_ERR(pd)) |
45 | return PTR_ERR(pd); | 54 | return PTR_ERR(pd); |
46 | 55 | ||