summaryrefslogtreecommitdiff
path: root/board/amcc/yosemite/yosemite.c
diff options
context:
space:
mode:
author <m8@hekate.semihalf.com>2005-08-12 15:33:33 +0200
committer <m8@hekate.semihalf.com>2005-08-12 15:33:33 +0200
commit6df6d38d2d59ba2964e9ee33aa559707a6c1c4b7 (patch)
treebac8690410f0c5dba55f940d0bb403029459cdae /board/amcc/yosemite/yosemite.c
parent5a27f84855f3db8a6317389c034f8f507444185f (diff)
parentdafba16e6fc1837381c8e74c4891ad6965cf54ab (diff)
downloadu-boot-imx-6df6d38d2d59ba2964e9ee33aa559707a6c1c4b7.zip
u-boot-imx-6df6d38d2d59ba2964e9ee33aa559707a6c1c4b7.tar.gz
u-boot-imx-6df6d38d2d59ba2964e9ee33aa559707a6c1c4b7.tar.bz2
Merge with pollux.denx.org:/home/git/u-boot/.git
Diffstat (limited to 'board/amcc/yosemite/yosemite.c')
-rw-r--r--board/amcc/yosemite/yosemite.c55
1 files changed, 54 insertions, 1 deletions
diff --git a/board/amcc/yosemite/yosemite.c b/board/amcc/yosemite/yosemite.c
index 6c8a883..b50e99a 100644
--- a/board/amcc/yosemite/yosemite.c
+++ b/board/amcc/yosemite/yosemite.c
@@ -20,9 +20,12 @@
*/
#include <common.h>
+#include <ppc4xx.h>
#include <asm/processor.h>
#include <spd_sdram.h>
+extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
+
int board_early_init_f(void)
{
register uint reg;
@@ -35,7 +38,7 @@ int board_early_init_f(void)
mtdcr(ebccfgd, reg | 0x04000000); /* Set ATC */
mtebc(pb0ap, 0x03017300); /* FLASH/SRAM */
- mtebc(pb0cr, 0xfe0ba000); /* BAS=0xfe0 32MB r/w 16-bit */
+ mtebc(pb0cr, 0xfc0da000); /* BAS=0xfc0 64MB r/w 16-bit */
mtebc(pb1ap, 0x00000000);
mtebc(pb1cr, 0x00000000);
@@ -122,6 +125,54 @@ int board_early_init_f(void)
return 0;
}
+int misc_init_r (void)
+{
+ DECLARE_GLOBAL_DATA_PTR;
+ uint pbcr;
+ int size_val = 0;
+
+ /* Re-do sizing to get full correct info */
+ mtdcr(ebccfga, pb0cr);
+ pbcr = mfdcr(ebccfgd);
+ switch (gd->bd->bi_flashsize) {
+ case 1 << 20:
+ size_val = 0;
+ break;
+ case 2 << 20:
+ size_val = 1;
+ break;
+ case 4 << 20:
+ size_val = 2;
+ break;
+ case 8 << 20:
+ size_val = 3;
+ break;
+ case 16 << 20:
+ size_val = 4;
+ break;
+ case 32 << 20:
+ size_val = 5;
+ break;
+ case 64 << 20:
+ size_val = 6;
+ break;
+ case 128 << 20:
+ size_val = 7;
+ break;
+ }
+ pbcr = (pbcr & 0x0001ffff) | gd->bd->bi_flashstart | (size_val << 17);
+ mtdcr(ebccfga, pb0cr);
+ mtdcr(ebccfgd, pbcr);
+
+ /* Monitor protection ON by default */
+ (void)flash_protect(FLAG_PROTECT_SET,
+ -CFG_MONITOR_LEN,
+ 0xffffffff,
+ &flash_info[0]);
+
+ return 0;
+}
+
int checkboard(void)
{
sys_info_t sysinfo;
@@ -135,6 +186,8 @@ int checkboard(void)
printf("\tOPB: %lu MHz\n", sysinfo.freqOPB / 1000000);
printf("\tPER: %lu MHz\n", sysinfo.freqEPB / 1000000);
printf("\tPCI: %lu MHz\n", sysinfo.freqPCI / 1000000);
+
+
return (0);
}