Pull sbs into release branch
[pandora-kernel.git] / arch / powerpc / platforms / 83xx / mpc834x_mds.c
index d2736da..4c9ff9c 100644 (file)
 
 #include "mpc83xx.h"
 
-#ifndef CONFIG_PCI
-unsigned long isa_io_base = 0;
-unsigned long isa_mem_base = 0;
-#endif
-
 #define BCSR5_INT_USB          0x02
-/* Note: This is only for PB, not for PB+PIB
- * On PB only port0 is connected using ULPI */
-static int mpc834x_usb_cfg(void)
+static int mpc834xemds_usb_cfg(void)
 {
-       unsigned long sccr, sicrl;
-       void __iomem *immap;
+       struct device_node *np;
        void __iomem *bcsr_regs = NULL;
        u8 bcsr5;
-       struct device_node *np = NULL;
-       int port0_is_dr = 0;
-
-       if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL)
-               port0_is_dr = 1;
-       if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL){
-               if (port0_is_dr) {
-                       printk(KERN_WARNING
-                               "There is only one USB port on PB board! \n");
-                       return -1;
-               } else if (!port0_is_dr)
-                       /* No usb port enabled */
-                       return -1;
-       }
-
-       immap = ioremap(get_immrbase(), 0x1000);
-       if (!immap)
-               return -1;
-
-       /* Configure clock */
-       sccr = in_be32(immap + MPC83XX_SCCR_OFFS);
-       if (port0_is_dr)
-               sccr |= MPC83XX_SCCR_USB_DRCM_11;  /* 1:3 */
-       else
-               sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */
-       out_be32(immap + MPC83XX_SCCR_OFFS, sccr);
-
-       /* Configure Pin */
-       sicrl = in_be32(immap + MPC83XX_SICRL_OFFS);
-       /* set port0 only */
-       if (port0_is_dr)
-               sicrl |= MPC83XX_SICRL_USB0;
-       else
-               sicrl &= ~(MPC83XX_SICRL_USB0);
-       out_be32(immap + MPC83XX_SICRL_OFFS, sicrl);
-
-       iounmap(immap);
 
+       mpc834x_usb_cfg();
        /* Map BCSR area */
        np = of_find_node_by_name(NULL, "bcsr");
-       if (np != 0) {
+       if (np) {
                struct resource res;
 
                of_address_to_resource(np, 0, &res);
@@ -103,8 +59,8 @@ static int mpc834x_usb_cfg(void)
                return -1;
 
        /*
-        * if MDS board is plug into PIB board,
-        * force to use the PHY on MDS board
+        * if Processor Board is plugged into PIB board,
+        * force to use the PHY on Processor Board
         */
        bcsr5 = in_8(bcsr_regs + 5);
        if (!(bcsr5 & BCSR5_INT_USB))
@@ -120,36 +76,21 @@ static int mpc834x_usb_cfg(void)
  */
 static void __init mpc834x_mds_setup_arch(void)
 {
+#ifdef CONFIG_PCI
        struct device_node *np;
+#endif
 
        if (ppc_md.progress)
                ppc_md.progress("mpc834x_mds_setup_arch()", 0);
 
-       np = of_find_node_by_type(NULL, "cpu");
-       if (np != 0) {
-               const unsigned int *fp =
-                       get_property(np, "clock-frequency", NULL);
-               if (fp != 0)
-                       loops_per_jiffy = *fp / HZ;
-               else
-                       loops_per_jiffy = 50000000 / HZ;
-               of_node_put(np);
-       }
-
 #ifdef CONFIG_PCI
        for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
-               add_bridge(np);
+               mpc83xx_add_bridge(np);
 
        ppc_md.pci_exclude_device = mpc83xx_exclude_device;
 #endif
 
-       mpc834x_usb_cfg();
-
-#ifdef  CONFIG_ROOT_NFS
-       ROOT_DEV = Root_NFS;
-#else
-       ROOT_DEV = Root_HDA1;
-#endif
+       mpc834xemds_usb_cfg();
 }
 
 static void __init mpc834x_mds_init_IRQ(void)
@@ -176,6 +117,9 @@ static int __init mpc834x_rtc_hookup(void)
 {
        struct timespec tv;
 
+       if (!machine_is(mpc834x_mds))
+               return 0;
+
        ppc_md.get_rtc_time = ds1374_get_rtc_time;
        ppc_md.set_rtc_time = ds1374_set_rtc_time;
 
@@ -194,10 +138,9 @@ late_initcall(mpc834x_rtc_hookup);
  */
 static int __init mpc834x_mds_probe(void)
 {
-       /* We always match for now, eventually we should look at the flat
-          dev tree to ensure this is the board we are suppose to run on
-       */
-       return 1;
+        unsigned long root = of_get_flat_dt_root();
+
+        return of_flat_dt_is_compatible(root, "MPC834xMDS");
 }
 
 define_machine(mpc834x_mds) {