aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/configs/mpc85xx_cds_defconfig846
-rw-r--r--arch/powerpc/kernel/crash.c13
-rw-r--r--arch/powerpc/kernel/iomap.c2
-rw-r--r--arch/powerpc/kernel/pci_64.c40
-rw-r--r--arch/powerpc/kernel/time.c10
-rw-r--r--arch/powerpc/mm/hash_utils_64.c2
-rw-r--r--arch/powerpc/mm/mem.c6
-rw-r--r--arch/powerpc/mm/numa.c8
-rw-r--r--arch/powerpc/oprofile/common.c2
-rw-r--r--arch/powerpc/platforms/85xx/Kconfig9
-rw-r--r--arch/powerpc/platforms/85xx/Makefile1
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_cds.c359
-rw-r--r--arch/powerpc/platforms/85xx/mpc85xx_cds.h43
-rw-r--r--arch/powerpc/platforms/iseries/mf.c9
-rw-r--r--arch/powerpc/platforms/iseries/pci.c3
-rw-r--r--arch/powerpc/platforms/iseries/setup.c9
-rw-r--r--arch/powerpc/platforms/maple/pci.c3
-rw-r--r--arch/powerpc/platforms/maple/setup.c2
-rw-r--r--arch/powerpc/platforms/powermac/feature.c2
-rw-r--r--arch/powerpc/platforms/powermac/pci.c3
-rw-r--r--arch/powerpc/platforms/pseries/eeh_driver.c13
-rw-r--r--arch/powerpc/platforms/pseries/eeh_event.c50
-rw-r--r--arch/powerpc/platforms/pseries/rtasd.c6
-rw-r--r--arch/powerpc/platforms/pseries/setup.c6
-rw-r--r--arch/powerpc/platforms/pseries/xics.c25
-rw-r--r--drivers/char/hvsi.c2
-rw-r--r--drivers/net/ibmveth.c2
-rw-r--r--include/asm-powerpc/eeh.h15
-rw-r--r--include/asm-powerpc/eeh_event.h10
-rw-r--r--include/asm-powerpc/io.h6
-rw-r--r--include/asm-ppc/mpc85xx.h3
31 files changed, 1363 insertions, 147 deletions
diff --git a/arch/powerpc/configs/mpc85xx_cds_defconfig b/arch/powerpc/configs/mpc85xx_cds_defconfig
new file mode 100644
index 000000000000..9bb022a523fe
--- /dev/null
+++ b/arch/powerpc/configs/mpc85xx_cds_defconfig
@@ -0,0 +1,846 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16
4# Sun Apr 2 11:23:42 2006
5#
6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y
8CONFIG_PPC_MERGE=y
9CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_RWSEM_XCHGADD_ALGORITHM=y
12CONFIG_GENERIC_HWEIGHT=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_PPC=y
15CONFIG_EARLY_PRINTK=y
16CONFIG_GENERIC_NVRAM=y
17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
18CONFIG_ARCH_MAY_HAVE_PC_FDC=y
19CONFIG_PPC_OF=y
20CONFIG_PPC_UDBG_16550=y
21# CONFIG_GENERIC_TBSYNC is not set
22# CONFIG_DEFAULT_UIMAGE is not set
23
24#
25# Processor support
26#
27# CONFIG_CLASSIC32 is not set
28# CONFIG_PPC_52xx is not set
29# CONFIG_PPC_82xx is not set
30# CONFIG_PPC_83xx is not set
31CONFIG_PPC_85xx=y
32# CONFIG_40x is not set
33# CONFIG_44x is not set
34# CONFIG_8xx is not set
35# CONFIG_E200 is not set
36CONFIG_85xx=y
37CONFIG_E500=y
38CONFIG_BOOKE=y
39CONFIG_FSL_BOOKE=y
40# CONFIG_PHYS_64BIT is not set
41CONFIG_SPE=y
42
43#
44# Code maturity level options
45#
46CONFIG_EXPERIMENTAL=y
47CONFIG_BROKEN_ON_SMP=y
48CONFIG_INIT_ENV_ARG_LIMIT=32
49
50#
51# General setup
52#
53CONFIG_LOCALVERSION=""
54CONFIG_LOCALVERSION_AUTO=y
55CONFIG_SWAP=y
56CONFIG_SYSVIPC=y
57# CONFIG_POSIX_MQUEUE is not set
58# CONFIG_BSD_PROCESS_ACCT is not set
59CONFIG_SYSCTL=y
60# CONFIG_AUDIT is not set
61# CONFIG_IKCONFIG is not set
62# CONFIG_RELAY is not set
63CONFIG_INITRAMFS_SOURCE=""
64# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
65CONFIG_EMBEDDED=y
66CONFIG_KALLSYMS=y
67# CONFIG_KALLSYMS_ALL is not set
68# CONFIG_KALLSYMS_EXTRA_PASS is not set
69CONFIG_HOTPLUG=y
70CONFIG_PRINTK=y
71CONFIG_BUG=y
72CONFIG_ELF_CORE=y
73CONFIG_BASE_FULL=y
74CONFIG_FUTEX=y
75CONFIG_EPOLL=y
76CONFIG_SHMEM=y
77CONFIG_SLAB=y
78# CONFIG_TINY_SHMEM is not set
79CONFIG_BASE_SMALL=0
80# CONFIG_SLOB is not set
81
82#
83# Loadable module support
84#
85# CONFIG_MODULES is not set
86
87#
88# Block layer
89#
90# CONFIG_LBD is not set
91# CONFIG_BLK_DEV_IO_TRACE is not set
92# CONFIG_LSF is not set
93
94#
95# IO Schedulers
96#
97CONFIG_IOSCHED_NOOP=y
98CONFIG_IOSCHED_AS=y
99CONFIG_IOSCHED_DEADLINE=y
100CONFIG_IOSCHED_CFQ=y
101CONFIG_DEFAULT_AS=y
102# CONFIG_DEFAULT_DEADLINE is not set
103# CONFIG_DEFAULT_CFQ is not set
104# CONFIG_DEFAULT_NOOP is not set
105CONFIG_DEFAULT_IOSCHED="anticipatory"
106CONFIG_MPIC=y
107# CONFIG_WANT_EARLY_SERIAL is not set
108
109#
110# Platform support
111#
112# CONFIG_MPC8540_ADS is not set
113CONFIG_MPC85xx_CDS=y
114CONFIG_MPC8540=y
115CONFIG_PPC_INDIRECT_PCI_BE=y
116
117#
118# Kernel options
119#
120# CONFIG_HIGHMEM is not set
121# CONFIG_HZ_100 is not set
122CONFIG_HZ_250=y
123# CONFIG_HZ_1000 is not set
124CONFIG_HZ=250
125CONFIG_PREEMPT_NONE=y
126# CONFIG_PREEMPT_VOLUNTARY is not set
127# CONFIG_PREEMPT is not set
128CONFIG_BINFMT_ELF=y
129CONFIG_BINFMT_MISC=y
130CONFIG_MATH_EMULATION=y
131CONFIG_ARCH_FLATMEM_ENABLE=y
132CONFIG_SELECT_MEMORY_MODEL=y
133CONFIG_FLATMEM_MANUAL=y
134# CONFIG_DISCONTIGMEM_MANUAL is not set
135# CONFIG_SPARSEMEM_MANUAL is not set
136CONFIG_FLATMEM=y
137CONFIG_FLAT_NODE_MEM_MAP=y
138# CONFIG_SPARSEMEM_STATIC is not set
139CONFIG_SPLIT_PTLOCK_CPUS=4
140CONFIG_PROC_DEVICETREE=y
141# CONFIG_CMDLINE_BOOL is not set
142# CONFIG_PM is not set
143# CONFIG_SOFTWARE_SUSPEND is not set
144# CONFIG_SECCOMP is not set
145CONFIG_ISA_DMA_API=y
146
147#
148# Bus options
149#
150CONFIG_PPC_I8259=y
151CONFIG_PPC_INDIRECT_PCI=y
152CONFIG_FSL_SOC=y
153CONFIG_PCI=y
154CONFIG_PCI_DOMAINS=y
155# CONFIG_PCI_DEBUG is not set
156
157#
158# PCCARD (PCMCIA/CardBus) support
159#
160# CONFIG_PCCARD is not set
161
162#
163# PCI Hotplug Support
164#
165# CONFIG_HOTPLUG_PCI is not set
166
167#
168# Advanced setup
169#
170# CONFIG_ADVANCED_OPTIONS is not set
171
172#
173# Default settings for advanced configuration options are used
174#
175CONFIG_HIGHMEM_START=0xfe000000
176CONFIG_LOWMEM_SIZE=0x30000000
177CONFIG_KERNEL_START=0xc0000000
178CONFIG_TASK_SIZE=0x80000000
179CONFIG_BOOT_LOAD=0x00800000
180
181#
182# Networking
183#
184CONFIG_NET=y
185
186#
187# Networking options
188#
189# CONFIG_NETDEBUG is not set
190CONFIG_PACKET=y
191# CONFIG_PACKET_MMAP is not set
192CONFIG_UNIX=y
193# CONFIG_NET_KEY is not set
194CONFIG_INET=y
195CONFIG_IP_MULTICAST=y
196# CONFIG_IP_ADVANCED_ROUTER is not set
197CONFIG_IP_FIB_HASH=y
198CONFIG_IP_PNP=y
199CONFIG_IP_PNP_DHCP=y
200CONFIG_IP_PNP_BOOTP=y
201# CONFIG_IP_PNP_RARP is not set
202# CONFIG_NET_IPIP is not set
203# CONFIG_NET_IPGRE is not set
204# CONFIG_IP_MROUTE is not set
205# CONFIG_ARPD is not set
206CONFIG_SYN_COOKIES=y
207# CONFIG_INET_AH is not set
208# CONFIG_INET_ESP is not set
209# CONFIG_INET_IPCOMP is not set
210# CONFIG_INET_XFRM_TUNNEL is not set
211# CONFIG_INET_TUNNEL is not set
212CONFIG_INET_DIAG=y
213CONFIG_INET_TCP_DIAG=y
214# CONFIG_TCP_CONG_ADVANCED is not set
215CONFIG_TCP_CONG_BIC=y
216# CONFIG_IPV6 is not set
217# CONFIG_INET6_XFRM_TUNNEL is not set
218# CONFIG_INET6_TUNNEL is not set
219# CONFIG_NETFILTER is not set
220
221#
222# DCCP Configuration (EXPERIMENTAL)
223#
224# CONFIG_IP_DCCP is not set
225
226#
227# SCTP Configuration (EXPERIMENTAL)
228#
229# CONFIG_IP_SCTP is not set
230
231#
232# TIPC Configuration (EXPERIMENTAL)
233#
234# CONFIG_TIPC is not set
235# CONFIG_ATM is not set
236# CONFIG_BRIDGE is not set
237# CONFIG_VLAN_8021Q is not set
238# CONFIG_DECNET is not set
239# CONFIG_LLC2 is not set
240# CONFIG_IPX is not set
241# CONFIG_ATALK is not set
242# CONFIG_X25 is not set
243# CONFIG_LAPB is not set
244# CONFIG_NET_DIVERT is not set
245# CONFIG_ECONET is not set
246# CONFIG_WAN_ROUTER is not set
247
248#
249# QoS and/or fair queueing
250#
251# CONFIG_NET_SCHED is not set
252
253#
254# Network testing
255#
256# CONFIG_NET_PKTGEN is not set
257# CONFIG_HAMRADIO is not set
258# CONFIG_IRDA is not set
259# CONFIG_BT is not set
260# CONFIG_IEEE80211 is not set
261
262#
263# Device Drivers
264#
265
266#
267# Generic Driver Options
268#
269CONFIG_STANDALONE=y
270CONFIG_PREVENT_FIRMWARE_BUILD=y
271# CONFIG_FW_LOADER is not set
272# CONFIG_DEBUG_DRIVER is not set
273
274#
275# Connector - unified userspace <-> kernelspace linker
276#
277# CONFIG_CONNECTOR is not set
278
279#
280# Memory Technology Devices (MTD)
281#
282# CONFIG_MTD is not set
283
284#
285# Parallel port support
286#
287# CONFIG_PARPORT is not set
288
289#
290# Plug and Play support
291#
292
293#
294# Block devices
295#
296# CONFIG_BLK_DEV_FD is not set
297# CONFIG_BLK_CPQ_DA is not set
298# CONFIG_BLK_CPQ_CISS_DA is not set
299# CONFIG_BLK_DEV_DAC960 is not set
300# CONFIG_BLK_DEV_UMEM is not set
301# CONFIG_BLK_DEV_COW_COMMON is not set
302CONFIG_BLK_DEV_LOOP=y
303# CONFIG_BLK_DEV_CRYPTOLOOP is not set
304# CONFIG_BLK_DEV_NBD is not set
305# CONFIG_BLK_DEV_SX8 is not set
306CONFIG_BLK_DEV_RAM=y
307CONFIG_BLK_DEV_RAM_COUNT=16
308CONFIG_BLK_DEV_RAM_SIZE=32768
309CONFIG_BLK_DEV_INITRD=y
310# CONFIG_CDROM_PKTCDVD is not set
311# CONFIG_ATA_OVER_ETH is not set
312
313#
314# ATA/ATAPI/MFM/RLL support
315#
316CONFIG_IDE=y
317CONFIG_BLK_DEV_IDE=y
318
319#
320# Please see Documentation/ide.txt for help/info on IDE drives
321#
322# CONFIG_BLK_DEV_IDE_SATA is not set
323# CONFIG_BLK_DEV_IDEDISK is not set
324# CONFIG_IDEDISK_MULTI_MODE is not set
325# CONFIG_BLK_DEV_IDECD is not set
326# CONFIG_BLK_DEV_IDETAPE is not set
327# CONFIG_BLK_DEV_IDEFLOPPY is not set
328# CONFIG_IDE_TASK_IOCTL is not set
329
330#
331# IDE chipset support/bugfixes
332#
333CONFIG_IDE_GENERIC=y
334CONFIG_BLK_DEV_IDEPCI=y
335CONFIG_IDEPCI_SHARE_IRQ=y
336# CONFIG_BLK_DEV_OFFBOARD is not set
337CONFIG_BLK_DEV_GENERIC=y
338# CONFIG_BLK_DEV_OPTI621 is not set
339# CONFIG_BLK_DEV_SL82C105 is not set
340CONFIG_BLK_DEV_IDEDMA_PCI=y
341# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
342# CONFIG_IDEDMA_PCI_AUTO is not set
343# CONFIG_BLK_DEV_AEC62XX is not set
344# CONFIG_BLK_DEV_ALI15X3 is not set
345# CONFIG_BLK_DEV_AMD74XX is not set
346# CONFIG_BLK_DEV_CMD64X is not set
347# CONFIG_BLK_DEV_TRIFLEX is not set
348# CONFIG_BLK_DEV_CY82C693 is not set
349# CONFIG_BLK_DEV_CS5520 is not set
350# CONFIG_BLK_DEV_CS5530 is not set
351# CONFIG_BLK_DEV_HPT34X is not set
352# CONFIG_BLK_DEV_HPT366 is not set
353# CONFIG_BLK_DEV_SC1200 is not set
354# CONFIG_BLK_DEV_PIIX is not set
355# CONFIG_BLK_DEV_IT821X is not set
356# CONFIG_BLK_DEV_NS87415 is not set
357# CONFIG_BLK_DEV_PDC202XX_OLD is not set
358# CONFIG_BLK_DEV_PDC202XX_NEW is not set
359# CONFIG_BLK_DEV_SVWKS is not set
360# CONFIG_BLK_DEV_SIIMAGE is not set
361# CONFIG_BLK_DEV_SLC90E66 is not set
362# CONFIG_BLK_DEV_TRM290 is not set
363CONFIG_BLK_DEV_VIA82CXXX=y
364# CONFIG_IDE_ARM is not set
365CONFIG_BLK_DEV_IDEDMA=y
366# CONFIG_IDEDMA_IVB is not set
367# CONFIG_IDEDMA_AUTO is not set
368# CONFIG_BLK_DEV_HD is not set
369
370#
371# SCSI device support
372#
373# CONFIG_RAID_ATTRS is not set
374# CONFIG_SCSI is not set
375
376#
377# Multi-device support (RAID and LVM)
378#
379# CONFIG_MD is not set
380
381#
382# Fusion MPT device support
383#
384# CONFIG_FUSION is not set
385
386#
387# IEEE 1394 (FireWire) support
388#
389# CONFIG_IEEE1394 is not set
390
391#
392# I2O device support
393#
394# CONFIG_I2O is not set
395
396#
397# Macintosh device drivers
398#
399# CONFIG_WINDFARM is not set
400
401#
402# Network device support
403#
404CONFIG_NETDEVICES=y
405# CONFIG_DUMMY is not set
406# CONFIG_BONDING is not set
407# CONFIG_EQUALIZER is not set
408# CONFIG_TUN is not set
409
410#
411# ARCnet devices
412#
413# CONFIG_ARCNET is not set
414
415#
416# PHY device support
417#
418CONFIG_PHYLIB=y
419
420#
421# MII PHY device drivers
422#
423# CONFIG_MARVELL_PHY is not set
424# CONFIG_DAVICOM_PHY is not set
425# CONFIG_QSEMI_PHY is not set
426# CONFIG_LXT_PHY is not set
427# CONFIG_CICADA_PHY is not set
428
429#
430# Ethernet (10 or 100Mbit)
431#
432CONFIG_NET_ETHERNET=y
433CONFIG_MII=y
434# CONFIG_HAPPYMEAL is not set
435# CONFIG_SUNGEM is not set
436# CONFIG_CASSINI is not set
437# CONFIG_NET_VENDOR_3COM is not set
438
439#
440# Tulip family network device support
441#
442# CONFIG_NET_TULIP is not set
443# CONFIG_HP100 is not set
444# CONFIG_NET_PCI is not set
445
446#
447# Ethernet (1000 Mbit)
448#
449# CONFIG_ACENIC is not set
450# CONFIG_DL2K is not set
451CONFIG_E1000=y
452CONFIG_E1000_NAPI=y
453# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
454# CONFIG_NS83820 is not set
455# CONFIG_HAMACHI is not set
456# CONFIG_YELLOWFIN is not set
457# CONFIG_R8169 is not set
458# CONFIG_SIS190 is not set
459# CONFIG_SKGE is not set
460# CONFIG_SKY2 is not set
461# CONFIG_SK98LIN is not set
462# CONFIG_TIGON3 is not set
463# CONFIG_BNX2 is not set
464CONFIG_GIANFAR=y
465CONFIG_GFAR_NAPI=y
466
467#
468# Ethernet (10000 Mbit)
469#
470# CONFIG_CHELSIO_T1 is not set
471# CONFIG_IXGB is not set
472# CONFIG_S2IO is not set
473
474#
475# Token Ring devices
476#
477# CONFIG_TR is not set
478
479#
480# Wireless LAN (non-hamradio)
481#
482# CONFIG_NET_RADIO is not set
483
484#
485# Wan interfaces
486#
487# CONFIG_WAN is not set
488# CONFIG_FDDI is not set
489# CONFIG_HIPPI is not set
490# CONFIG_PPP is not set
491# CONFIG_SLIP is not set
492# CONFIG_SHAPER is not set
493# CONFIG_NETCONSOLE is not set
494# CONFIG_NETPOLL is not set
495# CONFIG_NET_POLL_CONTROLLER is not set
496
497#
498# ISDN subsystem
499#
500# CONFIG_ISDN is not set
501
502#
503# Telephony Support
504#
505# CONFIG_PHONE is not set
506
507#
508# Input device support
509#
510CONFIG_INPUT=y
511
512#
513# Userland interfaces
514#
515# CONFIG_INPUT_MOUSEDEV is not set
516# CONFIG_INPUT_JOYDEV is not set
517# CONFIG_INPUT_TSDEV is not set
518# CONFIG_INPUT_EVDEV is not set
519# CONFIG_INPUT_EVBUG is not set
520
521#
522# Input Device Drivers
523#
524# CONFIG_INPUT_KEYBOARD is not set
525# CONFIG_INPUT_MOUSE is not set
526# CONFIG_INPUT_JOYSTICK is not set
527# CONFIG_INPUT_TOUCHSCREEN is not set
528# CONFIG_INPUT_MISC is not set
529
530#
531# Hardware I/O ports
532#
533# CONFIG_SERIO is not set
534# CONFIG_GAMEPORT is not set
535
536#
537# Character devices
538#
539# CONFIG_VT is not set
540# CONFIG_SERIAL_NONSTANDARD is not set
541
542#
543# Serial drivers
544#
545CONFIG_SERIAL_8250=y
546CONFIG_SERIAL_8250_CONSOLE=y
547CONFIG_SERIAL_8250_PCI=y
548CONFIG_SERIAL_8250_NR_UARTS=4
549CONFIG_SERIAL_8250_RUNTIME_UARTS=4
550# CONFIG_SERIAL_8250_EXTENDED is not set
551
552#
553# Non-8250 serial port support
554#
555CONFIG_SERIAL_CORE=y
556CONFIG_SERIAL_CORE_CONSOLE=y
557# CONFIG_SERIAL_JSM is not set
558CONFIG_UNIX98_PTYS=y
559CONFIG_LEGACY_PTYS=y
560CONFIG_LEGACY_PTY_COUNT=256
561
562#
563# IPMI
564#
565# CONFIG_IPMI_HANDLER is not set
566
567#
568# Watchdog Cards
569#
570# CONFIG_WATCHDOG is not set
571# CONFIG_NVRAM is not set
572CONFIG_GEN_RTC=y
573# CONFIG_GEN_RTC_X is not set
574# CONFIG_DTLK is not set
575# CONFIG_R3964 is not set
576# CONFIG_APPLICOM is not set
577
578#
579# Ftape, the floppy tape device driver
580#
581# CONFIG_AGP is not set
582# CONFIG_DRM is not set
583# CONFIG_RAW_DRIVER is not set
584
585#
586# TPM devices
587#
588# CONFIG_TCG_TPM is not set
589# CONFIG_TELCLOCK is not set
590
591#
592# I2C support
593#
594# CONFIG_I2C is not set
595
596#
597# SPI support
598#
599# CONFIG_SPI is not set
600# CONFIG_SPI_MASTER is not set
601
602#
603# Dallas's 1-wire bus
604#
605# CONFIG_W1 is not set
606
607#
608# Hardware Monitoring support
609#
610CONFIG_HWMON=y
611# CONFIG_HWMON_VID is not set
612# CONFIG_SENSORS_F71805F is not set
613# CONFIG_HWMON_DEBUG_CHIP is not set
614
615#
616# Misc devices
617#
618
619#
620# Multimedia devices
621#
622# CONFIG_VIDEO_DEV is not set
623
624#
625# Digital Video Broadcasting Devices
626#
627# CONFIG_DVB is not set
628
629#
630# Graphics support
631#
632# CONFIG_FB is not set
633
634#
635# Sound
636#
637# CONFIG_SOUND is not set
638
639#
640# USB support
641#
642CONFIG_USB_ARCH_HAS_HCD=y
643CONFIG_USB_ARCH_HAS_OHCI=y
644CONFIG_USB_ARCH_HAS_EHCI=y
645# CONFIG_USB is not set
646
647#
648# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
649#
650
651#
652# USB Gadget Support
653#
654# CONFIG_USB_GADGET is not set
655
656#
657# MMC/SD Card support
658#
659# CONFIG_MMC is not set
660
661#
662# LED devices
663#
664# CONFIG_NEW_LEDS is not set
665
666#
667# InfiniBand support
668#
669# CONFIG_INFINIBAND is not set
670
671#
672# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
673#
674
675#
676# Real Time Clock
677#
678# CONFIG_RTC_CLASS is not set
679
680#
681# File systems
682#
683CONFIG_EXT2_FS=y
684# CONFIG_EXT2_FS_XATTR is not set
685# CONFIG_EXT2_FS_XIP is not set
686CONFIG_EXT3_FS=y
687CONFIG_EXT3_FS_XATTR=y
688# CONFIG_EXT3_FS_POSIX_ACL is not set
689# CONFIG_EXT3_FS_SECURITY is not set
690CONFIG_JBD=y
691# CONFIG_JBD_DEBUG is not set
692CONFIG_FS_MBCACHE=y
693# CONFIG_REISERFS_FS is not set
694# CONFIG_JFS_FS is not set
695# CONFIG_FS_POSIX_ACL is not set
696# CONFIG_XFS_FS is not set
697# CONFIG_OCFS2_FS is not set
698# CONFIG_MINIX_FS is not set
699# CONFIG_ROMFS_FS is not set
700CONFIG_INOTIFY=y
701# CONFIG_QUOTA is not set
702CONFIG_DNOTIFY=y
703# CONFIG_AUTOFS_FS is not set
704# CONFIG_AUTOFS4_FS is not set
705# CONFIG_FUSE_FS is not set
706
707#
708# CD-ROM/DVD Filesystems
709#
710# CONFIG_ISO9660_FS is not set
711# CONFIG_UDF_FS is not set
712
713#
714# DOS/FAT/NT Filesystems
715#
716# CONFIG_MSDOS_FS is not set
717# CONFIG_VFAT_FS is not set
718# CONFIG_NTFS_FS is not set
719
720#
721# Pseudo filesystems
722#
723CONFIG_PROC_FS=y
724CONFIG_PROC_KCORE=y
725CONFIG_SYSFS=y
726CONFIG_TMPFS=y
727# CONFIG_HUGETLB_PAGE is not set
728CONFIG_RAMFS=y
729# CONFIG_CONFIGFS_FS is not set
730
731#
732# Miscellaneous filesystems
733#
734# CONFIG_ADFS_FS is not set
735# CONFIG_AFFS_FS is not set
736# CONFIG_HFS_FS is not set
737# CONFIG_HFSPLUS_FS is not set
738# CONFIG_BEFS_FS is not set
739# CONFIG_BFS_FS is not set
740# CONFIG_EFS_FS is not set
741# CONFIG_CRAMFS is not set
742# CONFIG_VXFS_FS is not set
743# CONFIG_HPFS_FS is not set
744# CONFIG_QNX4FS_FS is not set
745# CONFIG_SYSV_FS is not set
746# CONFIG_UFS_FS is not set
747
748#
749# Network File Systems
750#
751CONFIG_NFS_FS=y
752# CONFIG_NFS_V3 is not set
753# CONFIG_NFS_V4 is not set
754# CONFIG_NFS_DIRECTIO is not set
755# CONFIG_NFSD is not set
756CONFIG_ROOT_NFS=y
757CONFIG_LOCKD=y
758CONFIG_NFS_COMMON=y
759CONFIG_SUNRPC=y
760# CONFIG_RPCSEC_GSS_KRB5 is not set
761# CONFIG_RPCSEC_GSS_SPKM3 is not set
762# CONFIG_SMB_FS is not set
763# CONFIG_CIFS is not set
764# CONFIG_NCP_FS is not set
765# CONFIG_CODA_FS is not set
766# CONFIG_AFS_FS is not set
767# CONFIG_9P_FS is not set
768
769#
770# Partition Types
771#
772CONFIG_PARTITION_ADVANCED=y
773# CONFIG_ACORN_PARTITION is not set
774# CONFIG_OSF_PARTITION is not set
775# CONFIG_AMIGA_PARTITION is not set
776# CONFIG_ATARI_PARTITION is not set
777# CONFIG_MAC_PARTITION is not set
778# CONFIG_MSDOS_PARTITION is not set
779# CONFIG_LDM_PARTITION is not set
780# CONFIG_SGI_PARTITION is not set
781# CONFIG_ULTRIX_PARTITION is not set
782# CONFIG_SUN_PARTITION is not set
783# CONFIG_KARMA_PARTITION is not set
784# CONFIG_EFI_PARTITION is not set
785
786#
787# Native Language Support
788#
789# CONFIG_NLS is not set
790
791#
792# Library routines
793#
794# CONFIG_CRC_CCITT is not set
795# CONFIG_CRC16 is not set
796CONFIG_CRC32=y
797# CONFIG_LIBCRC32C is not set
798
799#
800# Instrumentation Support
801#
802# CONFIG_PROFILING is not set
803
804#
805# Kernel hacking
806#
807# CONFIG_PRINTK_TIME is not set
808# CONFIG_MAGIC_SYSRQ is not set
809CONFIG_DEBUG_KERNEL=y
810CONFIG_LOG_BUF_SHIFT=14
811CONFIG_DETECT_SOFTLOCKUP=y
812# CONFIG_SCHEDSTATS is not set
813# CONFIG_DEBUG_SLAB is not set
814CONFIG_DEBUG_MUTEXES=y
815# CONFIG_DEBUG_SPINLOCK is not set
816# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
817# CONFIG_DEBUG_KOBJECT is not set
818# CONFIG_DEBUG_INFO is not set
819# CONFIG_DEBUG_FS is not set
820# CONFIG_DEBUG_VM is not set
821# CONFIG_UNWIND_INFO is not set
822CONFIG_FORCED_INLINING=y
823# CONFIG_RCU_TORTURE_TEST is not set
824# CONFIG_DEBUGGER is not set
825# CONFIG_BDI_SWITCH is not set
826# CONFIG_BOOTX_TEXT is not set
827# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
828# CONFIG_PPC_EARLY_DEBUG_G5 is not set
829# CONFIG_PPC_EARLY_DEBUG_RTAS is not set
830# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
831# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
832
833#
834# Security options
835#
836# CONFIG_KEYS is not set
837# CONFIG_SECURITY is not set
838
839#
840# Cryptographic options
841#
842# CONFIG_CRYPTO is not set
843
844#
845# Hardware crypto devices
846#
diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c
index 778f22fd85d2..dbcb85994f46 100644
--- a/arch/powerpc/kernel/crash.c
+++ b/arch/powerpc/kernel/crash.c
@@ -22,6 +22,7 @@
22#include <linux/elf.h> 22#include <linux/elf.h>
23#include <linux/elfcore.h> 23#include <linux/elfcore.h>
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/irq.h>
25#include <linux/types.h> 26#include <linux/types.h>
26 27
27#include <asm/processor.h> 28#include <asm/processor.h>
@@ -174,6 +175,8 @@ static void crash_kexec_prepare_cpus(void)
174 175
175void default_machine_crash_shutdown(struct pt_regs *regs) 176void default_machine_crash_shutdown(struct pt_regs *regs)
176{ 177{
178 unsigned int irq;
179
177 /* 180 /*
178 * This function is only called after the system 181 * This function is only called after the system
179 * has paniced or is otherwise in a critical state. 182 * has paniced or is otherwise in a critical state.
@@ -186,6 +189,16 @@ void default_machine_crash_shutdown(struct pt_regs *regs)
186 */ 189 */
187 local_irq_disable(); 190 local_irq_disable();
188 191
192 for_each_irq(irq) {
193 struct irq_desc *desc = irq_descp(irq);
194
195 if (desc->status & IRQ_INPROGRESS)
196 desc->handler->end(irq);
197
198 if (!(desc->status & IRQ_DISABLED))
199 desc->handler->disable(irq);
200 }
201
189 if (ppc_md.kexec_cpu_down) 202 if (ppc_md.kexec_cpu_down)
190 ppc_md.kexec_cpu_down(1, 0); 203 ppc_md.kexec_cpu_down(1, 0);
191 204
diff --git a/arch/powerpc/kernel/iomap.c b/arch/powerpc/kernel/iomap.c
index fd8214caedee..a13a93dfc655 100644
--- a/arch/powerpc/kernel/iomap.c
+++ b/arch/powerpc/kernel/iomap.c
@@ -106,8 +106,6 @@ EXPORT_SYMBOL(iowrite32_rep);
106 106
107void __iomem *ioport_map(unsigned long port, unsigned int len) 107void __iomem *ioport_map(unsigned long port, unsigned int len)
108{ 108{
109 if (!_IO_IS_VALID(port))
110 return NULL;
111 return (void __iomem *) (port+pci_io_base); 109 return (void __iomem *) (port+pci_io_base);
112} 110}
113 111
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 4c4449be81ce..e1b3b3ef1912 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -42,14 +42,6 @@
42unsigned long pci_probe_only = 1; 42unsigned long pci_probe_only = 1;
43int pci_assign_all_buses = 0; 43int pci_assign_all_buses = 0;
44 44
45/*
46 * legal IO pages under MAX_ISA_PORT. This is to ensure we don't touch
47 * devices we don't have access to.
48 */
49unsigned long io_page_mask;
50
51EXPORT_SYMBOL(io_page_mask);
52
53#ifdef CONFIG_PPC_MULTIPLATFORM 45#ifdef CONFIG_PPC_MULTIPLATFORM
54static void fixup_resource(struct resource *res, struct pci_dev *dev); 46static void fixup_resource(struct resource *res, struct pci_dev *dev);
55static void do_bus_setup(struct pci_bus *bus); 47static void do_bus_setup(struct pci_bus *bus);
@@ -605,7 +597,7 @@ static int __init pcibios_init(void)
605 iSeries_pcibios_init(); 597 iSeries_pcibios_init();
606#endif 598#endif
607 599
608 printk("PCI: Probing PCI hardware\n"); 600 printk(KERN_DEBUG "PCI: Probing PCI hardware\n");
609 601
610 /* Scan all of the recorded PCI controllers. */ 602 /* Scan all of the recorded PCI controllers. */
611 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { 603 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
@@ -630,14 +622,14 @@ static int __init pcibios_init(void)
630 /* Cache the location of the ISA bridge (if we have one) */ 622 /* Cache the location of the ISA bridge (if we have one) */
631 ppc64_isabridge_dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL); 623 ppc64_isabridge_dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL);
632 if (ppc64_isabridge_dev != NULL) 624 if (ppc64_isabridge_dev != NULL)
633 printk("ISA bridge at %s\n", pci_name(ppc64_isabridge_dev)); 625 printk(KERN_DEBUG "ISA bridge at %s\n", pci_name(ppc64_isabridge_dev));
634 626
635#ifdef CONFIG_PPC_MULTIPLATFORM 627#ifdef CONFIG_PPC_MULTIPLATFORM
636 /* map in PCI I/O space */ 628 /* map in PCI I/O space */
637 phbs_remap_io(); 629 phbs_remap_io();
638#endif 630#endif
639 631
640 printk("PCI: Probing PCI hardware done\n"); 632 printk(KERN_DEBUG "PCI: Probing PCI hardware done\n");
641 633
642 return 0; 634 return 0;
643} 635}
@@ -804,7 +796,7 @@ static pgprot_t __pci_mmap_set_pgprot(struct pci_dev *dev, struct resource *rp,
804 else 796 else
805 prot |= _PAGE_GUARDED; 797 prot |= _PAGE_GUARDED;
806 798
807 printk("PCI map for %s:%lx, prot: %lx\n", pci_name(dev), rp->start, 799 printk(KERN_DEBUG "PCI map for %s:%lx, prot: %lx\n", pci_name(dev), rp->start,
808 prot); 800 prot);
809 801
810 return __pgprot(prot); 802 return __pgprot(prot);
@@ -1104,8 +1096,6 @@ void __init pci_setup_phb_io(struct pci_controller *hose, int primary)
1104 pci_process_ISA_OF_ranges(isa_dn, hose->io_base_phys, 1096 pci_process_ISA_OF_ranges(isa_dn, hose->io_base_phys,
1105 hose->io_base_virt); 1097 hose->io_base_virt);
1106 of_node_put(isa_dn); 1098 of_node_put(isa_dn);
1107 /* Allow all IO */
1108 io_page_mask = -1;
1109 } 1099 }
1110 } 1100 }
1111 1101
@@ -1212,7 +1202,7 @@ int remap_bus_range(struct pci_bus *bus)
1212 return 1; 1202 return 1;
1213 if (start_phys == 0) 1203 if (start_phys == 0)
1214 return 1; 1204 return 1;
1215 printk("mapping IO %lx -> %lx, size: %lx\n", start_phys, start_virt, size); 1205 printk(KERN_DEBUG "mapping IO %lx -> %lx, size: %lx\n", start_phys, start_virt, size);
1216 if (__ioremap_explicit(start_phys, start_virt, size, 1206 if (__ioremap_explicit(start_phys, start_virt, size,
1217 _PAGE_NO_CACHE | _PAGE_GUARDED)) 1207 _PAGE_NO_CACHE | _PAGE_GUARDED))
1218 return 1; 1208 return 1;
@@ -1232,27 +1222,13 @@ static void phbs_remap_io(void)
1232static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev) 1222static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev)
1233{ 1223{
1234 struct pci_controller *hose = pci_bus_to_host(dev->bus); 1224 struct pci_controller *hose = pci_bus_to_host(dev->bus);
1235 unsigned long start, end, mask, offset; 1225 unsigned long offset;
1236 1226
1237 if (res->flags & IORESOURCE_IO) { 1227 if (res->flags & IORESOURCE_IO) {
1238 offset = (unsigned long)hose->io_base_virt - pci_io_base; 1228 offset = (unsigned long)hose->io_base_virt - pci_io_base;
1239 1229
1240 start = res->start += offset; 1230 res->start += offset;
1241 end = res->end += offset; 1231 res->end += offset;
1242
1243 /* Need to allow IO access to pages that are in the
1244 ISA range */
1245 if (start < MAX_ISA_PORT) {
1246 if (end > MAX_ISA_PORT)
1247 end = MAX_ISA_PORT;
1248
1249 start >>= PAGE_SHIFT;
1250 end >>= PAGE_SHIFT;
1251
1252 /* get the range of pages for the map */
1253 mask = ((1 << (end+1)) - 1) ^ ((1 << start) - 1);
1254 io_page_mask |= mask;
1255 }
1256 } else if (res->flags & IORESOURCE_MEM) { 1232 } else if (res->flags & IORESOURCE_MEM) {
1257 res->start += hose->pci_mem_offset; 1233 res->start += hose->pci_mem_offset;
1258 res->end += hose->pci_mem_offset; 1234 res->end += hose->pci_mem_offset;
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 24e3ad756de0..528e7f84cb67 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -76,7 +76,6 @@
76 76
77/* keep track of when we need to update the rtc */ 77/* keep track of when we need to update the rtc */
78time_t last_rtc_update; 78time_t last_rtc_update;
79extern int piranha_simulator;
80#ifdef CONFIG_PPC_ISERIES 79#ifdef CONFIG_PPC_ISERIES
81unsigned long iSeries_recal_titan = 0; 80unsigned long iSeries_recal_titan = 0;
82unsigned long iSeries_recal_tb = 0; 81unsigned long iSeries_recal_tb = 0;
@@ -945,9 +944,9 @@ void __init time_init(void)
945 } else { 944 } else {
946 /* Normal PowerPC with timebase register */ 945 /* Normal PowerPC with timebase register */
947 ppc_md.calibrate_decr(); 946 ppc_md.calibrate_decr();
948 printk(KERN_INFO "time_init: decrementer frequency = %lu.%.6lu MHz\n", 947 printk(KERN_DEBUG "time_init: decrementer frequency = %lu.%.6lu MHz\n",
949 ppc_tb_freq / 1000000, ppc_tb_freq % 1000000); 948 ppc_tb_freq / 1000000, ppc_tb_freq % 1000000);
950 printk(KERN_INFO "time_init: processor frequency = %lu.%.6lu MHz\n", 949 printk(KERN_DEBUG "time_init: processor frequency = %lu.%.6lu MHz\n",
951 ppc_proc_freq / 1000000, ppc_proc_freq % 1000000); 950 ppc_proc_freq / 1000000, ppc_proc_freq % 1000000);
952 tb_last_stamp = tb_last_jiffy = get_tb(); 951 tb_last_stamp = tb_last_jiffy = get_tb();
953 } 952 }
@@ -1010,10 +1009,7 @@ void __init time_init(void)
1010 tb_to_ns_scale = scale; 1009 tb_to_ns_scale = scale;
1011 tb_to_ns_shift = shift; 1010 tb_to_ns_shift = shift;
1012 1011
1013#ifdef CONFIG_PPC_ISERIES 1012 tm = get_boot_time();
1014 if (!piranha_simulator)
1015#endif
1016 tm = get_boot_time();
1017 1013
1018 write_seqlock_irqsave(&xtime_lock, flags); 1014 write_seqlock_irqsave(&xtime_lock, flags);
1019 1015
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index c006d9039633..b43ed92ef471 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -319,7 +319,7 @@ static void __init htab_init_page_sizes(void)
319 mmu_virtual_psize = MMU_PAGE_64K; 319 mmu_virtual_psize = MMU_PAGE_64K;
320#endif 320#endif
321 321
322 printk(KERN_INFO "Page orders: linear mapping = %d, others = %d\n", 322 printk(KERN_DEBUG "Page orders: linear mapping = %d, others = %d\n",
323 mmu_psize_defs[mmu_linear_psize].shift, 323 mmu_psize_defs[mmu_linear_psize].shift,
324 mmu_psize_defs[mmu_virtual_psize].shift); 324 mmu_psize_defs[mmu_virtual_psize].shift);
325 325
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 741dd8802d49..69f3b9a20beb 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -299,9 +299,9 @@ void __init paging_init(void)
299 kmap_prot = PAGE_KERNEL; 299 kmap_prot = PAGE_KERNEL;
300#endif /* CONFIG_HIGHMEM */ 300#endif /* CONFIG_HIGHMEM */
301 301
302 printk(KERN_INFO "Top of RAM: 0x%lx, Total RAM: 0x%lx\n", 302 printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
303 top_of_ram, total_ram); 303 top_of_ram, total_ram);
304 printk(KERN_INFO "Memory hole size: %ldMB\n", 304 printk(KERN_DEBUG "Memory hole size: %ldMB\n",
305 (top_of_ram - total_ram) >> 20); 305 (top_of_ram - total_ram) >> 20);
306 /* 306 /*
307 * All pages are DMA-able so we put them all in the DMA zone. 307 * All pages are DMA-able so we put them all in the DMA zone.
@@ -380,7 +380,7 @@ void __init mem_init(void)
380 totalhigh_pages++; 380 totalhigh_pages++;
381 } 381 }
382 totalram_pages += totalhigh_pages; 382 totalram_pages += totalhigh_pages;
383 printk(KERN_INFO "High memory: %luk\n", 383 printk(KERN_DEBUG "High memory: %luk\n",
384 totalhigh_pages << (PAGE_SHIFT-10)); 384 totalhigh_pages << (PAGE_SHIFT-10));
385 } 385 }
386#endif /* CONFIG_HIGHMEM */ 386#endif /* CONFIG_HIGHMEM */
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 0a335f34974c..ea816c618a7b 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -465,9 +465,9 @@ static void __init setup_nonnuma(void)
465 unsigned long total_ram = lmb_phys_mem_size(); 465 unsigned long total_ram = lmb_phys_mem_size();
466 unsigned int i; 466 unsigned int i;
467 467
468 printk(KERN_INFO "Top of RAM: 0x%lx, Total RAM: 0x%lx\n", 468 printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
469 top_of_ram, total_ram); 469 top_of_ram, total_ram);
470 printk(KERN_INFO "Memory hole size: %ldMB\n", 470 printk(KERN_DEBUG "Memory hole size: %ldMB\n",
471 (top_of_ram - total_ram) >> 20); 471 (top_of_ram - total_ram) >> 20);
472 472
473 for (i = 0; i < lmb.memory.cnt; ++i) 473 for (i = 0; i < lmb.memory.cnt; ++i)
@@ -485,7 +485,7 @@ void __init dump_numa_cpu_topology(void)
485 return; 485 return;
486 486
487 for_each_online_node(node) { 487 for_each_online_node(node) {
488 printk(KERN_INFO "Node %d CPUs:", node); 488 printk(KERN_DEBUG "Node %d CPUs:", node);
489 489
490 count = 0; 490 count = 0;
491 /* 491 /*
@@ -521,7 +521,7 @@ static void __init dump_numa_memory_topology(void)
521 for_each_online_node(node) { 521 for_each_online_node(node) {
522 unsigned long i; 522 unsigned long i;
523 523
524 printk(KERN_INFO "Node %d Memory:", node); 524 printk(KERN_DEBUG "Node %d Memory:", node);
525 525
526 count = 0; 526 count = 0;
527 527
diff --git a/arch/powerpc/oprofile/common.c b/arch/powerpc/oprofile/common.c
index 5b1de7e8041e..38a2f9c17187 100644
--- a/arch/powerpc/oprofile/common.c
+++ b/arch/powerpc/oprofile/common.c
@@ -162,7 +162,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
162 ops->stop = op_powerpc_stop; 162 ops->stop = op_powerpc_stop;
163 ops->backtrace = op_powerpc_backtrace; 163 ops->backtrace = op_powerpc_backtrace;
164 164
165 printk(KERN_INFO "oprofile: using %s performance monitoring.\n", 165 printk(KERN_DEBUG "oprofile: using %s performance monitoring.\n",
166 ops->cpu_type); 166 ops->cpu_type);
167 167
168 return 0; 168 return 0;
diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig
index 06e371282f57..454fc53289ab 100644
--- a/arch/powerpc/platforms/85xx/Kconfig
+++ b/arch/powerpc/platforms/85xx/Kconfig
@@ -11,13 +11,20 @@ config MPC8540_ADS
11 help 11 help
12 This option enables support for the MPC 8540 ADS board 12 This option enables support for the MPC 8540 ADS board
13 13
14config MPC85xx_CDS
15 bool "Freescale MPC85xx CDS"
16 select DEFAULT_UIMAGE
17 select PPC_I8259 if PCI
18 help
19 This option enables support for the MPC85xx CDS board
20
14endchoice 21endchoice
15 22
16config MPC8540 23config MPC8540
17 bool 24 bool
18 select PPC_UDBG_16550 25 select PPC_UDBG_16550
19 select PPC_INDIRECT_PCI 26 select PPC_INDIRECT_PCI
20 default y if MPC8540_ADS 27 default y if MPC8540_ADS || MPC85xx_CDS
21 28
22config PPC_INDIRECT_PCI_BE 29config PPC_INDIRECT_PCI_BE
23 bool 30 bool
diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile
index ffc4139cb214..7615aa59c78b 100644
--- a/arch/powerpc/platforms/85xx/Makefile
+++ b/arch/powerpc/platforms/85xx/Makefile
@@ -3,3 +3,4 @@
3# 3#
4obj-$(CONFIG_PPC_85xx) += misc.o pci.o 4obj-$(CONFIG_PPC_85xx) += misc.o pci.o
5obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o 5obj-$(CONFIG_MPC8540_ADS) += mpc85xx_ads.o
6obj-$(CONFIG_MPC85xx_CDS) += mpc85xx_cds.o
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
new file mode 100644
index 000000000000..18e6e11f7020
--- /dev/null
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -0,0 +1,359 @@
1/*
2 * MPC85xx setup and early boot code plus other random bits.
3 *
4 * Maintained by Kumar Gala (see MAINTAINERS for contact information)
5 *
6 * Copyright 2005 Freescale Semiconductor Inc.
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
14#include <linux/config.h>
15#include <linux/stddef.h>
16#include <linux/kernel.h>
17#include <linux/init.h>
18#include <linux/errno.h>
19#include <linux/reboot.h>
20#include <linux/pci.h>
21#include <linux/kdev_t.h>
22#include <linux/major.h>
23#include <linux/console.h>
24#include <linux/delay.h>
25#include <linux/seq_file.h>
26#include <linux/root_dev.h>
27#include <linux/initrd.h>
28#include <linux/module.h>
29#include <linux/fsl_devices.h>
30
31#include <asm/system.h>
32#include <asm/pgtable.h>
33#include <asm/page.h>
34#include <asm/atomic.h>
35#include <asm/time.h>
36#include <asm/io.h>
37#include <asm/machdep.h>
38#include <asm/ipic.h>
39#include <asm/bootinfo.h>
40#include <asm/pci-bridge.h>
41#include <asm/mpc85xx.h>
42#include <asm/irq.h>
43#include <mm/mmu_decl.h>
44#include <asm/prom.h>
45#include <asm/udbg.h>
46#include <asm/mpic.h>
47#include <asm/i8259.h>
48
49#include <sysdev/fsl_soc.h>
50#include "mpc85xx.h"
51
52#ifndef CONFIG_PCI
53unsigned long isa_io_base = 0;
54unsigned long isa_mem_base = 0;
55#endif
56
57static int cds_pci_slot = 2;
58static volatile u8 *cadmus;
59
60/*
61 * Internal interrupts are all Level Sensitive, and Positive Polarity
62 *
63 * Note: Likely, this table and the following function should be
64 * obtained and derived from the OF Device Tree.
65 */
66static u_char mpc85xx_cds_openpic_initsenses[] __initdata = {
67 MPC85XX_INTERNAL_IRQ_SENSES,
68#if defined(CONFIG_PCI)
69 (IRQ_SENSE_LEVEL | IRQ_POLARITY_POSITIVE), /* Ext 0: PCI slot 0 */
70 (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 1: PCI slot 1 */
71 (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 2: PCI slot 2 */
72 (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 3: PCI slot 3 */
73#else
74 0x0, /* External 0: */
75 0x0, /* External 1: */
76 0x0, /* External 2: */
77 0x0, /* External 3: */
78#endif
79 (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 5: PHY */
80 0x0, /* External 6: */
81 0x0, /* External 7: */
82 0x0, /* External 8: */
83 0x0, /* External 9: */
84 0x0, /* External 10: */
85#ifdef CONFIG_PCI
86 (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* Ext 11: PCI2 slot 0 */
87#else
88 0x0, /* External 11: */
89#endif
90};
91
92
93#ifdef CONFIG_PCI
94/*
95 * interrupt routing
96 */
97int
98mpc85xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
99{
100 struct pci_controller *hose = pci_bus_to_hose(dev->bus->number);
101
102 if (!hose->index)
103 {
104 /* Handle PCI1 interrupts */
105 char pci_irq_table[][4] =
106 /*
107 * PCI IDSEL/INTPIN->INTLINE
108 * A B C D
109 */
110
111 /* Note IRQ assignment for slots is based on which slot the elysium is
112 * in -- in this setup elysium is in slot #2 (this PIRQA as first
113 * interrupt on slot */
114 {
115 { 0, 1, 2, 3 }, /* 16 - PMC */
116 { 0, 1, 2, 3 }, /* 17 P2P (Tsi320) */
117 { 0, 1, 2, 3 }, /* 18 - Slot 1 */
118 { 1, 2, 3, 0 }, /* 19 - Slot 2 */
119 { 2, 3, 0, 1 }, /* 20 - Slot 3 */
120 { 3, 0, 1, 2 }, /* 21 - Slot 4 */
121 };
122
123 const long min_idsel = 16, max_idsel = 21, irqs_per_slot = 4;
124 int i, j;
125
126 for (i = 0; i < 6; i++)
127 for (j = 0; j < 4; j++)
128 pci_irq_table[i][j] =
129 ((pci_irq_table[i][j] + 5 -
130 cds_pci_slot) & 0x3) + PIRQ0A;
131
132 return PCI_IRQ_TABLE_LOOKUP;
133 } else {
134 /* Handle PCI2 interrupts (if we have one) */
135 char pci_irq_table[][4] =
136 {
137 /*
138 * We only have one slot and one interrupt
139 * going to PIRQA - PIRQD */
140 { PIRQ1A, PIRQ1A, PIRQ1A, PIRQ1A }, /* 21 - slot 0 */
141 };
142
143 const long min_idsel = 21, max_idsel = 21, irqs_per_slot = 4;
144
145 return PCI_IRQ_TABLE_LOOKUP;
146 }
147}
148
149#define ARCADIA_HOST_BRIDGE_IDSEL 17
150#define ARCADIA_2ND_BRIDGE_IDSEL 3
151
152extern int mpc85xx_pci2_busno;
153
154int
155mpc85xx_exclude_device(u_char bus, u_char devfn)
156{
157 if (bus == 0 && PCI_SLOT(devfn) == 0)
158 return PCIBIOS_DEVICE_NOT_FOUND;
159 if (mpc85xx_pci2_busno)
160 if (bus == (mpc85xx_pci2_busno) && PCI_SLOT(devfn) == 0)
161 return PCIBIOS_DEVICE_NOT_FOUND;
162 /* We explicitly do not go past the Tundra 320 Bridge */
163 if ((bus == 1) && (PCI_SLOT(devfn) == ARCADIA_2ND_BRIDGE_IDSEL))
164 return PCIBIOS_DEVICE_NOT_FOUND;
165 if ((bus == 0) && (PCI_SLOT(devfn) == ARCADIA_2ND_BRIDGE_IDSEL))
166 return PCIBIOS_DEVICE_NOT_FOUND;
167 else
168 return PCIBIOS_SUCCESSFUL;
169}
170
171void __init
172mpc85xx_cds_pcibios_fixup(void)
173{
174 struct pci_dev *dev;
175 u_char c;
176
177 if ((dev = pci_get_device(PCI_VENDOR_ID_VIA,
178 PCI_DEVICE_ID_VIA_82C586_1, NULL))) {
179 /*
180 * U-Boot does not set the enable bits
181 * for the IDE device. Force them on here.
182 */
183 pci_read_config_byte(dev, 0x40, &c);
184 c |= 0x03; /* IDE: Chip Enable Bits */
185 pci_write_config_byte(dev, 0x40, c);
186
187 /*
188 * Since only primary interface works, force the
189 * IDE function to standard primary IDE interrupt
190 * w/ 8259 offset
191 */
192 dev->irq = 14;
193 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
194 pci_dev_put(dev);
195 }
196
197 /*
198 * Force legacy USB interrupt routing
199 */
200 if ((dev = pci_get_device(PCI_VENDOR_ID_VIA,
201 PCI_DEVICE_ID_VIA_82C586_2, NULL))) {
202 dev->irq = 10;
203 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 10);
204 pci_dev_put(dev);
205 }
206
207 if ((dev = pci_get_device(PCI_VENDOR_ID_VIA,
208 PCI_DEVICE_ID_VIA_82C586_2, dev))) {
209 dev->irq = 11;
210 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 11);
211 pci_dev_put(dev);
212 }
213}
214#endif /* CONFIG_PCI */
215
216void __init mpc85xx_cds_pic_init(void)
217{
218 struct mpic *mpic1;
219 phys_addr_t OpenPIC_PAddr;
220
221 /* Determine the Physical Address of the OpenPIC regs */
222 OpenPIC_PAddr = get_immrbase() + MPC85xx_OPENPIC_OFFSET;
223
224 mpic1 = mpic_alloc(OpenPIC_PAddr,
225 MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
226 4, MPC85xx_OPENPIC_IRQ_OFFSET, 0, 250,
227 mpc85xx_cds_openpic_initsenses,
228 sizeof(mpc85xx_cds_openpic_initsenses), " OpenPIC ");
229 BUG_ON(mpic1 == NULL);
230 mpic_assign_isu(mpic1, 0, OpenPIC_PAddr + 0x10200);
231 mpic_assign_isu(mpic1, 1, OpenPIC_PAddr + 0x10280);
232 mpic_assign_isu(mpic1, 2, OpenPIC_PAddr + 0x10300);
233 mpic_assign_isu(mpic1, 3, OpenPIC_PAddr + 0x10380);
234 mpic_assign_isu(mpic1, 4, OpenPIC_PAddr + 0x10400);
235 mpic_assign_isu(mpic1, 5, OpenPIC_PAddr + 0x10480);
236 mpic_assign_isu(mpic1, 6, OpenPIC_PAddr + 0x10500);
237 mpic_assign_isu(mpic1, 7, OpenPIC_PAddr + 0x10580);
238
239 /* dummy mappings to get to 48 */
240 mpic_assign_isu(mpic1, 8, OpenPIC_PAddr + 0x10600);
241 mpic_assign_isu(mpic1, 9, OpenPIC_PAddr + 0x10680);
242 mpic_assign_isu(mpic1, 10, OpenPIC_PAddr + 0x10700);
243 mpic_assign_isu(mpic1, 11, OpenPIC_PAddr + 0x10780);
244
245 /* External ints */
246 mpic_assign_isu(mpic1, 12, OpenPIC_PAddr + 0x10000);
247 mpic_assign_isu(mpic1, 13, OpenPIC_PAddr + 0x10080);
248 mpic_assign_isu(mpic1, 14, OpenPIC_PAddr + 0x10100);
249
250 mpic_init(mpic1);
251
252#ifdef CONFIG_PCI
253 mpic_setup_cascade(PIRQ0A, i8259_irq_cascade, NULL);
254
255 i8259_init(0,0);
256#endif
257}
258
259
260/*
261 * Setup the architecture
262 */
263static void __init
264mpc85xx_cds_setup_arch(void)
265{
266 struct device_node *cpu;
267#ifdef CONFIG_PCI
268 struct device_node *np;
269#endif
270
271 if (ppc_md.progress)
272 ppc_md.progress("mpc85xx_cds_setup_arch()", 0);
273
274 cpu = of_find_node_by_type(NULL, "cpu");
275 if (cpu != 0) {
276 unsigned int *fp;
277
278 fp = (int *)get_property(cpu, "clock-frequency", NULL);
279 if (fp != 0)
280 loops_per_jiffy = *fp / HZ;
281 else
282 loops_per_jiffy = 500000000 / HZ;
283 of_node_put(cpu);
284 }
285
286 cadmus = ioremap(CADMUS_BASE, CADMUS_SIZE);
287 cds_pci_slot = ((cadmus[CM_CSR] >> 6) & 0x3) + 1;
288
289 if (ppc_md.progress) {
290 char buf[40];
291 snprintf(buf, 40, "CDS Version = 0x%x in slot %d\n",
292 cadmus[CM_VER], cds_pci_slot);
293 ppc_md.progress(buf, 0);
294 }
295
296#ifdef CONFIG_PCI
297 for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
298 add_bridge(np);
299
300 ppc_md.pcibios_fixup = mpc85xx_cds_pcibios_fixup;
301 ppc_md.pci_swizzle = common_swizzle;
302 ppc_md.pci_map_irq = mpc85xx_map_irq;
303 ppc_md.pci_exclude_device = mpc85xx_exclude_device;
304#endif
305
306#ifdef CONFIG_ROOT_NFS
307 ROOT_DEV = Root_NFS;
308#else
309 ROOT_DEV = Root_HDA1;
310#endif
311}
312
313
314void
315mpc85xx_cds_show_cpuinfo(struct seq_file *m)
316{
317 uint pvid, svid, phid1;
318 uint memsize = total_memory;
319
320 pvid = mfspr(SPRN_PVR);
321 svid = mfspr(SPRN_SVR);
322
323 seq_printf(m, "Vendor\t\t: Freescale Semiconductor\n");
324 seq_printf(m, "Machine\t\t: MPC85xx CDS (0x%x)\n", cadmus[CM_VER]);
325 seq_printf(m, "PVR\t\t: 0x%x\n", pvid);
326 seq_printf(m, "SVR\t\t: 0x%x\n", svid);
327
328 /* Display cpu Pll setting */
329 phid1 = mfspr(SPRN_HID1);
330 seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
331
332 /* Display the amount of memory */
333 seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
334}
335
336
337/*
338 * Called very early, device-tree isn't unflattened
339 */
340static int __init mpc85xx_cds_probe(void)
341{
342 /* We always match for now, eventually we should look at
343 * the flat dev tree to ensure this is the board we are
344 * supposed to run on
345 */
346 return 1;
347}
348
349define_machine(mpc85xx_cds) {
350 .name = "MPC85xx CDS",
351 .probe = mpc85xx_cds_probe,
352 .setup_arch = mpc85xx_cds_setup_arch,
353 .init_IRQ = mpc85xx_cds_pic_init,
354 .show_cpuinfo = mpc85xx_cds_show_cpuinfo,
355 .get_irq = mpic_get_irq,
356 .restart = mpc85xx_restart,
357 .calibrate_decr = generic_calibrate_decr,
358 .progress = udbg_progress,
359};
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.h b/arch/powerpc/platforms/85xx/mpc85xx_cds.h
new file mode 100644
index 000000000000..671f54ff185a
--- /dev/null
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.h
@@ -0,0 +1,43 @@
1/*
2 * arch/ppc/platforms/85xx/mpc85xx_cds_common.h
3 *
4 * MPC85xx CDS board definitions
5 *
6 * Maintainer: Kumar Gala <galak@kernel.crashing.org>
7 *
8 * Copyright 2004 Freescale Semiconductor, Inc
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
14 *
15 */
16
17#ifndef __MACH_MPC85XX_CDS_H__
18#define __MACH_MPC85XX_CDS_H__
19
20/* CADMUS info */
21#define CADMUS_BASE (0xf8004000)
22#define CADMUS_SIZE (256)
23#define CM_VER (0)
24#define CM_CSR (1)
25#define CM_RST (2)
26
27/* CDS NVRAM/RTC */
28#define CDS_RTC_ADDR (0xf8000000)
29#define CDS_RTC_SIZE (8 * 1024)
30
31/* PCI interrupt controller */
32#define PIRQ0A MPC85xx_IRQ_EXT0
33#define PIRQ0B MPC85xx_IRQ_EXT1
34#define PIRQ0C MPC85xx_IRQ_EXT2
35#define PIRQ0D MPC85xx_IRQ_EXT3
36#define PIRQ1A MPC85xx_IRQ_EXT11
37
38#define NR_8259_INTS 16
39#define CPM_IRQ_OFFSET NR_8259_INTS
40
41#define MPC85xx_OPENPIC_IRQ_OFFSET 80
42
43#endif /* __MACH_MPC85XX_CDS_H__ */
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c
index d771b8ee857d..1a2c2a50f922 100644
--- a/arch/powerpc/platforms/iseries/mf.c
+++ b/arch/powerpc/platforms/iseries/mf.c
@@ -45,7 +45,6 @@
45 45
46#include "setup.h" 46#include "setup.h"
47 47
48extern int piranha_simulator;
49static int mf_initialized; 48static int mf_initialized;
50 49
51/* 50/*
@@ -658,7 +657,7 @@ static void mf_clear_src(void)
658 657
659void __init mf_display_progress(u16 value) 658void __init mf_display_progress(u16 value)
660{ 659{
661 if (piranha_simulator || !mf_initialized) 660 if (!mf_initialized)
662 return; 661 return;
663 662
664 if (0xFFFF == value) 663 if (0xFFFF == value)
@@ -1295,9 +1294,6 @@ __initcall(mf_proc_init);
1295 */ 1294 */
1296void iSeries_get_rtc_time(struct rtc_time *rtc_tm) 1295void iSeries_get_rtc_time(struct rtc_time *rtc_tm)
1297{ 1296{
1298 if (piranha_simulator)
1299 return;
1300
1301 mf_get_rtc(rtc_tm); 1297 mf_get_rtc(rtc_tm);
1302 rtc_tm->tm_mon--; 1298 rtc_tm->tm_mon--;
1303} 1299}
@@ -1316,9 +1312,6 @@ unsigned long iSeries_get_boot_time(void)
1316{ 1312{
1317 struct rtc_time tm; 1313 struct rtc_time tm;
1318 1314
1319 if (piranha_simulator)
1320 return 0;
1321
1322 mf_get_boot_rtc(&tm); 1315 mf_get_boot_rtc(&tm);
1323 return mktime(tm.tm_year + 1900, tm.tm_mon, tm.tm_mday, 1316 return mktime(tm.tm_year + 1900, tm.tm_mon, tm.tm_mday,
1324 tm.tm_hour, tm.tm_min, tm.tm_sec); 1317 tm.tm_hour, tm.tm_min, tm.tm_sec);
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c
index a19833b880e4..5a61c6fdb33a 100644
--- a/arch/powerpc/platforms/iseries/pci.c
+++ b/arch/powerpc/platforms/iseries/pci.c
@@ -45,8 +45,6 @@
45#include "call_pci.h" 45#include "call_pci.h"
46#include "iommu.h" 46#include "iommu.h"
47 47
48extern unsigned long io_page_mask;
49
50/* 48/*
51 * Forward declares of prototypes. 49 * Forward declares of prototypes.
52 */ 50 */
@@ -277,7 +275,6 @@ void iSeries_pcibios_init(void)
277{ 275{
278 iomm_table_initialize(); 276 iomm_table_initialize();
279 find_and_init_phbs(); 277 find_and_init_phbs();
280 io_page_mask = -1;
281} 278}
282 279
283/* 280/*
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index a6fd9bedb074..3c51448a1855 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -81,9 +81,6 @@ extern void iSeries_pci_final_fixup(void);
81static void iSeries_pci_final_fixup(void) { } 81static void iSeries_pci_final_fixup(void) { }
82#endif 82#endif
83 83
84/* Global Variables */
85int piranha_simulator;
86
87extern int rd_size; /* Defined in drivers/block/rd.c */ 84extern int rd_size; /* Defined in drivers/block/rd.c */
88extern unsigned long embedded_sysmap_start; 85extern unsigned long embedded_sysmap_start;
89extern unsigned long embedded_sysmap_end; 86extern unsigned long embedded_sysmap_end;
@@ -340,8 +337,6 @@ static void __init iSeries_init_early(void)
340#ifdef CONFIG_SMP 337#ifdef CONFIG_SMP
341 smp_init_iSeries(); 338 smp_init_iSeries();
342#endif 339#endif
343 if (itLpNaca.xPirEnvironMode == 0)
344 piranha_simulator = 1;
345 340
346 /* Associate Lp Event Queue 0 with processor 0 */ 341 /* Associate Lp Event Queue 0 with processor 0 */
347 HvCallEvent_setLpEventQueueInterruptProc(0, 0); 342 HvCallEvent_setLpEventQueueInterruptProc(0, 0);
@@ -536,10 +531,10 @@ static void __init iSeries_setup_arch(void)
536{ 531{
537 if (get_lppaca()->shared_proc) { 532 if (get_lppaca()->shared_proc) {
538 ppc_md.idle_loop = iseries_shared_idle; 533 ppc_md.idle_loop = iseries_shared_idle;
539 printk(KERN_INFO "Using shared processor idle loop\n"); 534 printk(KERN_DEBUG "Using shared processor idle loop\n");
540 } else { 535 } else {
541 ppc_md.idle_loop = iseries_dedicated_idle; 536 ppc_md.idle_loop = iseries_dedicated_idle;
542 printk(KERN_INFO "Using dedicated idle loop\n"); 537 printk(KERN_DEBUG "Using dedicated idle loop\n");
543 } 538 }
544 539
545 /* Setup the Lp Event Queue */ 540 /* Setup the Lp Event Queue */
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c
index 85d6c93659cc..9a4efc0c3b29 100644
--- a/arch/powerpc/platforms/maple/pci.c
+++ b/arch/powerpc/platforms/maple/pci.c
@@ -437,9 +437,6 @@ void __init maple_pci_init(void)
437 437
438 /* Tell pci.c to not change any resource allocations. */ 438 /* Tell pci.c to not change any resource allocations. */
439 pci_probe_only = 1; 439 pci_probe_only = 1;
440
441 /* Allow all IO */
442 io_page_mask = -1;
443} 440}
444 441
445int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel) 442int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c
index 24c0aef4ea39..a0505ea48a86 100644
--- a/arch/powerpc/platforms/maple/setup.c
+++ b/arch/powerpc/platforms/maple/setup.c
@@ -189,7 +189,7 @@ void __init maple_setup_arch(void)
189 conswitchp = &dummy_con; 189 conswitchp = &dummy_con;
190#endif 190#endif
191 191
192 printk(KERN_INFO "Using native/NAP idle loop\n"); 192 printk(KERN_DEBUG "Using native/NAP idle loop\n");
193} 193}
194 194
195/* 195/*
diff --git a/arch/powerpc/platforms/powermac/feature.c b/arch/powerpc/platforms/powermac/feature.c
index a5063cd675c5..85e00cb0006e 100644
--- a/arch/powerpc/platforms/powermac/feature.c
+++ b/arch/powerpc/platforms/powermac/feature.c
@@ -2510,7 +2510,7 @@ found:
2510 if (get_property(np, "flush-on-lock", NULL)) 2510 if (get_property(np, "flush-on-lock", NULL))
2511 break; 2511 break;
2512 powersave_nap = 1; 2512 powersave_nap = 1;
2513 printk(KERN_INFO "Processor NAP mode on idle enabled.\n"); 2513 printk(KERN_DEBUG "Processor NAP mode on idle enabled.\n");
2514 break; 2514 break;
2515 } 2515 }
2516 2516
diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c
index ea179afea632..80035853467b 100644
--- a/arch/powerpc/platforms/powermac/pci.c
+++ b/arch/powerpc/platforms/powermac/pci.c
@@ -1068,9 +1068,6 @@ void __init pmac_pci_init(void)
1068 /* Tell pci.c to not use the common resource allocation mechanism */ 1068 /* Tell pci.c to not use the common resource allocation mechanism */
1069 pci_probe_only = 1; 1069 pci_probe_only = 1;
1070 1070
1071 /* Allow all IO */
1072 io_page_mask = -1;
1073
1074#else /* CONFIG_PPC64 */ 1071#else /* CONFIG_PPC64 */
1075 init_p2pbridge(); 1072 init_p2pbridge();
1076 fixup_nec_usb2(); 1073 fixup_nec_usb2();
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c
index 1fba695e32e8..2a9eb2630730 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -23,9 +23,8 @@
23 * 23 *
24 */ 24 */
25#include <linux/delay.h> 25#include <linux/delay.h>
26#include <linux/irq.h>
27#include <linux/interrupt.h> 26#include <linux/interrupt.h>
28#include <linux/notifier.h> 27#include <linux/irq.h>
29#include <linux/pci.h> 28#include <linux/pci.h>
30#include <asm/eeh.h> 29#include <asm/eeh.h>
31#include <asm/eeh_event.h> 30#include <asm/eeh_event.h>
@@ -250,7 +249,7 @@ static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus)
250 */ 249 */
251#define MAX_WAIT_FOR_RECOVERY 15 250#define MAX_WAIT_FOR_RECOVERY 15
252 251
253void handle_eeh_events (struct eeh_event *event) 252struct pci_dn * handle_eeh_events (struct eeh_event *event)
254{ 253{
255 struct device_node *frozen_dn; 254 struct device_node *frozen_dn;
256 struct pci_dn *frozen_pdn; 255 struct pci_dn *frozen_pdn;
@@ -265,7 +264,7 @@ void handle_eeh_events (struct eeh_event *event)
265 if (!frozen_dn) { 264 if (!frozen_dn) {
266 printk(KERN_ERR "EEH: Error: Cannot find partition endpoint for %s\n", 265 printk(KERN_ERR "EEH: Error: Cannot find partition endpoint for %s\n",
267 pci_name(event->dev)); 266 pci_name(event->dev));
268 return; 267 return NULL;
269 } 268 }
270 269
271 /* There are two different styles for coming up with the PE. 270 /* There are two different styles for coming up with the PE.
@@ -280,7 +279,7 @@ void handle_eeh_events (struct eeh_event *event)
280 if (!frozen_bus) { 279 if (!frozen_bus) {
281 printk(KERN_ERR "EEH: Cannot find PCI bus for %s\n", 280 printk(KERN_ERR "EEH: Cannot find PCI bus for %s\n",
282 frozen_dn->full_name); 281 frozen_dn->full_name);
283 return; 282 return NULL;
284 } 283 }
285 284
286#if 0 285#if 0
@@ -355,7 +354,7 @@ void handle_eeh_events (struct eeh_event *event)
355 /* Tell all device drivers that they can resume operations */ 354 /* Tell all device drivers that they can resume operations */
356 pci_walk_bus(frozen_bus, eeh_report_resume, NULL); 355 pci_walk_bus(frozen_bus, eeh_report_resume, NULL);
357 356
358 return; 357 return frozen_pdn;
359 358
360excess_failures: 359excess_failures:
361 /* 360 /*
@@ -384,6 +383,8 @@ perm_error:
384 383
385 /* Shut down the device drivers for good. */ 384 /* Shut down the device drivers for good. */
386 pcibios_remove_pci_devices(frozen_bus); 385 pcibios_remove_pci_devices(frozen_bus);
386
387 return NULL;
387} 388}
388 389
389/* ---------- end of file ---------- */ 390/* ---------- end of file ---------- */
diff --git a/arch/powerpc/platforms/pseries/eeh_event.c b/arch/powerpc/platforms/pseries/eeh_event.c
index a1bda6f96fd1..a0b39640a00f 100644
--- a/arch/powerpc/platforms/pseries/eeh_event.c
+++ b/arch/powerpc/platforms/pseries/eeh_event.c
@@ -18,6 +18,7 @@
18 * Copyright (c) 2005 Linas Vepstas <linas@linas.org> 18 * Copyright (c) 2005 Linas Vepstas <linas@linas.org>
19 */ 19 */
20 20
21#include <linux/delay.h>
21#include <linux/list.h> 22#include <linux/list.h>
22#include <linux/mutex.h> 23#include <linux/mutex.h>
23#include <linux/pci.h> 24#include <linux/pci.h>
@@ -56,38 +57,43 @@ static int eeh_event_handler(void * dummy)
56{ 57{
57 unsigned long flags; 58 unsigned long flags;
58 struct eeh_event *event; 59 struct eeh_event *event;
60 struct pci_dn *pdn;
59 61
60 daemonize ("eehd"); 62 daemonize ("eehd");
63 set_current_state(TASK_INTERRUPTIBLE);
61 64
62 while (1) { 65 spin_lock_irqsave(&eeh_eventlist_lock, flags);
63 set_current_state(TASK_INTERRUPTIBLE); 66 event = NULL;
64 67
65 spin_lock_irqsave(&eeh_eventlist_lock, flags); 68 /* Unqueue the event, get ready to process. */
66 event = NULL; 69 if (!list_empty(&eeh_eventlist)) {
70 event = list_entry(eeh_eventlist.next, struct eeh_event, list);
71 list_del(&event->list);
72 }
73 spin_unlock_irqrestore(&eeh_eventlist_lock, flags);
67 74
68 /* Unqueue the event, get ready to process. */ 75 if (event == NULL)
69 if (!list_empty(&eeh_eventlist)) { 76 return 0;
70 event = list_entry(eeh_eventlist.next, struct eeh_event, list);
71 list_del(&event->list);
72 }
73 spin_unlock_irqrestore(&eeh_eventlist_lock, flags);
74 77
75 if (event == NULL) 78 /* Serialize processing of EEH events */
76 break; 79 mutex_lock(&eeh_event_mutex);
80 eeh_mark_slot(event->dn, EEH_MODE_RECOVERING);
77 81
78 /* Serialize processing of EEH events */ 82 printk(KERN_INFO "EEH: Detected PCI bus error on device %s\n",
79 mutex_lock(&eeh_event_mutex); 83 pci_name(event->dev));
80 eeh_mark_slot(event->dn, EEH_MODE_RECOVERING);
81 84
82 printk(KERN_INFO "EEH: Detected PCI bus error on device %s\n", 85 pdn = handle_eeh_events(event);
83 pci_name(event->dev));
84 86
85 handle_eeh_events(event); 87 eeh_clear_slot(event->dn, EEH_MODE_RECOVERING);
88 pci_dev_put(event->dev);
89 kfree(event);
90 mutex_unlock(&eeh_event_mutex);
86 91
87 eeh_clear_slot(event->dn, EEH_MODE_RECOVERING); 92 /* If there are no new errors after an hour, clear the counter. */
88 pci_dev_put(event->dev); 93 if (pdn && pdn->eeh_freeze_count>0) {
89 kfree(event); 94 msleep_interruptible (3600*1000);
90 mutex_unlock(&eeh_event_mutex); 95 if (pdn->eeh_freeze_count>0)
96 pdn->eeh_freeze_count--;
91 } 97 }
92 98
93 return 0; 99 return 0;
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c
index e0000ce769e5..2e4e04042d85 100644
--- a/arch/powerpc/platforms/pseries/rtasd.c
+++ b/arch/powerpc/platforms/pseries/rtasd.c
@@ -348,7 +348,7 @@ static int enable_surveillance(int timeout)
348 return 0; 348 return 0;
349 349
350 if (error == -EINVAL) { 350 if (error == -EINVAL) {
351 printk(KERN_INFO "rtasd: surveillance not supported\n"); 351 printk(KERN_DEBUG "rtasd: surveillance not supported\n");
352 return 0; 352 return 0;
353 } 353 }
354 354
@@ -440,7 +440,7 @@ static int rtasd(void *unused)
440 goto error; 440 goto error;
441 } 441 }
442 442
443 printk(KERN_INFO "RTAS daemon started\n"); 443 printk(KERN_DEBUG "RTAS daemon started\n");
444 444
445 DEBUG("will sleep for %d milliseconds\n", (30000/rtas_event_scan_rate)); 445 DEBUG("will sleep for %d milliseconds\n", (30000/rtas_event_scan_rate));
446 446
@@ -487,7 +487,7 @@ static int __init rtas_init(void)
487 487
488 /* No RTAS */ 488 /* No RTAS */
489 if (rtas_token("event-scan") == RTAS_UNKNOWN_SERVICE) { 489 if (rtas_token("event-scan") == RTAS_UNKNOWN_SERVICE) {
490 printk(KERN_INFO "rtasd: no event-scan on system\n"); 490 printk(KERN_DEBUG "rtasd: no event-scan on system\n");
491 return -ENODEV; 491 return -ENODEV;
492 } 492 }
493 493
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 5eb55ef1c91c..9118d79b7b46 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -235,14 +235,14 @@ static void __init pSeries_setup_arch(void)
235 if (firmware_has_feature(FW_FEATURE_SPLPAR)) { 235 if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
236 vpa_init(boot_cpuid); 236 vpa_init(boot_cpuid);
237 if (get_lppaca()->shared_proc) { 237 if (get_lppaca()->shared_proc) {
238 printk(KERN_INFO "Using shared processor idle loop\n"); 238 printk(KERN_DEBUG "Using shared processor idle loop\n");
239 ppc_md.power_save = pseries_shared_idle_sleep; 239 ppc_md.power_save = pseries_shared_idle_sleep;
240 } else { 240 } else {
241 printk(KERN_INFO "Using dedicated idle loop\n"); 241 printk(KERN_DEBUG "Using dedicated idle loop\n");
242 ppc_md.power_save = pseries_dedicated_idle_sleep; 242 ppc_md.power_save = pseries_dedicated_idle_sleep;
243 } 243 }
244 } else { 244 } else {
245 printk(KERN_INFO "Using default idle loop\n"); 245 printk(KERN_DEBUG "Using default idle loop\n");
246 } 246 }
247 247
248 if (firmware_has_feature(FW_FEATURE_LPAR)) 248 if (firmware_has_feature(FW_FEATURE_LPAR))
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index 2d60ea30fed6..b14f9b5c114e 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -522,7 +522,7 @@ nextnode:
522 522
523 np = of_find_node_by_type(NULL, "interrupt-controller"); 523 np = of_find_node_by_type(NULL, "interrupt-controller");
524 if (!np) { 524 if (!np) {
525 printk(KERN_WARNING "xics: no ISA interrupt controller\n"); 525 printk(KERN_DEBUG "xics: no ISA interrupt controller\n");
526 xics_irq_8259_cascade_real = -1; 526 xics_irq_8259_cascade_real = -1;
527 xics_irq_8259_cascade = -1; 527 xics_irq_8259_cascade = -1;
528 } else { 528 } else {
@@ -641,23 +641,26 @@ void xics_teardown_cpu(int secondary)
641 ops->cppr_info(cpu, 0x00); 641 ops->cppr_info(cpu, 0x00);
642 iosync(); 642 iosync();
643 643
644 /* Clear IPI */
645 ops->qirr_info(cpu, 0xff);
646
647 /*
648 * we need to EOI the IPI if we got here from kexec down IPI
649 *
650 * probably need to check all the other interrupts too
651 * should we be flagging idle loop instead?
652 * or creating some task to be scheduled?
653 */
654 ops->xirr_info_set(cpu, XICS_IPI);
655
644 /* 656 /*
645 * Some machines need to have at least one cpu in the GIQ, 657 * Some machines need to have at least one cpu in the GIQ,
646 * so leave the master cpu in the group. 658 * so leave the master cpu in the group.
647 */ 659 */
648 if (secondary) { 660 if (secondary)
649 /*
650 * we need to EOI the IPI if we got here from kexec down IPI
651 *
652 * probably need to check all the other interrupts too
653 * should we be flagging idle loop instead?
654 * or creating some task to be scheduled?
655 */
656 ops->xirr_info_set(cpu, XICS_IPI);
657 rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE, 661 rtas_set_indicator(GLOBAL_INTERRUPT_QUEUE,
658 (1UL << interrupt_server_size) - 1 - 662 (1UL << interrupt_server_size) - 1 -
659 default_distrib_server, 0); 663 default_distrib_server, 0);
660 }
661} 664}
662 665
663#ifdef CONFIG_HOTPLUG_CPU 666#ifdef CONFIG_HOTPLUG_CPU
diff --git a/drivers/char/hvsi.c b/drivers/char/hvsi.c
index a9522189fc9e..a0370ed752ce 100644
--- a/drivers/char/hvsi.c
+++ b/drivers/char/hvsi.c
@@ -1179,7 +1179,7 @@ static int __init hvsi_init(void)
1179 if (tty_register_driver(hvsi_driver)) 1179 if (tty_register_driver(hvsi_driver))
1180 panic("Couldn't register hvsi console driver\n"); 1180 panic("Couldn't register hvsi console driver\n");
1181 1181
1182 printk(KERN_INFO "HVSI: registered %i devices\n", hvsi_count); 1182 printk(KERN_DEBUG "HVSI: registered %i devices\n", hvsi_count);
1183 1183
1184 return 0; 1184 return 0;
1185} 1185}
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index 52d01027d9e7..37965dc78eec 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -61,7 +61,7 @@
61#undef DEBUG 61#undef DEBUG
62 62
63#define ibmveth_printk(fmt, args...) \ 63#define ibmveth_printk(fmt, args...) \
64 printk(KERN_INFO "%s: " fmt, __FILE__, ## args) 64 printk(KERN_DEBUG "%s: " fmt, __FILE__, ## args)
65 65
66#define ibmveth_error_printk(fmt, args...) \ 66#define ibmveth_error_printk(fmt, args...) \
67 printk(KERN_ERR "(%s:%3.3d ua:%x) ERROR: " fmt, __FILE__, __LINE__ , adapter->vdev->unit_address, ## args) 67 printk(KERN_ERR "(%s:%3.3d ua:%x) ERROR: " fmt, __FILE__, __LINE__ , adapter->vdev->unit_address, ## args)
diff --git a/include/asm-powerpc/eeh.h b/include/asm-powerpc/eeh.h
index 868c7139dbff..2c3dc4a2b12a 100644
--- a/include/asm-powerpc/eeh.h
+++ b/include/asm-powerpc/eeh.h
@@ -293,8 +293,6 @@ static inline void eeh_memcpy_toio(volatile void __iomem *dest, const void *src,
293static inline u8 eeh_inb(unsigned long port) 293static inline u8 eeh_inb(unsigned long port)
294{ 294{
295 u8 val; 295 u8 val;
296 if (!_IO_IS_VALID(port))
297 return ~0;
298 val = in_8((u8 __iomem *)(port+pci_io_base)); 296 val = in_8((u8 __iomem *)(port+pci_io_base));
299 if (EEH_POSSIBLE_ERROR(val, u8)) 297 if (EEH_POSSIBLE_ERROR(val, u8))
300 return eeh_check_failure((void __iomem *)(port), val); 298 return eeh_check_failure((void __iomem *)(port), val);
@@ -303,15 +301,12 @@ static inline u8 eeh_inb(unsigned long port)
303 301
304static inline void eeh_outb(u8 val, unsigned long port) 302static inline void eeh_outb(u8 val, unsigned long port)
305{ 303{
306 if (_IO_IS_VALID(port)) 304 out_8((u8 __iomem *)(port+pci_io_base), val);
307 out_8((u8 __iomem *)(port+pci_io_base), val);
308} 305}
309 306
310static inline u16 eeh_inw(unsigned long port) 307static inline u16 eeh_inw(unsigned long port)
311{ 308{
312 u16 val; 309 u16 val;
313 if (!_IO_IS_VALID(port))
314 return ~0;
315 val = in_le16((u16 __iomem *)(port+pci_io_base)); 310 val = in_le16((u16 __iomem *)(port+pci_io_base));
316 if (EEH_POSSIBLE_ERROR(val, u16)) 311 if (EEH_POSSIBLE_ERROR(val, u16))
317 return eeh_check_failure((void __iomem *)(port), val); 312 return eeh_check_failure((void __iomem *)(port), val);
@@ -320,15 +315,12 @@ static inline u16 eeh_inw(unsigned long port)
320 315
321static inline void eeh_outw(u16 val, unsigned long port) 316static inline void eeh_outw(u16 val, unsigned long port)
322{ 317{
323 if (_IO_IS_VALID(port)) 318 out_le16((u16 __iomem *)(port+pci_io_base), val);
324 out_le16((u16 __iomem *)(port+pci_io_base), val);
325} 319}
326 320
327static inline u32 eeh_inl(unsigned long port) 321static inline u32 eeh_inl(unsigned long port)
328{ 322{
329 u32 val; 323 u32 val;
330 if (!_IO_IS_VALID(port))
331 return ~0;
332 val = in_le32((u32 __iomem *)(port+pci_io_base)); 324 val = in_le32((u32 __iomem *)(port+pci_io_base));
333 if (EEH_POSSIBLE_ERROR(val, u32)) 325 if (EEH_POSSIBLE_ERROR(val, u32))
334 return eeh_check_failure((void __iomem *)(port), val); 326 return eeh_check_failure((void __iomem *)(port), val);
@@ -337,8 +329,7 @@ static inline u32 eeh_inl(unsigned long port)
337 329
338static inline void eeh_outl(u32 val, unsigned long port) 330static inline void eeh_outl(u32 val, unsigned long port)
339{ 331{
340 if (_IO_IS_VALID(port)) 332 out_le32((u32 __iomem *)(port+pci_io_base), val);
341 out_le32((u32 __iomem *)(port+pci_io_base), val);
342} 333}
343 334
344/* in-string eeh macros */ 335/* in-string eeh macros */
diff --git a/include/asm-powerpc/eeh_event.h b/include/asm-powerpc/eeh_event.h
index 93d55a2bebfd..dc6bf0ffb796 100644
--- a/include/asm-powerpc/eeh_event.h
+++ b/include/asm-powerpc/eeh_event.h
@@ -18,8 +18,8 @@
18 * Copyright (c) 2005 Linas Vepstas <linas@linas.org> 18 * Copyright (c) 2005 Linas Vepstas <linas@linas.org>
19 */ 19 */
20 20
21#ifndef ASM_PPC64_EEH_EVENT_H 21#ifndef ASM_POWERPC_EEH_EVENT_H
22#define ASM_PPC64_EEH_EVENT_H 22#define ASM_POWERPC_EEH_EVENT_H
23#ifdef __KERNEL__ 23#ifdef __KERNEL__
24 24
25/** EEH event -- structure holding pci controller data that describes 25/** EEH event -- structure holding pci controller data that describes
@@ -39,7 +39,7 @@ struct eeh_event {
39 * @dev pci device 39 * @dev pci device
40 * 40 *
41 * This routine builds a PCI error event which will be delivered 41 * This routine builds a PCI error event which will be delivered
42 * to all listeners on the peh_notifier_chain. 42 * to all listeners on the eeh_notifier_chain.
43 * 43 *
44 * This routine can be called within an interrupt context; 44 * This routine can be called within an interrupt context;
45 * the actual event will be delivered in a normal context 45 * the actual event will be delivered in a normal context
@@ -51,7 +51,7 @@ int eeh_send_failure_event (struct device_node *dn,
51 int time_unavail); 51 int time_unavail);
52 52
53/* Main recovery function */ 53/* Main recovery function */
54void handle_eeh_events (struct eeh_event *); 54struct pci_dn * handle_eeh_events (struct eeh_event *);
55 55
56#endif /* __KERNEL__ */ 56#endif /* __KERNEL__ */
57#endif /* ASM_PPC64_EEH_EVENT_H */ 57#endif /* ASM_POWERPC_EEH_EVENT_H */
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h
index f1c2469b8844..a9496f34b048 100644
--- a/include/asm-powerpc/io.h
+++ b/include/asm-powerpc/io.h
@@ -40,12 +40,6 @@ extern int check_legacy_ioport(unsigned long base_port);
40 40
41extern unsigned long isa_io_base; 41extern unsigned long isa_io_base;
42extern unsigned long pci_io_base; 42extern unsigned long pci_io_base;
43extern unsigned long io_page_mask;
44
45#define MAX_ISA_PORT 0x10000
46
47#define _IO_IS_VALID(port) ((port) >= MAX_ISA_PORT || (1 << (port>>PAGE_SHIFT)) \
48 & io_page_mask)
49 43
50#ifdef CONFIG_PPC_ISERIES 44#ifdef CONFIG_PPC_ISERIES
51/* __raw_* accessors aren't supported on iSeries */ 45/* __raw_* accessors aren't supported on iSeries */
diff --git a/include/asm-ppc/mpc85xx.h b/include/asm-ppc/mpc85xx.h
index f47002a60edf..4f844ebe7669 100644
--- a/include/asm-ppc/mpc85xx.h
+++ b/include/asm-ppc/mpc85xx.h
@@ -28,6 +28,9 @@
28#if defined(CONFIG_MPC8555_CDS) || defined(CONFIG_MPC8548_CDS) 28#if defined(CONFIG_MPC8555_CDS) || defined(CONFIG_MPC8548_CDS)
29#include <platforms/85xx/mpc8555_cds.h> 29#include <platforms/85xx/mpc8555_cds.h>
30#endif 30#endif
31#ifdef CONFIG_MPC85xx_CDS
32#include <platforms/85xx/mpc85xx_cds.h>
33#endif
31#ifdef CONFIG_MPC8560_ADS 34#ifdef CONFIG_MPC8560_ADS
32#include <platforms/85xx/mpc8560_ads.h> 35#include <platforms/85xx/mpc8560_ads.h>
33#endif 36#endif