]> git.sur5r.net Git - u-boot/blobdiff - arch/powerpc/cpu/mpc8xxx/ddr/util.c
Merge branch 'master' of git://git.denx.de/u-boot
[u-boot] / arch / powerpc / cpu / mpc8xxx / ddr / util.c
index 664ad09298f1ae5836afc7bfb7ef8fdac68fc419..acfe1f095fe4c541c3b2126211c2b7ae580658dc 100644 (file)
@@ -121,16 +121,20 @@ void fsl_ddr_set_intl3r(const unsigned int granule_size)
 #endif
 }
 
-void board_add_ram_info(int use_default)
+u32 fsl_ddr_get_intl3r(void)
 {
-#if defined(CONFIG_MPC83xx)
-       immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
-       ccsr_ddr_t *ddr = (void *)&immap->ddr;
-#elif defined(CONFIG_MPC85xx)
-       ccsr_ddr_t *ddr = (void *)(CONFIG_SYS_MPC85xx_DDR_ADDR);
-#elif defined(CONFIG_MPC86xx)
-       ccsr_ddr_t *ddr = (void *)(CONFIG_SYS_MPC86xx_DDR_ADDR);
+       u32 val = 0;
+#ifdef CONFIG_E6500
+       u32 *mcintl3r = (void *) (CONFIG_SYS_IMMR + 0x18004);
+       val = *mcintl3r;
 #endif
+       return val;
+}
+
+void board_add_ram_info(int use_default)
+{
+       ccsr_ddr_t *ddr = (void *)(CONFIG_SYS_MPC8xxx_DDR_ADDR);
+
 #if    defined(CONFIG_E6500) && (CONFIG_NUM_DDR_CONTROLLERS == 3)
        u32 *mcintl3r = (void *) (CONFIG_SYS_IMMR + 0x18004);
 #endif
@@ -140,6 +144,18 @@ void board_add_ram_info(int use_default)
        uint32_t sdram_cfg = in_be32(&ddr->sdram_cfg);
        int cas_lat;
 
+#if CONFIG_NUM_DDR_CONTROLLERS >= 2
+       if (!(sdram_cfg & SDRAM_CFG_MEM_EN)) {
+               ddr = (void __iomem *)CONFIG_SYS_MPC8xxx_DDR2_ADDR;
+               sdram_cfg = in_be32(&ddr->sdram_cfg);
+       }
+#endif
+#if CONFIG_NUM_DDR_CONTROLLERS >= 3
+       if (!(sdram_cfg & SDRAM_CFG_MEM_EN)) {
+               ddr = (void __iomem *)CONFIG_SYS_MPC8xxx_DDR3_ADDR;
+               sdram_cfg = in_be32(&ddr->sdram_cfg);
+       }
+#endif
        puts(" (DDR");
        switch ((sdram_cfg & SDRAM_CFG_SDRAM_TYPE_MASK) >>
                SDRAM_CFG_SDRAM_TYPE_SHIFT) {