diff options
author | Jon Loeliger <jdl@freescale.com> | 2005-07-25 14:05:07 -0500 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2005-07-25 14:05:07 -0500 |
commit | d9b94f28a442b0013caef99de084d7b72e2d4607 (patch) | |
tree | 1b293a551e021a4a696717231ec03206d9f172de /cpu/mpc85xx/cpu_init.c | |
parent | 288693abe1f7c23e69479fd85c2c0d8d7fdbf8f2 (diff) | |
download | u-boot-imx-d9b94f28a442b0013caef99de084d7b72e2d4607.zip u-boot-imx-d9b94f28a442b0013caef99de084d7b72e2d4607.tar.gz u-boot-imx-d9b94f28a442b0013caef99de084d7b72e2d4607.tar.bz2 |
* Patch by Jon Loeliger, 2005-05-05
Implemented support for MPC8548CDS board.
Added DDR II support based on SPD values for MPC85xx boards.
This roll-up patch also includes bugfies for the previously
published patches:
DDRII CPO, pre eTSEC, 8548 LBIU, Andy's TSEC, eTSEC 3&4 I/O
Diffstat (limited to 'cpu/mpc85xx/cpu_init.c')
-rw-r--r-- | cpu/mpc85xx/cpu_init.c | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/cpu/mpc85xx/cpu_init.c b/cpu/mpc85xx/cpu_init.c index 79ea91f..efde9cc 100644 --- a/cpu/mpc85xx/cpu_init.c +++ b/cpu/mpc85xx/cpu_init.c @@ -178,42 +178,58 @@ void cpu_init_f (void) #endif } + /* - * We initialize L2 as cache here. + * Initialize L2 as cache. + * + * The newer 8548, etc, parts have twice as much cache, but + * use the same bit-encoding as the older 8555, etc, parts. + * + * FIXME: Use PVR_VER(pvr) == 1 test here instead of SVR_VER()? */ -int cpu_init_r (void) + +int cpu_init_r(void) { #if defined(CONFIG_L2_CACHE) - volatile immap_t *immap = (immap_t *)CFG_IMMR; + volatile immap_t *immap = (immap_t *)CFG_IMMR; volatile ccsr_l2cache_t *l2cache = &immap->im_l2cache; - volatile uint temp; + volatile uint cache_ctl; + uint svr, ver; + + svr = get_svr(); + ver = SVR_VER(svr); asm("msync;isync"); - temp = l2cache->l2ctl; - temp &= 0x30000000; - switch ( temp ) { + cache_ctl = l2cache->l2ctl; + + switch (cache_ctl & 0x30000000) { case 0x20000000: - printf ("L2 cache 256KB:"); + if (ver == SVR_8548 || ver == SVR_8548_E) { + printf ("L2 cache 512KB:"); + } else { + printf ("L2 cache 256KB:"); + } break; case 0x00000000: case 0x10000000: case 0x30000000: default: - printf ("L2 cache unknown size. Check the silicon!\n"); + printf ("L2 cache unknown size (0x%08x)\n", cache_ctl); return -1; } asm("msync;isync"); l2cache->l2ctl = 0x68000000; /* invalidate */ - temp = l2cache->l2ctl; + cache_ctl = l2cache->l2ctl; asm("msync;isync"); + l2cache->l2ctl = 0xa8000000; /* enable 256KB L2 cache */ - temp = l2cache->l2ctl; + cache_ctl = l2cache->l2ctl; asm("msync;isync"); - printf("enabled\n"); + printf(" enabled\n"); #else - printf("L2: disabled.\n"); + printf("L2 cache: disabled\n"); #endif return 0; |