include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[safe/jmp/linux-2.6] / arch / powerpc / platforms / 52xx / efika.c
index a6bba97..45c0cb9 100644 (file)
@@ -9,33 +9,16 @@
  * kind, whether express or implied.
  */
 
-#include <linux/errno.h>
-#include <linux/kernel.h>
-#include <linux/slab.h>
-#include <linux/reboot.h>
 #include <linux/init.h>
-#include <linux/utsrelease.h>
-#include <linux/seq_file.h>
-#include <linux/string.h>
-#include <linux/root_dev.h>
-#include <linux/initrd.h>
-#include <linux/timer.h>
+#include <generated/utsrelease.h>
 #include <linux/pci.h>
-
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/sections.h>
-#include <asm/pci-bridge.h>
-#include <asm/pgtable.h>
+#include <linux/of.h>
 #include <asm/prom.h>
 #include <asm/time.h>
 #include <asm/machdep.h>
 #include <asm/rtas.h>
-#include <asm/of_device.h>
-#include <asm/of_platform.h>
 #include <asm/mpc52xx.h>
 
-
 #define EFIKA_PLATFORM_NAME "Efika"
 
 
 static int rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
                            int len, u32 * val)
 {
-       struct pci_controller *hose = bus->sysdata;
+       struct pci_controller *hose = pci_bus_to_host(bus);
        unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
            | (((bus->number - hose->first_busno) & 0xff) << 16)
-           | (hose->index << 24);
+           | (hose->global_number << 24);
        int ret = -1;
        int rval;
 
@@ -66,10 +49,10 @@ static int rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
 static int rtas_write_config(struct pci_bus *bus, unsigned int devfn,
                             int offset, int len, u32 val)
 {
-       struct pci_controller *hose = bus->sysdata;
+       struct pci_controller *hose = pci_bus_to_host(bus);
        unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
            | (((bus->number - hose->first_busno) & 0xff) << 16)
-           | (hose->index << 24);
+           | (hose->global_number << 24);
        int rval;
 
        rval = rtas_call(rtas_token("write-pci-config"), 3, 1, NULL,
@@ -78,12 +61,12 @@ static int rtas_write_config(struct pci_bus *bus, unsigned int devfn,
 }
 
 static struct pci_ops rtas_pci_ops = {
-       rtas_read_config,
-       rtas_write_config
+       .read = rtas_read_config,
+       .write = rtas_write_config,
 };
 
 
-void __init efika_pcisetup(void)
+static void __init efika_pcisetup(void)
 {
        const int *bus_range;
        int len;
@@ -128,7 +111,7 @@ void __init efika_pcisetup(void)
        printk(" controlled by %s\n", pcictrl->full_name);
        printk("\n");
 
-       hose = pcibios_alloc_controller();
+       hose = pcibios_alloc_controller(of_node_get(pcictrl));
        if (!hose) {
                printk(KERN_WARNING EFIKA_PLATFORM_NAME
                       ": Can't allocate PCI controller structure for %s\n",
@@ -136,7 +119,6 @@ void __init efika_pcisetup(void)
                return;
        }
 
-       hose->arch_data = of_node_get(pcictrl);
        hose->first_busno = bus_range[0];
        hose->last_busno = bus_range[1];
        hose->ops = &rtas_pci_ops;
@@ -145,7 +127,7 @@ void __init efika_pcisetup(void)
 }
 
 #else
-void __init efika_pcisetup(void)
+static void __init efika_pcisetup(void)
 {}
 #endif
 
@@ -184,21 +166,30 @@ static void efika_show_cpuinfo(struct seq_file *m)
        of_node_put(root);
 }
 
+#ifdef CONFIG_PM
+static void efika_suspend_prepare(void __iomem *mbar)
+{
+       u8 pin = 4;     /* GPIO_WKUP_4 (GPIO_PSC6_0 - IRDA_RX) */
+       u8 level = 1;   /* wakeup on high level */
+       /* IOW. to wake it up, short pins 1 and 3 on IRDA connector */
+       mpc52xx_set_wakeup_gpio(pin, level);
+}
+#endif
+
 static void __init efika_setup_arch(void)
 {
        rtas_initialize();
 
-#ifdef CONFIG_BLK_DEV_INITRD
-       initrd_below_start_ok = 1;
-
-       if (initrd_start)
-               ROOT_DEV = Root_RAM0;
-       else
-#endif
-               ROOT_DEV = Root_SDA2;   /* sda2 (sda1 is for the kernel) */
+       /* Map important registers from the internal memory map */
+       mpc52xx_map_common_devices();
 
        efika_pcisetup();
 
+#ifdef CONFIG_PM
+       mpc52xx_suspend.board_suspend_prepare = efika_suspend_prepare;
+       mpc52xx_pm_init();
+#endif
+
        if (ppc_md.progress)
                ppc_md.progress("Linux/PPC " UTS_RELEASE " running on Efika ;-)\n", 0x0);
 }
@@ -237,6 +228,8 @@ define_machine(efika)
        .progress               = rtas_progress,
        .get_boot_time          = rtas_get_boot_time,
        .calibrate_decr         = generic_calibrate_decr,
+#ifdef CONFIG_PCI
        .phys_mem_access_prot   = pci_phys_mem_access_prot,
+#endif
 };