[brcm63xx] prevent bcm6338 and bcm6345 from crashing very early
[openwrt/svn-archive/archive.git] / target / linux / brcm63xx / files / arch / mips / bcm63xx / boards / board_bcm963xx.c
index ff7cf56974d3eadbc6c3933ee3db82b33172ef4c..92d46e7628a43ac38c2276b0d3d721cc0c02e07d 100644 (file)
@@ -323,9 +323,15 @@ void __init board_prom_init(void)
        char cfe_version[32];
        u32 val;
 
-       /* read base address of boot chip select (0) */
-       val = bcm_mpi_readl(MPI_CSBASE_REG(0));
-       val &= MPI_CSBASE_BASE_MASK;
+       /* read base address of boot chip select (0) 
+        * 6338 does not have MPI but boots from standard
+        * MIPS Flash address */
+       if (BCMCPU_IS_6338() || BCMCPU_IS_6345())
+               val = 0x1fc00000;
+       else {
+               val = bcm_mpi_readl(MPI_CSBASE_REG(0));
+               val &= MPI_CSBASE_BASE_MASK;
+       }
        boot_addr = (u8 *)KSEG1ADDR(val);
 
        /* dump cfe version */
@@ -378,13 +384,13 @@ void __init board_prom_init(void)
         * this has to be done this early since PCI init is done
         * inside arch_initcall */
        val = 0;
-
+#ifdef CONFIG_PCI
        if (board.has_pci) {
                bcm63xx_pci_enabled = 1;
                if (BCMCPU_IS_6348())
                        val |= GPIO_MODE_6348_G2_PCI;
        }
-
+#endif
        if (board.has_pccard) {
                if (BCMCPU_IS_6348())
                        val |= GPIO_MODE_6348_G1_MII_PCCARD;
@@ -538,12 +544,14 @@ int __init board_register_devices(void)
                bcm63xx_udc_register();
        /* Generate MAC address for WLAN and
         * register our SPROM */
+#ifdef CONFIG_PCI
        if (!board_get_mac_address(bcm63xx_sprom.il0mac)) {
                memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
                memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
                if (ssb_arch_set_fallback_sprom(&bcm63xx_sprom) < 0)
                        printk(KERN_ERR "failed to register fallback SPROM\n");
        }
+#endif
 
        /* read base address of boot chip select (0) */
        val = bcm_mpi_readl(MPI_CSBASE_REG(0));