/*
- * (C) Copyright 2000
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
* See file CREDITS for list of people who contributed to this
#include <common.h>
#include <mpc8xx.h>
-#ifndef CFG_ENV_ADDR
-#define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET)
+#ifndef CONFIG_ENV_ADDR
+#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
#endif
-flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
+flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
/*-----------------------------------------------------------------------
* Functions
unsigned long flash_init (void)
{
- volatile immap_t *immap = (immap_t *)CFG_IMMR;
+ volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR;
volatile memctl8xx_t *memctl = &immap->im_memctl;
unsigned long size_b0, size_b1;
int i;
size_b0=0;
size_b1=0;
/* Init: no FLASHes known */
- for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) {
+ for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
flash_info[i].flash_id = FLASH_UNKNOWN;
}
-#ifdef CFG_DOC_BASE
+#ifdef CONFIG_SYS_DOC_BASE
#ifndef CONFIG_FEL8xx_AT
- memctl->memc_or5 = (0xffff8000 | CFG_OR_TIMING_DOC ); /* 32k bytes */
- memctl->memc_br5 = CFG_DOC_BASE | 0x401;
+ memctl->memc_or5 = (0xffff8000 | CONFIG_SYS_OR_TIMING_DOC ); /* 32k bytes */
+ memctl->memc_br5 = CONFIG_SYS_DOC_BASE | 0x401;
#else
- memctl->memc_or3 = (0xffff8000 | CFG_OR_TIMING_DOC ); /* 32k bytes */
- memctl->memc_br3 = CFG_DOC_BASE | 0x401;
+ memctl->memc_or3 = (0xffff8000 | CONFIG_SYS_OR_TIMING_DOC ); /* 32k bytes */
+ memctl->memc_br3 = CONFIG_SYS_DOC_BASE | 0x401;
#endif
#endif
#if defined( CONFIG_BOOT_8B)
-// memctl->memc_or0 = 0xfff80ff4; /* 4MB bytes */
-// memctl->memc_br0 = 0x40000401;
- size_b0 = 0x80000; /* 512 K */
- flash_info[0].flash_id = FLASH_MAN_AMD | FLASH_AM040;
- flash_info[0].sector_count = 8;
- flash_info[0].size = 0x00080000;
- /* set up sector start address table */
- for (i = 0; i < flash_info[0].sector_count; i++)
- flash_info[0].start[i] = 0x40000000 + (i * 0x10000);
- /* protect all sectors */
- for (i = 0; i < flash_info[0].sector_count; i++)
- flash_info[0].protect[i] = 0x1;
+/* memctl->memc_or0 = 0xfff80ff4; /###* 4MB bytes */
+/* memctl->memc_br0 = 0x40000401; */
+ size_b0 = 0x80000; /* 512 K */
+ flash_info[0].flash_id = FLASH_MAN_AMD | FLASH_AM040;
+ flash_info[0].sector_count = 8;
+ flash_info[0].size = 0x00080000;
+ /* set up sector start address table */
+ for (i = 0; i < flash_info[0].sector_count; i++)
+ flash_info[0].start[i] = 0x40000000 + (i * 0x10000);
+ /* protect all sectors */
+ for (i = 0; i < flash_info[0].sector_count; i++)
+ flash_info[0].protect[i] = 0x1;
#elif defined (CONFIG_BOOT_16B)
-// memctl->memc_or0 = 0xfff80ff4; /* 4MB bytes */
-// memctl->memc_br0 = 0x40000401;
- size_b0 = 0x400000; /* 4MB , assume AMD29LV320B */
- flash_info[0].flash_id = FLASH_MAN_AMD | FLASH_AM320B;
- flash_info[0].sector_count = 67;
- flash_info[0].size = 0x00400000;
- /* set up sector start address table */
- flash_info[0].start[0] = 0x40000000 ;
- flash_info[0].start[1] = 0x40000000 + 0x4000;
- flash_info[0].start[2] = 0x40000000 + 0x6000;
- flash_info[0].start[3] = 0x40000000 + 0x8000;
- for (i = 4; i < flash_info[0].sector_count; i++)
- flash_info[0].start[i] = 0x40000000 + 0x10000 + ((i-4) * 0x10000);
- /* protect all sectors */
- for (i = 0; i < flash_info[0].sector_count; i++)
- flash_info[0].protect[i] = 0x1;
-#endif
+/* memctl->memc_or0 = 0xfff80ff4; /###* 4MB bytes */
+/* memctl->memc_br0 = 0x40000401; */
+ size_b0 = 0x400000; /* 4MB , assume AMD29LV320B */
+ flash_info[0].flash_id = FLASH_MAN_AMD | FLASH_AM320B;
+ flash_info[0].sector_count = 67;
+ flash_info[0].size = 0x00400000;
+ /* set up sector start address table */
+ flash_info[0].start[0] = 0x40000000 ;
+ flash_info[0].start[1] = 0x40000000 + 0x4000;
+ flash_info[0].start[2] = 0x40000000 + 0x6000;
+ flash_info[0].start[3] = 0x40000000 + 0x8000;
+ for (i = 4; i < flash_info[0].sector_count; i++)
+ flash_info[0].start[i] = 0x40000000 + 0x10000 + ((i-4) * 0x10000);
+ /* protect all sectors */
+ for (i = 0; i < flash_info[0].sector_count; i++)
+ flash_info[0].protect[i] = 0x1;
+#endif
#ifdef CONFIG_BOOT_32B
}
/* Remap FLASH according to real size */
- memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
- memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
+ memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & OR_AM_MSK);
+ memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_MS_GPCM | BR_V;
/* Re-do sizing to get full correct info */
- size_b0 = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]);
+ size_b0 = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
- flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
+ flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
+#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
/* monitor protection ON by default */
flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1,
+ CONFIG_SYS_MONITOR_BASE,
+ CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
&flash_info[0]);
#endif
-#ifdef CFG_ENV_IS_IN_FLASH
+#ifdef CONFIG_ENV_IS_IN_FLASH
/* ENV protection ON by default */
flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
+ CONFIG_ENV_ADDR,
+ CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
&flash_info[0]);
#endif
if (size_b1) {
- memctl->memc_or1 = CFG_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
- memctl->memc_br1 = ((CFG_FLASH_BASE + size_b0) & BR_BA_MSK) |
+ memctl->memc_or1 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b1 & 0xFFFF8000);
+ memctl->memc_br1 = ((CONFIG_SYS_FLASH_BASE + size_b0) & BR_BA_MSK) |
BR_MS_GPCM | BR_V;
/* Re-do sizing to get full correct info */
- size_b1 = flash_get_size((vu_long *)(CFG_FLASH_BASE + size_b0),
+ size_b1 = flash_get_size((vu_long *)(CONFIG_SYS_FLASH_BASE + size_b0),
&flash_info[1]);
- flash_get_offsets (CFG_FLASH_BASE + size_b0, &flash_info[1]);
+ flash_get_offsets (CONFIG_SYS_FLASH_BASE + size_b0, &flash_info[1]);
-#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
+#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
/* monitor protection ON by default */
flash_protect(FLAG_PROTECT_SET,
- CFG_MONITOR_BASE,
- CFG_MONITOR_BASE+CFG_MONITOR_LEN-1,
+ CONFIG_SYS_MONITOR_BASE,
+ CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
&flash_info[1]);
#endif
-#ifdef CFG_ENV_IS_IN_FLASH
+#ifdef CONFIG_ENV_IS_IN_FLASH
/* ENV protection ON by default */
flash_protect(FLAG_PROTECT_SET,
- CFG_ENV_ADDR,
- CFG_ENV_ADDR+CFG_ENV_SIZE-1,
+ CONFIG_ENV_ADDR,
+ CONFIG_ENV_ADDR+CONFIG_ENV_SIZE-1,
&flash_info[1]);
#endif
} else {
for (sect = s_first; sect<=s_last; sect++) {
if (info->protect[sect] == 0) { /* not protected */
addr = (vu_long*)(info->start[sect]);
- //addr[0] = 0x00300030;
+ /*addr[0] = 0x00300030; */
my_out_8( (unsigned char *) ((ulong)addr),0x30 );
l_sect = sect;
}
last = start;
addr = (vu_long*)(info->start[l_sect]);
#if defined (CONFIG_BOOT_8B)
- while ( (my_in_8((unsigned char *)addr) & 0x80) != 0x80 )
+ while ( (my_in_8((unsigned char *)addr) & 0x80) != 0x80 )
#elif defined(CONFIG_BOOT_16B )
- while ( (my_in_be16((unsigned short *)addr) & 0x0080) != 0x0080 )
+ while ( (my_in_be16((unsigned short *)addr) & 0x0080) != 0x0080 )
#elif defined(CONFIG_BOOT_32B)
- while ( (my_in_be32((unsigned *)addr) & 0x00800080) != 0x00800080 )
+ while ( (my_in_be32((unsigned *)addr) & 0x00800080) != 0x00800080 )
#else
# error CONFIG_BOOT_(size)B missing.
#endif
{
- if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
+ if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
printf ("Timeout\n");
return 1;
}
my_out_8( (unsigned char * ) (addr+0x555) , 0x90 );
in_mid=my_in_8( (unsigned char * ) addr );
in_did=my_in_8( (unsigned char * ) (addr+1) );
- printf(" man ID=0x%x, dev ID=0x%x.\n",in_mid,in_did );
+ printf(" man ID=0x%x, dev ID=0x%x.\n",in_mid,in_did );
my_out_8( (unsigned char *)addr, 0xf0);
udelay(1);
}
{
int data_ch[4];
data_ch[0]=(int ) ((data>>24) & 0xff);
- data_ch[1]=(int ) ((data>>16) &0xff );
+ data_ch[1]=(int ) ((data>>16) &0xff );
data_ch[2]=(int ) ((data >>8) & 0xff);
data_ch[3]=(int ) (data & 0xff);
for (i=0;i<4;i++ ){
if (flag)
enable_interrupts();
- start = get_timer (0);
+ start = get_timer (0);
last = start;
while( ( my_in_8((unsigned char *) (dest+i)) ) != ( data_ch[i] ) ) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT ) {
+ if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT ) {
return 1;
}
}
}
#elif defined( CONFIG_BOOT_16B)
data_short[0]=(int) (data>>16) & 0xffff;
- data_short[1]=(int ) data & 0xffff ;
+ data_short[1]=(int ) data & 0xffff ;
for (i=0;i<2;i++ ){
my_out_be16( (unsigned short *) ((ulong)addr+ 0xaaa),0xaa );
my_out_be16( (unsigned short *) ((ulong)addr+ 0x554),0x55 );
/* re-enable interrupts if necessary */
if (flag)
enable_interrupts();
- start = get_timer (0);
+ start = get_timer (0);
last = start;
while( ( my_in_be16((unsigned short *) (dest+(i*2))) ) != ( data_short[i] ) ) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT ) {
+ if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT ) {
return 1;
}
}
/* data polling for D7 */
start = get_timer (0);
while ((*((vu_long *)dest) & 0x00800080) != (data & 0x00800080)) {
- if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
+ if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
return (1);
}
}
#endif
-
-
+
+
return (0);
}
#ifdef CONFIG_BOOT_8B
static int my_in_be16( unsigned short *addr)
{
int ret;
- __asm__ __volatile__("lhz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
- return ret;
+ __asm__ __volatile__("lhz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
+ return ret;
}
static void my_out_be16( unsigned short *addr, int val)
{
#ifdef CONFIG_BOOT_32B
static unsigned my_in_be32( unsigned *addr)
{
- unsigned ret;
- __asm__ __volatile__("lwz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
- return ret;
+ unsigned ret;
+ __asm__ __volatile__("lwz%U1%X1 %0,%1; eieio" : "=r" (ret) : "m" (*addr));
+ return ret;
}
static void my_out_be32( unsigned *addr, int val)
{
__asm__ __volatile__("stw%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val));
}
#endif
-
-
-