fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / arm / mach-ixp2000 / ixdp2400.c
index 39ef558..0fdd03a 100644 (file)
@@ -14,7 +14,6 @@
  *  Free Software Foundation;  either version 2 of the  License, or (at your
  *  option) any later version.
  */
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/mm.h>
@@ -23,9 +22,6 @@
 #include <linux/device.h>
 #include <linux/bitops.h>
 #include <linux/pci.h>
-#include <linux/interrupt.h>
-#include <linux/mm.h>
-#include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
@@ -48,7 +44,7 @@
 /*************************************************************************
  * IXDP2400 timer tick
  *************************************************************************/
-static void __init ixdp2400_init_time(void)
+static void __init ixdp2400_timer_init(void)
 {
        int numerator, denominator;
        int denom_array[] = {2, 4, 8, 16, 1, 2, 4, 8};
@@ -59,6 +55,11 @@ static void __init ixdp2400_init_time(void)
        ixp2000_init_time(((3125000 * numerator) / (denominator)) / 2);
 }
 
+static struct sys_timer ixdp2400_timer = {
+       .init           = ixdp2400_timer_init,
+       .offset         = ixp2000_gettimeoffset,
+};
+
 /*************************************************************************
  * IXDP2400 PCI
  *************************************************************************/
@@ -66,6 +67,7 @@ void __init ixdp2400_pci_preinit(void)
 {
        ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000);
        ixp2000_pci_preinit();
+       pcibios_setup("firmware");
 }
 
 int ixdp2400_pci_setup(int nr, struct pci_sys_data *sys)
@@ -131,11 +133,13 @@ static void ixdp2400_pci_postinit(void)
        struct pci_dev *dev;
 
        if (ixdp2x00_master_npu()) {
-               dev = pci_find_slot(1, IXDP2400_SLAVE_ENET_DEVFN);
+               dev = pci_get_bus_and_slot(1, IXDP2400_SLAVE_ENET_DEVFN);
                pci_remove_bus_device(dev);
+               pci_dev_put(dev);
        } else {
-               dev = pci_find_slot(1, IXDP2400_MASTER_ENET_DEVFN);
+               dev = pci_get_bus_and_slot(1, IXDP2400_MASTER_ENET_DEVFN);
                pci_remove_bus_device(dev);
+               pci_dev_put(dev);
 
                ixdp2x00_slave_pci_postinit();
        }
@@ -166,12 +170,13 @@ 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)
-       INITTIME(ixdp2400_init_time)
-       INIT_MACHINE(ixdp2x00_init_machine)
+       /* Maintainer: MontaVista Software, Inc. */
+       .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,
 MACHINE_END