]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/platforms/52xx/lite5200.c
[POWERPC] Add common clock setting routine mpc52xx_psc_set_clkdiv()
[linux-2.6-omap-h63xx.git] / arch / powerpc / platforms / 52xx / lite5200.c
index 0caa3d955c3b2b6948c620104c21f63fe5589ccc..956f459e175ceed080cd2d1f4bf2b70945e409fe 100644 (file)
@@ -18,6 +18,8 @@
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/of.h>
+#include <linux/root_dev.h>
+#include <linux/initrd.h>
 #include <asm/time.h>
 #include <asm/io.h>
 #include <asm/machdep.h>
  *
  */
 
+/* mpc5200 device tree match tables */
+static struct of_device_id mpc5200_cdm_ids[] __initdata = {
+       { .compatible = "fsl,mpc5200-cdm", },
+       { .compatible = "mpc5200-cdm", },
+       {}
+};
+
+static struct of_device_id mpc5200_gpio_ids[] __initdata = {
+       { .compatible = "fsl,mpc5200-gpio", },
+       { .compatible = "mpc5200-gpio", },
+       {}
+};
+
 /*
  * Fix clock configuration.
  *
 static void __init
 lite5200_fix_clock_config(void)
 {
+       struct device_node *np;
        struct mpc52xx_cdm  __iomem *cdm;
-
        /* Map zones */
-       cdm = mpc52xx_find_and_map("mpc5200-cdm");
+       np = of_find_matching_node(NULL, mpc5200_cdm_ids);
+       cdm = of_iomap(np, 0);
+       of_node_put(np);
        if (!cdm) {
                printk(KERN_ERR "%s() failed; expect abnormal behaviour\n",
                       __FUNCTION__);
@@ -72,10 +89,13 @@ lite5200_fix_clock_config(void)
 static void __init
 lite5200_fix_port_config(void)
 {
+       struct device_node *np;
        struct mpc52xx_gpio __iomem *gpio;
        u32 port_config;
 
-       gpio = mpc52xx_find_and_map("mpc5200-gpio");
+       np = of_find_matching_node(NULL, mpc5200_gpio_ids);
+       gpio = of_iomap(np, 0);
+       of_node_put(np);
        if (!gpio) {
                printk(KERN_ERR "%s() failed. expect abnormal behavior\n",
                       __FUNCTION__);
@@ -129,45 +149,26 @@ static void lite5200_resume_finish(void __iomem *mbar)
 
 static void __init lite5200_setup_arch(void)
 {
-#ifdef CONFIG_PCI
-       struct device_node *np;
-#endif
-
        if (ppc_md.progress)
                ppc_md.progress("lite5200_setup_arch()", 0);
 
-       /* Fix things that firmware should have done. */
-       lite5200_fix_clock_config();
-       lite5200_fix_port_config();
+       /* Map important registers from the internal memory map */
+       mpc52xx_map_common_devices();
 
        /* Some mpc5200 & mpc5200b related configuration */
        mpc5200_setup_xlb_arbiter();
 
+       /* Fix things that firmware should have done. */
+       lite5200_fix_clock_config();
+       lite5200_fix_port_config();
+
 #ifdef CONFIG_PM
        mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare;
        mpc52xx_suspend.board_resume_finish = lite5200_resume_finish;
        lite5200_pm_init();
 #endif
 
-#ifdef CONFIG_PCI
-       np = of_find_node_by_type(NULL, "pci");
-       if (np) {
-               mpc52xx_add_bridge(np);
-               of_node_put(np);
-       }
-#endif
-
-#ifdef CONFIG_BLK_DEV_INITRD
-       if (initrd_start)
-               ROOT_DEV = Root_RAM0;
-       else
-#endif
-#ifdef  CONFIG_ROOT_NFS
-               ROOT_DEV = Root_NFS;
-#else
-               ROOT_DEV = Root_HDA1;
-#endif
-
+       mpc52xx_setup_pci();
 }
 
 /*
@@ -193,5 +194,6 @@ define_machine(lite5200) {
        .init           = mpc52xx_declare_of_platform_devices,
        .init_IRQ       = mpc52xx_init_irq,
        .get_irq        = mpc52xx_get_irq,
+       .restart        = mpc52xx_restart,
        .calibrate_decr = generic_calibrate_decr,
 };