]> git.hungrycats.org Git - linux/commitdiff
[ARM] Sanitise Footbridge machine class.
authorRussell King <rmk@flint.arm.linux.org.uk>
Tue, 19 Oct 2004 19:02:21 +0000 (20:02 +0100)
committerRussell King <rmk@flint.arm.linux.org.uk>
Tue, 19 Oct 2004 19:02:21 +0000 (20:02 +0100)
Footbridge was suffering from a little lack of care and attention;
it still had the nasty arch.c file with all the associated #ifdef
gross-ness that entailed.

Re-jig footbridge support so that each machine type contains all
the necessary support code, with a separate common implementation
which they all share.

arch/arm/mach-footbridge/Makefile
arch/arm/mach-footbridge/arch.c [deleted file]
arch/arm/mach-footbridge/cats-hw.c
arch/arm/mach-footbridge/co285.c [new file with mode: 0644]
arch/arm/mach-footbridge/common.c [new file with mode: 0644]
arch/arm/mach-footbridge/ebsa285.c [new file with mode: 0644]
arch/arm/mach-footbridge/irq.c [deleted file]
arch/arm/mach-footbridge/mm.c [deleted file]
arch/arm/mach-footbridge/netwinder-hw.c
arch/arm/mach-footbridge/personal.c [new file with mode: 0644]

index e82f64f8da95408b99156354c6dca7c2857ddc18..4a6b94c6887eea07513f96d002f65662218d8b7d 100644 (file)
@@ -4,13 +4,13 @@
 
 # Object file lists.
 
-obj-y                  := arch.o dc21285.o dma.o irq.o isa-irq.o mm.o time.o
+obj-y                  := common.o dc21285.o dma.o isa-irq.o time.o
 obj-m                  :=
 obj-n                  :=
 obj-                   :=
 
 pci-$(CONFIG_ARCH_CATS) += cats-pci.o
-pci-$(CONFIG_ARCH_EBSA285) += ebsa285-pci.o
+pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o
 pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o
 pci-$(CONFIG_ARCH_PERSONAL_SERVER) += personal-pci.o
 
@@ -19,10 +19,10 @@ leds-$(CONFIG_ARCH_EBSA285) += ebsa285-leds.o
 leds-$(CONFIG_ARCH_NETWINDER) += netwinder-leds.o
 
 obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o
-obj-$(CONFIG_ARCH_CO285) += dc21285-timer.o
-obj-$(CONFIG_ARCH_EBSA285) += dc21285-timer.o
+obj-$(CONFIG_ARCH_CO285) += co285.o dc21285-timer.o
+obj-$(CONFIG_ARCH_EBSA285) += ebsa285.o dc21285-timer.o
 obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o
-obj-$(CONFIG_ARCH_PERSONAL_SERVER) += dc21285-timer.o
+obj-$(CONFIG_ARCH_PERSONAL_SERVER) += personal.o dc21285-timer.o
 
 obj-$(CONFIG_PCI)      +=$(pci-y)
 obj-$(CONFIG_LEDS)     +=$(leds-y)
diff --git a/arch/arm/mach-footbridge/arch.c b/arch/arm/mach-footbridge/arch.c
deleted file mode 100644 (file)
index 66a2e61..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * linux/arch/arm/mach-footbridge/arch.c
- *
- * Architecture specific fixups.  This is where any
- * parameters in the params struct are fixed up, or
- * any additional architecture specific information
- * is pulled from the params struct.
- */
-#include <linux/config.h>
-#include <linux/module.h>
-#include <linux/tty.h>
-#include <linux/delay.h>
-#include <linux/pm.h>
-#include <linux/init.h>
-
-#include <asm/hardware/dec21285.h>
-#include <asm/elf.h>
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/arch.h>
-
-#include "common.h"
-
-unsigned int mem_fclk_21285 = 50000000;
-
-EXPORT_SYMBOL(mem_fclk_21285);
-
-static int __init parse_tag_memclk(const struct tag *tag)
-{
-       mem_fclk_21285 = tag->u.memclk.fmemclk;
-       return 0;
-}
-
-__tagtable(ATAG_MEMCLK, parse_tag_memclk);
-
-#ifdef CONFIG_ARCH_EBSA285
-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)
-       .timer          = &footbridge_timer,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_ARCH_NETWINDER
-/*
- * Older NeTTroms either do not provide a parameters
- * page, or they don't supply correct information in
- * the parameter page.
- */
-static void __init
-fixup_netwinder(struct machine_desc *desc, struct tag *tags,
-               char **cmdline, struct meminfo *mi)
-{
-#ifdef CONFIG_ISAPNP
-       extern int isapnp_disable;
-
-       /*
-        * We must not use the kernels ISAPnP code
-        * on the NetWinder - it will reset the settings
-        * for the WaveArtist chip and render it inoperable.
-        */
-       isapnp_disable = 1;
-#endif
-}
-
-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)
-       .timer          = &isa_timer,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_ARCH_CATS
-/*
- * CATS uses soft-reboot by default, since
- * hard reboots fail on early boards.
- */
-static void __init
-fixup_cats(struct machine_desc *desc, struct tag *tags,
-          char **cmdline, struct meminfo *mi)
-{
-       ORIG_VIDEO_LINES  = 25;
-       ORIG_VIDEO_POINTS = 16;
-       ORIG_Y = 24;
-}
-
-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)
-       .timer          = &isa_timer,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_ARCH_CO285
-
-static void __init
-fixup_coebsa285(struct machine_desc *desc, struct tag *tags,
-               char **cmdline, struct meminfo *mi)
-{
-       extern unsigned long boot_memory_end;
-       extern char boot_command_line[];
-
-       mi->nr_banks      = 1;
-       mi->bank[0].start = PHYS_OFFSET;
-       mi->bank[0].size  = boot_memory_end;
-       mi->bank[0].node  = 0;
-
-       *cmdline = boot_command_line;
-}
-
-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)
-       .timer          = &footbridge_timer,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_ARCH_PERSONAL_SERVER
-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)
-       .timer          = &footbridge_timer,
-MACHINE_END
-#endif
index 0aec69fb00ad3aec5620d7449426b4292ca95f9c..f94d176c3201df7712d389fdd78522b9d63273ac 100644 (file)
@@ -9,8 +9,14 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 
+#include <asm/hardware/dec21285.h>
 #include <asm/io.h>
 #include <asm/mach-types.h>
+#include <asm/setup.h>
+
+#include <asm/mach/arch.h>
+
+#include "common.h"
 
 #define CFG_PORT       0x370
 #define INDEX_PORT     (CFG_PORT)
@@ -62,3 +68,27 @@ static int __init cats_hw_init(void)
 }
 
 __initcall(cats_hw_init);
+
+/*
+ * CATS uses soft-reboot by default, since
+ * hard reboots fail on early boards.
+ */
+static void __init
+fixup_cats(struct machine_desc *desc, struct tag *tags,
+          char **cmdline, struct meminfo *mi)
+{
+       ORIG_VIDEO_LINES  = 25;
+       ORIG_VIDEO_POINTS = 16;
+       ORIG_Y = 24;
+}
+
+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)
+       .timer          = &isa_timer,
+MACHINE_END
diff --git a/arch/arm/mach-footbridge/co285.c b/arch/arm/mach-footbridge/co285.c
new file mode 100644 (file)
index 0000000..e154191
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * linux/arch/arm/mach-footbridge/co285.c
+ *
+ * CO285 machine fixup
+ */
+#include <linux/init.h>
+
+#include <asm/hardware/dec21285.h>
+#include <asm/mach-types.h>
+
+#include <asm/mach/arch.h>
+
+#include "common.h"
+
+static void __init
+fixup_coebsa285(struct machine_desc *desc, struct tag *tags,
+               char **cmdline, struct meminfo *mi)
+{
+       extern unsigned long boot_memory_end;
+       extern char boot_command_line[];
+
+       mi->nr_banks      = 1;
+       mi->bank[0].start = PHYS_OFFSET;
+       mi->bank[0].size  = boot_memory_end;
+       mi->bank[0].node  = 0;
+
+       *cmdline = boot_command_line;
+}
+
+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)
+       .timer          = &footbridge_timer,
+MACHINE_END
+
diff --git a/arch/arm/mach-footbridge/common.c b/arch/arm/mach-footbridge/common.c
new file mode 100644 (file)
index 0000000..eb8238c
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ *  linux/arch/arm/mach-footbridge/common.c
+ *
+ *  Copyright (C) 1998-2000 Russell King, Dave Gilbert.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/mm.h>
+#include <linux/ioport.h>
+#include <linux/list.h>
+#include <linux/init.h>
+ 
+#include <asm/pgtable.h>
+#include <asm/page.h>
+#include <asm/irq.h>
+#include <asm/io.h>
+#include <asm/mach-types.h>
+#include <asm/setup.h>
+#include <asm/hardware/dec21285.h>
+
+#include <asm/mach/irq.h>
+#include <asm/mach/map.h>
+
+#include "common.h"
+
+extern void __init isa_init_irq(unsigned int irq);
+
+unsigned int mem_fclk_21285 = 50000000;
+
+EXPORT_SYMBOL(mem_fclk_21285);
+
+static int __init parse_tag_memclk(const struct tag *tag)
+{
+       mem_fclk_21285 = tag->u.memclk.fmemclk;
+       return 0;
+}
+
+__tagtable(ATAG_MEMCLK, parse_tag_memclk);
+
+/*
+ * Footbridge IRQ translation table
+ *  Converts from our IRQ numbers into FootBridge masks
+ */
+static const int fb_irq_mask[] = {
+       IRQ_MASK_UART_RX,       /*  0 */
+       IRQ_MASK_UART_TX,       /*  1 */
+       IRQ_MASK_TIMER1,        /*  2 */
+       IRQ_MASK_TIMER2,        /*  3 */
+       IRQ_MASK_TIMER3,        /*  4 */
+       IRQ_MASK_IN0,           /*  5 */
+       IRQ_MASK_IN1,           /*  6 */
+       IRQ_MASK_IN2,           /*  7 */
+       IRQ_MASK_IN3,           /*  8 */
+       IRQ_MASK_DOORBELLHOST,  /*  9 */
+       IRQ_MASK_DMA1,          /* 10 */
+       IRQ_MASK_DMA2,          /* 11 */
+       IRQ_MASK_PCI,           /* 12 */
+       IRQ_MASK_SDRAMPARITY,   /* 13 */
+       IRQ_MASK_I2OINPOST,     /* 14 */
+       IRQ_MASK_PCI_ABORT,     /* 15 */
+       IRQ_MASK_PCI_SERR,      /* 16 */
+       IRQ_MASK_DISCARD_TIMER, /* 17 */
+       IRQ_MASK_PCI_DPERR,     /* 18 */
+       IRQ_MASK_PCI_PERR,      /* 19 */
+};
+
+static void fb_mask_irq(unsigned int irq)
+{
+       *CSR_IRQ_DISABLE = fb_irq_mask[_DC21285_INR(irq)];
+}
+
+static void fb_unmask_irq(unsigned int irq)
+{
+       *CSR_IRQ_ENABLE = fb_irq_mask[_DC21285_INR(irq)];
+}
+
+static struct irqchip fb_chip = {
+       .ack    = fb_mask_irq,
+       .mask   = fb_mask_irq,
+       .unmask = fb_unmask_irq,
+};
+
+static void __init __fb_init_irq(void)
+{
+       unsigned int irq;
+
+       /*
+        * setup DC21285 IRQs
+        */
+       *CSR_IRQ_DISABLE = -1;
+       *CSR_FIQ_DISABLE = -1;
+
+       for (irq = _DC21285_IRQ(0); irq < _DC21285_IRQ(20); irq++) {
+               set_irq_chip(irq, &fb_chip);
+               set_irq_handler(irq, do_level_IRQ);
+               set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+       }
+}
+
+void __init footbridge_init_irq(void)
+{
+       __fb_init_irq();
+
+       if (!footbridge_cfn_mode())
+               return;
+
+       if (machine_is_ebsa285())
+               /* The following is dependent on which slot
+                * you plug the Southbridge card into.  We
+                * currently assume that you plug it into
+                * the right-hand most slot.
+                */
+               isa_init_irq(IRQ_PCI);
+
+       if (machine_is_cats())
+               isa_init_irq(IRQ_IN2);
+
+       if (machine_is_netwinder())
+               isa_init_irq(IRQ_IN3);
+}
+
+/*
+ * Common mapping for all systems.  Note that the outbound write flush is
+ * commented out since there is a "No Fix" problem with it.  Not mapping
+ * it means that we have extra bullet protection on our feet.
+ */
+static struct map_desc fb_common_io_desc[] __initdata = {
+ { ARMCSR_BASE,         DC21285_ARMCSR_BASE,       ARMCSR_SIZE,  MT_DEVICE },
+ { XBUS_BASE,    0x40000000,               XBUS_SIZE,    MT_DEVICE }
+};
+
+/*
+ * The mapping when the footbridge is in host mode.  We don't map any of
+ * this when we are in add-in mode.
+ */
+static struct map_desc ebsa285_host_io_desc[] __initdata = {
+#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_FOOTBRIDGE_HOST)
+ { PCIMEM_BASE,  DC21285_PCI_MEM,          PCIMEM_SIZE,  MT_DEVICE },
+ { PCICFG0_BASE, DC21285_PCI_TYPE_0_CONFIG, PCICFG0_SIZE, MT_DEVICE },
+ { PCICFG1_BASE, DC21285_PCI_TYPE_1_CONFIG, PCICFG1_SIZE, MT_DEVICE },
+ { PCIIACK_BASE, DC21285_PCI_IACK,         PCIIACK_SIZE, MT_DEVICE },
+ { PCIO_BASE,    DC21285_PCI_IO,           PCIO_SIZE,    MT_DEVICE }
+#endif
+};
+
+/*
+ * The CO-ebsa285 mapping.
+ */
+static struct map_desc co285_io_desc[] __initdata = {
+#ifdef CONFIG_ARCH_CO285
+ { PCIO_BASE,   DC21285_PCI_IO,            PCIO_SIZE,    MT_DEVICE },
+ { PCIMEM_BASE,         DC21285_PCI_MEM,           PCIMEM_SIZE,  MT_DEVICE }
+#endif
+};
+
+void __init footbridge_map_io(void)
+{
+       /*
+        * Set up the common mapping first; we need this to
+        * determine whether we're in host mode or not.
+        */
+       iotable_init(fb_common_io_desc, ARRAY_SIZE(fb_common_io_desc));
+
+       /*
+        * Now, work out what we've got to map in addition on this
+        * platform.
+        */
+       if (machine_is_co285())
+               iotable_init(co285_io_desc, ARRAY_SIZE(co285_io_desc));
+       if (footbridge_cfn_mode())
+               iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc));
+}
+
+#ifdef CONFIG_FOOTBRIDGE_ADDIN
+
+/*
+ * These two functions convert virtual addresses to PCI addresses and PCI
+ * addresses to virtual addresses.  Note that it is only legal to use these
+ * on memory obtained via get_zeroed_page or kmalloc.
+ */
+unsigned long __virt_to_bus(unsigned long res)
+{
+       WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
+
+       return (res - PAGE_OFFSET) + (*CSR_PCISDRAMBASE & 0xfffffff0);
+}
+EXPORT_SYMBOL(__virt_to_bus);
+
+unsigned long __bus_to_virt(unsigned long res)
+{
+       res -= (*CSR_PCISDRAMBASE & 0xfffffff0);
+       res += PAGE_OFFSET;
+
+       WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
+
+       return res;
+}
+EXPORT_SYMBOL(__bus_to_virt);
+
+#endif
diff --git a/arch/arm/mach-footbridge/ebsa285.c b/arch/arm/mach-footbridge/ebsa285.c
new file mode 100644 (file)
index 0000000..d0931f5
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * linux/arch/arm/mach-footbridge/ebsa285.c
+ *
+ * EBSA285 machine fixup
+ */
+#include <linux/init.h>
+
+#include <asm/hardware/dec21285.h>
+#include <asm/mach-types.h>
+
+#include <asm/mach/arch.h>
+
+#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)
+       .timer          = &footbridge_timer,
+MACHINE_END
+
diff --git a/arch/arm/mach-footbridge/irq.c b/arch/arm/mach-footbridge/irq.c
deleted file mode 100644 (file)
index 0889cb8..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *  linux/arch/arm/mach-footbridge/irq.c
- *
- *  Copyright (C) 1996-2000 Russell King
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Changelog:
- *   22-Aug-1998 RMK   Restructured IRQ routines
- *   03-Sep-1998 PJB   Merged CATS support
- *   20-Jan-1998 RMK   Started merge of EBSA286, CATS and NetWinder
- *   26-Jan-1999 PJB   Don't use IACK on CATS
- *   16-Mar-1999 RMK   Added autodetect of ISA PICs
- */
-#include <linux/ioport.h>
-#include <linux/list.h>
-#include <linux/init.h>
-
-#include <asm/mach/irq.h>
-
-#include <asm/hardware.h>
-#include <asm/hardware/dec21285.h>
-#include <asm/irq.h>
-#include <asm/io.h>
-#include <asm/mach-types.h>
-
-extern void __init isa_init_irq(unsigned int irq);
-
-/*
- * Footbridge IRQ translation table
- *  Converts from our IRQ numbers into FootBridge masks
- */
-static const int fb_irq_mask[] = {
-       IRQ_MASK_UART_RX,       /*  0 */
-       IRQ_MASK_UART_TX,       /*  1 */
-       IRQ_MASK_TIMER1,        /*  2 */
-       IRQ_MASK_TIMER2,        /*  3 */
-       IRQ_MASK_TIMER3,        /*  4 */
-       IRQ_MASK_IN0,           /*  5 */
-       IRQ_MASK_IN1,           /*  6 */
-       IRQ_MASK_IN2,           /*  7 */
-       IRQ_MASK_IN3,           /*  8 */
-       IRQ_MASK_DOORBELLHOST,  /*  9 */
-       IRQ_MASK_DMA1,          /* 10 */
-       IRQ_MASK_DMA2,          /* 11 */
-       IRQ_MASK_PCI,           /* 12 */
-       IRQ_MASK_SDRAMPARITY,   /* 13 */
-       IRQ_MASK_I2OINPOST,     /* 14 */
-       IRQ_MASK_PCI_ABORT,     /* 15 */
-       IRQ_MASK_PCI_SERR,      /* 16 */
-       IRQ_MASK_DISCARD_TIMER, /* 17 */
-       IRQ_MASK_PCI_DPERR,     /* 18 */
-       IRQ_MASK_PCI_PERR,      /* 19 */
-};
-
-static void fb_mask_irq(unsigned int irq)
-{
-       *CSR_IRQ_DISABLE = fb_irq_mask[_DC21285_INR(irq)];
-}
-
-static void fb_unmask_irq(unsigned int irq)
-{
-       *CSR_IRQ_ENABLE = fb_irq_mask[_DC21285_INR(irq)];
-}
-
-static struct irqchip fb_chip = {
-       .ack    = fb_mask_irq,
-       .mask   = fb_mask_irq,
-       .unmask = fb_unmask_irq,
-};
-
-static void __init __fb_init_irq(void)
-{
-       unsigned int irq;
-
-       /*
-        * setup DC21285 IRQs
-        */
-       *CSR_IRQ_DISABLE = -1;
-       *CSR_FIQ_DISABLE = -1;
-
-       for (irq = _DC21285_IRQ(0); irq < _DC21285_IRQ(20); irq++) {
-               set_irq_chip(irq, &fb_chip);
-               set_irq_handler(irq, do_level_IRQ);
-               set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
-       }
-}
-
-void __init footbridge_init_irq(void)
-{
-       __fb_init_irq();
-
-       if (!footbridge_cfn_mode())
-               return;
-
-       if (machine_is_ebsa285())
-               /* The following is dependent on which slot
-                * you plug the Southbridge card into.  We
-                * currently assume that you plug it into
-                * the right-hand most slot.
-                */
-               isa_init_irq(IRQ_PCI);
-
-       if (machine_is_cats())
-               isa_init_irq(IRQ_IN2);
-
-       if (machine_is_netwinder())
-               isa_init_irq(IRQ_IN3);
-}
diff --git a/arch/arm/mach-footbridge/mm.c b/arch/arm/mach-footbridge/mm.c
deleted file mode 100644 (file)
index ce85de6..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- *  linux/arch/arm/mach-footbridge/mm.c
- *
- *  Copyright (C) 1998-2000 Russell King, Dave Gilbert.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- *  Extra MM routines for the EBSA285 architecture
- */
-#include <linux/config.h>
-#include <linux/kernel.h>
-#include <linux/mm.h>
-#include <linux/init.h>
- 
-#include <asm/pgtable.h>
-#include <asm/page.h>
-#include <asm/io.h>
-#include <asm/hardware/dec21285.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/map.h>
-
-/*
- * Common mapping for all systems.  Note that the outbound write flush is
- * commented out since there is a "No Fix" problem with it.  Not mapping
- * it means that we have extra bullet protection on our feet.
- */
-static struct map_desc fb_common_io_desc[] __initdata = {
- { ARMCSR_BASE,         DC21285_ARMCSR_BASE,       ARMCSR_SIZE,  MT_DEVICE },
- { XBUS_BASE,    0x40000000,               XBUS_SIZE,    MT_DEVICE }
-};
-
-/*
- * The mapping when the footbridge is in host mode.  We don't map any of
- * this when we are in add-in mode.
- */
-static struct map_desc ebsa285_host_io_desc[] __initdata = {
-#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_FOOTBRIDGE_HOST)
- { PCIMEM_BASE,  DC21285_PCI_MEM,          PCIMEM_SIZE,  MT_DEVICE },
- { PCICFG0_BASE, DC21285_PCI_TYPE_0_CONFIG, PCICFG0_SIZE, MT_DEVICE },
- { PCICFG1_BASE, DC21285_PCI_TYPE_1_CONFIG, PCICFG1_SIZE, MT_DEVICE },
- { PCIIACK_BASE, DC21285_PCI_IACK,         PCIIACK_SIZE, MT_DEVICE },
- { PCIO_BASE,    DC21285_PCI_IO,           PCIO_SIZE,    MT_DEVICE }
-#endif
-};
-
-/*
- * The CO-ebsa285 mapping.
- */
-static struct map_desc co285_io_desc[] __initdata = {
-#ifdef CONFIG_ARCH_CO285
- { PCIO_BASE,   DC21285_PCI_IO,            PCIO_SIZE,    MT_DEVICE },
- { PCIMEM_BASE,         DC21285_PCI_MEM,           PCIMEM_SIZE,  MT_DEVICE }
-#endif
-};
-
-void __init footbridge_map_io(void)
-{
-       /*
-        * Set up the common mapping first; we need this to
-        * determine whether we're in host mode or not.
-        */
-       iotable_init(fb_common_io_desc, ARRAY_SIZE(fb_common_io_desc));
-
-       /*
-        * Now, work out what we've got to map in addition on this
-        * platform.
-        */
-       if (machine_is_co285())
-               iotable_init(co285_io_desc, ARRAY_SIZE(co285_io_desc));
-       if (footbridge_cfn_mode())
-               iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc));
-}
-
-#ifdef CONFIG_FOOTBRIDGE_ADDIN
-
-/*
- * These two functions convert virtual addresses to PCI addresses and PCI
- * addresses to virtual addresses.  Note that it is only legal to use these
- * on memory obtained via get_zeroed_page or kmalloc.
- */
-unsigned long __virt_to_bus(unsigned long res)
-{
-       WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
-
-       return (res - PAGE_OFFSET) + (*CSR_PCISDRAMBASE & 0xfffffff0);
-}
-EXPORT_SYMBOL(__virt_to_bus);
-
-unsigned long __bus_to_virt(unsigned long res)
-{
-       res -= (*CSR_PCISDRAMBASE & 0xfffffff0);
-       res += PAGE_OFFSET;
-
-       WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
-
-       return res;
-}
-EXPORT_SYMBOL(__bus_to_virt);
-
-#endif
index c81775b1a42d5834de73cdebe3f3bab607219a88..030ded2d32c1d8a219d244680cc9c9eca50efff8 100644 (file)
 #include <linux/delay.h>
 #include <linux/init.h>
 
+#include <asm/hardware/dec21285.h>
 #include <asm/io.h>
 #include <asm/leds.h>
 #include <asm/mach-types.h>
+#include <asm/setup.h>
+
+#include <asm/mach/arch.h>
+
+#include "common.h"
 
 #define IRDA_IO_BASE           0x180
 #define GP1_IO_BASE            0x338
@@ -618,3 +624,37 @@ static int __init nw_hw_init(void)
 }
 
 __initcall(nw_hw_init);
+
+/*
+ * Older NeTTroms either do not provide a parameters
+ * page, or they don't supply correct information in
+ * the parameter page.
+ */
+static void __init
+fixup_netwinder(struct machine_desc *desc, struct tag *tags,
+               char **cmdline, struct meminfo *mi)
+{
+#ifdef CONFIG_ISAPNP
+       extern int isapnp_disable;
+
+       /*
+        * We must not use the kernels ISAPnP code
+        * on the NetWinder - it will reset the settings
+        * for the WaveArtist chip and render it inoperable.
+        */
+       isapnp_disable = 1;
+#endif
+}
+
+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)
+       .timer          = &isa_timer,
+MACHINE_END
diff --git a/arch/arm/mach-footbridge/personal.c b/arch/arm/mach-footbridge/personal.c
new file mode 100644 (file)
index 0000000..415086d
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * linux/arch/arm/mach-footbridge/personal.c
+ *
+ * Personal server (Skiff) machine fixup
+ */
+#include <linux/init.h>
+
+#include <asm/hardware/dec21285.h>
+#include <asm/mach-types.h>
+
+#include <asm/mach/arch.h>
+
+#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)
+       .timer          = &footbridge_timer,
+MACHINE_END
+