]> git.sur5r.net Git - u-boot/blobdiff - board/freescale/mpc8360emds/mpc8360emds.c
Merge branch 'master' of git://git.denx.de/u-boot
[u-boot] / board / freescale / mpc8360emds / mpc8360emds.c
index a0114f6c299c478c5bc2bc9f6fed8c38724fc139..bdd12933433467deb23ad83004cc7a4df0cd0bda 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006,2010 Freescale Semiconductor, Inc.
+ * Copyright (C) 2006,2010-2011 Freescale Semiconductor, Inc.
  * Dave Liu <daveliu@freescale.com>
  *
  * See file CREDITS for list of people who contributed to this
@@ -24,6 +24,7 @@
 #include <asm/mmu.h>
 #include <asm/io.h>
 #include <asm/fsl_enet.h>
+#include <asm/mmu.h>
 #if defined(CONFIG_OF_LIBFDT)
 #include <libfdt.h>
 #endif
@@ -139,9 +140,20 @@ int board_early_init_f(void)
 
 int board_early_init_r(void)
 {
+       gd_t *gd;
 #ifdef CONFIG_PQ_MDS_PIB
        pib_init();
 #endif
+       /*
+        * BAT6 is used for SDRAM when DDR size is 512MB or larger than 256MB
+        * So re-setup PCI MEM space used BAT5 after relocated to DDR
+        */
+       gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
+       if (gd->ram_size > CONFIG_MAX_MEM_MAPPED) {
+               write_bat(DBAT5, CONFIG_SYS_DBAT6U, CONFIG_SYS_DBAT6L);
+               write_bat(IBAT5, CONFIG_SYS_IBAT6U, CONFIG_SYS_IBAT6L);
+       }
+
        return 0;
 }
 
@@ -160,10 +172,11 @@ int board_eth_init(bd_t *bd)
        if (board_handle_erratum2()) {
                int i;
 
-               for (i = 0; i < ARRAY_SIZE(uec_info); i++)
+               for (i = 0; i < ARRAY_SIZE(uec_info); i++) {
                        uec_info[i].enet_interface_type =
                                PHY_INTERFACE_MODE_RGMII_RXID;
                        uec_info[i].speed = SPEED_1000;
+               }
        }
        return uec_eth_init(bd, uec_info, ARRAY_SIZE(uec_info));
 }
@@ -302,6 +315,19 @@ static int sdram_init(unsigned int base)
        if (rem)
                base = base - rem + sdram_size;
 
+       /*
+        * Setup BAT6 for SDRAM when DDR size is 512MB or larger than 256MB
+        * After relocated to DDR, reuse BAT5 for PCI MEM space
+        */
+       if (base > CONFIG_MAX_MEM_MAPPED) {
+               unsigned long batl = base | BATL_PP_10 | BATL_MEMCOHERENCE;
+               unsigned long batu = base | BATU_BL_64M | BATU_VS | BATU_VP;
+
+               /* Setup the BAT6 for SDRAM */
+               write_bat(DBAT6, batu, batl);
+               write_bat(IBAT6, batu, batl);
+       }
+
        sdram_addr = (uint *)base;
        /*
         * Setup SDRAM Base and Option Registers