Auto merge with /home/aegl/GIT/linus
authorTony Luck <tony.luck@intel.com>
Wed, 6 Jul 2005 22:35:18 +0000 (15:35 -0700)
committerTony Luck <tony.luck@intel.com>
Wed, 6 Jul 2005 22:35:18 +0000 (15:35 -0700)
202 files changed:
Documentation/networking/fib_trie.txt [new file with mode: 0644]
Makefile
arch/alpha/kernel/irq_alpha.c
arch/alpha/kernel/traps.c
arch/arm/Makefile
arch/arm/configs/omnimeter_defconfig [deleted file]
arch/arm/kernel/head.S
arch/arm/kernel/setup.c
arch/arm/kernel/traps.c
arch/arm/mach-aaec2000/aaed2000.c
arch/arm/mach-clps711x/autcpu12.c
arch/arm/mach-clps711x/cdb89712.c
arch/arm/mach-clps711x/ceiva.c
arch/arm/mach-clps711x/clep7312.c
arch/arm/mach-clps711x/edb7211-arch.c
arch/arm/mach-clps711x/fortunet.c
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-clps7500/core.c
arch/arm/mach-ebsa110/core.c
arch/arm/mach-epxa10db/arch.c
arch/arm/mach-footbridge/cats-hw.c
arch/arm/mach-footbridge/co285.c
arch/arm/mach-footbridge/ebsa285.c
arch/arm/mach-footbridge/netwinder-hw.c
arch/arm/mach-footbridge/personal.c
arch/arm/mach-h720x/h7201-eval.c
arch/arm/mach-h720x/h7202-eval.c
arch/arm/mach-imx/mx1ads.c
arch/arm/mach-integrator/integrator_ap.c
arch/arm/mach-integrator/integrator_cp.c
arch/arm/mach-iop3xx/iop321-setup.c
arch/arm/mach-iop3xx/iop331-setup.c
arch/arm/mach-ixp2000/enp2611.c
arch/arm/mach-ixp2000/ixdp2400.c
arch/arm/mach-ixp2000/ixdp2800.c
arch/arm/mach-ixp2000/ixdp2x01.c
arch/arm/mach-ixp4xx/coyote-setup.c
arch/arm/mach-ixp4xx/gtwx5715-setup.c
arch/arm/mach-ixp4xx/ixdp425-setup.c
arch/arm/mach-l7200/core.c
arch/arm/mach-lh7a40x/arch-kev7a400.c
arch/arm/mach-lh7a40x/arch-lpd7a40x.c
arch/arm/mach-omap/board-generic.c
arch/arm/mach-omap/board-h2.c
arch/arm/mach-omap/board-h3.c
arch/arm/mach-omap/board-innovator.c
arch/arm/mach-omap/board-netstar.c
arch/arm/mach-omap/board-osk.c
arch/arm/mach-omap/board-perseus2.c
arch/arm/mach-omap/board-voiceblue.c
arch/arm/mach-omap/usb.c
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/poodle.c
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/standby.S [new file with mode: 0644]
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-s3c2410/mach-bast.c
arch/arm/mach-s3c2410/mach-h1940.c
arch/arm/mach-s3c2410/mach-n30.c
arch/arm/mach-s3c2410/mach-nexcoder.c
arch/arm/mach-s3c2410/mach-otom.c
arch/arm/mach-s3c2410/mach-rx3715.c
arch/arm/mach-s3c2410/mach-smdk2410.c
arch/arm/mach-s3c2410/mach-smdk2440.c
arch/arm/mach-s3c2410/mach-vr1000.c
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/cpu-sa1110.c
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/hackkit.c
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/shannon.c
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-shark/core.c
arch/arm/mach-versatile/versatile_ab.c
arch/arm/mach-versatile/versatile_pb.c
arch/arm/mm/blockops.c
arch/arm/mm/fault.c
arch/arm/mm/proc-arm1020.S
arch/arm/mm/proc-arm1020e.S
arch/i386/kernel/cpu/cpufreq/gx-suspmod.c
arch/i386/kernel/kprobes.c
arch/i386/pci/common.c
arch/i386/pci/i386.c
arch/ia64/kernel/kprobes.c
arch/ppc/8xx_io/enet.c
arch/ppc/Kconfig
arch/ppc/configs/mpc86x_ads_defconfig [new file with mode: 0644]
arch/ppc/configs/mpc885ads_defconfig [new file with mode: 0644]
arch/ppc/kernel/time.c
arch/ppc/platforms/fads.h
arch/ppc/platforms/mpc885ads.h [new file with mode: 0644]
arch/ppc/syslib/ppc4xx_pic.c
arch/ppc64/kernel/kprobes.c
arch/sparc64/Kconfig
arch/sparc64/kernel/entry.S
arch/sparc64/kernel/irq.c
arch/sparc64/kernel/kprobes.c
arch/sparc64/kernel/pci_psycho.c
arch/sparc64/kernel/pci_sabre.c
arch/sparc64/kernel/pci_schizo.c
arch/sparc64/kernel/time.c
arch/sparc64/mm/ultra.S
arch/x86_64/kernel/kprobes.c
drivers/acpi/pci_irq.c
drivers/char/hw_random.c
drivers/char/watchdog/i8xx_tco.c
drivers/ide/Makefile
drivers/ide/ide-lib.c
drivers/ide/pci/alim15x3.c
drivers/ide/pci/amd74xx.c
drivers/ide/pci/cs5530.c
drivers/ide/pci/cy82c693.c
drivers/ide/pci/it8172.c
drivers/ide/pci/ns87415.c
drivers/ide/pci/opti621.c
drivers/ide/pci/sc1200.c
drivers/ide/pci/sl82c105.c
drivers/ide/pci/slc90e66.c
drivers/ide/pci/triflex.c
drivers/ide/pci/via82cxxx.c
drivers/ide/setup-pci.c
drivers/mmc/mmci.c
drivers/mmc/wbsd.c
drivers/mmc/wbsd.h
drivers/mtd/afs.c
drivers/net/shaper.c
drivers/net/skge.h
drivers/net/tg3.c
drivers/net/tg3.h
drivers/parport/parport_pc.c
drivers/pci/Makefile
drivers/pci/hotplug.c
drivers/pci/pci-driver.c
drivers/pci/pci.c
drivers/pci/pcie/portdrv.h
drivers/pci/pcie/portdrv_core.c
drivers/pci/pcie/portdrv_pci.c
drivers/pci/probe.c
drivers/pci/quirks.c
drivers/pci/setup-bus.c
drivers/sbus/char/bpp.c
drivers/serial/8250.c
drivers/serial/cpm_uart/cpm_uart_cpm1.c
drivers/serial/s3c2410.c
drivers/serial/serial_core.c
drivers/video/console/fbcon.c
fs/fat/cache.c
fs/fat/inode.c
include/asm-arm/arch-pxa/pxa-regs.h
include/asm-arm/mach/arch.h
include/asm-arm/stat.h
include/asm-arm/system.h
include/asm-ppc/mpc8xx.h
include/asm-sparc64/irq.h
include/asm-sparc64/pbm.h
include/asm-sparc64/signal.h
include/linux/compat_ioctl.h
include/linux/if_shaper.h
include/linux/kprobes.h
include/linux/pci-dynids.h [deleted file]
include/linux/pci.h
include/linux/pci_ids.h
include/linux/skbuff.h
include/linux/tc_ematch/tc_em_meta.h
include/linux/tcp.h
include/net/pkt_sched.h
include/net/sch_generic.h
include/net/slhc_vj.h
include/net/sock.h
include/net/tcp.h
kernel/kprobes.c
mm/slab.c
net/core/dev.c
net/core/filter.c
net/core/skbuff.c
net/decnet/dn_fib.c
net/ipv4/af_inet.c
net/ipv4/fib_trie.c
net/ipv4/ip_output.c
net/ipv4/route.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_output.c
net/ipv6/af_inet6.c
net/ipv6/ip6_output.c
net/ipv6/tcp_ipv6.c
net/sched/Makefile
net/sched/em_meta.c
net/sched/sch_api.c
net/sched/sch_blackhole.c [new file with mode: 0644]
net/sched/sch_generic.c
sound/pci/bt87x.c

diff --git a/Documentation/networking/fib_trie.txt b/Documentation/networking/fib_trie.txt
new file mode 100644 (file)
index 0000000..f50d0c6
--- /dev/null
@@ -0,0 +1,145 @@
+                       LC-trie implementation notes.
+
+Node types
+----------
+leaf 
+       An end node with data. This has a copy of the relevant key, along
+       with 'hlist' with routing table entries sorted by prefix length.
+       See struct leaf and struct leaf_info.
+
+trie node or tnode
+       An internal node, holding an array of child (leaf or tnode) pointers,
+       indexed through a subset of the key. See Level Compression.
+
+A few concepts explained
+------------------------
+Bits (tnode) 
+       The number of bits in the key segment used for indexing into the
+       child array - the "child index". See Level Compression.
+
+Pos (tnode)
+       The position (in the key) of the key segment used for indexing into
+       the child array. See Path Compression.
+
+Path Compression / skipped bits
+       Any given tnode is linked to from the child array of its parent, using
+       a segment of the key specified by the parent's "pos" and "bits" 
+       In certain cases, this tnode's own "pos" will not be immediately
+       adjacent to the parent (pos+bits), but there will be some bits
+       in the key skipped over because they represent a single path with no
+       deviations. These "skipped bits" constitute Path Compression.
+       Note that the search algorithm will simply skip over these bits when
+       searching, making it necessary to save the keys in the leaves to
+       verify that they actually do match the key we are searching for.
+
+Level Compression / child arrays
+       the trie is kept level balanced moving, under certain conditions, the
+       children of a full child (see "full_children") up one level, so that
+       instead of a pure binary tree, each internal node ("tnode") may
+       contain an arbitrarily large array of links to several children.
+       Conversely, a tnode with a mostly empty child array (see empty_children)
+       may be "halved", having some of its children moved downwards one level,
+       in order to avoid ever-increasing child arrays.
+
+empty_children
+       the number of positions in the child array of a given tnode that are
+       NULL.
+
+full_children
+       the number of children of a given tnode that aren't path compressed.
+       (in other words, they aren't NULL or leaves and their "pos" is equal
+       to this tnode's "pos"+"bits").
+
+       (The word "full" here is used more in the sense of "complete" than
+       as the opposite of "empty", which might be a tad confusing.)
+
+Comments
+---------
+
+We have tried to keep the structure of the code as close to fib_hash as 
+possible to allow verification and help up reviewing. 
+
+fib_find_node()
+       A good start for understanding this code. This function implements a
+       straightforward trie lookup.
+
+fib_insert_node()
+       Inserts a new leaf node in the trie. This is bit more complicated than
+       fib_find_node(). Inserting a new node means we might have to run the
+       level compression algorithm on part of the trie.
+
+trie_leaf_remove()
+       Looks up a key, deletes it and runs the level compression algorithm.
+
+trie_rebalance()
+       The key function for the dynamic trie after any change in the trie
+       it is run to optimize and reorganize. Tt will walk the trie upwards 
+       towards the root from a given tnode, doing a resize() at each step 
+       to implement level compression.
+
+resize()
+       Analyzes a tnode and optimizes the child array size by either inflating
+       or shrinking it repeatedly until it fullfills the criteria for optimal
+       level compression. This part follows the original paper pretty closely
+       and there may be some room for experimentation here.
+
+inflate()
+       Doubles the size of the child array within a tnode. Used by resize().
+
+halve()
+       Halves the size of the child array within a tnode - the inverse of
+       inflate(). Used by resize();
+
+fn_trie_insert(), fn_trie_delete(), fn_trie_select_default()
+       The route manipulation functions. Should conform pretty closely to the
+       corresponding functions in fib_hash.
+
+fn_trie_flush()
+       This walks the full trie (using nextleaf()) and searches for empty
+       leaves which have to be removed.
+
+fn_trie_dump()
+       Dumps the routing table ordered by prefix length. This is somewhat
+       slower than the corresponding fib_hash function, as we have to walk the
+       entire trie for each prefix length. In comparison, fib_hash is organized
+       as one "zone"/hash per prefix length.
+
+Locking
+-------
+
+fib_lock is used for an RW-lock in the same way that this is done in fib_hash.
+However, the functions are somewhat separated for other possible locking
+scenarios. It might conceivably be possible to run trie_rebalance via RCU
+to avoid read_lock in the fn_trie_lookup() function.
+
+Main lookup mechanism
+---------------------
+fn_trie_lookup() is the main lookup function.
+
+The lookup is in its simplest form just like fib_find_node(). We descend the
+trie, key segment by key segment, until we find a leaf. check_leaf() does
+the fib_semantic_match in the leaf's sorted prefix hlist.
+
+If we find a match, we are done.
+
+If we don't find a match, we enter prefix matching mode. The prefix length,
+starting out at the same as the key length, is reduced one step at a time,
+and we backtrack upwards through the trie trying to find a longest matching
+prefix. The goal is always to reach a leaf and get a positive result from the
+fib_semantic_match mechanism.
+
+Inside each tnode, the search for longest matching prefix consists of searching
+through the child array, chopping off (zeroing) the least significant "1" of
+the child index until we find a match or the child index consists of nothing but
+zeros.
+
+At this point we backtrack (t->stats.backtrack++) up the trie, continuing to
+chop off part of the key in order to find the longest matching prefix.
+
+At this point we will repeatedly descend subtries to look for a match, and there
+are some optimizations available that can provide us with "shortcuts" to avoid
+descending into dead ends. Look for "HL_OPTIMIZE" sections in the code.
+
+To alleviate any doubts about the correctness of the route selection process,
+a new netlink operation has been added. Look for NETLINK_FIB_LOOKUP, which
+gives userland access to fib_lookup().
index 77aab7bdde01cb3b61440b164d937e4372536a34..278d50992c71642a09c04ef2475f2a63585d62a9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 13
-EXTRAVERSION =-rc1
+EXTRAVERSION =-rc2
 NAME=Woozy Numbat
 
 # *DOCUMENTATION*
index e6ded33c6e22c2904963c72f44d920393e252583..9d34ce26e5efc9231eb3581de7b158438818944d 100644 (file)
@@ -55,6 +55,8 @@ do_entInt(unsigned long type, unsigned long vector,
 #ifdef CONFIG_SMP
          {
                long cpu;
+
+               local_irq_disable();
                smp_percpu_timer_interrupt(regs);
                cpu = smp_processor_id();
                if (cpu != boot_cpuid) {
index fd7bd17cc96049334d98207333042b9eae11190c..6f509a644bddade182f7b27dade5e971fffb0f13 100644 (file)
@@ -240,7 +240,7 @@ do_entIF(unsigned long type, struct pt_regs *regs)
        siginfo_t info;
        int signo, code;
 
-       if (regs->ps == 0) {
+       if ((regs->ps & ~IPL_MAX) == 0) {
                if (type == 1) {
                        const unsigned int *data
                          = (const unsigned int *) regs->pc;
index 8330495e2448bc33f2ad7236b4fb5e4a45ebb2a1..eb933dcafba02b35e830044efb357c6b44de3666 100644 (file)
@@ -56,7 +56,7 @@ tune-$(CONFIG_CPU_XSCALE)     :=$(call cc-option,-mtune=xscale,-mtune=strongarm110)
 tune-$(CONFIG_CPU_V6)          :=-mtune=strongarm
 
 # Need -Uarm for gcc < 3.x
-CFLAGS_ABI     :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
+CFLAGS_ABI     :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
 CFLAGS         +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
 AFLAGS         +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float
 
diff --git a/arch/arm/configs/omnimeter_defconfig b/arch/arm/configs/omnimeter_defconfig
deleted file mode 100644 (file)
index 78fdb4a..0000000
+++ /dev/null
@@ -1,803 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.12-rc1-bk2
-# Sun Mar 27 21:31:45 2005
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_GENERIC_IOMAP=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_CLEAN_COMPILE=y
-CONFIG_BROKEN_ON_SMP=y
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION=""
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-# CONFIG_AUDIT is not set
-CONFIG_HOTPLUG=y
-CONFIG_KOBJECT_UEVENT=y
-# CONFIG_IKCONFIG is not set
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
-CONFIG_BASE_FULL=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SHMEM=y
-CONFIG_CC_ALIGN_FUNCTIONS=0
-CONFIG_CC_ALIGN_LABELS=0
-CONFIG_CC_ALIGN_LOOPS=0
-CONFIG_CC_ALIGN_JUMPS=0
-# CONFIG_TINY_SHMEM is not set
-CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-# CONFIG_ARCH_IOP3XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_RPC is not set
-CONFIG_ARCH_SA1100=y
-# CONFIG_ARCH_S3C2410 is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_H720X is not set
-
-#
-# SA11x0 Implementations
-#
-# CONFIG_SA1100_ASSABET is not set
-# CONFIG_SA1100_CERF is not set
-# CONFIG_SA1100_COLLIE is not set
-# CONFIG_SA1100_H3100 is not set
-# CONFIG_SA1100_H3600 is not set
-# CONFIG_SA1100_H3800 is not set
-# CONFIG_SA1100_BADGE4 is not set
-# CONFIG_SA1100_JORNADA720 is not set
-# CONFIG_SA1100_HACKKIT is not set
-# CONFIG_SA1100_LART is not set
-# CONFIG_SA1100_PLEB is not set
-# CONFIG_SA1100_SHANNON is not set
-# CONFIG_SA1100_SIMPAD is not set
-# CONFIG_SA1100_SSP is not set
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_SA1100=y
-CONFIG_CPU_32v4=y
-CONFIG_CPU_ABRT_EV4=y
-CONFIG_CPU_CACHE_V4WB=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WB=y
-CONFIG_CPU_MINICACHE=y
-
-#
-# Processor Features
-#
-
-#
-# Bus support
-#
-CONFIG_ISA=y
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-CONFIG_PCCARD=y
-# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=y
-
-#
-# PC-card bridges
-#
-CONFIG_I82365=y
-# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=y
-CONFIG_PCCARD_NONSTATIC=y
-
-#
-# Kernel Features
-#
-# CONFIG_PREEMPT is not set
-CONFIG_DISCONTIGMEM=y
-# CONFIG_LEDS is not set
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="keepinitrd mem=16M root=/dev/ram ramdisk=8192 initrd=0xd0000000,4M"
-# CONFIG_XIP_KERNEL is not set
-
-#
-# CPU Frequency scaling
-#
-# CONFIG_CPU_FREQ is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-# CONFIG_FPE_NWFPE is not set
-# CONFIG_FPE_FASTFPE is not set
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_ARTHUR is not set
-
-#
-# Power management options
-#
-# CONFIG_PM is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-# CONFIG_FW_LOADER is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-CONFIG_BLK_DEV_NBD=m
-# CONFIG_BLK_DEV_RAM is not set
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CDROM_PKTCDVD is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-CONFIG_IDE=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-# CONFIG_BLK_DEV_IDECS is not set
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_IDE_TASK_IOCTL is not set
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDE_ARM is not set
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# SCSI device support
-#
-# CONFIG_SCSI is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_PACKET_MMAP=y
-# CONFIG_NETLINK_DEV is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY is not set
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-# CONFIG_ARPD is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-CONFIG_IP_TCPDIAG=y
-# CONFIG_IP_TCPDIAG_IPV6 is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-
-#
-# IP: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_CONNTRACK_MARK is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_VLAN_8021Q is not set
-# CONFIG_DECNET is not set
-# CONFIG_LLC2 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-# CONFIG_NET_CLS_ROUTE is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-CONFIG_NETDEVICES=y
-# CONFIG_DUMMY is not set
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_MII is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_SMC91X is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_HP100 is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-# CONFIG_TR is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-CONFIG_NET_RADIO=y
-
-#
-# Obsolete Wireless cards support (pre-802.11)
-#
-# CONFIG_STRIP is not set
-# CONFIG_ARLAN is not set
-# CONFIG_WAVELAN is not set
-CONFIG_PCMCIA_WAVELAN=y
-# CONFIG_PCMCIA_NETWAVE is not set
-
-#
-# Wireless 802.11 Frequency Hopping cards support
-#
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Wireless 802.11b ISA/PCI cards support
-#
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
-
-#
-# Wireless 802.11b Pcmcia/Cardbus cards support
-#
-CONFIG_AIRO_CS=y
-CONFIG_PCMCIA_WL3501=y
-CONFIG_NET_WIRELESS=y
-
-#
-# PCMCIA network device support
-#
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=y
-# CONFIG_PCMCIA_3C574 is not set
-# CONFIG_PCMCIA_FMVJ18X is not set
-CONFIG_PCMCIA_PCNET=y
-# CONFIG_PCMCIA_NMCLAN is not set
-# CONFIG_PCMCIA_SMC91C92 is not set
-# CONFIG_PCMCIA_XIRC2PS is not set
-# CONFIG_PCMCIA_AXNET is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-
-#
-# Userland interfaces
-#
-CONFIG_INPUT_MOUSEDEV=y
-CONFIG_INPUT_MOUSEDEV_PSAUX=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-# CONFIG_INPUT_TSDEV is not set
-# CONFIG_INPUT_EVDEV is not set
-# CONFIG_INPUT_EVBUG is not set
-
-#
-# Input Device Drivers
-#
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-CONFIG_INPUT_MOUSE=y
-CONFIG_MOUSE_PS2=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_INPORT is not set
-# CONFIG_MOUSE_LOGIBM is not set
-# CONFIG_MOUSE_PC110PAD is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=256
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_DRM is not set
-
-#
-# PCMCIA character devices
-#
-# CONFIG_SYNCLINK_CS is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-# CONFIG_I2C is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-
-#
-# Graphics support
-#
-CONFIG_FB=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_SOFT_CURSOR=y
-# CONFIG_FB_MODE_HELPERS is not set
-# CONFIG_FB_TILEBLITTING is not set
-CONFIG_FB_SA1100=y
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_MDA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-# CONFIG_USB_ARCH_HAS_OHCI is not set
-# CONFIG_USB is not set
-
-#
-# USB Gadget Support
-#
-# CONFIG_USB_GADGET is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-
-#
-# XFS support
-#
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-# CONFIG_VFAT_FS is not set
-CONFIG_FAT_DEFAULT_CODEPAGE=437
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_SYSFS=y
-# CONFIG_DEVFS_FS is not set
-# CONFIG_DEVPTS_FS_XATTR is not set
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_V4 is not set
-# CONFIG_NFS_DIRECTIO is not set
-# CONFIG_NFSD is not set
-CONFIG_LOCKD=y
-CONFIG_SUNRPC=y
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_936 is not set
-# CONFIG_NLS_CODEPAGE_950 is not set
-# CONFIG_NLS_CODEPAGE_932 is not set
-# CONFIG_NLS_CODEPAGE_949 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_CODEPAGE_1250 is not set
-# CONFIG_NLS_CODEPAGE_1251 is not set
-# CONFIG_NLS_ASCII is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_13 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-# CONFIG_NLS_KOI8_U is not set
-# CONFIG_NLS_UTF8 is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_DEBUG_KERNEL is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Hardware crypto devices
-#
-
-#
-# Library routines
-#
-# CONFIG_CRC_CCITT is not set
-CONFIG_CRC32=y
-# CONFIG_LIBCRC32C is not set
index bd4823c74645f0899f91d61199f000a5342be40d..1155cf07c8710e7be4b55d92f144ffcdaeb5d10f 100644 (file)
@@ -344,9 +344,9 @@ __create_page_tables:
        str     r6, [r0]
 #endif
 
+#ifdef CONFIG_DEBUG_LL
        bic     r7, r7, #0x0c                   @ turn off cacheable
                                                @ and bufferable bits
-#ifdef CONFIG_DEBUG_LL
        /*
         * Map in IO space for serial debugging.
         * This allows debug messages to be output
@@ -372,27 +372,23 @@ __create_page_tables:
        teq     r1, #MACH_TYPE_NETWINDER
        teqne   r1, #MACH_TYPE_CATS
        bne     1f
-       add     r0, r4, #0x3fc0                 @ ff000000
-       mov     r3, #0x7c000000
-       orr     r3, r3, r7
-       str     r3, [r0], #4
-       add     r3, r3, #1 << 20
-       str     r3, [r0], #4
+       add     r0, r4, #0xff000000 >> 18
+       orr     r3, r7, #0x7c000000
+       str     r3, [r0]
 1:
 #endif
-#endif
 #ifdef CONFIG_ARCH_RPC
        /*
         * Map in screen at 0x02000000 & SCREEN2_BASE
         * Similar reasons here - for debug.  This is
         * only for Acorn RiscPC architectures.
         */
-       add     r0, r4, #0x80                   @ 02000000
-       mov     r3, #0x02000000
-       orr     r3, r3, r7
+       add     r0, r4, #0x02000000 >> 18
+       orr     r3, r7, #0x02000000
        str     r3, [r0]
-       add     r0, r4, #0x3600                 @ d8000000
+       add     r0, r4, #0xd8000000 >> 18
        str     r3, [r0]
+#endif
 #endif
        mov     pc, lr
        .ltorg
index 35b7273cfdb4252cb6b886b306870924f5abb38a..c9b69771f92ebb7b3ec8145b796336a176b64ad5 100644 (file)
@@ -737,8 +737,8 @@ void __init setup_arch(char **cmdline_p)
        if (mdesc->soft_reboot)
                reboot_setup("s");
 
-       if (mdesc->param_offset)
-               tags = phys_to_virt(mdesc->param_offset);
+       if (mdesc->boot_params)
+               tags = phys_to_virt(mdesc->boot_params);
 
        /*
         * If we have the old style parameters, convert them to
index 2fb0a4cfb37a4af48c2365d500608ef871197e1a..df2cb06ce424f7fd95e3cf3fa4a1cd9c1d398896 100644 (file)
@@ -230,16 +230,8 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
        do_exit(SIGSEGV);
 }
 
-void die_if_kernel(const char *str, struct pt_regs *regs, int err)
-{
-       if (user_mode(regs))
-               return;
-
-       die(str, regs, err);
-}
-
-static void notify_die(const char *str, struct pt_regs *regs, siginfo_t *info,
-                      unsigned long err, unsigned long trap)
+void notify_die(const char *str, struct pt_regs *regs, struct siginfo *info,
+               unsigned long err, unsigned long trap)
 {
        if (user_mode(regs)) {
                current->thread.error_code = err;
index 5417ca3f462160b9938d14768fc68f2a20ad90de..c9d89988664857da50dc1fcb2576813faa4ebde7 100644 (file)
@@ -40,9 +40,11 @@ static void __init aaed2000_map_io(void)
 }
 
 MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform")
-       MAINTAINER("Nicolas Bellido Y Ortega")
-       BOOT_MEM(0xf0000000, PIO_BASE, VIO_BASE)
-       MAPIO(aaed2000_map_io)
-       INITIRQ(aaed2000_init_irq)
+       /* Maintainer: Nicolas Bellido Y Ortega */
+       .phys_ram       = 0xf0000000,
+       .phys_io        = PIO_BASE,
+       .io_pg_offst    = ((VIO_BASE) >> 18) & 0xfffc,
+       .map_io         = aaed2000_map_io,
+       .init_irq       = aaed2000_init_irq,
        .timer          = &aaec2000_timer,
 MACHINE_END
index c106704a2c34c6eeeab2faef28fac5475555fc15..dc73feb1ffb0d9ed58b90a64a1518525cb63b17d 100644 (file)
@@ -59,11 +59,13 @@ void __init autcpu12_map_io(void)
 }
 
 MACHINE_START(AUTCPU12, "autronix autcpu12")
-       MAINTAINER("Thomas Gleixner")
-        BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-       BOOT_PARAMS(0xc0020000)
-       MAPIO(autcpu12_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: Thomas Gleixner */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xff000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0020000,
+       .map_io         = autcpu12_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
 
index 7664f9cf83b8447f5a3569e53fba68e4df74da4c..a46c82cd2711d5a6c150a58a628acd499416d5c9 100644 (file)
@@ -49,10 +49,12 @@ static void __init cdb89712_map_io(void)
 }
 
 MACHINE_START(CDB89712, "Cirrus-CDB89712")
-       MAINTAINER("Ray Lehtiniemi")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(cdb89712_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: Ray Lehtiniemi */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xff000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = cdb89712_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
index e4093be3c4cb5ce539f4ece7f2546dba2ae23287..780d918059848c1d6f9d6caff8f27026d10df11f 100644 (file)
@@ -53,10 +53,12 @@ static void __init ceiva_map_io(void)
 
 
 MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame")
-       MAINTAINER("Rob Scott")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(ceiva_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: Rob Scott */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xff000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = ceiva_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
index 9ca21cb481baacecbfd880312d9c24e8808de59d..c83f3fd68fcd6ba86f90efa68773c125dc380c4f 100644 (file)
@@ -37,12 +37,14 @@ fixup_clep7312(struct machine_desc *desc, struct tag *tags,
 
 
 MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312")
-       MAINTAINER("Nobody")
-        BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-       BOOT_PARAMS(0xc0000100)
-       FIXUP(fixup_clep7312)
-       MAPIO(clps711x_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: Nobody */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xff000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .fixup          = fixup_clep7312,
+       .map_io         = clps711x_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
 
index c6c46324a2e3354cb368db064f55bba740cf6704..255c98b63e15f4310bd48efb4d4a24bf25ec931a 100644 (file)
@@ -51,11 +51,13 @@ fixup_edb7211(struct machine_desc *desc, struct tag *tags,
 }
 
 MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)")
-       MAINTAINER("Jon McClintock")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-       BOOT_PARAMS(0xc0020100) /* 0xc0000000 - 0xc001ffff can be video RAM */
-       FIXUP(fixup_edb7211)
-       MAPIO(edb7211_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: Jon McClintock */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xff000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0020100,   /* 0xc0000000 - 0xc001ffff can be video RAM */
+       .fixup          = fixup_edb7211,
+       .map_io         = edb7211_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
index c1c5b8e01549437a2cb69615d480ac8a959cff78..f83a59761e0276e3732661ce1723c98056e17732 100644 (file)
@@ -75,11 +75,13 @@ fortunet_fixup(struct machine_desc *desc, struct tag *tags,
 }
 
 MACHINE_START(FORTUNET, "ARM-FortuNet")
-       MAINTAINER("FortuNet Inc.")
-        BOOT_MEM(0xc0000000, 0x80000000, 0xf0000000)
-       BOOT_PARAMS(0x00000000)
-       FIXUP(fortunet_fixup)
-       MAPIO(clps711x_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: FortuNet Inc. */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf0000000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000000,
+       .fixup          = fortunet_fixup,
+       .map_io         = clps711x_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
index 29269df054f557d9533d1ecaac7c43692a9156db..5bdb90edf9922956fe8bc194215559ed2dc8322d 100644 (file)
@@ -79,12 +79,14 @@ static void __init p720t_map_io(void)
 }
 
 MACHINE_START(P720T, "ARM-Prospector720T")
-       MAINTAINER("ARM Ltd/Deep Blue Solutions Ltd")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xff000000)
-       BOOT_PARAMS(0xc0000100)
-       FIXUP(fixup_p720t)
-       MAPIO(p720t_map_io)
-       INITIRQ(clps711x_init_irq)
+       /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xff000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .fixup          = fixup_p720t,
+       .map_io         = p720t_map_io,
+       .init_irq       = clps711x_init_irq,
        .timer          = &clps711x_timer,
 MACHINE_END
 
index 90e85f434f6ff56d365381912f03d198f52dd70f..112f1d68fb2b10b8be32171ec24dbdac6569af3f 100644 (file)
@@ -366,11 +366,13 @@ static void __init clps7500_init(void)
 }
 
 MACHINE_START(CLPS7500, "CL-PS7500")
-       MAINTAINER("Philip Blundell")
-       BOOT_MEM(0x10000000, 0x03000000, 0xe0000000)
-       MAPIO(clps7500_map_io)
-       INITIRQ(clps7500_init_irq)
-               .init_machine   = clps7500_init,
-               .timer          = &clps7500_timer,
+       /* Maintainer: Philip Blundell */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0x03000000,
+       .io_pg_offst    = ((0xe0000000) >> 18) & 0xfffc,
+       .map_io         = clps7500_map_io,
+       .init_irq       = clps7500_init_irq,
+       .init_machine   = clps7500_init,
+       .timer          = &clps7500_timer,
 MACHINE_END
 
index 86ffdbb5626e23046d89f5a48ebf656f8916a49d..23c4da10101bd8e04c2f67b4f3ca5da9d150130f 100644 (file)
@@ -233,13 +233,15 @@ static int __init ebsa110_init(void)
 arch_initcall(ebsa110_init);
 
 MACHINE_START(EBSA110, "EBSA110")
-       MAINTAINER("Russell King")
-       BOOT_MEM(0x00000000, 0xe0000000, 0xe0000000)
-       BOOT_PARAMS(0x00000400)
-       DISABLE_PARPORT(0)
-       DISABLE_PARPORT(2)
-       SOFT_REBOOT
-       MAPIO(ebsa110_map_io)
-       INITIRQ(ebsa110_init_irq)
+       /* Maintainer: Russell King */
+       .phys_ram       = 0x00000000,
+       .phys_io        = 0xe0000000,
+       .io_pg_offst    = ((0xe0000000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000400,
+       .reserve_lp0    = 1,
+       .reserve_lp2    = 1,
+       .soft_reboot    = 1,
+       .map_io         = ebsa110_map_io,
+       .init_irq       = ebsa110_init_irq,
        .timer          = &ebsa110_timer,
 MACHINE_END
index 1b40340e8a21db7bffa878d1c5ebf35fa665c56f..7daa021676d0ac4aa688a8a1c1f546c9ab974000 100644 (file)
@@ -63,10 +63,12 @@ extern void epxa10db_init_irq(void);
 extern struct sys_timer epxa10db_timer;
 
 MACHINE_START(CAMELOT, "Altera Epxa10db")
-       MAINTAINER("Altera Corporation")
-       BOOT_MEM(0x00000000, 0x7fffc000, 0xffffc000)
-       MAPIO(epxa10db_map_io)
-       INITIRQ(epxa10db_init_irq)
+       /* Maintainer: Altera Corporation */
+       .phys_ram       = 0x00000000,
+       .phys_io        = 0x7fffc000,
+       .io_pg_offst    = ((0xffffc000) >> 18) & 0xfffc,
+       .map_io         = epxa10db_map_io,
+       .init_irq       = epxa10db_init_irq,
        .timer          = &epxa10db_timer,
 MACHINE_END
 
index d1ced86c379c4891c7bded8d4242cae46118daf0..49b898af0032298792b331195bf02bdbc5336b76 100644 (file)
@@ -84,12 +84,14 @@ fixup_cats(struct machine_desc *desc, struct tag *tags,
 }
 
 MACHINE_START(CATS, "Chalice-CATS")
-       MAINTAINER("Philip Blundell")
-       BOOT_MEM(0x00000000, DC21285_ARMCSR_BASE, 0xfe000000)
-       BOOT_PARAMS(0x00000100)
-       SOFT_REBOOT
-       FIXUP(fixup_cats)
-       MAPIO(footbridge_map_io)
-       INITIRQ(footbridge_init_irq)
+       /* Maintainer: Philip Blundell */
+       .phys_ram       = 0x00000000,
+       .phys_io        = DC21285_ARMCSR_BASE,
+       .io_pg_offst    = ((0xfe000000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .soft_reboot    = 1,
+       .fixup          = fixup_cats,
+       .map_io         = footbridge_map_io,
+       .init_irq       = footbridge_init_irq,
        .timer          = &isa_timer,
 MACHINE_END
index e1541914fdcdc6d514cbfbd0c208e1081b348676..548a7908168864c485d0c23547d18b73a9ddfe7a 100644 (file)
@@ -28,11 +28,13 @@ fixup_coebsa285(struct machine_desc *desc, struct tag *tags,
 }
 
 MACHINE_START(CO285, "co-EBSA285")
-       MAINTAINER("Mark van Doesburg")
-       BOOT_MEM(0x00000000, DC21285_ARMCSR_BASE, 0x7cf00000)
-       FIXUP(fixup_coebsa285)
-       MAPIO(footbridge_map_io)
-       INITIRQ(footbridge_init_irq)
+       /* Maintainer: Mark van Doesburg */
+       .phys_ram       = 0x00000000,
+       .phys_io        = DC21285_ARMCSR_BASE,
+       .io_pg_offst    = ((0x7cf00000) >> 18) & 0xfffc,
+       .fixup          = fixup_coebsa285,
+       .map_io         = footbridge_map_io,
+       .init_irq       = footbridge_init_irq,
        .timer          = &footbridge_timer,
 MACHINE_END
 
index d0931f5a63c87aff096564663f6112115f03829d..1c37605268d51d501cef77d1ab65140e9f080d71 100644 (file)
 #include "common.h"
 
 MACHINE_START(EBSA285, "EBSA285")
-       MAINTAINER("Russell King")
-       BOOT_MEM(0x00000000, DC21285_ARMCSR_BASE, 0xfe000000)
-       BOOT_PARAMS(0x00000100)
-       VIDEO(0x000a0000, 0x000bffff)
-       MAPIO(footbridge_map_io)
-       INITIRQ(footbridge_init_irq)
+       /* Maintainer: Russell King */
+       .phys_ram       = 0x00000000,
+       .phys_io        = DC21285_ARMCSR_BASE,
+       .io_pg_offst    = ((0xfe000000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .video_start    = 0x000a0000,
+       .video_end      = 0x000bffff,
+       .map_io         = footbridge_map_io,
+       .init_irq       = footbridge_init_irq,
        .timer          = &footbridge_timer,
 MACHINE_END
 
index 1e1dfd79f4feb583b7d1018f83a884813bc26d36..775f85fc85139ac2dbea4d4515e6936c3bd79d4a 100644 (file)
@@ -647,14 +647,17 @@ fixup_netwinder(struct machine_desc *desc, struct tag *tags,
 }
 
 MACHINE_START(NETWINDER, "Rebel-NetWinder")
-       MAINTAINER("Russell King/Rebel.com")
-       BOOT_MEM(0x00000000, DC21285_ARMCSR_BASE, 0xfe000000)
-       BOOT_PARAMS(0x00000100)
-       VIDEO(0x000a0000, 0x000bffff)
-       DISABLE_PARPORT(0)
-       DISABLE_PARPORT(2)
-       FIXUP(fixup_netwinder)
-       MAPIO(footbridge_map_io)
-       INITIRQ(footbridge_init_irq)
+       /* Maintainer: Russell King/Rebel.com */
+       .phys_ram       = 0x00000000,
+       .phys_io        = DC21285_ARMCSR_BASE,
+       .io_pg_offst    = ((0xfe000000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .video_start    = 0x000a0000,
+       .video_end      = 0x000bffff,
+       .reserve_lp0    = 1,
+       .reserve_lp2    = 1,
+       .fixup          = fixup_netwinder,
+       .map_io         = footbridge_map_io,
+       .init_irq       = footbridge_init_irq,
        .timer          = &isa_timer,
 MACHINE_END
index 415086d7bbee71f6f611252124fc15307108e2ab..0146b8bb59da36b3ff7323ae2dda0a797c60705c 100644 (file)
 #include "common.h"
 
 MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer")
-       MAINTAINER("Jamey Hicks / George France")
-       BOOT_MEM(0x00000000, DC21285_ARMCSR_BASE, 0xfe000000)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(footbridge_map_io)
-       INITIRQ(footbridge_init_irq)
+       /* Maintainer: Jamey Hicks / George France */
+       .phys_ram       = 0x00000000,
+       .phys_io        = DC21285_ARMCSR_BASE,
+       .io_pg_offst    = ((0xfe000000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = footbridge_map_io,
+       .init_irq       = footbridge_init_irq,
        .timer          = &footbridge_timer,
 MACHINE_END
 
index 9b24b9b0db1575b7a689fc71c0c24ff27a7bdb90..fa59e9e2a5c8cf9f1f4fcef74403d7487aa80e21 100644 (file)
 #include "common.h"
 
 MACHINE_START(H7201, "Hynix GMS30C7201")
-       MAINTAINER("Robert Schwebel, Pengutronix")
-       BOOT_MEM(0x40000000, 0x80000000, 0xf0000000)
-       BOOT_PARAMS(0xc0001000)
-       MAPIO(h720x_map_io)
-       INITIRQ(h720x_init_irq)
-       .timer = &h7201_timer,
+       /* Maintainer: Robert Schwebel, Pengutronix */
+       .phys_ram       = 0x40000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf0000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0001000,
+       .map_io         = h720x_map_io,
+       .init_irq       = h720x_init_irq,
+       .timer          = &h7201_timer,
 MACHINE_END
index 3456a00d5f5cc7b6b19f4cb77ffba70033efd233..db9078ad008c550a0b5c924684df12f280a359e2 100644 (file)
@@ -71,11 +71,13 @@ static void __init init_eval_h7202(void)
 }
 
 MACHINE_START(H7202, "Hynix HMS30C7202")
-       MAINTAINER("Robert Schwebel, Pengutronix")
-       BOOT_MEM(0x40000000, 0x80000000, 0xf0000000)
-       BOOT_PARAMS(0x40000100)
-       MAPIO(h720x_map_io)
-       INITIRQ(h7202_init_irq)
-       .timer = &h7202_timer,
-       INIT_MACHINE(init_eval_h7202)
+       /* Maintainer: Robert Schwebel, Pengutronix */
+       .phys_ram       = 0x40000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf0000000) >> 18) & 0xfffc,
+       .boot_params    = 0x40000100,
+       .map_io         = h720x_map_io,
+       .init_irq       = h7202_init_irq,
+       .timer          = &h7202_timer,
+       .init_machine   = init_eval_h7202,
 MACHINE_END
index 625dd01c2578113f4ffdd8191ebba48d270e0d68..5d25434d332cff721c0c9b43012d3451a800aa81 100644 (file)
@@ -78,11 +78,13 @@ mx1ads_map_io(void)
 }
 
 MACHINE_START(MX1ADS, "Motorola MX1ADS")
-       MAINTAINER("Sascha Hauer, Pengutronix")
-       BOOT_MEM(0x08000000, 0x00200000, 0xe0200000)
-       BOOT_PARAMS(0x08000100)
-       MAPIO(mx1ads_map_io)
-       INITIRQ(imx_init_irq)
+       /* Maintainer: Sascha Hauer, Pengutronix */
+       .phys_ram       = 0x08000000,
+       .phys_io        = 0x00200000,
+       .io_pg_offst    = ((0xe0200000) >> 18) & 0xfffc,
+       .boot_params    = 0x08000100,
+       .map_io         = mx1ads_map_io,
+       .init_irq       = imx_init_irq,
        .timer          = &imx_timer,
-       INIT_MACHINE(mx1ads_init)
+       .init_machine   = mx1ads_init,
 MACHINE_END
index 91ba9fd79c87c7c520b4507e5ca6e51ec1bc7f78..36e2b6eb67b7a0342ca0c07bf41bb8844e670dc8 100644 (file)
@@ -292,11 +292,13 @@ static struct sys_timer ap_timer = {
 };
 
 MACHINE_START(INTEGRATOR, "ARM-Integrator")
-       MAINTAINER("ARM Ltd/Deep Blue Solutions Ltd")
-       BOOT_MEM(0x00000000, 0x16000000, 0xf1600000)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(ap_map_io)
-       INITIRQ(ap_init_irq)
+       /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
+       .phys_ram       = 0x00000000,
+       .phys_io        = 0x16000000,
+       .io_pg_offst    = ((0xf1600000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ap_map_io,
+       .init_irq       = ap_init_irq,
        .timer          = &ap_timer,
-       INIT_MACHINE(ap_init)
+       .init_machine   = ap_init,
 MACHINE_END
index e0a01eef099345efc0dd202b443867db6312cef1..569f328c479db0c4d30e468dd2772f3a9775b78a 100644 (file)
@@ -532,11 +532,13 @@ static struct sys_timer cp_timer = {
 };
 
 MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP")
-       MAINTAINER("ARM Ltd/Deep Blue Solutions Ltd")
-       BOOT_MEM(0x00000000, 0x16000000, 0xf1600000)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(intcp_map_io)
-       INITIRQ(intcp_init_irq)
+       /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
+       .phys_ram       = 0x00000000,
+       .phys_io        = 0x16000000,
+       .io_pg_offst    = ((0xf1600000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = intcp_map_io,
+       .init_irq       = intcp_init_irq,
        .timer          = &cp_timer,
-       INIT_MACHINE(intcp_init)
+       .init_machine   = intcp_init,
 MACHINE_END
index bf23e0fd28438fbf3c7e176f659a4918837ef8c3..0f921ba2750c2f8a7cc0e2ce9ca94c53c4753b41 100644 (file)
@@ -146,23 +146,27 @@ extern void iop321_init_time(void);
 
 #if defined(CONFIG_ARCH_IQ80321)
 MACHINE_START(IQ80321, "Intel IQ80321")
-       MAINTAINER("Intel Corporation")
-       BOOT_MEM(PHYS_OFFSET, IQ80321_UART, IQ80321_UART)
-       MAPIO(iq80321_map_io)
-       INITIRQ(iop321_init_irq)
+       /* Maintainer: Intel Corporation */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IQ80321_UART,
+       .io_pg_offst    = ((IQ80321_UART) >> 18) & 0xfffc,
+       .map_io         = iq80321_map_io,
+       .init_irq       = iop321_init_irq,
        .timer          = &iop321_timer,
-    BOOT_PARAMS(0xa0000100)
-       INIT_MACHINE(iop32x_init)
+       .boot_params    = 0xa0000100,
+       .init_machine   = iop32x_init,
 MACHINE_END
 #elif defined(CONFIG_ARCH_IQ31244)
 MACHINE_START(IQ31244, "Intel IQ31244")
-    MAINTAINER("Intel Corp.")
-    BOOT_MEM(PHYS_OFFSET, IQ31244_UART, IQ31244_UART)
-    MAPIO(iq31244_map_io)
-    INITIRQ(iop321_init_irq)
+       /* Maintainer: Intel Corp. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IQ31244_UART,
+       .io_pg_offst    = ((IQ31244_UART) >> 18) & 0xfffc,
+       .map_io         = iq31244_map_io,
+       .init_irq       = iop321_init_irq,
        .timer          = &iop321_timer,
-    BOOT_PARAMS(0xa0000100)
-       INIT_MACHINE(iop32x_init)
+       .boot_params    = 0xa0000100,
+       .init_machine   = iop32x_init,
 MACHINE_END
 #else
 #error No machine descriptor defined for this IOP3XX implementation
index 622e7914819a49d9b365d9bffe14bfc171a1db5a..fc74b722f72f749be8fc81ae854f2fe150d9fce7 100644 (file)
@@ -148,26 +148,28 @@ extern void iq80332_map_io(void);
 
 #if defined(CONFIG_ARCH_IQ80331)
 MACHINE_START(IQ80331, "Intel IQ80331")
-    MAINTAINER("Intel Corp.")
-    BOOT_MEM(PHYS_OFFSET, 0xfefff000, 0xfffff000) // virtual, physical
-    //BOOT_MEM(PHYS_OFFSET, IOP331_UART0_VIRT, IOP331_UART0_PHYS)
-    MAPIO(iq80331_map_io)
-    INITIRQ(iop331_init_irq)
+       /* Maintainer: Intel Corp. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = 0xfefff000,
+       .io_pg_offst    = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical
+       .map_io         = iq80331_map_io,
+       .init_irq       = iop331_init_irq,
        .timer          = &iop331_timer,
-    BOOT_PARAMS(0x0100)
-       INIT_MACHINE(iop33x_init)
+       .boot_params    = 0x0100,
+       .init_machine   = iop33x_init,
 MACHINE_END
 
 #elif defined(CONFIG_MACH_IQ80332)
 MACHINE_START(IQ80332, "Intel IQ80332")
-    MAINTAINER("Intel Corp.")
-    BOOT_MEM(PHYS_OFFSET, 0xfefff000, 0xfffff000) // virtual, physical
-    //BOOT_MEM(PHYS_OFFSET, IOP331_UART0_VIRT, IOP331_UART0_PHYS)
-    MAPIO(iq80332_map_io)
-    INITIRQ(iop331_init_irq)
+       /* Maintainer: Intel Corp. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = 0xfefff000,
+       .io_pg_offst    = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical
+       .map_io         = iq80332_map_io,
+       .init_irq       = iop331_init_irq,
        .timer          = &iop331_timer,
-    BOOT_PARAMS(0x0100)
-       INIT_MACHINE(iop33x_init)
+       .boot_params    = 0x0100,
+       .init_machine   = iop33x_init,
 MACHINE_END
 
 #else
index f3a291b6a9fb7b72d7eeece51e4739cabef45794..b7ebf3898fc545024ff12e548d09da416b92d861 100644 (file)
@@ -223,13 +223,15 @@ static void __init enp2611_init_machine(void)
 
 
 MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board")
-       MAINTAINER("Lennert Buytenhek <buytenh@wantstofly.org>")
-       BOOT_MEM(0x00000000, IXP2000_UART_PHYS_BASE, IXP2000_UART_VIRT_BASE)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(ixp2000_map_io)
-       INITIRQ(ixp2000_init_irq)
+       /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
+       .phys_ram       = 0x00000000,
+       .phys_io        = IXP2000_UART_PHYS_BASE,
+       .io_pg_offst    = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ixp2000_map_io,
+       .init_irq       = ixp2000_init_irq,
        .timer          = &enp2611_timer,
-       INIT_MACHINE(enp2611_init_machine)
+       .init_machine   = enp2611_init_machine,
 MACHINE_END
 
 
index df3ff26c8cdd1a6b24730002cb72c104fba10416..fd280a93637e89d21ab06d7e7950e7ece0398813 100644 (file)
@@ -168,12 +168,14 @@ void ixdp2400_init_irq(void)
 }
 
 MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(0x00000000, IXP2000_UART_PHYS_BASE, IXP2000_UART_VIRT_BASE)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(ixdp2x00_map_io)
-       INITIRQ(ixdp2400_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = 0x00000000,
+       .phys_io        = IXP2000_UART_PHYS_BASE,
+       .io_pg_offst    = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ixdp2x00_map_io,
+       .init_irq       = ixdp2400_init_irq,
        .timer          = &ixdp2400_timer,
-       INIT_MACHINE(ixdp2x00_init_machine)
+       .init_machine   = ixdp2x00_init_machine,
 MACHINE_END
 
index 468a4bbfb724a84a23a0f44d2d604ffefa84a484..f9073aa28615e41ad801d5b364ed92e7d00d7b66 100644 (file)
@@ -284,12 +284,14 @@ void ixdp2800_init_irq(void)
 }
 
 MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(0x00000000, IXP2000_UART_PHYS_BASE, IXP2000_UART_VIRT_BASE)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(ixdp2x00_map_io)
-       INITIRQ(ixdp2800_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = 0x00000000,
+       .phys_io        = IXP2000_UART_PHYS_BASE,
+       .io_pg_offst    = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ixdp2x00_map_io,
+       .init_irq       = ixdp2800_init_irq,
        .timer          = &ixdp2800_timer,
-       INIT_MACHINE(ixdp2x00_init_machine)
+       .init_machine   = ixdp2x00_init_machine,
 MACHINE_END
 
index e94dace3d412299279cc2e345d1c35db8d9728c7..c73588743ee12f9f1b7c7ecd1aa74db5a9fa8800 100644 (file)
@@ -375,25 +375,29 @@ static void __init ixdp2x01_init_machine(void)
 
 #ifdef CONFIG_ARCH_IXDP2401
 MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(0x00000000, IXP2000_UART_PHYS_BASE, IXP2000_UART_VIRT_BASE)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(ixdp2x01_map_io)
-       INITIRQ(ixdp2x01_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = 0x00000000,
+       .phys_io        = IXP2000_UART_PHYS_BASE,
+       .io_pg_offst    = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ixdp2x01_map_io,
+       .init_irq       = ixdp2x01_init_irq,
        .timer          = &ixdp2x01_timer,
-       INIT_MACHINE(ixdp2x01_init_machine)
+       .init_machine   = ixdp2x01_init_machine,
 MACHINE_END
 #endif
 
 #ifdef CONFIG_ARCH_IXDP2801
 MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(0x00000000, IXP2000_UART_PHYS_BASE, IXP2000_UART_VIRT_BASE)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(ixdp2x01_map_io)
-       INITIRQ(ixdp2x01_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = 0x00000000,
+       .phys_io        = IXP2000_UART_PHYS_BASE,
+       .io_pg_offst    = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = ixdp2x01_map_io,
+       .init_irq       = ixdp2x01_init_irq,
        .timer          = &ixdp2x01_timer,
-       INIT_MACHINE(ixdp2x01_init_machine)
+       .init_machine   = ixdp2x01_init_machine,
 MACHINE_END
 #endif
 
index 8a05a1227e5f66e78e834fe89005430695a9c98e..c6335f51907dbd0481591df2628eacd34e165480 100644 (file)
@@ -100,14 +100,15 @@ static void __init coyote_init(void)
 
 #ifdef CONFIG_ARCH_ADI_COYOTE
 MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote")
-        MAINTAINER("MontaVista Software, Inc.")
-        BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
-                IXP4XX_PERIPHERAL_BASE_VIRT)
-        MAPIO(coyote_map_io)
-        INITIRQ(ixp4xx_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = coyote_map_io,
+       .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
-        BOOT_PARAMS(0x0100)
-       INIT_MACHINE(coyote_init)
+       .boot_params    = 0x0100,
+       .init_machine   = coyote_init,
 MACHINE_END
 #endif
 
@@ -117,14 +118,15 @@ MACHINE_END
  */
 #ifdef CONFIG_MACH_IXDPG425
 MACHINE_START(IXDPG425, "Intel IXDPG425")
-        MAINTAINER("MontaVista Software, Inc.")
-        BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
-                IXP4XX_PERIPHERAL_BASE_VIRT)
-        MAPIO(coyote_map_io)
-        INITIRQ(ixp4xx_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = coyote_map_io,
+       .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
-        BOOT_PARAMS(0x0100)
-       INIT_MACHINE(coyote_init)
+       .boot_params    = 0x0100,
+       .init_machine   = coyote_init,
 MACHINE_END
 #endif
 
index e77c86efd21d7c0895ab0f51c7c47dbf4f8c3b89..8ba1cd9406e702fbc66f1be2dd9124599d6c1630 100644 (file)
@@ -140,14 +140,15 @@ static void __init gtwx5715_init(void)
 
 
 MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)")
-        MAINTAINER("George Joseph")
-        BOOT_MEM(PHYS_OFFSET, IXP4XX_UART2_BASE_PHYS,
-                IXP4XX_UART2_BASE_VIRT)
-        MAPIO(gtwx5715_map_io)
-        INITIRQ(ixp4xx_init_irq)
-                 .timer                = &ixp4xx_timer,
-        BOOT_PARAMS(0x0100)
-        INIT_MACHINE(gtwx5715_init)
+       /* Maintainer: George Joseph */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_UART2_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_UART2_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = gtwx5715_map_io,
+       .init_irq       = ixp4xx_init_irq,
+       .timer          = &ixp4xx_timer,
+       .boot_params    = 0x0100,
+       .init_machine   = gtwx5715_init,
 MACHINE_END
 
 
index 77346c1f676bb3eae251319b7f773267eb5f10ae..f2e9c0ea05019405b1ba868fa7d2f3ae5c164f70 100644 (file)
@@ -128,36 +128,39 @@ static void __init ixdp425_init(void)
 }
 
 MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
-               IXP4XX_PERIPHERAL_BASE_VIRT)
-       MAPIO(ixdp425_map_io)
-       INITIRQ(ixp4xx_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = ixdp425_map_io,
+       .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
-       BOOT_PARAMS(0x0100)
-       INIT_MACHINE(ixdp425_init)
+       .boot_params    = 0x0100,
+       .init_machine   = ixdp425_init,
 MACHINE_END
 
 MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
-               IXP4XX_PERIPHERAL_BASE_VIRT)
-       MAPIO(ixdp425_map_io)
-       INITIRQ(ixp4xx_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = ixdp425_map_io,
+       .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
-       BOOT_PARAMS(0x0100)
-       INIT_MACHINE(ixdp425_init)
+       .boot_params    = 0x0100,
+       .init_machine   = ixdp425_init,
 MACHINE_END
 
 MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
-               IXP4XX_PERIPHERAL_BASE_VIRT)
-       MAPIO(ixdp425_map_io)
-       INITIRQ(ixp4xx_init_irq)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = ixdp425_map_io,
+       .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
-       BOOT_PARAMS(0x0100)
-       INIT_MACHINE(ixdp425_init)
+       .boot_params    = 0x0100,
+       .init_machine   = ixdp425_init,
 MACHINE_END
 
 /*
@@ -168,14 +171,15 @@ MACHINE_END
  */
 #ifdef CONFIG_ARCH_AVILA
 MACHINE_START(AVILA, "Gateworks Avila Network Platform")
-       MAINTAINER("Deepak Saxena <dsaxena@plexity.net>")
-       BOOT_MEM(PHYS_OFFSET, IXP4XX_PERIPHERAL_BASE_PHYS,
-               IXP4XX_PERIPHERAL_BASE_VIRT)
-       MAPIO(ixdp425_map_io)
-       INITIRQ(ixp4xx_init_irq)
+       /* Maintainer: Deepak Saxena <dsaxena@plexity.net> */
+       .phys_ram       = PHYS_OFFSET,
+       .phys_io        = IXP4XX_PERIPHERAL_BASE_PHYS,
+       .io_pg_offst    = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+       .map_io         = ixdp425_map_io,
+       .init_irq       = ixp4xx_init_irq,
        .timer          = &ixp4xx_timer,
-       BOOT_PARAMS(0x0100)
-       INIT_MACHINE(ixdp425_init)
+       .boot_params    = 0x0100,
+       .init_machine   = ixdp425_init,
 MACHINE_END
 #endif
 
index 606ca95f8217767b5cc2d6e47f01854d990c4cdc..2a7fee2a7635109212810c0f5cbc5ca959f364b3 100644 (file)
@@ -81,9 +81,11 @@ static void __init l7200_map_io(void)
 }
 
 MACHINE_START(L7200, "LinkUp Systems L7200")
-       MAINTAINER("Steve Hill / Scott McConnell")
-       BOOT_MEM(0xf0000000, 0x80040000, 0xd0000000)
-       MAPIO(l7200_map_io)
-       INITIRQ(l7200_init_irq)
+       /* Maintainer: Steve Hill / Scott McConnell */
+       .phys_ram       = 0xf0000000,
+       .phys_io        = 0x80040000,
+       .io_pg_offst    = ((0xd0000000) >> 18) & 0xfffc,
+       .map_io         = l7200_map_io,
+       .init_irq       = l7200_init_irq,
 MACHINE_END
 
index be5d17fe9dcbeec55805452971561019f027caae..cb3dcd3bd00a5a25fb4b39533ec9d6397ef284a3 100644 (file)
@@ -102,10 +102,12 @@ void __init lh7a40x_init_board_irq (void)
 }
 
 MACHINE_START (KEV7A400, "Sharp KEV7a400")
-       MAINTAINER ("Marc Singer")
-       BOOT_MEM (0xc0000000, 0x80000000, io_p2v (0x80000000))
-       BOOT_PARAMS (0xc0000100)
-       MAPIO (kev7a400_map_io)
-       INITIRQ (lh7a400_init_irq)
+       /* Maintainer: Marc Singer */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((io_p2v (0x80000000))>>18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = kev7a400_map_io,
+       .init_irq       = lh7a400_init_irq,
        .timer          = &lh7a40x_timer,
 MACHINE_END
index c823447a150f76dd6b8f0fd373b3d0cc11586ab1..6eb61a17c63be3cb9527dfb312fbf3b699a20f31 100644 (file)
@@ -260,13 +260,15 @@ lpd7a400_map_io(void)
 #ifdef CONFIG_MACH_LPD7A400
 
 MACHINE_START (LPD7A400, "Logic Product Development LPD7A400-10")
-       MAINTAINER ("Marc Singer")
-       BOOT_MEM (0xc0000000, 0x80000000, io_p2v (0x80000000))
-       BOOT_PARAMS (0xc0000100)
-       MAPIO (lpd7a400_map_io)
-       INITIRQ (lh7a400_init_irq)
+       /* Maintainer: Marc Singer */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((io_p2v (0x80000000))>>18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = lpd7a400_map_io,
+       .init_irq       = lh7a400_init_irq,
        .timer          = &lh7a40x_timer,
-       INIT_MACHINE (lpd7a40x_init)
+       .init_machine   = lpd7a40x_init,
 MACHINE_END
 
 #endif
@@ -274,13 +276,15 @@ MACHINE_END
 #ifdef CONFIG_MACH_LPD7A404
 
 MACHINE_START (LPD7A404, "Logic Product Development LPD7A404-10")
-       MAINTAINER ("Marc Singer")
-       BOOT_MEM (0xc0000000, 0x80000000, io_p2v (0x80000000))
-       BOOT_PARAMS (0xc0000100)
-       MAPIO (lpd7a400_map_io)
-       INITIRQ (lh7a404_init_irq)
+       /* Maintainer: Marc Singer */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((io_p2v (0x80000000))>>18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = lpd7a400_map_io,
+       .init_irq       = lh7a404_init_irq,
        .timer          = &lh7a40x_timer,
-       INIT_MACHINE (lpd7a40x_init)
+       .init_machine   = lpd7a40x_init,
 MACHINE_END
 
 #endif
index 2102a2cd10135039a41ca879dcb6d9db70d51724..384bc7cec1dbfa16aca75b4da63683bda30609d0 100644 (file)
@@ -88,11 +88,13 @@ static void __init omap_generic_map_io(void)
 }
 
 MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
-       MAINTAINER("Tony Lindgren <tony@atomide.com>")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(omap_generic_map_io)
-       INITIRQ(omap_generic_init_irq)
-       INIT_MACHINE(omap_generic_init)
+       /* Maintainer: Tony Lindgren <tony@atomide.com> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = omap_generic_map_io,
+       .init_irq       = omap_generic_init_irq,
+       .init_machine   = omap_generic_init,
        .timer          = &omap_timer,
 MACHINE_END
index 1f067830d1fcdc83e681c2400c735762982358f9..f37c76a9b163958a4e7a10b10bc1ead36c151959 100644 (file)
@@ -177,11 +177,13 @@ static void __init h2_map_io(void)
 }
 
 MACHINE_START(OMAP_H2, "TI-H2")
-       MAINTAINER("Imre Deak <imre.deak@nokia.com>")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(h2_map_io)
-       INITIRQ(h2_init_irq)
-       INIT_MACHINE(h2_init)
+       /* Maintainer: Imre Deak <imre.deak@nokia.com> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = h2_map_io,
+       .init_irq       = h2_init_irq,
+       .init_machine   = h2_init,
        .timer          = &omap_timer,
 MACHINE_END
index 486a5a006c9a276eb41d1a4c149777ca56ad8917..705e48594e9a51a17a52a9518edb16a388e0cc4a 100644 (file)
@@ -195,11 +195,13 @@ static void __init h3_map_io(void)
 }
 
 MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
-       MAINTAINER("Texas Instruments, Inc.")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(h3_map_io)
-       INITIRQ(h3_init_irq)
-       INIT_MACHINE(h3_init)
+       /* Maintainer: Texas Instruments, Inc. */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = h3_map_io,
+       .init_irq       = h3_init_irq,
+       .init_machine   = h3_init,
        .timer          = &omap_timer,
 MACHINE_END
index 57cf4da88d55b768369163067c19ff4337fa53cd..523363f18cc077d6337ccec1944e2579395c3520 100644 (file)
@@ -270,11 +270,13 @@ static void __init innovator_map_io(void)
 }
 
 MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
-       MAINTAINER("MontaVista Software, Inc.")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(innovator_map_io)
-       INITIRQ(innovator_init_irq)
-       INIT_MACHINE(innovator_init)
+       /* Maintainer: MontaVista Software, Inc. */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = innovator_map_io,
+       .init_irq       = innovator_init_irq,
+       .init_machine   = innovator_init,
        .timer          = &omap_timer,
 MACHINE_END
index 54acbd215c4bd2de548ebd93154291707ad6cb19..8c653734d5a372de06ab948b8e789c43071dc35b 100644 (file)
@@ -141,11 +141,13 @@ static int __init netstar_late_init(void)
 postcore_initcall(netstar_late_init);
 
 MACHINE_START(NETSTAR, "NetStar OMAP5910")
-       MAINTAINER("Ladislav Michl <michl@2n.cz>")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(netstar_map_io)
-       INITIRQ(netstar_init_irq)
-       INIT_MACHINE(netstar_init)
-       .timer = &omap_timer,
+       /* Maintainer: Ladislav Michl <michl@2n.cz> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = netstar_map_io,
+       .init_irq       = netstar_init_irq,
+       .init_machine   = netstar_init,
+       .timer          = &omap_timer,
 MACHINE_END
index a951fc82459b39e59a9a1d943ab89e84bcd13f96..cb433436aa0884abc9772ad66cede1e4f9ae6f21 100644 (file)
@@ -159,11 +159,13 @@ static void __init osk_map_io(void)
 }
 
 MACHINE_START(OMAP_OSK, "TI-OSK")
-       MAINTAINER("Dirk Behme <dirk.behme@de.bosch.com>")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(osk_map_io)
-       INITIRQ(osk_init_irq)
-       INIT_MACHINE(osk_init)
+       /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = osk_map_io,
+       .init_irq       = osk_init_irq,
+       .init_machine   = osk_init,
        .timer          = &omap_timer,
 MACHINE_END
index 64515aeb49cf303701687241c6e9f7c10bb64656..d5342043d48f455937d63f5e91e182e51b5d212d 100644 (file)
@@ -179,11 +179,13 @@ static void __init omap_perseus2_map_io(void)
 }
 
 MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
-       MAINTAINER("Kevin Hilman <kjh@hilman.org>")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(omap_perseus2_map_io)
-       INITIRQ(omap_perseus2_init_irq)
-       INIT_MACHINE(omap_perseus2_init)
+       /* Maintainer: Kevin Hilman <kjh@hilman.org> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = omap_perseus2_map_io,
+       .init_irq       = omap_perseus2_init_irq,
+       .init_machine   = omap_perseus2_init,
        .timer          = &omap_timer,
 MACHINE_END
index f1a5bffac6668e0d506af379c81e497caddc4596..6b0c5003d7191f346158400140cab52afcd35d99 100644 (file)
@@ -246,11 +246,13 @@ EXPORT_SYMBOL(voiceblue_wdt_disable);
 EXPORT_SYMBOL(voiceblue_wdt_ping);
 
 MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910")
-       MAINTAINER("Ladislav Michl <michl@2n.cz>")
-       BOOT_MEM(0x10000000, 0xfff00000, 0xfef00000)
-       BOOT_PARAMS(0x10000100)
-       MAPIO(voiceblue_map_io)
-       INITIRQ(voiceblue_init_irq)
-       INIT_MACHINE(voiceblue_init)
-       .timer = &omap_timer,
+       /* Maintainer: Ladislav Michl <michl@2n.cz> */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0xfff00000,
+       .io_pg_offst    = ((0xfef00000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .map_io         = voiceblue_map_io,
+       .init_irq       = voiceblue_init_irq,
+       .init_machine   = voiceblue_init,
+       .timer          = &omap_timer,
 MACHINE_END
index 7f37857b1a28fe0eb08a1aa520a271e14dd5d295..fd483ff9f8fe3c54a66faf419fc9c067a8424f2f 100644 (file)
@@ -41,7 +41,6 @@
 
 /* These routines should handle the standard chip-specific modes
  * for usb0/1/2 ports, covering basic mux and transceiver setup.
- * Call omap_usb_init() once, from INIT_MACHINE().
  *
  * Some board-*.c files will need to set up additional mux options,
  * like for suspend handling, vbus sensing, GPIOs, and the D+ pullup.
index c4e6d252358533c9a9cb4df28b0aa38ee76c8943..efc2f657184edaf0245863b8782510985f28eb00 100644 (file)
@@ -24,3 +24,7 @@ obj-$(CONFIG_LEDS) += $(led-y)
 
 # Misc features
 obj-$(CONFIG_PM) += pm.o sleep.o
+
+ifeq ($(CONFIG_PXA27x),y)
+obj-$(CONFIG_PM) += standby.o
+endif
index f691cf77d3908a6b4539758382ef8f8c29493755..86b862f56e7e9ad046f0c374e156bb95eb990418 100644 (file)
@@ -287,34 +287,40 @@ static void __init corgi_map_io(void)
 
 #ifdef CONFIG_MACH_CORGI
 MACHINE_START(CORGI, "SHARP Corgi")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       FIXUP(fixup_corgi)
-       MAPIO(corgi_map_io)
-       INITIRQ(corgi_init_irq)
-       .init_machine = corgi_init,
-       .timer = &pxa_timer,
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .fixup          = fixup_corgi,
+       .map_io         = corgi_map_io,
+       .init_irq       = corgi_init_irq,
+       .init_machine   = corgi_init,
+       .timer          = &pxa_timer,
 MACHINE_END
 #endif
 
 #ifdef CONFIG_MACH_SHEPHERD
 MACHINE_START(SHEPHERD, "SHARP Shepherd")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       FIXUP(fixup_corgi)
-       MAPIO(corgi_map_io)
-       INITIRQ(corgi_init_irq)
-       .init_machine = corgi_init,
-       .timer = &pxa_timer,
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .fixup          = fixup_corgi,
+       .map_io         = corgi_map_io,
+       .init_irq       = corgi_init_irq,
+       .init_machine   = corgi_init,
+       .timer          = &pxa_timer,
 MACHINE_END
 #endif
 
 #ifdef CONFIG_MACH_HUSKY
 MACHINE_START(HUSKY, "SHARP Husky")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       FIXUP(fixup_corgi)
-       MAPIO(corgi_map_io)
-       INITIRQ(corgi_init_irq)
-       .init_machine = corgi_init,
-       .timer = &pxa_timer,
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .fixup          = fixup_corgi,
+       .map_io         = corgi_map_io,
+       .init_irq       = corgi_init_irq,
+       .init_machine   = corgi_init,
+       .timer          = &pxa_timer,
 MACHINE_END
 #endif
 
index c5a66bf4d3d5342783d075487d791a9519282fff..386e107b53cc754fd0e7dfe8dfa01ed57e94bc5d 100644 (file)
@@ -181,10 +181,12 @@ static void __init idp_map_io(void)
 
 
 MACHINE_START(PXA_IDP, "Vibren PXA255 IDP")
-       MAINTAINER("Vibren Technologies")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       MAPIO(idp_map_io)
-       INITIRQ(idp_init_irq)
+       /* Maintainer: Vibren Technologies */
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .map_io         = idp_map_io,
+       .init_irq       = idp_init_irq,
        .timer          = &pxa_timer,
-       INIT_MACHINE(idp_init)
+       .init_machine   = idp_init,
 MACHINE_END
index f2c9e0d2b24b64517efb8c69391603d4ead0c58f..6309853b59bef49deafd753b6166ceea032e7d8e 100644 (file)
@@ -268,10 +268,12 @@ static void __init lubbock_map_io(void)
 }
 
 MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)")
-       MAINTAINER("MontaVista Software Inc.")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       MAPIO(lubbock_map_io)
-       INITIRQ(lubbock_init_irq)
+       /* Maintainer: MontaVista Software Inc. */
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .map_io         = lubbock_map_io,
+       .init_irq       = lubbock_init_irq,
        .timer          = &pxa_timer,
-       INIT_MACHINE(lubbock_init)
+       .init_machine   = lubbock_init,
 MACHINE_END
index 9896afca751fc580bb6692a946d014919713a1c4..827b7b5a5be84438e2f3ceb55c6603198dfee23e 100644 (file)
@@ -345,10 +345,12 @@ static void __init mainstone_map_io(void)
 }
 
 MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
-       MAINTAINER("MontaVista Software Inc.")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       MAPIO(mainstone_map_io)
-       INITIRQ(mainstone_init_irq)
+       /* Maintainer: MontaVista Software Inc. */
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .map_io         = mainstone_map_io,
+       .init_irq       = mainstone_init_irq,
        .timer          = &pxa_timer,
-       INIT_MACHINE(mainstone_init)
+       .init_machine   = mainstone_init,
 MACHINE_END
index b6c746ea38305b7f05537a9d3ac59742e6ae8bdf..0e4f6fab100a5456cb2d4bef67aa7ea5e7eb3109 100644 (file)
@@ -180,10 +180,12 @@ static void __init poodle_map_io(void)
 }
 
 MACHINE_START(POODLE, "SHARP Poodle")
-       BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
-       FIXUP(fixup_poodle)
-       MAPIO(poodle_map_io)
-       INITIRQ(pxa_init_irq)
-       .timer = &pxa_timer,
-       .init_machine = poodle_init,
+       .phys_ram       = 0xa0000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = (io_p2v(0x40000000) >> 18) & 0xfffc,
+       .fixup          = fixup_poodle,
+       .map_io         = poodle_map_io,
+       .init_irq       = pxa_init_irq,
+       .timer          = &pxa_timer,
+       .init_machine   = poodle_init,
 MACHINE_END
index 893964fb9659bbabed5ed818377f430315915ef2..9a791b07118df2a71163db05cb476d5a44b614b7 100644 (file)
@@ -126,6 +126,7 @@ int pxa_cpu_pm_prepare(suspend_state_t state)
 {
        switch (state) {
        case PM_SUSPEND_MEM:
+       case PM_SUSPEND_STANDBY:
                return 0;
        default:
                return -EINVAL;
@@ -138,7 +139,10 @@ void pxa_cpu_pm_enter(suspend_state_t state)
        extern void pxa_cpu_suspend(unsigned int);
        extern void pxa_cpu_resume(void);
 
-       CKEN = CKEN22_MEMC | CKEN9_OSTIMER;
+       if (state == PM_SUSPEND_STANDBY)
+               CKEN = CKEN22_MEMC | CKEN9_OSTIMER | CKEN16_LCD |CKEN0_PWM0;
+       else
+               CKEN = CKEN22_MEMC | CKEN9_OSTIMER;
 
        /* ensure voltage-change sequencer not initiated, which hangs */
        PCFR &= ~PCFR_FVC;
@@ -147,6 +151,9 @@ void pxa_cpu_pm_enter(suspend_state_t state)
        PEDR = 0xDF12FE1B;
 
        switch (state) {
+       case PM_SUSPEND_STANDBY:
+               pxa_cpu_standby();
+               break;
        case PM_SUSPEND_MEM:
                /* set resume return address */
                PSPR = virt_to_phys(pxa_cpu_resume);
diff --git a/arch/arm/mach-pxa/standby.S b/arch/arm/mach-pxa/standby.S
new file mode 100644 (file)
index 0000000..8a3f27b
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * PXA27x standby mode
+ *
+ * Author: David Burrage
+ *
+ * 2005 (c) MontaVista Software, Inc. This file is licensed under
+ * the terms of the GNU General Public License version 2. This program
+ * is licensed "as is" without any warranty of any kind, whether express
+ * or implied.
+ */
+
+#include <linux/config.h>
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+#include <asm/hardware.h>
+
+#include <asm/arch/pxa-regs.h>
+
+               .text
+
+ENTRY(pxa_cpu_standby)
+       ldr     r0, =PSSR
+       mov     r1, #(PSSR_PH | PSSR_STS)
+       mov     r2, #2
+       mov     r3, #UNCACHED_PHYS_0    @ Read mem context in.
+       ldr     ip, [r3]
+       b       1f
+
+       .align  5
+1:     mcr     p14, 0, r2, c7, c0, 0   @ put the system into Standby
+       str     r1, [r0]                @ make sure PSSR_PH/STS are clear
+       mov     pc, lr
index 43710688143650cee3fa3132172e14142e1a7f94..a10268618f7414674e438fb30d9569acf06b2f0c 100644 (file)
@@ -163,12 +163,14 @@ arch_initcall(rpc_init);
 extern struct sys_timer ioc_timer;
 
 MACHINE_START(RISCPC, "Acorn-RiscPC")
-       MAINTAINER("Russell King")
-       BOOT_MEM(0x10000000, 0x03000000, 0xe0000000)
-       BOOT_PARAMS(0x10000100)
-       DISABLE_PARPORT(0)
-       DISABLE_PARPORT(1)
-       MAPIO(rpc_map_io)
-       INITIRQ(rpc_init_irq)
+       /* Maintainer: Russell King */
+       .phys_ram       = 0x10000000,
+       .phys_io        = 0x03000000,
+       .io_pg_offst    = ((0xe0000000) >> 18) & 0xfffc,
+       .boot_params    = 0x10000100,
+       .reserve_lp0    = 1,
+       .reserve_lp1    = 1,
+       .map_io         = rpc_map_io,
+       .init_irq       = rpc_init_irq,
        .timer          = &ioc_timer,
 MACHINE_END
index 549bcb1f32c050160e656c6a9d8ca1d383cd0469..ccb6bcefa46c5e265815d24f7f2afa00dfcff7c1 100644 (file)
@@ -407,10 +407,11 @@ void __init bast_map_io(void)
 
 
 MACHINE_START(BAST, "Simtec-BAST")
-     MAINTAINER("Ben Dooks <ben@simtec.co.uk>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
-
+       /* Maintainer: Ben Dooks <ben@simtec.co.uk> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
        .map_io         = bast_map_io,
        .init_irq       = s3c24xx_init_irq,
        .timer          = &s3c24xx_timer,
index 2924afc068a43dd7d19b9b93ec35c113778966b9..ea4fb1a97a50aa1fbcba1d883918808eb601d218 100644 (file)
@@ -117,10 +117,12 @@ void __init h1940_init_irq(void)
 }
 
 MACHINE_START(H1940, "IPAQ-H1940")
-     MAINTAINER("Ben Dooks <ben@fluff.org>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
-     MAPIO(h1940_map_io)
-     INITIRQ(h1940_init_irq)
+       /* Maintainer: Ben Dooks <ben@fluff.org> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
+       .map_io         = h1940_map_io,
+       .init_irq       = h1940_init_irq,
        .timer          = &s3c24xx_timer,
 MACHINE_END
index bd15998c129bcc12d6e12716f2ff929a17c82478..79044d9bce38c281644c70a94a5ffd58348dcbda 100644 (file)
@@ -137,10 +137,11 @@ void __init n30_init(void)
 }
 
 MACHINE_START(N30, "Acer-N30")
-     MAINTAINER("Christer Weinigel <christer@weinigel.se>, Ben Dooks <ben-linux@fluff.org>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
-
+       /* Maintainer: Christer Weinigel <christer@weinigel.se>, Ben Dooks <ben-linux@fluff.org> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
        .timer          = &s3c24xx_timer,
        .init_machine   = n30_init,
        .init_irq       = n30_init_irq,
index 70487bf4b71ece536c0973661a57f2718282b5ec..d24c242414ca22a03333425b9222620fe6fc84e0 100644 (file)
@@ -147,9 +147,11 @@ void __init nexcoder_map_io(void)
 
 
 MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440")
-     MAINTAINER("Guillaume GOURAT <guillaume.gourat@nexvision.tv>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
+       /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
        .map_io         = nexcoder_map_io,
        .init_irq       = s3c24xx_init_irq,
        .timer          = &s3c24xx_timer,
index 67d8ce8fb00f54234a2effa721fea8ac3239f9b1..d901ed492ff55b7f4090bb8d64ff5351a9c2797d 100644 (file)
@@ -115,9 +115,11 @@ void __init otom11_map_io(void)
 
 
 MACHINE_START(OTOM, "Nex Vision - Otom 1.1")
-     MAINTAINER("Guillaume GOURAT <guillaume.gourat@nexvision.tv>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
+       /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
        .map_io         = otom11_map_io,
        .init_irq       = s3c24xx_init_irq,
        .timer          = &s3c24xx_timer,
index f8d3a9784e711ba3303725117b9408695824481f..a73d61c1de461f310533199af4783ece59aef4c6 100644 (file)
@@ -131,11 +131,13 @@ static void __init rx3715_init_machine(void)
 #endif
 
 MACHINE_START(RX3715, "IPAQ-RX3715")
-     MAINTAINER("Ben Dooks <ben@fluff.org>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
-     MAPIO(rx3715_map_io)
-     INITIRQ(rx3715_init_irq)
-     INIT_MACHINE(rx3715_init_machine)
+       /* Maintainer: Ben Dooks <ben@fluff.org> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
+       .map_io         = rx3715_map_io,
+       .init_irq       = rx3715_init_irq,
+       .init_machine   = rx3715_init_machine,
        .timer          = &s3c24xx_timer,
 MACHINE_END
index c1a4a1420ea0e65598c6b5fb658a381d75cde6e6..67e903a700d3c00cd0249344fc917fd0ed6f9ee9 100644 (file)
@@ -112,11 +112,13 @@ void __init smdk2410_init_irq(void)
 
 MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch
                                    * to SMDK2410 */
-     MAINTAINER("Jonas Dietsche")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
-     MAPIO(smdk2410_map_io)
-     INITIRQ(smdk2410_init_irq)
+       /* Maintainer: Jonas Dietsche */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
+       .map_io         = smdk2410_map_io,
+       .init_irq       = smdk2410_init_irq,
        .timer          = &s3c24xx_timer,
 MACHINE_END
 
index 7857176d9bcb21ae32c4d9b692c9d64c0491ed4e..357522106f68c44c935f727bfecd6c1cacc7aa01 100644 (file)
@@ -124,9 +124,11 @@ void __init smdk2440_machine_init(void)
 }
 
 MACHINE_START(S3C2440, "SMDK2440")
-       MAINTAINER("Ben Dooks <ben@fluff.org>")
-       BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-       BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
+       /* Maintainer: Ben Dooks <ben@fluff.org> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
 
        .init_irq       = s3c24xx_init_irq,
        .map_io         = smdk2440_map_io,
index 1db2855e3e561ae62eaae6d7ee98bee37aaf72f0..924e8464c21273b5503d7aa7c96593ba28f281cb 100644 (file)
@@ -373,9 +373,11 @@ void __init vr1000_map_io(void)
 
 
 MACHINE_START(VR1000, "Thorcom-VR1000")
-     MAINTAINER("Ben Dooks <ben@simtec.co.uk>")
-     BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
-     BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
+       /* Maintainer: Ben Dooks <ben@simtec.co.uk> */
+       .phys_ram       = S3C2410_SDRAM_PA,
+       .phys_io        = S3C2410_PA_UART,
+       .io_pg_offst    = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
+       .boot_params    = S3C2410_SDRAM_PA + 0x100,
        .map_io         = vr1000_map_io,
        .init_irq       = s3c24xx_init_irq,
        .timer          = &s3c24xx_timer,
index bedf88fafe0825e4a51e3207fbdb404332980a09..4d4d303ee3a8003bdbd4e5f48a8a04480fadfd1e 100644 (file)
@@ -431,11 +431,13 @@ static void __init assabet_map_io(void)
 
 
 MACHINE_START(ASSABET, "Intel-Assabet")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       FIXUP(fixup_assabet)
-       MAPIO(assabet_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .fixup          = fixup_assabet,
+       .map_io         = assabet_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = assabet_init,
 MACHINE_END
index 6a60b497ab42437742bf327e8c1f490d4044c0cc..b6169cb091967d62c9c4b55920af89b2b51d4a84 100644 (file)
@@ -285,9 +285,11 @@ static void __init badge4_map_io(void)
 }
 
 MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(badge4_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = badge4_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
 MACHINE_END
index f8edde5e7cbfcb7b302410710f4044484162bc34..0aa918e24c3123c26caa928a7683aa4e5d45bf9d 100644 (file)
@@ -123,10 +123,12 @@ static void __init cerf_init(void)
 }
 
 MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
-       MAINTAINER("support@intrinsyc.com")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       MAPIO(cerf_map_io)
-       INITIRQ(cerf_init_irq)
+       /* Maintainer: support@intrinsyc.com */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .map_io         = cerf_map_io,
+       .init_irq       = cerf_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = cerf_init,
 MACHINE_END
index 99287890d3964e9ba64f2d25edac4c7d2ba010d3..8cb69113a57c89beae576c7a7a7a4d54ddfb9346 100644 (file)
@@ -184,9 +184,11 @@ static void __init collie_map_io(void)
 }
 
 MACHINE_START(COLLIE, "Sharp-Collie")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       MAPIO(collie_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .map_io         = collie_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = collie_init,
 MACHINE_END
index 8d2a89a2ea015d7cfdfbc3ce1a9845b4591c0cb6..04c94ab6c18b19f7eac1ffc47a5e11bfe11bed38 100644 (file)
@@ -271,8 +271,7 @@ static int sa1110_target(struct cpufreq_policy *policy,
         */
        sdram_set_refresh(2);
        if (!irqs_disabled()) {
-               set_current_state(TASK_UNINTERRUPTIBLE);
-               schedule_timeout(20 * HZ / 1000);
+               msleep(20);
        } else {
                mdelay(20);
        }
index 65dbe991426dda1bd5993a608ef66b572a337064..e7aa2681ca6419a13255939bfa52beb3a65eaf72 100644 (file)
@@ -380,10 +380,12 @@ static void __init h3100_map_io(void)
 }
 
 MACHINE_START(H3100, "Compaq iPAQ H3100")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(h3100_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = h3100_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3xxx_mach_init,
 MACHINE_END
@@ -496,10 +498,12 @@ static void __init h3600_map_io(void)
 }
 
 MACHINE_START(H3600, "Compaq iPAQ H3600")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(h3600_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = h3600_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3xxx_mach_init,
 MACHINE_END
@@ -881,10 +885,12 @@ static void __init h3800_map_io(void)
 }
 
 MACHINE_START(H3800, "Compaq iPAQ H3800")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(h3800_map_io)
-       INITIRQ(h3800_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = h3800_map_io,
+       .init_irq       = h3800_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = h3xxx_mach_init,
 MACHINE_END
index 5708417797142c93136e6bd37b157f30ef8dfc49..502d65cfe6543ba375ec4e6cf0386cfb0678a521 100644 (file)
@@ -191,10 +191,12 @@ static void __init hackkit_init(void)
  */
 
 MACHINE_START(HACKKIT, "HackKit Cpu Board")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(hackkit_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = hackkit_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = hackkit_init,
 MACHINE_END
index 6be78291a8783c86c0181cb78987541d9220d68f..eee3cbc5ec4f4d3a7bd9e0fcde4fc74e746c0454 100644 (file)
@@ -97,9 +97,11 @@ static void __init jornada720_map_io(void)
 }
 
 MACHINE_START(JORNADA720, "HP Jornada 720")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(jornada720_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = jornada720_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
 MACHINE_END
index 51c08ccfb8db7ac20842a1a5aa1bfc72bc8011d5..870b488aeda44323172400c76bfd2e1274fbf9a8 100644 (file)
@@ -41,9 +41,11 @@ static void __init lart_map_io(void)
 }
 
 MACHINE_START(LART, "LART")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(lart_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = lart_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
 MACHINE_END
index 5606bd71b0244cb30da5b2ac2b75a81e2f4930ee..e17b58fb9c9c310aa3cf91b3bb783ecd55e52b1c 100644 (file)
@@ -146,9 +146,11 @@ static void __init pleb_map_io(void)
 }
 
 MACHINE_START(PLEB, "PLEB")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       MAPIO(pleb_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .map_io         = pleb_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = pleb_init,
 MACHINE_END
index edddd559be0264c53f5a6477436081828f22fca5..43a00359fcdddf9e8d0186702112ae98659f9921 100644 (file)
@@ -76,10 +76,12 @@ static void __init shannon_map_io(void)
 }
 
 MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-       BOOT_PARAMS(0xc0000100)
-       MAPIO(shannon_map_io)
-       INITIRQ(sa1100_init_irq)
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = shannon_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
        .init_machine   = shannon_init,
 MACHINE_END
index 8d113d6298673961224aa410e78e8e80ea7bd397..77978586b1268d955e2fa58fdaab475a2408ee0c 100644 (file)
@@ -215,10 +215,12 @@ arch_initcall(simpad_init);
 
 
 MACHINE_START(SIMPAD, "Simpad")
-       MAINTAINER("Holger Freyther")
-       BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
-        BOOT_PARAMS(0xc0000100)
-       MAPIO(simpad_map_io)
-       INITIRQ(sa1100_init_irq)
+       /* Maintainer: Holger Freyther */
+       .phys_ram       = 0xc0000000,
+       .phys_io        = 0x80000000,
+       .io_pg_offst    = ((0xf8000000) >> 18) & 0xfffc,
+       .boot_params    = 0xc0000100,
+       .map_io         = simpad_map_io,
+       .init_irq       = sa1100_init_irq,
        .timer          = &sa1100_timer,
 MACHINE_END
index aa0e2f6e02f6df52da2a31755107340f289eeae8..726445895b5c2ae612cac10407ee8d295b0e454e 100644 (file)
@@ -105,10 +105,12 @@ static struct sys_timer shark_timer = {
 };
 
 MACHINE_START(SHARK, "Shark")
-       MAINTAINER("Alexander Schulz")
-       BOOT_MEM(0x08000000, 0x40000000, 0xe0000000)
-       BOOT_PARAMS(0x08003000)
-       MAPIO(shark_map_io)
-       INITIRQ(shark_init_irq)
+       /* Maintainer: Alexander Schulz */
+       .phys_ram       = 0x08000000,
+       .phys_io        = 0x40000000,
+       .io_pg_offst    = ((0xe0000000) >> 18) & 0xfffc,
+       .boot_params    = 0x08003000,
+       .map_io         = shark_map_io,
+       .init_irq       = shark_init_irq,
        .timer          = &shark_timer,
 MACHINE_END
index d332084586cf6c21cfe001da2cf8c57badaf4545..8b0b3bef24aece3a51315e355d33779a78b402a0 100644 (file)
 #include "core.h"
 
 MACHINE_START(VERSATILE_AB, "ARM-Versatile AB")
-       MAINTAINER("ARM Ltd/Deep Blue Solutions Ltd")
-       BOOT_MEM(0x00000000, 0x101f1000, 0xf11f1000)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(versatile_map_io)
-       INITIRQ(versatile_init_irq)
+       /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
+       .phys_ram       = 0x00000000,
+       .phys_io        = 0x101f1000,
+       .io_pg_offst    = ((0xf11f1000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = versatile_map_io,
+       .init_irq       = versatile_init_irq,
        .timer          = &versatile_timer,
-       INIT_MACHINE(versatile_init)
+       .init_machine   = versatile_init,
 MACHINE_END
index 2702099a68f3f6a7a5f44b863805cf9931d84f7b..7c3078c3891658379de6e84cf5e49fa6980882e8 100644 (file)
@@ -99,11 +99,13 @@ static int __init versatile_pb_init(void)
 arch_initcall(versatile_pb_init);
 
 MACHINE_START(VERSATILE_PB, "ARM-Versatile PB")
-       MAINTAINER("ARM Ltd/Deep Blue Solutions Ltd")
-       BOOT_MEM(0x00000000, 0x101f1000, 0xf11f1000)
-       BOOT_PARAMS(0x00000100)
-       MAPIO(versatile_map_io)
-       INITIRQ(versatile_init_irq)
+       /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */
+       .phys_ram       = 0x00000000,
+       .phys_io        = 0x101f1000,
+       .io_pg_offst    = ((0xf11f1000) >> 18) & 0xfffc,
+       .boot_params    = 0x00000100,
+       .map_io         = versatile_map_io,
+       .init_irq       = versatile_init_irq,
        .timer          = &versatile_timer,
-       INIT_MACHINE(versatile_init)
+       .init_machine   = versatile_init,
 MACHINE_END
index 806c6eeb1b0c945185089b1f34c1116d281ccdd0..4f5ee2d089963942487ef516108de3b49ebadc54 100644 (file)
@@ -25,13 +25,14 @@ blk_flush_kern_dcache_page(void *kaddr)
 {
        asm(
        "add    r1, r0, %0                                                      \n\
+       sub     r1, r1, %1                                                      \n\
 1:     .word   0xec401f0e      @ mcrr  p15, 0, r0, r1, c14, 0  @ blocking      \n\
        mov     r0, #0                                                          \n\
        mcr     p15, 0, r0, c7, c5, 0                                           \n\
        mcr     p15, 0, r0, c7, c10, 4                                          \n\
        mov     pc, lr"
        :
-       : "I" (PAGE_SIZE));
+       : "I" (PAGE_SIZE), "I" (L1_CACHE_BYTES));
 }
 
 /*
index e25b4fd8412cb4f0c4f0c51c09ea30bc57a9c50d..65bfe84b6d672e8989f0d8141b5781093147cf74 100644 (file)
@@ -372,49 +372,50 @@ do_bad(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 static struct fsr_info {
        int     (*fn)(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
        int     sig;
+       int     code;
        const char *name;
 } fsr_info[] = {
        /*
         * The following are the standard ARMv3 and ARMv4 aborts.  ARMv5
         * defines these to be "precise" aborts.
         */
-       { do_bad,               SIGSEGV, "vector exception"                },
-       { do_bad,               SIGILL,  "alignment exception"             },
-       { do_bad,               SIGKILL, "terminal exception"              },
-       { do_bad,               SIGILL,  "alignment exception"             },
-       { do_bad,               SIGBUS,  "external abort on linefetch"     },
-       { do_translation_fault, SIGSEGV, "section translation fault"       },
-       { do_bad,               SIGBUS,  "external abort on linefetch"     },
-       { do_page_fault,        SIGSEGV, "page translation fault"          },
-       { do_bad,               SIGBUS,  "external abort on non-linefetch" },
-       { do_bad,               SIGSEGV, "section domain fault"            },
-       { do_bad,               SIGBUS,  "external abort on non-linefetch" },
-       { do_bad,               SIGSEGV, "page domain fault"               },
-       { do_bad,               SIGBUS,  "external abort on translation"   },
-       { do_sect_fault,        SIGSEGV, "section permission fault"        },
-       { do_bad,               SIGBUS,  "external abort on translation"   },
-       { do_page_fault,        SIGSEGV, "page permission fault"           },
+       { do_bad,               SIGSEGV, 0,             "vector exception"                 },
+       { do_bad,               SIGILL,  BUS_ADRALN,    "alignment exception"              },
+       { do_bad,               SIGKILL, 0,             "terminal exception"               },
+       { do_bad,               SIGILL,  BUS_ADRALN,    "alignment exception"              },
+       { do_bad,               SIGBUS,  0,             "external abort on linefetch"      },
+       { do_translation_fault, SIGSEGV, SEGV_MAPERR,   "section translation fault"        },
+       { do_bad,               SIGBUS,  0,             "external abort on linefetch"      },
+       { do_page_fault,        SIGSEGV, SEGV_MAPERR,   "page translation fault"           },
+       { do_bad,               SIGBUS,  0,             "external abort on non-linefetch"  },
+       { do_bad,               SIGSEGV, SEGV_ACCERR,   "section domain fault"             },
+       { do_bad,               SIGBUS,  0,             "external abort on non-linefetch"  },
+       { do_bad,               SIGSEGV, SEGV_ACCERR,   "page domain fault"                },
+       { do_bad,               SIGBUS,  0,             "external abort on translation"    },
+       { do_sect_fault,        SIGSEGV, SEGV_ACCERR,   "section permission fault"         },
+       { do_bad,               SIGBUS,  0,             "external abort on translation"    },
+       { do_page_fault,        SIGSEGV, SEGV_ACCERR,   "page permission fault"            },
        /*
         * The following are "imprecise" aborts, which are signalled by bit
         * 10 of the FSR, and may not be recoverable.  These are only
         * supported if the CPU abort handler supports bit 10.
         */
-       { do_bad,               SIGBUS,  "unknown 16"                      },
-       { do_bad,               SIGBUS,  "unknown 17"                      },
-       { do_bad,               SIGBUS,  "unknown 18"                      },
-       { do_bad,               SIGBUS,  "unknown 19"                      },
-       { do_bad,               SIGBUS,  "lock abort"                      }, /* xscale */
-       { do_bad,               SIGBUS,  "unknown 21"                      },
-       { do_bad,               SIGBUS,  "imprecise external abort"        }, /* xscale */
-       { do_bad,               SIGBUS,  "unknown 23"                      },
-       { do_bad,               SIGBUS,  "dcache parity error"             }, /* xscale */
-       { do_bad,               SIGBUS,  "unknown 25"                      },
-       { do_bad,               SIGBUS,  "unknown 26"                      },
-       { do_bad,               SIGBUS,  "unknown 27"                      },
-       { do_bad,               SIGBUS,  "unknown 28"                      },
-       { do_bad,               SIGBUS,  "unknown 29"                      },
-       { do_bad,               SIGBUS,  "unknown 30"                      },
-       { do_bad,               SIGBUS,  "unknown 31"                      }
+       { do_bad,               SIGBUS,  0,             "unknown 16"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 17"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 18"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 19"                       },
+       { do_bad,               SIGBUS,  0,             "lock abort"                       }, /* xscale */
+       { do_bad,               SIGBUS,  0,             "unknown 21"                       },
+       { do_bad,               SIGBUS,  BUS_OBJERR,    "imprecise external abort"         }, /* xscale */
+       { do_bad,               SIGBUS,  0,             "unknown 23"                       },
+       { do_bad,               SIGBUS,  0,             "dcache parity error"              }, /* xscale */
+       { do_bad,               SIGBUS,  0,             "unknown 25"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 26"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 27"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 28"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 29"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 30"                       },
+       { do_bad,               SIGBUS,  0,             "unknown 31"                       }
 };
 
 void __init
@@ -435,15 +436,19 @@ asmlinkage void
 do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 {
        const struct fsr_info *inf = fsr_info + (fsr & 15) + ((fsr & (1 << 10)) >> 6);
+       struct siginfo info;
 
        if (!inf->fn(addr, fsr, regs))
                return;
 
        printk(KERN_ALERT "Unhandled fault: %s (0x%03x) at 0x%08lx\n",
                inf->name, fsr, addr);
-       force_sig(inf->sig, current);
-       show_pte(current->mm, addr);
-       die_if_kernel("Oops", regs, 0);
+
+       info.si_signo = inf->sig;
+       info.si_errno = 0;
+       info.si_code  = inf->code;
+       info.si_addr  = (void __user *)addr;
+       notify_die("", regs, &info, fsr, 0);
 }
 
 asmlinkage void
index 1f325231b9e47bac1ea9ed53c38f97d96e8458d4..5c0ae5260d1cabef383c37d2dbe9cbc4da70f470 100644 (file)
@@ -445,14 +445,14 @@ __arm1020_setup:
        /*
         *  R
         * .RVI ZFRS BLDP WCAM
-        * .0.1 1001 ..11 0101  /* FIXME: why no V bit? */
+        * .011 1001 ..11 0101
         */
        .type   arm1020_cr1_clear, #object
        .type   arm1020_cr1_set, #object
 arm1020_cr1_clear:
        .word   0x593f
 arm1020_cr1_set:
-       .word   0x1935
+       .word   0x3935
 
        __INITDATA
 
index 142a2c2d6f0bfe7b22f3ca1c72abcacc071db814..d69389c4d4ba5410f9e13323313270bc01e14183 100644 (file)
@@ -427,14 +427,14 @@ __arm1020e_setup:
        /*
         *  R
         * .RVI ZFRS BLDP WCAM
-        * .0.1 1001 ..11 0101  /* FIXME: why no V bit? */
+        * .011 1001 ..11 0101
         */
        .type   arm1020e_cr1_clear, #object
        .type   arm1020e_cr1_set, #object
 arm1020e_cr1_clear:
        .word   0x5f3f
 arm1020e_cr1_set:
-       .word   0x1935
+       .word   0x3935
 
        __INITDATA
 
index 1a49adb1f4a68c41798583c4232d480f6a523376..e86ea486c31135fd989e93a82627ae457ad0bafc 100644 (file)
@@ -190,7 +190,7 @@ static __init struct pci_dev *gx_detect_chipset(void)
 
        /* detect which companion chip is used */
        while ((gx_pci = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, gx_pci)) != NULL) {
-               if ((pci_match_device (gx_chipset_tbl, gx_pci)) != NULL) {
+               if ((pci_match_id(gx_chipset_tbl, gx_pci)) != NULL) {
                        return gx_pci;
                }
        }
index fc8b1752176189b7c12d367af9eb78efd323dff7..a6d8c45961d3ccb33503f38535802d3a7e022afc 100644 (file)
@@ -537,7 +537,7 @@ static struct kprobe trampoline_p = {
        .pre_handler = trampoline_probe_handler
 };
 
-int __init arch_init(void)
+int __init arch_init_kprobes(void)
 {
        return register_kprobe(&trampoline_p);
 }
index 87325263cd4fbcdeb29994e69e96550b39981621..70bcd53451f68873a9bfaa14a07ecf6142ea94f9 100644 (file)
@@ -165,6 +165,7 @@ static int __init pcibios_init(void)
        if ((pci_probe & PCI_BIOS_SORT) && !(pci_probe & PCI_NO_SORT))
                pcibios_sort();
 #endif
+       pci_assign_unassigned_resources();
        return 0;
 }
 
index c205ea7e233bcd2fb3873d6d3626270f1a030b05..93a364c82150cddbe8886f8fc35d026120ae0e75 100644 (file)
@@ -106,11 +106,16 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
                if ((dev = bus->self)) {
                        for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_NUM_RESOURCES; idx++) {
                                r = &dev->resource[idx];
-                               if (!r->start)
+                               if (!r->flags)
                                        continue;
                                pr = pci_find_parent_resource(dev, r);
-                               if (!pr || request_resource(pr, r) < 0)
+                               if (!r->start || !pr || request_resource(pr, r) < 0) {
                                        printk(KERN_ERR "PCI: Cannot allocate resource region %d of bridge %s\n", idx, pci_name(dev));
+                                       /* Something is wrong with the region.
+                                          Invalidate the resource to prevent child
+                                          resource allocations in this range. */
+                                       r->flags = 0;
+                               }
                        }
                }
                pcibios_allocate_bus_resources(&bus->children);
@@ -227,7 +232,7 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask)
 
        pci_read_config_word(dev, PCI_COMMAND, &cmd);
        old_cmd = cmd;
-       for(idx=0; idx<6; idx++) {
+       for(idx = 0; idx < PCI_NUM_RESOURCES; idx++) {
                /* Only set up the requested stuff */
                if (!(mask & (1<<idx)))
                        continue;
index 3aa3167edbec218241d4b167593728ad99542efd..884f5cd27d8a656856a46342f616d4a198ec25c6 100644 (file)
@@ -713,7 +713,7 @@ static struct kprobe trampoline_p = {
        .pre_handler = trampoline_probe_handler
 };
 
-int __init arch_init(void)
+int __init arch_init_kprobes(void)
 {
        trampoline_p.addr =
                (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip;
index 4ea7158e5062f9210a00c867520b63bfb899d0ab..ece6a9fbe09bf1d8fda9c45552bbef95ff43d750 100644 (file)
@@ -714,16 +714,24 @@ static int __init scc_enet_init(void)
        immap->im_ioport.iop_pcdat &= ~PC_ENET_LBK;     /* Disable Loopback */
 #endif /* PC_ENET_LBK */
 
-       /* Configure port C pins to enable CLSN and RENA.
+#ifdef PE_ENET_TCLK
+       /* Configure port E for TCLK and RCLK.
        */
-       immap->im_ioport.iop_pcpar &= ~(PC_ENET_CLSN | PC_ENET_RENA);
-       immap->im_ioport.iop_pcdir &= ~(PC_ENET_CLSN | PC_ENET_RENA);
-       immap->im_ioport.iop_pcso  |=  (PC_ENET_CLSN | PC_ENET_RENA);
-
+       cp->cp_pepar |=  (PE_ENET_TCLK | PE_ENET_RCLK);
+       cp->cp_pedir &= ~(PE_ENET_TCLK | PE_ENET_RCLK);
+       cp->cp_peso  &= ~(PE_ENET_TCLK | PE_ENET_RCLK);
+#else
        /* Configure port A for TCLK and RCLK.
        */
        immap->im_ioport.iop_papar |=  (PA_ENET_TCLK | PA_ENET_RCLK);
        immap->im_ioport.iop_padir &= ~(PA_ENET_TCLK | PA_ENET_RCLK);
+#endif
+
+       /* Configure port C pins to enable CLSN and RENA.
+       */
+       immap->im_ioport.iop_pcpar &= ~(PC_ENET_CLSN | PC_ENET_RENA);
+       immap->im_ioport.iop_pcdir &= ~(PC_ENET_CLSN | PC_ENET_RENA);
+       immap->im_ioport.iop_pcso  |=  (PC_ENET_CLSN | PC_ENET_RENA);
 
        /* Configure Serial Interface clock routing.
         * First, clear all SCC bits to zero, then set the ones we want.
@@ -896,14 +904,18 @@ static int __init scc_enet_init(void)
        /* It is now OK to enable the Ethernet transmitter.
         * Unfortunately, there are board implementation differences here.
         */
-#if   (!defined (PB_ENET_TENA) &&  defined (PC_ENET_TENA))
+#if   (!defined (PB_ENET_TENA) &&  defined (PC_ENET_TENA) && !defined (PE_ENET_TENA))
        immap->im_ioport.iop_pcpar |=  PC_ENET_TENA;
        immap->im_ioport.iop_pcdir &= ~PC_ENET_TENA;
-#elif ( defined (PB_ENET_TENA) && !defined (PC_ENET_TENA))
+#elif ( defined (PB_ENET_TENA) && !defined (PC_ENET_TENA) && !defined (PE_ENET_TENA))
        cp->cp_pbpar |= PB_ENET_TENA;
        cp->cp_pbdir |= PB_ENET_TENA;
+#elif ( !defined (PB_ENET_TENA) && !defined (PC_ENET_TENA) && defined (PE_ENET_TENA))
+       cp->cp_pepar |=  PE_ENET_TENA;
+       cp->cp_pedir &= ~PE_ENET_TENA;
+       cp->cp_peso  |=  PE_ENET_TENA;
 #else
-#error Configuration Error: define exactly ONE of PB_ENET_TENA, PC_ENET_TENA
+#error Configuration Error: define exactly ONE of PB_ENET_TENA, PC_ENET_TENA, PE_ENET_TENA
 #endif
 
 #if defined(CONFIG_RPXLITE) || defined(CONFIG_RPXCLASSIC)
@@ -936,6 +948,29 @@ static int __init scc_enet_init(void)
        *((volatile uint *)BCSR1) &= ~BCSR1_ETHEN;
 #endif
 
+#ifdef CONFIG_MPC885ADS
+
+       /* Deassert PHY reset and enable the PHY.
+        */
+       {
+               volatile uint __iomem *bcsr = ioremap(BCSR_ADDR, BCSR_SIZE);
+               uint tmp;
+
+               tmp = in_be32(bcsr + 1 /* BCSR1 */);
+               tmp |= BCSR1_ETHEN;
+               out_be32(bcsr + 1, tmp);
+               tmp = in_be32(bcsr + 4 /* BCSR4 */);
+               tmp |= BCSR4_ETH10_RST;
+               out_be32(bcsr + 4, tmp);
+               iounmap(bcsr);
+       }
+
+       /* On MPC885ADS SCC ethernet PHY defaults to the full duplex mode
+        * upon reset. SCC is set to half duplex by default. So this
+        * inconsistency should be better fixed by the software.
+        */
+#endif
+
        dev->base_addr = (unsigned long)ep;
 #if 0
        dev->name = "CPM_ENET";
@@ -969,3 +1004,4 @@ static int __init scc_enet_init(void)
 }
 
 module_init(scc_enet_init);
+
index a7835cd3f51f32500b316d0cc1d4bed5aaefdaae..23b0d2f662c504dd3d78d8bdb2a20ba48081c944 100644 (file)
@@ -284,6 +284,9 @@ endmenu
 
 menu "Platform options"
 
+config FADS
+       bool
+
 choice
        prompt "8xx Machine Type"
        depends on 8xx
@@ -399,8 +402,25 @@ config BSEIP
          26MB DRAM, 4MB flash, Ethernet, a 16K-gate FPGA, USB, an LCD/video
          controller, and two RS232 ports.
 
-config FADS
+config MPC8XXFADS
        bool "FADS"
+       select FADS
+
+config MPC86XADS
+       bool "MPC86XADS"
+       help
+         MPC86x Application Development System by Freescale Semiconductor.
+         The MPC86xADS is meant to serve as a platform for s/w and h/w
+         development around the MPC86X processor families.
+       select FADS
+
+config MPC885ADS
+       bool "MPC885ADS"
+       help
+         Freescale Semiconductor MPC885 Application Development System (ADS).
+         Also known as DUET.
+         The MPC885ADS is meant to serve as a platform for s/w and h/w
+         development around the MPC885 processor family.
 
 config TQM823L
        bool "TQM823L"
diff --git a/arch/ppc/configs/mpc86x_ads_defconfig b/arch/ppc/configs/mpc86x_ads_defconfig
new file mode 100644 (file)
index 0000000..f63c6f5
--- /dev/null
@@ -0,0 +1,633 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.12-rc4
+# Tue Jun 14 13:36:35 2005
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_HAVE_DEC_LOCK=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_CLEAN_COMPILE is not set
+CONFIG_BROKEN=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+# CONFIG_HOTPLUG is not set
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_EMBEDDED=y
+# CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+# CONFIG_SHMEM is not set
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_TINY_SHMEM=y
+CONFIG_BASE_SMALL=1
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODULE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_KMOD is not set
+
+#
+# Processor
+#
+# CONFIG_6xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+CONFIG_8xx=y
+# CONFIG_E500 is not set
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_EMBEDDEDBOOT=y
+# CONFIG_PM is not set
+CONFIG_NOT_COHERENT_CACHE=y
+
+#
+# Platform options
+#
+CONFIG_FADS=y
+# CONFIG_RPXLITE is not set
+# CONFIG_RPXCLASSIC is not set
+# CONFIG_BSEIP is not set
+# CONFIG_MPC8XXFADS is not set
+CONFIG_MPC86XADS=y
+# CONFIG_TQM823L is not set
+# CONFIG_TQM850L is not set
+# CONFIG_TQM855L is not set
+# CONFIG_TQM860L is not set
+# CONFIG_FPS850L is not set
+# CONFIG_SPD823TS is not set
+# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
+# CONFIG_SM850 is not set
+# CONFIG_HERMES_PRO is not set
+# CONFIG_IP860 is not set
+# CONFIG_LWMON is not set
+# CONFIG_PCU_E is not set
+# CONFIG_CCM is not set
+# CONFIG_LANTEC is not set
+# CONFIG_MBX is not set
+# CONFIG_WINCEPT is not set
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+# CONFIG_PCI is not set
+# CONFIG_PCI_DOMAINS is not set
+# CONFIG_PCI_QSPAN is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_CONSISTENT_START=0xff100000
+CONFIG_CONSISTENT_SIZE=0x00200000
+CONFIG_BOOT_LOAD=0x00400000
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+# CONFIG_STANDALONE is not set
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_LBD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+
+#
+# Macintosh device drivers
+#
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_IP_TCPDIAG=y
+# CONFIG_IP_TCPDIAG_IPV6 is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_NETFILTER is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_MII is not set
+# CONFIG_OAKNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+CONFIG_SOUND_GAMEPORT=y
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_CPM=y
+CONFIG_SERIAL_CPM_CONSOLE=y
+# CONFIG_SERIAL_CPM_SCC1 is not set
+# CONFIG_SERIAL_CPM_SCC2 is not set
+# CONFIG_SERIAL_CPM_SCC3 is not set
+# CONFIG_SERIAL_CPM_SCC4 is not set
+CONFIG_SERIAL_CPM_SMC1=y
+# CONFIG_SERIAL_CPM_SMC2 is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# File systems
+#
+# CONFIG_EXT2_FS is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+
+#
+# XFS support
+#
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVPTS_FS_XATTR is not set
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+# CONFIG_NLS is not set
+
+#
+# MPC8xx CPM Options
+#
+CONFIG_SCC_ENET=y
+CONFIG_SCC1_ENET=y
+# CONFIG_SCC2_ENET is not set
+# CONFIG_SCC3_ENET is not set
+# CONFIG_FEC_ENET is not set
+# CONFIG_ENET_BIG_BUFFERS is not set
+
+#
+# Generic MPC8xx Options
+#
+# CONFIG_8xx_COPYBACK is not set
+# CONFIG_8xx_CPU6 is not set
+CONFIG_NO_UCODE_PATCH=y
+# CONFIG_USB_SOF_UCODE_PATCH is not set
+# CONFIG_I2C_SPI_UCODE_PATCH is not set
+# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC32 is not set
+# CONFIG_LIBCRC32C is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_NULL is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Hardware crypto devices
+#
diff --git a/arch/ppc/configs/mpc885ads_defconfig b/arch/ppc/configs/mpc885ads_defconfig
new file mode 100644 (file)
index 0000000..016f94d
--- /dev/null
@@ -0,0 +1,622 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.12-rc6
+# Thu Jun  9 21:17:29 2005
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_HAVE_DEC_LOCK=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_CLEAN_COMPILE is not set
+CONFIG_BROKEN=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_EMBEDDED=y
+# CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# Loadable module support
+#
+# CONFIG_MODULES is not set
+
+#
+# Processor
+#
+# CONFIG_6xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+CONFIG_8xx=y
+# CONFIG_E500 is not set
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_CPU_FREQ is not set
+CONFIG_EMBEDDEDBOOT=y
+# CONFIG_PM is not set
+CONFIG_NOT_COHERENT_CACHE=y
+
+#
+# Platform options
+#
+# CONFIG_RPXLITE is not set
+# CONFIG_RPXCLASSIC is not set
+# CONFIG_BSEIP is not set
+# CONFIG_FADS is not set
+CONFIG_MPC885ADS=y
+# CONFIG_TQM823L is not set
+# CONFIG_TQM850L is not set
+# CONFIG_TQM855L is not set
+# CONFIG_TQM860L is not set
+# CONFIG_FPS850L is not set
+# CONFIG_SPD823TS is not set
+# CONFIG_IVMS8 is not set
+# CONFIG_IVML24 is not set
+# CONFIG_SM850 is not set
+# CONFIG_HERMES_PRO is not set
+# CONFIG_IP860 is not set
+# CONFIG_LWMON is not set
+# CONFIG_PCU_E is not set
+# CONFIG_CCM is not set
+# CONFIG_LANTEC is not set
+# CONFIG_MBX is not set
+# CONFIG_WINCEPT is not set
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+# CONFIG_PCI is not set
+# CONFIG_PCI_DOMAINS is not set
+# CONFIG_PCI_QSPAN is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_HIGHMEM_START=0xfe000000
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_TASK_SIZE=0x80000000
+CONFIG_CONSISTENT_START=0xff100000
+CONFIG_CONSISTENT_SIZE=0x00200000
+CONFIG_BOOT_LOAD=0x00400000
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_LBD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_SCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+
+#
+# Macintosh device drivers
+#
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_IP_TCPDIAG=y
+# CONFIG_IP_TCPDIAG_IPV6 is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETFILTER is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_OAKNET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+CONFIG_PPP=y
+# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
+CONFIG_PPP_ASYNC=y
+CONFIG_PPP_SYNC_TTY=y
+CONFIG_PPP_DEFLATE=y
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_PPPOE is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+# CONFIG_INPUT is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_CPM=y
+CONFIG_SERIAL_CPM_CONSOLE=y
+# CONFIG_SERIAL_CPM_SCC1 is not set
+# CONFIG_SERIAL_CPM_SCC2 is not set
+# CONFIG_SERIAL_CPM_SCC3 is not set
+# CONFIG_SERIAL_CPM_SCC4 is not set
+CONFIG_SERIAL_CPM_SMC1=y
+CONFIG_SERIAL_CPM_SMC2=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# USB support
+#
+# CONFIG_USB_ARCH_HAS_HCD is not set
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+# CONFIG_EXT2_FS_POSIX_ACL is not set
+# CONFIG_EXT2_FS_SECURITY is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+
+#
+# XFS support
+#
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+CONFIG_SYSFS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVPTS_FS_XATTR is not set
+# CONFIG_TMPFS is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+# CONFIG_NLS is not set
+
+#
+# MPC8xx CPM Options
+#
+CONFIG_SCC_ENET=y
+# CONFIG_SCC1_ENET is not set
+# CONFIG_SCC2_ENET is not set
+CONFIG_SCC3_ENET=y
+# CONFIG_FEC_ENET is not set
+# CONFIG_ENET_BIG_BUFFERS is not set
+
+#
+# Generic MPC8xx Options
+#
+CONFIG_8xx_COPYBACK=y
+CONFIG_8xx_CPU6=y
+CONFIG_NO_UCODE_PATCH=y
+# CONFIG_USB_SOF_UCODE_PATCH is not set
+# CONFIG_I2C_SPI_UCODE_PATCH is not set
+# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
+
+#
+# Library routines
+#
+CONFIG_CRC_CCITT=y
+# CONFIG_CRC32 is not set
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
index 735866559199cb39a2a19c59dd38295e4715c082..bf4ddca5e853b22f460a7d4f8b0a06e396ae406c 100644 (file)
@@ -89,6 +89,9 @@ unsigned long tb_to_ns_scale;
 
 extern unsigned long wall_jiffies;
 
+/* used for timezone offset */
+static long timezone_offset;
+
 DEFINE_SPINLOCK(rtc_lock);
 
 EXPORT_SYMBOL(rtc_lock);
@@ -170,7 +173,7 @@ void timer_interrupt(struct pt_regs * regs)
                     xtime.tv_sec - last_rtc_update >= 659 &&
                     abs((xtime.tv_nsec / 1000) - (1000000-1000000/HZ)) < 500000/HZ &&
                     jiffies - wall_jiffies == 1) {
-                       if (ppc_md.set_rtc_time(xtime.tv_sec+1 + time_offset) == 0)
+                       if (ppc_md.set_rtc_time(xtime.tv_sec+1 + timezone_offset) == 0)
                                last_rtc_update = xtime.tv_sec+1;
                        else
                                /* Try again one minute later */
@@ -286,7 +289,7 @@ void __init time_init(void)
        unsigned old_stamp, stamp, elapsed;
 
         if (ppc_md.time_init != NULL)
-                time_offset = ppc_md.time_init();
+                timezone_offset = ppc_md.time_init();
 
        if (__USE_RTC()) {
                /* 601 processor: dec counts down by 128 every 128ns */
@@ -331,10 +334,10 @@ void __init time_init(void)
        set_dec(tb_ticks_per_jiffy);
 
        /* If platform provided a timezone (pmac), we correct the time */
-        if (time_offset) {
-               sys_tz.tz_minuteswest = -time_offset / 60;
+        if (timezone_offset) {
+               sys_tz.tz_minuteswest = -timezone_offset / 60;
                sys_tz.tz_dsttime = 0;
-               xtime.tv_sec -= time_offset;
+               xtime.tv_sec -= timezone_offset;
         }
         set_normalized_timespec(&wall_to_monotonic,
                                 -xtime.tv_sec, -xtime.tv_nsec);
index 632b8178ce66ff48e145314b2d38fef6ddaf10b6..b60c56450b67d695073c8891173f5b6f0cfcf00b 100644 (file)
@@ -3,7 +3,18 @@
  * the Motorola 860T FADS board.  Copied from the MBX stuff.
  *
  * Copyright (c) 1998 Dan Malek (dmalek@jlc.net)
+ *
+ * Added MPC86XADS support.
+ * The MPC86xADS manual says the board "is compatible with the MPC8xxFADS
+ * for SW point of view". This is 99% correct.
+ *
+ * Author: MontaVista Software, Inc.
+ *         source@mvista.com
+ * 2005 (c) MontaVista Software, Inc.  This file is licensed under the
+ * terms of the GNU General Public License version 2.  This program is licensed
+ * "as is" without any warranty of any kind, whether express or implied.
  */
+
 #ifdef __KERNEL__
 #ifndef __ASM_FADS_H__
 #define __ASM_FADS_H__
 
 #include <asm/ppcboot.h>
 
+#if defined(CONFIG_MPC86XADS)
+
+/* U-Boot maps BCSR to 0xff080000 */
+#define BCSR_ADDR              ((uint)0xff080000)
+
+/* MPC86XADS has one more CPLD and an additional BCSR.
+ */
+#define CFG_PHYDEV_ADDR                ((uint)0xff0a0000)
+#define BCSR5                  ((uint)(CFG_PHYDEV_ADDR + 0x300))
+
+#define BCSR5_T1_RST           0x10
+#define BCSR5_ATM155_RST       0x08
+#define BCSR5_ATM25_RST                0x04
+#define BCSR5_MII1_EN          0x02
+#define BCSR5_MII1_RST         0x01
+
+/* There is no PHY link change interrupt */
+#define PHY_INTERRUPT  (-1)
+
+#else /* FADS */
+
 /* Memory map is configured by the PROM startup.
  * I tried to follow the FADS manual, although the startup PROM
  * dictates this and we simply have to move some of the physical
  * addresses for Linux.
  */
 #define BCSR_ADDR              ((uint)0xff010000)
+
+/* PHY link change interrupt */
+#define PHY_INTERRUPT  SIU_IRQ2
+
+#endif /* CONFIG_MPC86XADS */
+
 #define BCSR_SIZE              ((uint)(64 * 1024))
-#define        BCSR0                   ((uint)0xff010000)
-#define        BCSR1                   ((uint)0xff010004)
-#define        BCSR2                   ((uint)0xff010008)
-#define        BCSR3                   ((uint)0xff01000c)
-#define        BCSR4                   ((uint)0xff010010)
+#define BCSR0                  ((uint)(BCSR_ADDR + 0x00))
+#define BCSR1                  ((uint)(BCSR_ADDR + 0x04))
+#define BCSR2                  ((uint)(BCSR_ADDR + 0x08))
+#define BCSR3                  ((uint)(BCSR_ADDR + 0x0c))
+#define BCSR4                  ((uint)(BCSR_ADDR + 0x10))
 
 #define IMAP_ADDR              ((uint)0xff000000)
 #define IMAP_SIZE              ((uint)(64 * 1024))
 /* Bits of interest in the BCSRs.
  */
 #define BCSR1_ETHEN            ((uint)0x20000000)
+#define BCSR1_IRDAEN           ((uint)0x10000000)
 #define BCSR1_RS232EN_1                ((uint)0x01000000)
+#define BCSR1_PCCEN            ((uint)0x00800000)
+#define BCSR1_PCCVCC0          ((uint)0x00400000)
+#define BCSR1_PCCVPP0          ((uint)0x00200000)
+#define BCSR1_PCCVPP1          ((uint)0x00100000)
+#define BCSR1_PCCVPP_MASK      (BCSR1_PCCVPP0 | BCSR1_PCCVPP1)
 #define BCSR1_RS232EN_2                ((uint)0x00040000)
+#define BCSR1_PCCVCC1          ((uint)0x00010000)
+#define BCSR1_PCCVCC_MASK      (BCSR1_PCCVCC0 | BCSR1_PCCVCC1)
+
 #define BCSR4_ETHLOOP          ((uint)0x80000000)      /* EEST Loopback */
 #define BCSR4_EEFDX            ((uint)0x40000000)      /* EEST FDX enable */
 #define BCSR4_FETH_EN          ((uint)0x08000000)      /* PHY enable */
 #define BCSR4_FETHFDE          ((uint)0x02000000)      /* PHY FDX advertise */
 #define BCSR4_FETHRST          ((uint)0x00200000)      /* PHY Reset */
 
+/* IO_BASE definition for pcmcia.
+ */
+#define _IO_BASE       0x80000000
+#define _IO_BASE_SIZE  0x1000
+
+#ifdef CONFIG_IDE
+#define MAX_HWIFS 1
+#endif
+
 /* Interrupt level assignments.
  */
 #define FEC_INTERRUPT  SIU_LEVEL1      /* FEC interrupt */
-#define PHY_INTERRUPT  SIU_IRQ2        /* PHY link change interrupt */
 
 /* We don't use the 8259.
  */
 #define NR_8259_INTS   0
 
+/* CPM Ethernet through SCC1 or SCC2 */
+
+#ifdef CONFIG_SCC1_ENET                /* Probably 860 variant */
+/* Bits in parallel I/O port registers that have to be set/cleared
+ * to configure the pins for SCC1 use.
+ * TCLK - CLK1, RCLK - CLK2.
+ */
+#define PA_ENET_RXD    ((ushort)0x0001)
+#define PA_ENET_TXD    ((ushort)0x0002)
+#define PA_ENET_TCLK   ((ushort)0x0100)
+#define PA_ENET_RCLK   ((ushort)0x0200)
+#define PB_ENET_TENA   ((uint)0x00001000)
+#define PC_ENET_CLSN   ((ushort)0x0010)
+#define PC_ENET_RENA   ((ushort)0x0020)
+
+/* Control bits in the SICR to route TCLK (CLK1) and RCLK (CLK2) to
+ * SCC1.  Also, make sure GR1 (bit 24) and SC1 (bit 25) are zero.
+ */
+#define SICR_ENET_MASK ((uint)0x000000ff)
+#define SICR_ENET_CLKRT        ((uint)0x0000002c)
+#endif /* CONFIG_SCC1_ENET */
+
+#ifdef CONFIG_SCC2_ENET                /* Probably 823/850 variant */
+/* Bits in parallel I/O port registers that have to be set/cleared
+ * to configure the pins for SCC1 use.
+ * TCLK - CLK1, RCLK - CLK2.
+ */
+#define PA_ENET_RXD    ((ushort)0x0004)
+#define PA_ENET_TXD    ((ushort)0x0008)
+#define PA_ENET_TCLK   ((ushort)0x0400)
+#define PA_ENET_RCLK   ((ushort)0x0200)
+#define PB_ENET_TENA   ((uint)0x00002000)
+#define PC_ENET_CLSN   ((ushort)0x0040)
+#define PC_ENET_RENA   ((ushort)0x0080)
+
+/* Control bits in the SICR to route TCLK and RCLK to
+ * SCC2.  Also, make sure GR1 (bit 24) and SC1 (bit 25) are zero.
+ */
+#define SICR_ENET_MASK ((uint)0x0000ff00)
+#define SICR_ENET_CLKRT        ((uint)0x00002e00)
+#endif /* CONFIG_SCC2_ENET */
+
 #endif /* __ASM_FADS_H__ */
 #endif /* __KERNEL__ */
diff --git a/arch/ppc/platforms/mpc885ads.h b/arch/ppc/platforms/mpc885ads.h
new file mode 100644 (file)
index 0000000..eb38663
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * A collection of structures, addresses, and values associated with
+ * the Freescale MPC885ADS board.
+ * Copied from the FADS stuff.
+ *
+ * Author: MontaVista Software, Inc.
+ *         source@mvista.com
+ *
+ * 2005 (c) MontaVista Software, Inc.  This file is licensed under the
+ * terms of the GNU General Public License version 2.  This program is licensed
+ * "as is" without any warranty of any kind, whether express or implied.
+ */
+
+#ifdef __KERNEL__
+#ifndef __ASM_MPC885ADS_H__
+#define __ASM_MPC885ADS_H__
+
+#include <linux/config.h>
+
+#include <asm/ppcboot.h>
+
+/* U-Boot maps BCSR to 0xff080000 */
+#define BCSR_ADDR              ((uint)0xff080000)
+#define BCSR_SIZE              ((uint)32)
+#define BCSR0                  ((uint)(BCSR_ADDR + 0x00))
+#define BCSR1                  ((uint)(BCSR_ADDR + 0x04))
+#define BCSR2                  ((uint)(BCSR_ADDR + 0x08))
+#define BCSR3                  ((uint)(BCSR_ADDR + 0x0c))
+#define BCSR4                  ((uint)(BCSR_ADDR + 0x10))
+
+#define CFG_PHYDEV_ADDR                ((uint)0xff0a0000)
+#define BCSR5                  ((uint)(CFG_PHYDEV_ADDR + 0x300))
+
+#define IMAP_ADDR              ((uint)0xff000000)
+#define IMAP_SIZE              ((uint)(64 * 1024))
+
+#define PCMCIA_MEM_ADDR                ((uint)0xff020000)
+#define PCMCIA_MEM_SIZE                ((uint)(64 * 1024))
+
+/* Bits of interest in the BCSRs.
+ */
+#define BCSR1_ETHEN            ((uint)0x20000000)
+#define BCSR1_IRDAEN           ((uint)0x10000000)
+#define BCSR1_RS232EN_1                ((uint)0x01000000)
+#define BCSR1_PCCEN            ((uint)0x00800000)
+#define BCSR1_PCCVCC0          ((uint)0x00400000)
+#define BCSR1_PCCVPP0          ((uint)0x00200000)
+#define BCSR1_PCCVPP1          ((uint)0x00100000)
+#define BCSR1_PCCVPP_MASK      (BCSR1_PCCVPP0 | BCSR1_PCCVPP1)
+#define BCSR1_RS232EN_2                ((uint)0x00040000)
+#define BCSR1_PCCVCC1          ((uint)0x00010000)
+#define BCSR1_PCCVCC_MASK      (BCSR1_PCCVCC0 | BCSR1_PCCVCC1)
+
+#define BCSR4_ETH10_RST                ((uint)0x80000000)      /* 10Base-T PHY reset*/
+#define BCSR4_USB_LO_SPD       ((uint)0x04000000)
+#define BCSR4_USB_VCC          ((uint)0x02000000)
+#define BCSR4_USB_FULL_SPD     ((uint)0x00040000)
+#define BCSR4_USB_EN           ((uint)0x00020000)
+
+#define BCSR5_MII2_EN          0x40
+#define BCSR5_MII2_RST         0x20
+#define BCSR5_T1_RST           0x10
+#define BCSR5_ATM155_RST       0x08
+#define BCSR5_ATM25_RST                0x04
+#define BCSR5_MII1_EN          0x02
+#define BCSR5_MII1_RST         0x01
+
+/* Interrupt level assignments */
+#define PHY_INTERRUPT  SIU_IRQ7        /* PHY link change interrupt */
+#define SIU_INT_FEC1   SIU_LEVEL1      /* FEC1 interrupt */
+#define SIU_INT_FEC2   SIU_LEVEL3      /* FEC2 interrupt */
+#define FEC_INTERRUPT  SIU_INT_FEC1    /* FEC interrupt */
+
+/* We don't use the 8259 */
+#define NR_8259_INTS   0
+
+/* CPM Ethernet through SCC3 */
+#define PA_ENET_RXD    ((ushort)0x0040)
+#define PA_ENET_TXD    ((ushort)0x0080)
+#define PE_ENET_TCLK   ((uint)0x00004000)
+#define PE_ENET_RCLK   ((uint)0x00008000)
+#define PE_ENET_TENA   ((uint)0x00000010)
+#define PC_ENET_CLSN   ((ushort)0x0400)
+#define PC_ENET_RENA   ((ushort)0x0800)
+
+/* Control bits in the SICR to route TCLK (CLK5) and RCLK (CLK6) to
+ * SCC3.  Also, make sure GR3 (bit 8) and SC3 (bit 9) are zero */
+#define SICR_ENET_MASK ((uint)0x00ff0000)
+#define SICR_ENET_CLKRT        ((uint)0x002c0000)
+
+#endif /* __ASM_MPC885ADS_H__ */
+#endif /* __KERNEL__ */
index 05686fa73545bf83838a91c605c19e0860e36465..40086212b9c3a4837dc923b65ab891a54dfcc640 100644 (file)
@@ -110,6 +110,10 @@ static int ppc4xx_pic_get_irq(struct pt_regs *regs)
 
 static void __init ppc4xx_pic_impl_init(void)
 {
+#if defined(CONFIG_440GX)
+       /* Disable 440GP compatibility mode if it was enabled in firmware */
+       SDR_WRITE(DCRN_SDR_MFR, SDR_READ(DCRN_SDR_MFR) & ~DCRN_SDR_MFR_PCM);
+#endif
        /* Configure Base UIC */
        mtdcr(DCRN_UIC_CR(UICB), 0);
        mtdcr(DCRN_UIC_TR(UICB), 0);
index 1d2ff6d6b0b368733d47862b1ce9e4eae9fa3905..a3d519518fb8dfe41f2bcf7450bd2d5546bc3987 100644 (file)
@@ -444,7 +444,7 @@ static struct kprobe trampoline_p = {
        .pre_handler = trampoline_probe_handler
 };
 
-int __init arch_init(void)
+int __init arch_init_kprobes(void)
 {
        return register_kprobe(&trampoline_p);
 }
index e2b050eb3b96ec71362436a765892dbd0fb9a33b..d78bc13ebbb926dee28741b7fb92f941546c569d 100644 (file)
@@ -444,6 +444,24 @@ config PRINTER
          If you have more than 8 printers, you need to increase the LP_NO
          macro in lp.c and the PARPORT_MAX macro in parport.h.
 
+config PPDEV
+       tristate "Support for user-space parallel port device drivers"
+       depends on PARPORT
+       ---help---
+         Saying Y to this adds support for /dev/parport device nodes.  This
+         is needed for programs that want portable access to the parallel
+         port, for instance deviceid (which displays Plug-and-Play device
+         IDs).
+
+         This is the parallel port equivalent of SCSI generic support (sg).
+         It is safe to say N to this -- it is not needed for normal printing
+         or parallel port CD-ROM/disk support.
+
+         To compile this driver as a module, choose M here: the
+         module will be called ppdev.
+
+         If unsure, say N.
+
 config ENVCTRL
        tristate "SUNW, envctrl support"
        depends on PCI
index eee516a71c14b73bb103ef33a91dd3029f41e64f..d3973d8a7195a5adc622db19218fed74aa046975 100644 (file)
@@ -553,13 +553,11 @@ do_ivec:
        sllx            %g3, 5, %g3
        or              %g2, %lo(ivector_table), %g2
        add             %g2, %g3, %g3
-       ldx             [%g3 + 0x08], %g2       /* irq_info */
        ldub            [%g3 + 0x04], %g4       /* pil */
-       brz,pn          %g2, do_ivec_spurious
-        mov            1, %g2
-
+       mov             1, %g2
        sllx            %g2, %g4, %g2
        sllx            %g4, 2, %g4
+
        lduw            [%g6 + %g4], %g5        /* g5 = irq_work(cpu, pil) */
        stw             %g5, [%g3 + 0x00]       /* bucket->irq_chain = g5 */
        stw             %g3, [%g6 + %g4]        /* irq_work(cpu, pil) = bucket */
@@ -567,9 +565,9 @@ do_ivec:
        retry
 do_ivec_xcall:
        mov             0x50, %g1
-
        ldxa            [%g1 + %g0] ASI_INTR_R, %g1
        srl             %g3, 0, %g3
+
        mov             0x60, %g7
        ldxa            [%g7 + %g0] ASI_INTR_R, %g7
        stxa            %g0, [%g0] ASI_INTR_RECEIVE
@@ -581,19 +579,6 @@ do_ivec_xcall:
 1:     jmpl            %g3, %g0
         nop
 
-do_ivec_spurious:
-       stw             %g3, [%g6 + 0x00]       /* irq_work(cpu, 0) = bucket */
-       rdpr            %pstate, %g5
-
-       wrpr            %g5, PSTATE_IG | PSTATE_AG, %pstate
-       sethi           %hi(109f), %g7
-       ba,pt           %xcc, etrap
-109:    or             %g7, %lo(109b), %g7
-       call            catch_disabled_ivec
-        add            %sp, PTREGS_OFF, %o0
-       ba,pt           %xcc, rtrap
-        clr            %l6
-
        .globl          save_alternate_globals
 save_alternate_globals: /* %o0 = save_area */
        rdpr            %pstate, %o5
index 424712577307d07e0cab4a2e92b07e8cc58b45fe..74a2e0808cbcda8939a2708c37aa5cec96f08816 100644 (file)
@@ -71,31 +71,7 @@ struct irq_work_struct {
 struct irq_work_struct __irq_work[NR_CPUS];
 #define irq_work(__cpu, __pil) &(__irq_work[(__cpu)].irq_worklists[(__pil)])
 
-#ifdef CONFIG_PCI
-/* This is a table of physical addresses used to deal with IBF_DMA_SYNC.
- * It is used for PCI only to synchronize DMA transfers with IRQ delivery
- * for devices behind busses other than APB on Sabre systems.
- *
- * Currently these physical addresses are just config space accesses
- * to the command register for that device.
- */
-unsigned long pci_dma_wsync;
-unsigned long dma_sync_reg_table[256];
-unsigned char dma_sync_reg_table_entry = 0;
-#endif
-
-/* This is based upon code in the 32-bit Sparc kernel written mostly by
- * David Redman (djhr@tadpole.co.uk).
- */
-#define MAX_STATIC_ALLOC       4
-static struct irqaction static_irqaction[MAX_STATIC_ALLOC];
-static int static_irq_count;
-
-/* This is exported so that fast IRQ handlers can get at it... -DaveM */
-struct irqaction *irq_action[NR_IRQS+1] = {
-         NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL,
-         NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL
-};
+static struct irqaction *irq_action[NR_IRQS+1];
 
 /* This only synchronizes entities which modify IRQ handler
  * state and some selected user-level spots that want to
@@ -241,17 +217,22 @@ void disable_irq(unsigned int irq)
  * the CPU %tick register and not by some normal vectored interrupt
  * source.  To handle this special case, we use this dummy INO bucket.
  */
+static struct irq_desc pil0_dummy_desc;
 static struct ino_bucket pil0_dummy_bucket = {
-       0,      /* irq_chain */
-       0,      /* pil */
-       0,      /* pending */
-       0,      /* flags */
-       0,      /* __unused */
-       NULL,   /* irq_info */
-       0UL,    /* iclr */
-       0UL,    /* imap */
+       .irq_info       =       &pil0_dummy_desc,
 };
 
+static void build_irq_error(const char *msg, unsigned int ino, int pil, int inofixup,
+                           unsigned long iclr, unsigned long imap,
+                           struct ino_bucket *bucket)
+{
+       prom_printf("IRQ: INO %04x (%d:%016lx:%016lx) --> "
+                   "(%d:%d:%016lx:%016lx), halting...\n",
+                   ino, bucket->pil, bucket->iclr, bucket->imap,
+                   pil, inofixup, iclr, imap);
+       prom_halt();
+}
+
 unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long imap)
 {
        struct ino_bucket *bucket;
@@ -280,28 +261,35 @@ unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long
                prom_halt();
        }
 
-       /* Ok, looks good, set it up.  Don't touch the irq_chain or
-        * the pending flag.
-        */
        bucket = &ivector_table[ino];
-       if ((bucket->flags & IBF_ACTIVE) ||
-           (bucket->irq_info != NULL)) {
-               /* This is a gross fatal error if it happens here. */
-               prom_printf("IRQ: Trying to reinit INO bucket, fatal error.\n");
-               prom_printf("IRQ: Request INO %04x (%d:%d:%016lx:%016lx)\n",
-                           ino, pil, inofixup, iclr, imap);
-               prom_printf("IRQ: Existing (%d:%016lx:%016lx)\n",
-                           bucket->pil, bucket->iclr, bucket->imap);
-               prom_printf("IRQ: Cannot continue, halting...\n");
+       if (bucket->flags & IBF_ACTIVE)
+               build_irq_error("IRQ: Trying to build active INO bucket.\n",
+                               ino, pil, inofixup, iclr, imap, bucket);
+
+       if (bucket->irq_info) {
+               if (bucket->imap != imap || bucket->iclr != iclr)
+                       build_irq_error("IRQ: Trying to reinit INO bucket.\n",
+                                       ino, pil, inofixup, iclr, imap, bucket);
+
+               goto out;
+       }
+
+       bucket->irq_info = kmalloc(sizeof(struct irq_desc), GFP_ATOMIC);
+       if (!bucket->irq_info) {
+               prom_printf("IRQ: Error, kmalloc(irq_desc) failed.\n");
                prom_halt();
        }
+       memset(bucket->irq_info, 0, sizeof(struct irq_desc));
+
+       /* Ok, looks good, set it up.  Don't touch the irq_chain or
+        * the pending flag.
+        */
        bucket->imap  = imap;
        bucket->iclr  = iclr;
        bucket->pil   = pil;
        bucket->flags = 0;
 
-       bucket->irq_info = NULL;
-
+out:
        return __irq(bucket);
 }
 
@@ -319,26 +307,65 @@ static void atomic_bucket_insert(struct ino_bucket *bucket)
        __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate));
 }
 
+static int check_irq_sharing(int pil, unsigned long irqflags)
+{
+       struct irqaction *action, *tmp;
+
+       action = *(irq_action + pil);
+       if (action) {
+               if ((action->flags & SA_SHIRQ) && (irqflags & SA_SHIRQ)) {
+                       for (tmp = action; tmp->next; tmp = tmp->next)
+                               ;
+               } else {
+                       return -EBUSY;
+               }
+       }
+       return 0;
+}
+
+static void append_irq_action(int pil, struct irqaction *action)
+{
+       struct irqaction **pp = irq_action + pil;
+
+       while (*pp)
+               pp = &((*pp)->next);
+       *pp = action;
+}
+
+static struct irqaction *get_action_slot(struct ino_bucket *bucket)
+{
+       struct irq_desc *desc = bucket->irq_info;
+       int max_irq, i;
+
+       max_irq = 1;
+       if (bucket->flags & IBF_PCI)
+               max_irq = MAX_IRQ_DESC_ACTION;
+       for (i = 0; i < max_irq; i++) {
+               struct irqaction *p = &desc->action[i];
+               u32 mask = (1 << i);
+
+               if (desc->action_active_mask & mask)
+                       continue;
+
+               desc->action_active_mask |= mask;
+               return p;
+       }
+       return NULL;
+}
+
 int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *),
                unsigned long irqflags, const char *name, void *dev_id)
 {
-       struct irqaction *action, *tmp = NULL;
+       struct irqaction *action;
        struct ino_bucket *bucket = __bucket(irq);
        unsigned long flags;
        int pending = 0;
 
-       if ((bucket != &pil0_dummy_bucket) &&
-           (bucket < &ivector_table[0] ||
-            bucket >= &ivector_table[NUM_IVECS])) {
-               unsigned int *caller;
-
-               __asm__ __volatile__("mov %%i7, %0" : "=r" (caller));
-               printk(KERN_CRIT "request_irq: Old style IRQ registry attempt "
-                      "from %p, irq %08x.\n", caller, irq);
+       if (unlikely(!handler))
                return -EINVAL;
-       }       
-       if (!handler)
-           return -EINVAL;
+
+       if (unlikely(!bucket->irq_info))
+               return -ENODEV;
 
        if ((bucket != &pil0_dummy_bucket) && (irqflags & SA_SAMPLE_RANDOM)) {
                /*
@@ -356,93 +383,20 @@ int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_
 
        spin_lock_irqsave(&irq_action_lock, flags);
 
-       action = *(bucket->pil + irq_action);
-       if (action) {
-               if ((action->flags & SA_SHIRQ) && (irqflags & SA_SHIRQ))
-                       for (tmp = action; tmp->next; tmp = tmp->next)
-                               ;
-               else {
-                       spin_unlock_irqrestore(&irq_action_lock, flags);
-                       return -EBUSY;
-               }
-               action = NULL;          /* Or else! */
+       if (check_irq_sharing(bucket->pil, irqflags)) {
+               spin_unlock_irqrestore(&irq_action_lock, flags);
+               return -EBUSY;
        }
 
-       /* If this is flagged as statically allocated then we use our
-        * private struct which is never freed.
-        */
-       if (irqflags & SA_STATIC_ALLOC) {
-           if (static_irq_count < MAX_STATIC_ALLOC)
-               action = &static_irqaction[static_irq_count++];
-           else
-               printk("Request for IRQ%d (%s) SA_STATIC_ALLOC failed "
-                      "using kmalloc\n", irq, name);
-       }       
-       if (action == NULL)
-           action = (struct irqaction *)kmalloc(sizeof(struct irqaction),
-                                                GFP_ATOMIC);
-       
+       action = get_action_slot(bucket);
        if (!action) { 
                spin_unlock_irqrestore(&irq_action_lock, flags);
                return -ENOMEM;
        }
 
-       if (bucket == &pil0_dummy_bucket) {
-               bucket->irq_info = action;
-               bucket->flags |= IBF_ACTIVE;
-       } else {
-               if ((bucket->flags & IBF_ACTIVE) != 0) {
-                       void *orig = bucket->irq_info;
-                       void **vector = NULL;
-
-                       if ((bucket->flags & IBF_PCI) == 0) {
-                               printk("IRQ: Trying to share non-PCI bucket.\n");
-                               goto free_and_ebusy;
-                       }
-                       if ((bucket->flags & IBF_MULTI) == 0) {
-                               vector = kmalloc(sizeof(void *) * 4, GFP_ATOMIC);
-                               if (vector == NULL)
-                                       goto free_and_enomem;
-
-                               /* We might have slept. */
-                               if ((bucket->flags & IBF_MULTI) != 0) {
-                                       int ent;
-
-                                       kfree(vector);
-                                       vector = (void **)bucket->irq_info;
-                                       for(ent = 0; ent < 4; ent++) {
-                                               if (vector[ent] == NULL) {
-                                                       vector[ent] = action;
-                                                       break;
-                                               }
-                                       }
-                                       if (ent == 4)
-                                               goto free_and_ebusy;
-                               } else {
-                                       vector[0] = orig;
-                                       vector[1] = action;
-                                       vector[2] = NULL;
-                                       vector[3] = NULL;
-                                       bucket->irq_info = vector;
-                                       bucket->flags |= IBF_MULTI;
-                               }
-                       } else {
-                               int ent;
-
-                               vector = (void **)orig;
-                               for (ent = 0; ent < 4; ent++) {
-                                       if (vector[ent] == NULL) {
-                                               vector[ent] = action;
-                                               break;
-                                       }
-                               }
-                               if (ent == 4)
-                                       goto free_and_ebusy;
-                       }
-               } else {
-                       bucket->irq_info = action;
-                       bucket->flags |= IBF_ACTIVE;
-               }
+       bucket->flags |= IBF_ACTIVE;
+       pending = 0;
+       if (bucket != &pil0_dummy_bucket) {
                pending = bucket->pending;
                if (pending)
                        bucket->pending = 0;
@@ -456,10 +410,7 @@ int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_
        put_ino_in_irqaction(action, irq);
        put_smpaff_in_irqaction(action, CPU_MASK_NONE);
 
-       if (tmp)
-               tmp->next = action;
-       else
-               *(bucket->pil + irq_action) = action;
+       append_irq_action(bucket->pil, action);
 
        enable_irq(irq);
 
@@ -468,147 +419,103 @@ int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_
                atomic_bucket_insert(bucket);
                set_softint(1 << bucket->pil);
        }
+
        spin_unlock_irqrestore(&irq_action_lock, flags);
-       if ((bucket != &pil0_dummy_bucket) && (!(irqflags & SA_STATIC_ALLOC)))
+
+       if (bucket != &pil0_dummy_bucket)
                register_irq_proc(__irq_ino(irq));
 
 #ifdef CONFIG_SMP
        distribute_irqs();
 #endif
        return 0;
-
-free_and_ebusy:
-       kfree(action);
-       spin_unlock_irqrestore(&irq_action_lock, flags);
-       return -EBUSY;
-
-free_and_enomem:
-       kfree(action);
-       spin_unlock_irqrestore(&irq_action_lock, flags);
-       return -ENOMEM;
 }
 
 EXPORT_SYMBOL(request_irq);
 
-void free_irq(unsigned int irq, void *dev_id)
+static struct irqaction *unlink_irq_action(unsigned int irq, void *dev_id)
 {
-       struct irqaction *action;
-       struct irqaction *tmp = NULL;
-       unsigned long flags;
-       struct ino_bucket *bucket = __bucket(irq), *bp;
-
-       if ((bucket != &pil0_dummy_bucket) &&
-           (bucket < &ivector_table[0] ||
-            bucket >= &ivector_table[NUM_IVECS])) {
-               unsigned int *caller;
+       struct ino_bucket *bucket = __bucket(irq);
+       struct irqaction *action, **pp;
 
-               __asm__ __volatile__("mov %%i7, %0" : "=r" (caller));
-               printk(KERN_CRIT "free_irq: Old style IRQ removal attempt "
-                      "from %p, irq %08x.\n", caller, irq);
-               return;
-       }
-       
-       spin_lock_irqsave(&irq_action_lock, flags);
+       pp = irq_action + bucket->pil;
+       action = *pp;
+       if (unlikely(!action))
+               return NULL;
 
-       action = *(bucket->pil + irq_action);
-       if (!action->handler) {
+       if (unlikely(!action->handler)) {
                printk("Freeing free IRQ %d\n", bucket->pil);
-               return;
-       }
-       if (dev_id) {
-               for ( ; action; action = action->next) {
-                       if (action->dev_id == dev_id)
-                               break;
-                       tmp = action;
-               }
-               if (!action) {
-                       printk("Trying to free free shared IRQ %d\n", bucket->pil);
-                       spin_unlock_irqrestore(&irq_action_lock, flags);
-                       return;
-               }
-       } else if (action->flags & SA_SHIRQ) {
-               printk("Trying to free shared IRQ %d with NULL device ID\n", bucket->pil);
-               spin_unlock_irqrestore(&irq_action_lock, flags);
-               return;
+               return NULL;
        }
 
-       if (action->flags & SA_STATIC_ALLOC) {
-               printk("Attempt to free statically allocated IRQ %d (%s)\n",
-                      bucket->pil, action->name);
-               spin_unlock_irqrestore(&irq_action_lock, flags);
-               return;
+       while (action && action->dev_id != dev_id) {
+               pp = &action->next;
+               action = *pp;
        }
 
-       if (action && tmp)
-               tmp->next = action->next;
-       else
-               *(bucket->pil + irq_action) = action->next;
+       if (likely(action))
+               *pp = action->next;
+
+       return action;
+}
+
+void free_irq(unsigned int irq, void *dev_id)
+{
+       struct irqaction *action;
+       struct ino_bucket *bucket;
+       unsigned long flags;
+
+       spin_lock_irqsave(&irq_action_lock, flags);
+
+       action = unlink_irq_action(irq, dev_id);
 
        spin_unlock_irqrestore(&irq_action_lock, flags);
 
+       if (unlikely(!action))
+               return;
+
        synchronize_irq(irq);
 
        spin_lock_irqsave(&irq_action_lock, flags);
 
+       bucket = __bucket(irq);
        if (bucket != &pil0_dummy_bucket) {
+               struct irq_desc *desc = bucket->irq_info;
                unsigned long imap = bucket->imap;
-               void **vector, *orig;
-               int ent;
-
-               orig = bucket->irq_info;
-               vector = (void **)orig;
-
-               if ((bucket->flags & IBF_MULTI) != 0) {
-                       int other = 0;
-                       void *orphan = NULL;
-                       for (ent = 0; ent < 4; ent++) {
-                               if (vector[ent] == action)
-                                       vector[ent] = NULL;
-                               else if (vector[ent] != NULL) {
-                                       orphan = vector[ent];
-                                       other++;
-                               }
-                       }
+               int ent, i;
 
-                       /* Only free when no other shared irq
-                        * uses this bucket.
-                        */
-                       if (other) {
-                               if (other == 1) {
-                                       /* Convert back to non-shared bucket. */
-                                       bucket->irq_info = orphan;
-                                       bucket->flags &= ~(IBF_MULTI);
-                                       kfree(vector);
-                               }
-                               goto out;
+               for (i = 0; i < MAX_IRQ_DESC_ACTION; i++) {
+                       struct irqaction *p = &desc->action[i];
+
+                       if (p == action) {
+                               desc->action_active_mask &= ~(1 << i);
+                               break;
                        }
-               } else {
-                       bucket->irq_info = NULL;
                }
 
-               /* This unique interrupt source is now inactive. */
-               bucket->flags &= ~IBF_ACTIVE;
+               if (!desc->action_active_mask) {
+                       /* This unique interrupt source is now inactive. */
+                       bucket->flags &= ~IBF_ACTIVE;
 
-               /* See if any other buckets share this bucket's IMAP
-                * and are still active.
-                */
-               for (ent = 0; ent < NUM_IVECS; ent++) {
-                       bp = &ivector_table[ent];
-                       if (bp != bucket        &&
-                           bp->imap == imap    &&
-                           (bp->flags & IBF_ACTIVE) != 0)
-                               break;
-               }
+                       /* See if any other buckets share this bucket's IMAP
+                        * and are still active.
+                        */
+                       for (ent = 0; ent < NUM_IVECS; ent++) {
+                               struct ino_bucket *bp = &ivector_table[ent];
+                               if (bp != bucket        &&
+                                   bp->imap == imap    &&
+                                   (bp->flags & IBF_ACTIVE) != 0)
+                                       break;
+                       }
 
-               /* Only disable when no other sub-irq levels of
-                * the same IMAP are active.
-                */
-               if (ent == NUM_IVECS)
-                       disable_irq(irq);
+                       /* Only disable when no other sub-irq levels of
+                        * the same IMAP are active.
+                        */
+                       if (ent == NUM_IVECS)
+                               disable_irq(irq);
+               }
        }
 
-out:
-       kfree(action);
        spin_unlock_irqrestore(&irq_action_lock, flags);
 }
 
@@ -647,99 +554,55 @@ void synchronize_irq(unsigned int irq)
 }
 #endif /* CONFIG_SMP */
 
-void catch_disabled_ivec(struct pt_regs *regs)
-{
-       int cpu = smp_processor_id();
-       struct ino_bucket *bucket = __bucket(*irq_work(cpu, 0));
-
-       /* We can actually see this on Ultra/PCI PCI cards, which are bridges
-        * to other devices.  Here a single IMAP enabled potentially multiple
-        * unique interrupt sources (which each do have a unique ICLR register.
-        *
-        * So what we do is just register that the IVEC arrived, when registered
-        * for real the request_irq() code will check the bit and signal
-        * a local CPU interrupt for it.
-        */
-#if 0
-       printk("IVEC: Spurious interrupt vector (%x) received at (%016lx)\n",
-              bucket - &ivector_table[0], regs->tpc);
-#endif
-       *irq_work(cpu, 0) = 0;
-       bucket->pending = 1;
-}
-
-/* Tune this... */
-#define FORWARD_VOLUME         12
-
-#ifdef CONFIG_SMP
-
-static inline void redirect_intr(int cpu, struct ino_bucket *bp)
+static void process_bucket(int irq, struct ino_bucket *bp, struct pt_regs *regs)
 {
-       /* Ok, here is what is going on:
-        * 1) Retargeting IRQs on Starfire is very
-        *    expensive so just forget about it on them.
-        * 2) Moving around very high priority interrupts
-        *    is a losing game.
-        * 3) If the current cpu is idle, interrupts are
-        *    useful work, so keep them here.  But do not
-        *    pass to our neighbour if he is not very idle.
-        * 4) If sysadmin explicitly asks for directed intrs,
-        *    Just Do It.
-        */
-       struct irqaction *ap = bp->irq_info;
-       cpumask_t cpu_mask;
-       unsigned int buddy, ticks;
+       struct irq_desc *desc = bp->irq_info;
+       unsigned char flags = bp->flags;
+       u32 action_mask, i;
+       int random;
 
-       cpu_mask = get_smpaff_in_irqaction(ap);
-       cpus_and(cpu_mask, cpu_mask, cpu_online_map);
-       if (cpus_empty(cpu_mask))
-               cpu_mask = cpu_online_map;
+       bp->flags |= IBF_INPROGRESS;
 
-       if (this_is_starfire != 0 ||
-           bp->pil >= 10 || current->pid == 0)
+       if (unlikely(!(flags & IBF_ACTIVE))) {
+               bp->pending = 1;
                goto out;
-
-       /* 'cpu' is the MID (ie. UPAID), calculate the MID
-        * of our buddy.
-        */
-       buddy = cpu + 1;
-       if (buddy >= NR_CPUS)
-               buddy = 0;
-
-       ticks = 0;
-       while (!cpu_isset(buddy, cpu_mask)) {
-               if (++buddy >= NR_CPUS)
-                       buddy = 0;
-               if (++ticks > NR_CPUS) {
-                       put_smpaff_in_irqaction(ap, CPU_MASK_NONE);
-                       goto out;
-               }
        }
 
-       if (buddy == cpu)
-               goto out;
+       if (desc->pre_handler)
+               desc->pre_handler(bp,
+                                 desc->pre_handler_arg1,
+                                 desc->pre_handler_arg2);
 
-       /* Voo-doo programming. */
-       if (cpu_data(buddy).idle_volume < FORWARD_VOLUME)
-               goto out;
+       action_mask = desc->action_active_mask;
+       random = 0;
+       for (i = 0; i < MAX_IRQ_DESC_ACTION; i++) {
+               struct irqaction *p = &desc->action[i];
+               u32 mask = (1 << i);
 
-       /* This just so happens to be correct on Cheetah
-        * at the moment.
-        */
-       buddy <<= 26;
+               if (!(action_mask & mask))
+                       continue;
+
+               action_mask &= ~mask;
 
-       /* Push it to our buddy. */
-       upa_writel(buddy | IMAP_VALID, bp->imap);
+               if (p->handler(__irq(bp), p->dev_id, regs) == IRQ_HANDLED)
+                       random |= p->flags;
 
+               if (!action_mask)
+                       break;
+       }
+       if (bp->pil != 0) {
+               upa_writel(ICLR_IDLE, bp->iclr);
+               /* Test and add entropy */
+               if (random & SA_SAMPLE_RANDOM)
+                       add_interrupt_randomness(irq);
+       }
 out:
-       return;
+       bp->flags &= ~IBF_INPROGRESS;
 }
 
-#endif
-
 void handler_irq(int irq, struct pt_regs *regs)
 {
-       struct ino_bucket *bp, *nbp;
+       struct ino_bucket *bp;
        int cpu = smp_processor_id();
 
 #ifndef CONFIG_SMP
@@ -757,8 +620,6 @@ void handler_irq(int irq, struct pt_regs *regs)
                clear_softint(clr_mask);
        }
 #else
-       int should_forward = 0;
-
        clear_softint(1 << irq);
 #endif
 
@@ -773,63 +634,12 @@ void handler_irq(int irq, struct pt_regs *regs)
 #else
        bp = __bucket(xchg32(irq_work(cpu, irq), 0));
 #endif
-       for ( ; bp != NULL; bp = nbp) {
-               unsigned char flags = bp->flags;
-               unsigned char random = 0;
+       while (bp) {
+               struct ino_bucket *nbp = __bucket(bp->irq_chain);
 
-               nbp = __bucket(bp->irq_chain);
                bp->irq_chain = 0;
-
-               bp->flags |= IBF_INPROGRESS;
-
-               if ((flags & IBF_ACTIVE) != 0) {
-#ifdef CONFIG_PCI
-                       if ((flags & IBF_DMA_SYNC) != 0) {
-                               upa_readl(dma_sync_reg_table[bp->synctab_ent]);
-                               upa_readq(pci_dma_wsync);
-                       }
-#endif
-                       if ((flags & IBF_MULTI) == 0) {
-                               struct irqaction *ap = bp->irq_info;
-                               int ret;
-
-                               ret = ap->handler(__irq(bp), ap->dev_id, regs);
-                               if (ret == IRQ_HANDLED)
-                                       random |= ap->flags;
-                       } else {
-                               void **vector = (void **)bp->irq_info;
-                               int ent;
-                               for (ent = 0; ent < 4; ent++) {
-                                       struct irqaction *ap = vector[ent];
-                                       if (ap != NULL) {
-                                               int ret;
-
-                                               ret = ap->handler(__irq(bp),
-                                                                 ap->dev_id,
-                                                                 regs);
-                                               if (ret == IRQ_HANDLED)
-                                                       random |= ap->flags;
-                                       }
-                               }
-                       }
-                       /* Only the dummy bucket lacks IMAP/ICLR. */
-                       if (bp->pil != 0) {
-#ifdef CONFIG_SMP
-                               if (should_forward) {
-                                       redirect_intr(cpu, bp);
-                                       should_forward = 0;
-                               }
-#endif
-                               upa_writel(ICLR_IDLE, bp->iclr);
-
-                               /* Test and add entropy */
-                               if (random & SA_SAMPLE_RANDOM)
-                                       add_interrupt_randomness(irq);
-                       }
-               } else
-                       bp->pending = 1;
-
-               bp->flags &= ~IBF_INPROGRESS;
+               process_bucket(irq, bp, regs);
+               bp = nbp;
        }
        irq_exit();
 }
@@ -959,7 +769,10 @@ static void distribute_irqs(void)
         */
        for (level = 1; level < NR_IRQS; level++) {
                struct irqaction *p = irq_action[level];
-               if (level == 12) continue;
+
+               if (level == 12)
+                       continue;
+
                while(p) {
                        cpu = retarget_one_irq(p, cpu);
                        p = p->next;
index bdac631cf01159d004c0ec4f1684b2cac17196d3..bbf11f85dab15a00a05c4c9d11774a8f93776c13 100644 (file)
@@ -433,3 +433,8 @@ int longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
        return 0;
 }
 
+/* architecture specific initialization */
+int arch_init_kprobes(void)
+{
+       return 0;
+}
index 534320ef0db2a43992ac6341df4c444d9ccc2182..91ab466d6c66ba7ae9d4aab057b93fd7f1b04bf1 100644 (file)
@@ -1303,8 +1303,7 @@ static void psycho_controller_hwinit(struct pci_controller_info *p)
 {
        u64 tmp;
 
-       /* PROM sets the IRQ retry value too low, increase it. */
-       psycho_write(p->pbm_A.controller_regs + PSYCHO_IRQ_RETRY, 0xff);
+       psycho_write(p->pbm_A.controller_regs + PSYCHO_IRQ_RETRY, 5);
 
        /* Enable arbiter for all PCI slots. */
        tmp = psycho_read(p->pbm_A.controller_regs + PSYCHO_PCIA_CTRL);
index 53d333b4a4e809f7ebf48231c46bb5e65af86ec3..52bf3431a42243cc323bfbbe8750a4c3622b4d3c 100644 (file)
@@ -595,6 +595,23 @@ static int __init sabre_ino_to_pil(struct pci_dev *pdev, unsigned int ino)
        return ret;
 }
 
+/* When a device lives behind a bridge deeper in the PCI bus topology
+ * than APB, a special sequence must run to make sure all pending DMA
+ * transfers at the time of IRQ delivery are visible in the coherency
+ * domain by the cpu.  This sequence is to perform a read on the far
+ * side of the non-APB bridge, then perform a read of Sabre's DMA
+ * write-sync register.
+ */
+static void sabre_wsync_handler(struct ino_bucket *bucket, void *_arg1, void *_arg2)
+{
+       struct pci_dev *pdev = _arg1;
+       unsigned long sync_reg = (unsigned long) _arg2;
+       u16 _unused;
+
+       pci_read_config_word(pdev, PCI_VENDOR_ID, &_unused);
+       sabre_read(sync_reg);
+}
+
 static unsigned int __init sabre_irq_build(struct pci_pbm_info *pbm,
                                           struct pci_dev *pdev,
                                           unsigned int ino)
@@ -639,24 +656,14 @@ static unsigned int __init sabre_irq_build(struct pci_pbm_info *pbm,
        if (pdev) {
                struct pcidev_cookie *pcp = pdev->sysdata;
 
-               /* When a device lives behind a bridge deeper in the
-                * PCI bus topology than APB, a special sequence must
-                * run to make sure all pending DMA transfers at the
-                * time of IRQ delivery are visible in the coherency
-                * domain by the cpu.  This sequence is to perform
-                * a read on the far side of the non-APB bridge, then
-                * perform a read of Sabre's DMA write-sync register.
-                *
-                * Currently, the PCI_CONFIG register for the device
-                * is used for this read from the far side of the bridge.
-                */
                if (pdev->bus->number != pcp->pbm->pci_first_busno) {
-                       bucket->flags |= IBF_DMA_SYNC;
-                       bucket->synctab_ent = dma_sync_reg_table_entry++;
-                       dma_sync_reg_table[bucket->synctab_ent] =
-                               (unsigned long) sabre_pci_config_mkaddr(
-                                       pcp->pbm,
-                                       pdev->bus->number, pdev->devfn, PCI_COMMAND);
+                       struct pci_controller_info *p = pcp->pbm->parent;
+                       struct irq_desc *d = bucket->irq_info;
+
+                       d->pre_handler = sabre_wsync_handler;
+                       d->pre_handler_arg1 = pdev;
+                       d->pre_handler_arg2 = (void *)
+                               p->pbm_A.controller_regs + SABRE_WRSYNC;
                }
        }
        return __irq(bucket);
@@ -1626,10 +1633,9 @@ void __init sabre_init(int pnode, char *model_name)
         */
        p->pbm_A.controller_regs = pr_regs[0].phys_addr;
        p->pbm_B.controller_regs = pr_regs[0].phys_addr;
-       pci_dma_wsync = p->pbm_A.controller_regs + SABRE_WRSYNC;
 
-       printk("PCI: Found SABRE, main regs at %016lx, wsync at %016lx\n",
-              p->pbm_A.controller_regs, pci_dma_wsync);
+       printk("PCI: Found SABRE, main regs at %016lx\n",
+              p->pbm_A.controller_regs);
 
        /* Clear interrupts */
 
index 5753175b94e6c91da7eb7ad91fcf197585bf3c98..6a182bb66281f24c0caf721207c5f9370323fd4e 100644 (file)
@@ -15,6 +15,7 @@
 #include <asm/iommu.h>
 #include <asm/irq.h>
 #include <asm/upa.h>
+#include <asm/pstate.h>
 
 #include "pci_impl.h"
 #include "iommu_common.h"
@@ -326,6 +327,44 @@ static int __init schizo_ino_to_pil(struct pci_dev *pdev, unsigned int ino)
        return ret;
 }
 
+static void tomatillo_wsync_handler(struct ino_bucket *bucket, void *_arg1, void *_arg2)
+{
+       unsigned long sync_reg = (unsigned long) _arg2;
+       u64 mask = 1 << (__irq_ino(__irq(bucket)) & IMAP_INO);
+       u64 val;
+       int limit;
+
+       schizo_write(sync_reg, mask);
+
+       limit = 100000;
+       val = 0;
+       while (--limit) {
+               val = schizo_read(sync_reg);
+               if (!(val & mask))
+                       break;
+       }
+       if (limit <= 0) {
+               printk("tomatillo_wsync_handler: DMA won't sync [%lx:%lx]\n",
+                      val, mask);
+       }
+
+       if (_arg1) {
+               static unsigned char cacheline[64]
+                       __attribute__ ((aligned (64)));
+
+               __asm__ __volatile__("rd %%fprs, %0\n\t"
+                                    "or %0, %4, %1\n\t"
+                                    "wr %1, 0x0, %%fprs\n\t"
+                                    "stda %%f0, [%5] %6\n\t"
+                                    "wr %0, 0x0, %%fprs\n\t"
+                                    "membar #Sync"
+                                    : "=&r" (mask), "=&r" (val)
+                                    : "0" (mask), "1" (val),
+                                    "i" (FPRS_FEF), "r" (&cacheline[0]),
+                                    "i" (ASI_BLK_COMMIT_P));
+       }
+}
+
 static unsigned int schizo_irq_build(struct pci_pbm_info *pbm,
                                     struct pci_dev *pdev,
                                     unsigned int ino)
@@ -369,6 +408,15 @@ static unsigned int schizo_irq_build(struct pci_pbm_info *pbm,
        bucket = __bucket(build_irq(pil, ign_fixup, iclr, imap));
        bucket->flags |= IBF_PCI;
 
+       if (pdev && pbm->chip_type == PBM_CHIP_TYPE_TOMATILLO) {
+               struct irq_desc *p = bucket->irq_info;
+
+               p->pre_handler = tomatillo_wsync_handler;
+               p->pre_handler_arg1 = ((pbm->chip_version <= 4) ?
+                                      (void *) 1 : (void *) 0);
+               p->pre_handler_arg2 = (void *) pbm->sync_reg;
+       }
+
        return __irq(bucket);
 }
 
@@ -885,6 +933,7 @@ static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs)
 
 #define SCHIZO_PCI_CTRL                (0x2000UL)
 #define SCHIZO_PCICTRL_BUS_UNUS        (1UL << 63UL) /* Safari */
+#define SCHIZO_PCICTRL_DTO_INT (1UL << 61UL) /* Tomatillo */
 #define SCHIZO_PCICTRL_ARB_PRIO (0x1ff << 52UL) /* Tomatillo */
 #define SCHIZO_PCICTRL_ESLCK   (1UL << 51UL) /* Safari */
 #define SCHIZO_PCICTRL_ERRSLOT (7UL << 48UL) /* Safari */
@@ -1887,37 +1936,27 @@ static void __init schizo_pbm_hw_init(struct pci_pbm_info *pbm)
 {
        u64 tmp;
 
-       /* Set IRQ retry to infinity. */
-       schizo_write(pbm->pbm_regs + SCHIZO_PCI_IRQ_RETRY,
-                    SCHIZO_IRQ_RETRY_INF);
+       schizo_write(pbm->pbm_regs + SCHIZO_PCI_IRQ_RETRY, 5);
 
-       /* Enable arbiter for all PCI slots.  Also, disable PCI interval
-        * timer so that DTO (Discard TimeOuts) are not reported because
-        * some Schizo revisions report them erroneously.
-        */
        tmp = schizo_read(pbm->pbm_regs + SCHIZO_PCI_CTRL);
-       if (pbm->chip_type == PBM_CHIP_TYPE_SCHIZO_PLUS &&
-           pbm->chip_version == 0x5 &&
-           pbm->chip_revision == 0x1)
-               tmp |= 0x0f;
-       else
-               tmp |= 0xff;
 
-       tmp &= ~SCHIZO_PCICTRL_PTO;
+       /* Enable arbiter for all PCI slots.  */
+       tmp |= 0xff;
+
        if (pbm->chip_type == PBM_CHIP_TYPE_TOMATILLO &&
            pbm->chip_version >= 0x2)
                tmp |= 0x3UL << SCHIZO_PCICTRL_PTO_SHIFT;
-       else
-               tmp |= 0x1UL << SCHIZO_PCICTRL_PTO_SHIFT;
 
        if (!prom_getbool(pbm->prom_node, "no-bus-parking"))
                tmp |= SCHIZO_PCICTRL_PARK;
+       else
+               tmp &= ~SCHIZO_PCICTRL_PARK;
 
        if (pbm->chip_type == PBM_CHIP_TYPE_TOMATILLO &&
            pbm->chip_version <= 0x1)
-               tmp |= (1UL << 61);
+               tmp |= SCHIZO_PCICTRL_DTO_INT;
        else
-               tmp &= ~(1UL << 61);
+               tmp &= ~SCHIZO_PCICTRL_DTO_INT;
 
        if (pbm->chip_type == PBM_CHIP_TYPE_TOMATILLO)
                tmp |= (SCHIZO_PCICTRL_MRM_PREF |
@@ -2015,6 +2054,9 @@ static void __init schizo_pbm_init(struct pci_controller_info *p,
        pbm->pbm_regs = pr_regs[0].phys_addr;
        pbm->controller_regs = pr_regs[1].phys_addr - 0x10000UL;
 
+       if (chip_type == PBM_CHIP_TYPE_TOMATILLO)
+               pbm->sync_reg = pr_regs[3].phys_addr + 0x1a18UL;
+
        sprintf(pbm->name,
                (chip_type == PBM_CHIP_TYPE_TOMATILLO ?
                 "TOMATILLO%d PBM%c" :
index 71b4e38076940627c9d13d263581a7aa4552d7fc..b40db389f90b2a8863229d66c74773ae5f4e695a 100644 (file)
@@ -973,7 +973,7 @@ static void sparc64_start_timers(irqreturn_t (*cfunc)(int, void *, struct pt_reg
        int err;
 
        /* Register IRQ handler. */
-       err = request_irq(build_irq(0, 0, 0UL, 0UL), cfunc, SA_STATIC_ALLOC,
+       err = request_irq(build_irq(0, 0, 0UL, 0UL), cfunc, 0,
                          "timer", NULL);
 
        if (err) {
index 7a2431d3abc7e9057d862add7040d97f56849d91..363770893797770233005c315d7644ff902272a7 100644 (file)
@@ -72,6 +72,7 @@ __flush_tlb_pending:
        flush           %g6
        retl
         wrpr           %g7, 0x0, %pstate
+       nop
 
        .align          32
        .globl          __flush_tlb_kernel_range
@@ -249,7 +250,7 @@ __cheetah_flush_tlb_mm: /* 15 insns */
        retl
         wrpr           %g7, 0x0, %pstate
 
-__cheetah_flush_tlb_pending:   /* 22 insns */
+__cheetah_flush_tlb_pending:   /* 23 insns */
        /* %o0 = context, %o1 = nr, %o2 = vaddrs[] */
        rdpr            %pstate, %g7
        sllx            %o1, 3, %o1
@@ -317,7 +318,7 @@ cheetah_patch_cachetlbops:
        sethi           %hi(__cheetah_flush_tlb_pending), %o1
        or              %o1, %lo(__cheetah_flush_tlb_pending), %o1
        call            cheetah_patch_one
-        mov            22, %o2
+        mov            23, %o2
 
 #ifdef DCACHE_ALIASING_POSSIBLE
        sethi           %hi(__flush_dcache_page), %o0
index acd2a778ebe6ddafeb7d036f370e2ef2bca9c849..5c6dc705148299e5cede75693244e10ebe367410 100644 (file)
@@ -682,7 +682,7 @@ static struct kprobe trampoline_p = {
        .pre_handler = trampoline_probe_handler
 };
 
-int __init arch_init(void)
+int __init arch_init_kprobes(void)
 {
        return register_kprobe(&trampoline_p);
 }
index 8dbf802ee7f819d9c885247a35d0d736ca4a5979..d1f42b9728214cb31a7a2584b802325029d3fed5 100644 (file)
@@ -433,7 +433,7 @@ acpi_pci_irq_enable (
                printk(KERN_WARNING PREFIX "PCI Interrupt %s[%c]: no GSI",
                        pci_name(dev), ('A' + pin));
                /* Interrupt Line values above 0xF are forbidden */
-               if (dev->irq >= 0 && (dev->irq <= 0xF)) {
+               if (dev->irq > 0 && (dev->irq <= 0xF)) {
                        printk(" - using IRQ %d\n", dev->irq);
                        acpi_register_gsi(dev->irq, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW);
                        return_VALUE(0);
index 7e6ac14c2450d3201d68c00bccd390686e461dbf..3480535a09c5f113af1ca110bb0fa37ae58c2206 100644 (file)
@@ -579,7 +579,7 @@ static int __init rng_init (void)
 
        /* Probe for Intel, AMD RNGs */
        for_each_pci_dev(pdev) {
-               ent = pci_match_device (rng_pci_tbl, pdev);
+               ent = pci_match_id(rng_pci_tbl, pdev);
                if (ent) {
                        rng_ops = &rng_vendor_ops[ent->driver_data];
                        goto match;
index b14d642439ed1343ba30e8db18769176d80a9b63..5d07ee59679d4a7ce2c32d144789c397788716b6 100644 (file)
@@ -401,7 +401,7 @@ static unsigned char __init i8xx_tco_getdevice (void)
         */
 
        while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
-               if (pci_match_device(i8xx_tco_pci_tbl, dev)) {
+               if (pci_match_id(i8xx_tco_pci_tbl, dev)) {
                        i8xx_tco_pci = dev;
                        break;
                }
index 5be8ad6dc9edcfe3e033c7b811ecfa559ff86b50..cca9c075966dd219a235d91a8bbf353126001008 100644 (file)
@@ -20,7 +20,6 @@ ide-core-$(CONFIG_BLK_DEV_CMD640)     += pci/cmd640.o
 # Core IDE code - must come before legacy
 ide-core-$(CONFIG_BLK_DEV_IDEPCI)      += setup-pci.o
 ide-core-$(CONFIG_BLK_DEV_IDEDMA)      += ide-dma.o
-ide-core-$(CONFIG_BLK_DEV_IDE_TCQ)     += ide-tcq.o
 ide-core-$(CONFIG_PROC_FS)             += ide-proc.o
 ide-core-$(CONFIG_BLK_DEV_IDEPNP)      += ide-pnp.o
 
index 6806d407e9c12ab41250e69daffaccca919dd4d6..b09a6537c7a8a9b2d975026b38d4edcae53757d5 100644 (file)
@@ -487,8 +487,7 @@ static u8 ide_dump_ata_status(ide_drive_t *drive, const char *msg, u8 stat)
        u8 err = 0;
 
        local_irq_set(flags);
-       printk("%s: %s: status=0x%02x", drive->name, msg, stat);
-       printk(" { ");
+       printk("%s: %s: status=0x%02x { ", drive->name, msg, stat);
        if (stat & BUSY_STAT)
                printk("Busy ");
        else {
@@ -500,15 +499,13 @@ static u8 ide_dump_ata_status(ide_drive_t *drive, const char *msg, u8 stat)
                if (stat & INDEX_STAT)  printk("Index ");
                if (stat & ERR_STAT)    printk("Error ");
        }
-       printk("}");
-       printk("\n");
+       printk("}\n");
        if ((stat & (BUSY_STAT|ERR_STAT)) == ERR_STAT) {
                err = hwif->INB(IDE_ERROR_REG);
-               printk("%s: %s: error=0x%02x", drive->name, msg, err);
-               printk(" { ");
+               printk("%s: %s: error=0x%02x { ", drive->name, msg, err);
                if (err & ABRT_ERR)     printk("DriveStatusError ");
                if (err & ICRC_ERR)
-                       printk("Bad%s ", (err & ABRT_ERR) ? "CRC" : "Sector");
+                       printk((err & ABRT_ERR) ? "BadCRC " : "BadSector ");
                if (err & ECC_ERR)      printk("UncorrectableError ");
                if (err & ID_ERR)       printk("SectorIdNotFound ");
                if (err & TRK0_ERR)     printk("TrackZeroNotFound ");
@@ -546,8 +543,8 @@ static u8 ide_dump_ata_status(ide_drive_t *drive, const char *msg, u8 stat)
                                printk(", sector=%llu",
                                        (unsigned long long)HWGROUP(drive)->rq->sector);
                }
+               printk("\n");
        }
-       printk("\n");
        ide_dump_opcode(drive);
        local_irq_restore(flags);
        return err;
index 67efb38a9f6c35691c892e51ea0accccf50799d5..6cf49394a80f35e946279061980a3489ebcf7df3 100644 (file)
@@ -583,7 +583,7 @@ static int ali15x3_dma_setup(ide_drive_t *drive)
  *     appropriate also sets up the 1533 southbridge.
  */
   
-static unsigned int __init init_chipset_ali15x3 (struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_ali15x3 (struct pci_dev *dev, const char *name)
 {
        unsigned long flags;
        u8 tmpbyte;
@@ -677,7 +677,7 @@ static unsigned int __init init_chipset_ali15x3 (struct pci_dev *dev, const char
  *     FIXME: frobs bits that are not defined on newer ALi devicea
  */
 
-static unsigned int __init ata66_ali15x3 (ide_hwif_t *hwif)
+static unsigned int __devinit ata66_ali15x3 (ide_hwif_t *hwif)
 {
        struct pci_dev *dev     = hwif->pci_dev;
        unsigned int ata66      = 0;
@@ -748,7 +748,7 @@ static unsigned int __init ata66_ali15x3 (ide_hwif_t *hwif)
  *     Initialize the IDE structure side of the ALi 15x3 driver.
  */
  
-static void __init init_hwif_common_ali15x3 (ide_hwif_t *hwif)
+static void __devinit init_hwif_common_ali15x3 (ide_hwif_t *hwif)
 {
        hwif->autodma = 0;
        hwif->tuneproc = &ali15x3_tune_drive;
@@ -794,7 +794,7 @@ static void __init init_hwif_common_ali15x3 (ide_hwif_t *hwif)
  *     Sparc systems
  */
 
-static void __init init_hwif_ali15x3 (ide_hwif_t *hwif)
+static void __devinit init_hwif_ali15x3 (ide_hwif_t *hwif)
 {
        u8 ideic, inmir;
        s8 irq_routing_table[] = { -1,  9, 3, 10, 4,  5, 7,  6,
@@ -847,7 +847,7 @@ static void __init init_hwif_ali15x3 (ide_hwif_t *hwif)
  *     the actual work.
  */
 
-static void __init init_dma_ali15x3 (ide_hwif_t *hwif, unsigned long dmabase)
+static void __devinit init_dma_ali15x3 (ide_hwif_t *hwif, unsigned long dmabase)
 {
        if (m5229_revision < 0x20)
                return;
index 4e0f13d1d06073aef6f593d2141c8cb31dd58114..844a6c9fb9490e585fc5371d759840b9e7ae327c 100644 (file)
@@ -73,6 +73,7 @@ static struct amd_ide_chip {
        { PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE,        0x50, AMD_UDMA_133 },
        { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE,        0x50, AMD_UDMA_133 },
        { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE,        0x50, AMD_UDMA_133 },
+       { PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE,        0x50, AMD_UDMA_133 },
        { 0 }
 };
 
@@ -309,7 +310,7 @@ static int amd74xx_ide_dma_check(ide_drive_t *drive)
  * and initialize its drive independent registers.
  */
 
-static unsigned int __init init_chipset_amd74xx(struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_amd74xx(struct pci_dev *dev, const char *name)
 {
        unsigned char t;
        unsigned int u;
@@ -413,7 +414,7 @@ static unsigned int __init init_chipset_amd74xx(struct pci_dev *dev, const char
        return dev->irq;
 }
 
-static void __init init_hwif_amd74xx(ide_hwif_t *hwif)
+static void __devinit init_hwif_amd74xx(ide_hwif_t *hwif)
 {
        int i;
 
@@ -489,6 +490,7 @@ static ide_pci_device_t amd74xx_chipsets[] __devinitdata = {
        /* 13 */ DECLARE_NV_DEV("NFORCE-CK804"),
        /* 14 */ DECLARE_NV_DEV("NFORCE-MCP04"),
        /* 15 */ DECLARE_NV_DEV("NFORCE-MCP51"),
+       /* 16 */ DECLARE_NV_DEV("NFORCE-MCP55"),
 };
 
 static int __devinit amd74xx_probe(struct pci_dev *dev, const struct pci_device_id *id)
@@ -524,6 +526,7 @@ static struct pci_device_id amd74xx_pci_tbl[] = {
        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE,  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13 },
        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE,  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14 },
        { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE,  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 15 },
+       { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE,  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 16 },
        { 0, },
 };
 MODULE_DEVICE_TABLE(pci, amd74xx_pci_tbl);
index 0381961db263160f7a2a72ba923c1c6feb9607dd..09269e574b3e6e66a6db38df68404200af1ef197 100644 (file)
@@ -217,7 +217,7 @@ static int cs5530_config_dma (ide_drive_t *drive)
  *     Initialize the cs5530 bridge for reliable IDE DMA operation.
  */
 
-static unsigned int __init init_chipset_cs5530 (struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_cs5530 (struct pci_dev *dev, const char *name)
 {
        struct pci_dev *master_0 = NULL, *cs5530_0 = NULL;
        unsigned long flags;
@@ -308,7 +308,7 @@ static unsigned int __init init_chipset_cs5530 (struct pci_dev *dev, const char
  *     performs channel-specific pre-initialization before drive probing.
  */
 
-static void __init init_hwif_cs5530 (ide_hwif_t *hwif)
+static void __devinit init_hwif_cs5530 (ide_hwif_t *hwif)
 {
        unsigned long basereg;
        u32 d0_timings;
index 80d67e99ccb509f595d34303e91678cdad7f0221..5a33513f3dd1e7e25f8aae62a74ed01d2aad3fab 100644 (file)
@@ -391,7 +391,7 @@ static void cy82c693_tune_drive (ide_drive_t *drive, u8 pio)
 /*
  * this function is called during init and is used to setup the cy82c693 chip
  */
-static unsigned int __init init_chipset_cy82c693(struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_cy82c693(struct pci_dev *dev, const char *name)
 {
        if (PCI_FUNC(dev->devfn) != 1)
                return 0;
@@ -443,7 +443,7 @@ static unsigned int __init init_chipset_cy82c693(struct pci_dev *dev, const char
 /*
  * the init function - called for each ide channel once
  */
-static void __init init_hwif_cy82c693(ide_hwif_t *hwif)
+static void __devinit init_hwif_cy82c693(ide_hwif_t *hwif)
 {
        hwif->autodma = 0;
 
@@ -467,9 +467,9 @@ static void __init init_hwif_cy82c693(ide_hwif_t *hwif)
        hwif->drives[1].autodma = hwif->autodma;
 }
 
-static __initdata ide_hwif_t *primary;
+static __devinitdata ide_hwif_t *primary;
 
-void __init init_iops_cy82c693(ide_hwif_t *hwif)
+void __devinit init_iops_cy82c693(ide_hwif_t *hwif)
 {
        if (PCI_FUNC(hwif->pci_dev->devfn) == 1)
                primary = hwif;
index 631927cf17d4df3f1c31d849697f35067d31ba2b..93462926b9d5e0d208066a0a20d4926e38cf2248 100644 (file)
@@ -216,7 +216,7 @@ fast_ata_pio:
        return 0;
 }
 
-static unsigned int __init init_chipset_it8172 (struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_it8172 (struct pci_dev *dev, const char *name)
 {
        unsigned char progif;
     
@@ -230,7 +230,7 @@ static unsigned int __init init_chipset_it8172 (struct pci_dev *dev, const char
 }
 
 
-static void __init init_hwif_it8172 (ide_hwif_t *hwif)
+static void __devinit init_hwif_it8172 (ide_hwif_t *hwif)
 {
        struct pci_dev* dev = hwif->pci_dev;
        unsigned long cmdBase, ctrlBase;
index 205a32fbc2f0b8468940c821fe617e1e90b733ee..fcd5142f5cfe1fa7108269c008ac20f1c878a1c2 100644 (file)
@@ -195,7 +195,7 @@ static int ns87415_ide_dma_check (ide_drive_t *drive)
        return __ide_dma_check(drive);
 }
 
-static void __init init_hwif_ns87415 (ide_hwif_t *hwif)
+static void __devinit init_hwif_ns87415 (ide_hwif_t *hwif)
 {
        struct pci_dev *dev = hwif->pci_dev;
        unsigned int ctrl, using_inta;
index cf4fd91d396aa39febb8f3c49788d21421801d4d..7a7c2ef78ac28a7a5ab5096d5c3fdb1565667566 100644 (file)
@@ -326,7 +326,7 @@ static void opti621_tune_drive (ide_drive_t *drive, u8 pio)
 /*
  * init_hwif_opti621() is called once for each hwif found at boot.
  */
-static void __init init_hwif_opti621 (ide_hwif_t *hwif)
+static void __devinit init_hwif_opti621 (ide_hwif_t *hwif)
 {
        hwif->autodma = 0;
        hwif->drives[0].drive_data = PIO_DONT_KNOW;
index 3bc3bf1be49bd71bba7ba43e101f020dd0aed54b..10592cec6c43aca4e7bdf2443cff2d0dde5ca402 100644 (file)
@@ -459,7 +459,7 @@ printk("%s: SC1200: resume\n", hwif->name);
  * This gets invoked by the IDE driver once for each channel,
  * and performs channel-specific pre-initialization before drive probing.
  */
-static void __init init_hwif_sc1200 (ide_hwif_t *hwif)
+static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif)
 {
        if (hwif->mate)
                hwif->serialized = hwif->mate->serialized = 1;
index 1d970a0de21a340e1ec744f0419a69f4ed67e585..ea0806c82be08ca22e7363404b05713b60595118 100644 (file)
@@ -386,7 +386,7 @@ static unsigned int sl82c105_bridge_revision(struct pci_dev *dev)
  * channel 0 here at least, but channel 1 has to be enabled by
  * firmware or arch code. We still set both to 16 bits mode.
  */
-static unsigned int __init init_chipset_sl82c105(struct pci_dev *dev, const char *msg)
+static unsigned int __devinit init_chipset_sl82c105(struct pci_dev *dev, const char *msg)
 {
        u32 val;
 
@@ -399,7 +399,7 @@ static unsigned int __init init_chipset_sl82c105(struct pci_dev *dev, const char
        return dev->irq;
 }
 
-static void __init init_dma_sl82c105(ide_hwif_t *hwif, unsigned long dma_base)
+static void __devinit init_dma_sl82c105(ide_hwif_t *hwif, unsigned long dma_base)
 {
        unsigned int rev;
        u8 dma_state;
@@ -431,7 +431,7 @@ static void __init init_dma_sl82c105(ide_hwif_t *hwif, unsigned long dma_base)
  * Initialise the chip
  */
 
-static void __init init_hwif_sl82c105(ide_hwif_t *hwif)
+static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif)
 {
        struct pci_dev *dev = hwif->pci_dev;
        u32 val;
index 7fbf36342f73bac5a119907f94628bad2cc1d32f..5112c726633bafde6685d326b29a0f38c870b97b 100644 (file)
@@ -196,7 +196,7 @@ fast_ata_pio:
 }
 #endif /* CONFIG_BLK_DEV_IDEDMA */
 
-static void __init init_hwif_slc90e66 (ide_hwif_t *hwif)
+static void __devinit init_hwif_slc90e66 (ide_hwif_t *hwif)
 {
        u8 reg47 = 0;
        u8 mask = hwif->channel ? 0x01 : 0x02;  /* bit0:Primary */
index a1df2bfe3631cbe5136bbff562727044550ae54b..f96b56838f339fb33de1d7d6b26972628c88daf2 100644 (file)
@@ -130,7 +130,7 @@ static int triflex_config_drive_xfer_rate(ide_drive_t *drive)
        return hwif->ide_dma_off_quietly(drive);
 }
 
-static void __init init_hwif_triflex(ide_hwif_t *hwif)
+static void __devinit init_hwif_triflex(ide_hwif_t *hwif)
 {
        hwif->tuneproc = &triflex_tune_drive;
        hwif->speedproc = &triflex_tune_chipset;
index 069dbffe2116675aa598939726c61cc46b4836df..a4d099c937ff731c7627b7a650b5cc727cc5b261 100644 (file)
@@ -415,7 +415,7 @@ static int via82cxxx_ide_dma_check (ide_drive_t *drive)
  *     and initialize its drive independent registers.
  */
 
-static unsigned int __init init_chipset_via82cxxx(struct pci_dev *dev, const char *name)
+static unsigned int __devinit init_chipset_via82cxxx(struct pci_dev *dev, const char *name)
 {
        struct pci_dev *isa = NULL;
        u8 t, v;
@@ -576,7 +576,7 @@ static unsigned int __init init_chipset_via82cxxx(struct pci_dev *dev, const cha
        return 0;
 }
 
-static void __init init_hwif_via82cxxx(ide_hwif_t *hwif)
+static void __devinit init_hwif_via82cxxx(ide_hwif_t *hwif)
 {
        int i;
 
index e501675ad72e6d03f1cf8e190ef6a127ac410204..77da827b2898362527c776486290df2f75821b31 100644 (file)
@@ -847,7 +847,7 @@ static int __init ide_scan_pcidev(struct pci_dev *dev)
                d = list_entry(l, struct pci_driver, node);
                if(d->id_table)
                {
-                       const struct pci_device_id *id = pci_match_device(d->id_table, dev);
+                       const struct pci_device_id *id = pci_match_id(d->id_table, dev);
                        if(id != NULL)
                        {
                                if(d->probe(dev, id) >= 0)
index 3a5f6ac5b3641f4635e0a1e418920b923bc8b14c..7a42966d755bd00a7defabfe47e8d69fe4820aac 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/mmc/host.h>
 #include <linux/mmc/protocol.h>
 
+#include <asm/div64.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/scatterlist.h>
@@ -70,6 +71,7 @@ static void mmci_stop_data(struct mmci_host *host)
 static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
 {
        unsigned int datactrl, timeout, irqmask;
+       unsigned long long clks;
        void __iomem *base;
 
        DBG(host, "blksz %04x blks %04x flags %08x\n",
@@ -81,9 +83,10 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
 
        mmci_init_sg(host, data);
 
-       timeout = data->timeout_clks +
-                 ((unsigned long long)data->timeout_ns * host->cclk) /
-                  1000000000ULL;
+       clks = (unsigned long long)data->timeout_ns * host->cclk;
+       do_div(clks, 1000000000UL);
+
+       timeout = data->timeout_clks + (unsigned int)clks;
 
        base = host->base;
        writel(timeout, base + MMCIDATATIMER);
index b7fbd30b49a0de18d1b05cf30bcfe62c0f64efac..0c41d4b41a6597f3ecc3cf168a0cb113b79af938 100644 (file)
 #define DBGF(x...)     do { } while (0)
 #endif
 
-#ifdef CONFIG_MMC_DEBUG
-void DBG_REG(int reg, u8 value)
-{
-       int i;
-       
-       printk(KERN_DEBUG "wbsd: Register %d: 0x%02X %3d '%c' ",
-               reg, (int)value, (int)value, (value < 0x20)?'.':value);
-       
-       for (i = 7;i >= 0;i--)
-       {
-               if (value & (1 << i))
-                       printk("x");
-               else
-                       printk(".");
-       }
-       
-       printk("\n");
-}
-#else
-#define DBG_REG(r, v) do {}  while (0)
-#endif
-
 /*
  * Device resources
  */
@@ -92,6 +70,13 @@ MODULE_DEVICE_TABLE(pnp, pnp_dev_table);
 
 #endif /* CONFIG_PNP */
 
+static const int config_ports[] = { 0x2E, 0x4E };
+static const int unlock_codes[] = { 0x83, 0x87 };
+
+static const int valid_ids[] = {
+       0x7112,
+       };
+
 #ifdef CONFIG_PNP
 static unsigned int nopnp = 0;
 #else
@@ -1050,6 +1035,20 @@ static struct mmc_host_ops wbsd_ops = {
  *                                                                           *
 \*****************************************************************************/
 
+/*
+ * Helper function for card detection
+ */
+static void wbsd_detect_card(unsigned long data)
+{
+       struct wbsd_host *host = (struct wbsd_host*)data;
+       
+       BUG_ON(host == NULL);
+       
+       DBG("Executing card detection\n");
+       
+       mmc_detect_change(host->mmc);   
+}
+
 /*
  * Tasklets
  */
@@ -1075,7 +1074,6 @@ static void wbsd_tasklet_card(unsigned long param)
 {
        struct wbsd_host* host = (struct wbsd_host*)param;
        u8 csr;
-       int change = 0;
        
        spin_lock(&host->lock);
        
@@ -1094,14 +1092,20 @@ static void wbsd_tasklet_card(unsigned long param)
                {
                        DBG("Card inserted\n");
                        host->flags |= WBSD_FCARD_PRESENT;
-                       change = 1;
+                       
+                       /*
+                        * Delay card detection to allow electrical connections
+                        * to stabilise.
+                        */
+                       mod_timer(&host->timer, jiffies + HZ/2);
                }
+               
+               spin_unlock(&host->lock);
        }
        else if (host->flags & WBSD_FCARD_PRESENT)
        {
                DBG("Card removed\n");
                host->flags &= ~WBSD_FCARD_PRESENT;
-               change = 1;
                
                if (host->mrq)
                {
@@ -1112,15 +1116,14 @@ static void wbsd_tasklet_card(unsigned long param)
                        host->mrq->cmd->error = MMC_ERR_FAILED;
                        tasklet_schedule(&host->finish_tasklet);
                }
-       }
-       
-       /*
-        * Unlock first since we might get a call back.
-        */
-       spin_unlock(&host->lock);
+               
+               /*
+                * Unlock first since we might get a call back.
+                */
+               spin_unlock(&host->lock);
 
-       if (change)
                mmc_detect_change(host->mmc);
+       }
 }
 
 static void wbsd_tasklet_fifo(unsigned long param)
@@ -1324,6 +1327,13 @@ static int __devinit wbsd_alloc_mmc(struct device* dev)
        
        spin_lock_init(&host->lock);
        
+       /*
+        * Set up detection timer
+        */
+       init_timer(&host->timer);
+       host->timer.data = (unsigned long)host;
+       host->timer.function = wbsd_detect_card;
+       
        /*
         * Maximum number of segments. Worst case is one sector per segment
         * so this will be 64kB/512.
@@ -1351,11 +1361,17 @@ static int __devinit wbsd_alloc_mmc(struct device* dev)
 static void __devexit wbsd_free_mmc(struct device* dev)
 {
        struct mmc_host* mmc;
+       struct wbsd_host* host;
        
        mmc = dev_get_drvdata(dev);
        if (!mmc)
                return;
        
+       host = mmc_priv(mmc);
+       BUG_ON(host == NULL);
+       
+       del_timer_sync(&host->timer);
+       
        mmc_free_host(mmc);
        
        dev_set_drvdata(dev, NULL);
index 864f30828d01fe4f52da21502c91f3cec18e6ed4..661a9f6a6e6ff5b63cfc423f1bd203fa5b1eb614 100644 (file)
@@ -8,13 +8,6 @@
  * published by the Free Software Foundation.
  */
 
-const int config_ports[] = { 0x2E, 0x4E };
-const int unlock_codes[] = { 0x83, 0x87 };
-
-const int valid_ids[] = {
-       0x7112,
-       };
-
 #define LOCK_CODE              0xAA
 
 #define WBSD_CONF_SWRST                0x02
@@ -187,4 +180,6 @@ struct wbsd_host
        struct tasklet_struct   timeout_tasklet;
        struct tasklet_struct   finish_tasklet;
        struct tasklet_struct   block_tasklet;
+       
+       struct timer_list       timer;          /* Card detection timer */
 };
index 801e6c7d08920e4c80babcb1c23bc239f4d869ab..7363e101eb0f0958a8294831047ed191e18c0b93 100644 (file)
@@ -219,7 +219,7 @@ static int parse_afs_partitions(struct mtd_info *mtd,
         */
        for (idx = off = 0; off < mtd->size; off += mtd->erasesize) {
                struct image_info_struct iis;
-               u_int iis_ptr, img_ptr, size;
+               u_int iis_ptr, img_ptr;
 
                /* Read the footer. */
                ret = afs_read_footer(mtd, &img_ptr, &iis_ptr, off, mask);
@@ -236,21 +236,9 @@ static int parse_afs_partitions(struct mtd_info *mtd,
                        continue;
 
                strcpy(str, iis.name);
-               size = mtd->erasesize + off - img_ptr;
-
-               /*
-                * In order to support JFFS2 partitions on this layout,
-                * we must lie to MTD about the real size of JFFS2
-                * partitions; this ensures that the AFS flash footer
-                * won't be erased by JFFS2.  Please ensure that your
-                * JFFS2 partitions are given image numbers between
-                * 1000 and 2000 inclusive.
-                */
-               if (iis.imageNumber >= 1000 && iis.imageNumber < 2000)
-                       size -= mtd->erasesize;
 
                parts[idx].name         = str;
-               parts[idx].size         = size;
+               parts[idx].size         = (iis.length + mtd->erasesize - 1) & ~(mtd->erasesize - 1);
                parts[idx].offset       = img_ptr;
                parts[idx].mask_flags   = 0;
 
index 20edeb3457921e5377c68a6e7d69681682fca135..3ad0b6751f6fb3c432ea883d8f753b7831a5c8e4 100644 (file)
@@ -135,10 +135,8 @@ static int shaper_start_xmit(struct sk_buff *skb, struct net_device *dev)
 {
        struct shaper *shaper = dev->priv;
        struct sk_buff *ptr;
-   
-       if (down_trylock(&shaper->sem))
-               return -1;
-
+  
+       spin_lock(&shaper->lock);
        ptr=shaper->sendq.prev;
        
        /*
@@ -232,7 +230,7 @@ static int shaper_start_xmit(struct sk_buff *skb, struct net_device *dev)
                 shaper->stats.collisions++;
        }
        shaper_kick(shaper);
-       up(&shaper->sem);
+       spin_unlock(&shaper->lock);
        return 0;
 }
 
@@ -271,11 +269,9 @@ static void shaper_timer(unsigned long data)
 {
        struct shaper *shaper = (struct shaper *)data;
 
-       if (!down_trylock(&shaper->sem)) {
-               shaper_kick(shaper);
-               up(&shaper->sem);
-       } else
-               mod_timer(&shaper->timer, jiffies);
+       spin_lock(&shaper->lock);
+       shaper_kick(shaper);
+       spin_unlock(&shaper->lock);
 }
 
 /*
@@ -331,21 +327,6 @@ static void shaper_kick(struct shaper *shaper)
 }
 
 
-/*
- *     Flush the shaper queues on a closedown
- */
-static void shaper_flush(struct shaper *shaper)
-{
-       struct sk_buff *skb;
-
-       down(&shaper->sem);
-       while((skb=skb_dequeue(&shaper->sendq))!=NULL)
-               dev_kfree_skb(skb);
-       shaper_kick(shaper);
-       up(&shaper->sem);
-}
-
 /*
  *     Bring the interface up. We just disallow this until a 
  *     bind.
@@ -375,7 +356,15 @@ static int shaper_open(struct net_device *dev)
 static int shaper_close(struct net_device *dev)
 {
       &