Minor reformatting

master
wdenk 21 years ago
parent d4f58f785d
commit 50015ab3e1
  1. 264
      board/bubinga405ep/flash.c
  2. 85
      common/cmd_reginfo.c

@ -77,103 +77,94 @@ unsigned long flash_init (void)
unsigned long base_b0, base_b1; unsigned long base_b0, base_b1;
/* Init: no FLASHes known */ /* Init: no FLASHes known */
for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) { for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
flash_info[i].flash_id = FLASH_UNKNOWN; flash_info[i].flash_id = FLASH_UNKNOWN;
} }
/* Static FLASH Bank configuration here - FIXME XXX */ /* Static FLASH Bank configuration here - FIXME XXX */
size_b0 = flash_get_size((vu_long *)FLASH_BASE0_PRELIM, &flash_info[0]); size_b0 = flash_get_size ((vu_long *) FLASH_BASE0_PRELIM, &flash_info[0]);
if (flash_info[0].flash_id == FLASH_UNKNOWN) { if (flash_info[0].flash_id == FLASH_UNKNOWN) {
printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
size_b0, size_b0<<20); size_b0, size_b0 << 20);
} }
/* Only one bank */ /* Only one bank */
if (CFG_MAX_FLASH_BANKS == 1) if (CFG_MAX_FLASH_BANKS == 1) {
{
/* Setup offsets */ /* Setup offsets */
flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]); flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
/* Monitor protection ON by default */ /* Monitor protection ON by default */
(void)flash_protect(FLAG_PROTECT_SET, (void) flash_protect (FLAG_PROTECT_SET,
FLASH_BASE0_PRELIM, FLASH_BASE0_PRELIM,
FLASH_BASE0_PRELIM+CFG_MONITOR_LEN-1, FLASH_BASE0_PRELIM + CFG_MONITOR_LEN - 1,
&flash_info[0]); &flash_info[0]);
/* Also protect sector containing initial power-up instruction */ /* Also protect sector containing initial power-up instruction */
(void)flash_protect(FLAG_PROTECT_SET, (void) flash_protect (FLAG_PROTECT_SET,
0xFFFFFFFC, 0xFFFFFFFC, 0xFFFFFFFF, &flash_info[0]);
0xFFFFFFFF, size_b1 = 0;
&flash_info[0]);
size_b1 = 0 ;
flash_info[0].size = size_b0; flash_info[0].size = size_b0;
} }
/* 2 banks */ /* 2 banks */
else else {
{ size_b1 = flash_get_size ((vu_long *) FLASH_BASE1_PRELIM, &flash_info[1]);
size_b1 = flash_get_size((vu_long *)FLASH_BASE1_PRELIM, &flash_info[1]);
/* Re-do sizing to get full correct info */ /* Re-do sizing to get full correct info */
if (size_b1) if (size_b1) {
{ mtdcr (ebccfga, pb0cr);
mtdcr(ebccfga, pb0cr); pbcr = mfdcr (ebccfgd);
pbcr = mfdcr(ebccfgd); mtdcr (ebccfga, pb0cr);
mtdcr(ebccfga, pb0cr);
base_b1 = -size_b1; base_b1 = -size_b1;
pbcr = (pbcr & 0x0001ffff) | base_b1 | (((size_b1/1024/1024)-1)<<17); pbcr = (pbcr & 0x0001ffff) | base_b1 |
mtdcr(ebccfgd, pbcr); (((size_b1 / 1024 / 1024) - 1) << 17);
mtdcr (ebccfgd, pbcr);
/* printf("pb1cr = %x\n", pbcr); */ /* printf("pb1cr = %x\n", pbcr); */
} }
if (size_b0) if (size_b0) {
{ mtdcr (ebccfga, pb1cr);
mtdcr(ebccfga, pb1cr); pbcr = mfdcr (ebccfgd);
pbcr = mfdcr(ebccfgd); mtdcr (ebccfga, pb1cr);
mtdcr(ebccfga, pb1cr);
base_b0 = base_b1 - size_b0; base_b0 = base_b1 - size_b0;
pbcr = (pbcr & 0x0001ffff) | base_b0 | (((size_b0/1024/1024)-1)<<17); pbcr = (pbcr & 0x0001ffff) | base_b0 |
mtdcr(ebccfgd, pbcr); (((size_b0 / 1024 / 1024) - 1) << 17);
mtdcr (ebccfgd, pbcr);
/* printf("pb0cr = %x\n", pbcr); */ /* printf("pb0cr = %x\n", pbcr); */
} }
size_b0 = flash_get_size((vu_long *)base_b0, &flash_info[0]); size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
flash_get_offsets (base_b0, &flash_info[0]); flash_get_offsets (base_b0, &flash_info[0]);
/* monitor protection ON by default */ /* monitor protection ON by default */
(void)flash_protect(FLAG_PROTECT_SET, (void) flash_protect (FLAG_PROTECT_SET,
base_b0+size_b0-CFG_MONITOR_LEN, base_b0 + size_b0 - CFG_MONITOR_LEN,
base_b0+size_b0-1, base_b0 + size_b0 - 1, &flash_info[0]);
&flash_info[0]);
/* Also protect sector containing initial power-up instruction */ /* Also protect sector containing initial power-up instruction */
/* (flash_protect() checks address range - other call ignored) */ /* (flash_protect() checks address range - other call ignored) */
(void)flash_protect(FLAG_PROTECT_SET, (void) flash_protect (FLAG_PROTECT_SET,
0xFFFFFFFC, 0xFFFFFFFC, 0xFFFFFFFF, &flash_info[0]);
0xFFFFFFFF, (void) flash_protect (FLAG_PROTECT_SET,
&flash_info[0]); 0xFFFFFFFC, 0xFFFFFFFF, &flash_info[1]);
(void)flash_protect(FLAG_PROTECT_SET,
0xFFFFFFFC,
0xFFFFFFFF,
&flash_info[1]);
if (size_b1) { if (size_b1) {
/* Re-do sizing to get full correct info */ /* Re-do sizing to get full correct info */
size_b1 = flash_get_size((vu_long *)base_b1, &flash_info[1]); size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
flash_get_offsets (base_b1, &flash_info[1]); flash_get_offsets (base_b1, &flash_info[1]);
/* monitor protection ON by default */ /* monitor protection ON by default */
(void)flash_protect(FLAG_PROTECT_SET, (void) flash_protect (FLAG_PROTECT_SET,
base_b1+size_b1-CFG_MONITOR_LEN, base_b1 + size_b1 - CFG_MONITOR_LEN,
base_b1+size_b1-1, base_b1 + size_b1 - 1,
&flash_info[1]); &flash_info[1]);
/* monitor protection OFF by default (one is enough) */ /* monitor protection OFF by default (one is enough) */
(void)flash_protect(FLAG_PROTECT_CLEAR, (void) flash_protect (FLAG_PROTECT_CLEAR,
base_b0+size_b0-CFG_MONITOR_LEN, base_b0 + size_b0 - CFG_MONITOR_LEN,
base_b0+size_b0-1, base_b0 + size_b0 - 1,
&flash_info[0]); &flash_info[0]);
} else { } else {
flash_info[1].flash_id = FLASH_UNKNOWN; flash_info[1].flash_id = FLASH_UNKNOWN;
@ -182,20 +173,20 @@ unsigned long flash_init (void)
flash_info[0].size = size_b0; flash_info[0].size = size_b0;
flash_info[1].size = size_b1; flash_info[1].size = size_b1;
}/* else 2 banks */ } /* else 2 banks */
return (size_b0 + size_b1); return (size_b0 + size_b1);
} }
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
*/ */
static void flash_get_offsets (ulong base, flash_info_t *info) static void flash_get_offsets (ulong base, flash_info_t * info)
{ {
int i; int i;
/* set up sector start address table */ /* set up sector start address table */
if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) || if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
(info->flash_id == FLASH_AM040)){ (info->flash_id == FLASH_AM040)) {
for (i = 0; i < info->sector_count; i++) for (i = 0; i < info->sector_count; i++)
info->start[i] = base + (i * 0x00010000); info->start[i] = base + (i * 0x00010000);
} else { } else {
@ -223,7 +214,7 @@ static void flash_get_offsets (ulong base, flash_info_t *info)
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
*/ */
void flash_print_info (flash_info_t *info) void flash_print_info (flash_info_t * info)
{ {
int i; int i;
int k; int k;
@ -274,21 +265,19 @@ void flash_print_info (flash_info_t *info)
info->size >> 10, info->sector_count); info->size >> 10, info->sector_count);
printf (" Sector Start Addresses:"); printf (" Sector Start Addresses:");
for (i=0; i<info->sector_count; ++i) { for (i = 0; i < info->sector_count; ++i) {
/* /*
* Check if whole sector is erased * Check if whole sector is erased
*/ */
if (i != (info->sector_count-1)) if (i != (info->sector_count - 1))
size = info->start[i+1] - info->start[i]; size = info->start[i + 1] - info->start[i];
else else
size = info->start[0] + info->size - info->start[i]; size = info->start[0] + info->size - info->start[i];
erased = 1; erased = 1;
flash = (volatile unsigned long *)info->start[i]; flash = (volatile unsigned long *) info->start[i];
size = size >> 2; /* divide by 4 for longword access */ size = size >> 2; /* divide by 4 for longword access */
for (k=0; k<size; k++) for (k = 0; k < size; k++) {
{ if (*flash++ != 0xffffffff) {
if (*flash++ != 0xffffffff)
{
erased = 0; erased = 0;
break; break;
} }
@ -298,13 +287,11 @@ void flash_print_info (flash_info_t *info)
printf ("\n "); printf ("\n ");
#if 0 /* test-only */ #if 0 /* test-only */
printf (" %08lX%s", printf (" %08lX%s",
info->start[i], info->start[i], info->protect[i] ? " (RO)" : " "
info->protect[i] ? " (RO)" : " "
#else #else
printf (" %08lX%s%s", printf (" %08lX%s%s",
info->start[i], info->start[i],
erased ? " E" : " ", erased ? " E" : " ", info->protect[i] ? "RO " : " "
info->protect[i] ? "RO " : " "
#endif #endif
); );
} }
@ -322,17 +309,17 @@ void flash_print_info (flash_info_t *info)
/* /*
* The following code cannot be run from FLASH! * The following code cannot be run from FLASH!
*/ */
static ulong flash_get_size (vu_long *addr, flash_info_t *info) static ulong flash_get_size (vu_long * addr, flash_info_t * info)
{ {
short i; short i;
FLASH_WORD_SIZE value; FLASH_WORD_SIZE value;
ulong base = (ulong)addr; ulong base = (ulong) addr;
volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr; volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) addr;
/* Write auto select command: read Manufacturer ID */ /* Write auto select command: read Manufacturer ID */
addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055; addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090; addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00900090;
#ifdef CONFIG_ADCIOP #ifdef CONFIG_ADCIOP
value = addr2[2]; value = addr2[2];
@ -341,13 +328,13 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
#endif #endif
switch (value) { switch (value) {
case (FLASH_WORD_SIZE)AMD_MANUFACT: case (FLASH_WORD_SIZE) AMD_MANUFACT:
info->flash_id = FLASH_MAN_AMD; info->flash_id = FLASH_MAN_AMD;
break; break;
case (FLASH_WORD_SIZE)FUJ_MANUFACT: case (FLASH_WORD_SIZE) FUJ_MANUFACT:
info->flash_id = FLASH_MAN_FUJ; info->flash_id = FLASH_MAN_FUJ;
break; break;
case (FLASH_WORD_SIZE)SST_MANUFACT: case (FLASH_WORD_SIZE) SST_MANUFACT:
info->flash_id = FLASH_MAN_SST; info->flash_id = FLASH_MAN_SST;
break; break;
default: default:
@ -365,66 +352,66 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
#endif #endif
switch (value) { switch (value) {
case (FLASH_WORD_SIZE)AMD_ID_F040B: case (FLASH_WORD_SIZE) AMD_ID_F040B:
info->flash_id += FLASH_AM040; info->flash_id += FLASH_AM040;
info->sector_count = 8; info->sector_count = 8;
info->size = 0x0080000; /* => 512 ko */ info->size = 0x0080000; /* => 512 ko */
break; break;
case (FLASH_WORD_SIZE)AMD_ID_LV400T: case (FLASH_WORD_SIZE) AMD_ID_LV400T:
info->flash_id += FLASH_AM400T; info->flash_id += FLASH_AM400T;
info->sector_count = 11; info->sector_count = 11;
info->size = 0x00080000; info->size = 0x00080000;
break; /* => 0.5 MB */ break; /* => 0.5 MB */
case (FLASH_WORD_SIZE)AMD_ID_LV400B: case (FLASH_WORD_SIZE) AMD_ID_LV400B:
info->flash_id += FLASH_AM400B; info->flash_id += FLASH_AM400B;
info->sector_count = 11; info->sector_count = 11;
info->size = 0x00080000; info->size = 0x00080000;
break; /* => 0.5 MB */ break; /* => 0.5 MB */
case (FLASH_WORD_SIZE)AMD_ID_LV800T: case (FLASH_WORD_SIZE) AMD_ID_LV800T:
info->flash_id += FLASH_AM800T; info->flash_id += FLASH_AM800T;
info->sector_count = 19; info->sector_count = 19;
info->size = 0x00100000; info->size = 0x00100000;
break; /* => 1 MB */ break; /* => 1 MB */
case (FLASH_WORD_SIZE)AMD_ID_LV800B: case (FLASH_WORD_SIZE) AMD_ID_LV800B:
info->flash_id += FLASH_AM800B; info->flash_id += FLASH_AM800B;
info->sector_count = 19; info->sector_count = 19;
info->size = 0x00100000; info->size = 0x00100000;
break; /* => 1 MB */ break; /* => 1 MB */
case (FLASH_WORD_SIZE)AMD_ID_LV160T: case (FLASH_WORD_SIZE) AMD_ID_LV160T:
info->flash_id += FLASH_AM160T; info->flash_id += FLASH_AM160T;
info->sector_count = 35; info->sector_count = 35;
info->size = 0x00200000; info->size = 0x00200000;
break; /* => 2 MB */ break; /* => 2 MB */
case (FLASH_WORD_SIZE)AMD_ID_LV160B: case (FLASH_WORD_SIZE) AMD_ID_LV160B:
info->flash_id += FLASH_AM160B; info->flash_id += FLASH_AM160B;
info->sector_count = 35; info->sector_count = 35;
info->size = 0x00200000; info->size = 0x00200000;
break; /* => 2 MB */ break; /* => 2 MB */
#if 0 /* enable when device IDs are available */ #if 0 /* enable when device IDs are available */
case (FLASH_WORD_SIZE)AMD_ID_LV320T: case (FLASH_WORD_SIZE) AMD_ID_LV320T:
info->flash_id += FLASH_AM320T; info->flash_id += FLASH_AM320T;
info->sector_count = 67; info->sector_count = 67;
info->size = 0x00400000; info->size = 0x00400000;
break; /* => 4 MB */ break; /* => 4 MB */
case (FLASH_WORD_SIZE)AMD_ID_LV320B: case (FLASH_WORD_SIZE) AMD_ID_LV320B:
info->flash_id += FLASH_AM320B; info->flash_id += FLASH_AM320B;
info->sector_count = 67; info->sector_count = 67;
info->size = 0x00400000; info->size = 0x00400000;
break; /* => 4 MB */ break; /* => 4 MB */
#endif #endif
case (FLASH_WORD_SIZE)SST_ID_xF800A: case (FLASH_WORD_SIZE) SST_ID_xF800A:
info->flash_id += FLASH_SST800A; info->flash_id += FLASH_SST800A;
info->sector_count = 16; info->sector_count = 16;
info->size = 0x00100000; info->size = 0x00100000;
break; /* => 1 MB */ break; /* => 1 MB */
case (FLASH_WORD_SIZE)SST_ID_xF160A: case (FLASH_WORD_SIZE) SST_ID_xF160A:
info->flash_id += FLASH_SST160A; info->flash_id += FLASH_SST160A;
info->sector_count = 32; info->sector_count = 32;
info->size = 0x00200000; info->size = 0x00200000;
@ -438,7 +425,7 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
/* set up sector start address table */ /* set up sector start address table */
if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) || if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
(info->flash_id == FLASH_AM040)){ (info->flash_id == FLASH_AM040)) {
for (i = 0; i < info->sector_count; i++) for (i = 0; i < info->sector_count; i++)
info->start[i] = base + (i * 0x00010000); info->start[i] = base + (i * 0x00010000);
} else { } else {
@ -468,10 +455,10 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
/* read sector protection at sector address, (A7 .. A0) = 0x02 */ /* read sector protection at sector address, (A7 .. A0) = 0x02 */
/* D0 = 1 if protected */ /* D0 = 1 if protected */
#ifdef CONFIG_ADCIOP #ifdef CONFIG_ADCIOP
addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]); addr2 = (volatile FLASH_WORD_SIZE *) (info->start[i]);
info->protect[i] = addr2[4] & 1; info->protect[i] = addr2[4] & 1;
#else #else
addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]); addr2 = (volatile FLASH_WORD_SIZE *) (info->start[i]);
if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST)
info->protect[i] = 0; info->protect[i] = 0;
else else
@ -485,32 +472,32 @@ static ulong flash_get_size (vu_long *addr, flash_info_t *info)
if (info->flash_id != FLASH_UNKNOWN) { if (info->flash_id != FLASH_UNKNOWN) {
#if 0 /* test-only */ #if 0 /* test-only */
#ifdef CONFIG_ADCIOP #ifdef CONFIG_ADCIOP
addr2 = (volatile unsigned char *)info->start[0]; addr2 = (volatile unsigned char *) info->start[0];
addr2[ADDR0] = 0xAA; addr2[ADDR0] = 0xAA;
addr2[ADDR1] = 0x55; addr2[ADDR1] = 0x55;
addr2[ADDR0] = 0xF0; /* reset bank */ addr2[ADDR0] = 0xF0; /* reset bank */
#else #else
addr2 = (FLASH_WORD_SIZE *)info->start[0]; addr2 = (FLASH_WORD_SIZE *) info->start[0];
*addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */ *addr2 = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
#endif #endif
#else /* test-only */ #else /* test-only */
addr2 = (FLASH_WORD_SIZE *)info->start[0]; addr2 = (FLASH_WORD_SIZE *) info->start[0];
*addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */ *addr2 = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
#endif /* test-only */ #endif /* test-only */
} }
return (info->size); return (info->size);
} }
int wait_for_DQ7(flash_info_t *info, int sect) int wait_for_DQ7 (flash_info_t * info, int sect)
{ {
ulong start, now, last; ulong start, now, last;
volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]); volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[sect]);
start = get_timer (0); start = get_timer (0);
last = 0; last = 0;
while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) { while ((addr[0] & (FLASH_WORD_SIZE) 0x00800080) != (FLASH_WORD_SIZE) 0x00800080) {
if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) { if ((now = get_timer (start)) > CFG_FLASH_ERASE_TOUT) {
printf ("Timeout\n"); printf ("Timeout\n");
return -1; return -1;
} }
@ -526,9 +513,9 @@ int wait_for_DQ7(flash_info_t *info, int sect)
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
*/ */
int flash_erase (flash_info_t *info, int s_first, int s_last) int flash_erase (flash_info_t * info, int s_first, int s_last)
{ {
volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]); volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *) (info->start[0]);
volatile FLASH_WORD_SIZE *addr2; volatile FLASH_WORD_SIZE *addr2;
int flag, prot, sect, l_sect; int flag, prot, sect, l_sect;
int i; int i;
@ -548,15 +535,14 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
} }
prot = 0; prot = 0;
for (sect=s_first; sect<=s_last; ++sect) { for (sect = s_first; sect <= s_last; ++sect) {
if (info->protect[sect]) { if (info->protect[sect]) {
prot++; prot++;
} }
} }
if (prot) { if (prot) {
printf ("- Warning: %d protected sectors will not be erased!\n", printf ("- Warning: %d protected sectors will not be erased!\n", prot);
prot);
} else { } else {
printf ("\n"); printf ("\n");
} }
@ -564,30 +550,30 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
l_sect = -1; l_sect = -1;
/* Disable interrupts which might cause a timeout here */ /* Disable interrupts which might cause a timeout here */
flag = disable_interrupts(); flag = disable_interrupts ();
/* Start erase on unprotected sectors */ /* Start erase on unprotected sectors */
for (sect = s_first; sect<=s_last; sect++) { for (sect = s_first; sect <= s_last; sect++) {
if (info->protect[sect] == 0) { /* not protected */ if (info->protect[sect] == 0) { /* not protected */
addr2 = (FLASH_WORD_SIZE *)(info->start[sect]); addr2 = (FLASH_WORD_SIZE *) (info->start[sect]);
printf("Erasing sector %p\n", addr2); /* CLH */ printf ("Erasing sector %p\n", addr2); /* CLH */
if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) { if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080; addr[ADDR0] = (FLASH_WORD_SIZE) 0x00800080;
addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
addr2[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */ addr2[0] = (FLASH_WORD_SIZE) 0x00500050; /* block erase */
for (i=0; i<50; i++) for (i = 0; i < 50; i++)
udelay(1000); /* wait 1 ms */ udelay (1000); /* wait 1 ms */
} else { } else {
addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080; addr[ADDR0] = (FLASH_WORD_SIZE) 0x00800080;
addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; addr[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA;
addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; addr[ADDR1] = (FLASH_WORD_SIZE) 0x00550055;
addr2[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */ addr2[0] = (FLASH_WORD_SIZE) 0x00300030; /* sector erase */
} }
l_sect = sect; l_sect = sect;
/* /*
@ -597,13 +583,13 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
* timeout. This has been seen to fail, especially * timeout. This has been seen to fail, especially
* if printf()s are included (for debug)!! * if printf()s are included (for debug)!!
*/ */
wait_for_DQ7(info, sect); wait_for_DQ7 (info, sect);
} }
} }
/* re-enable interrupts if necessary */ /* re-enable interrupts if necessary */
if (flag) if (flag)
enable_interrupts(); enable_interrupts ();
/* wait at least 80us - let's wait 1 ms */ /* wait at least 80us - let's wait 1 ms */
udelay (1000); udelay (1000);
@ -614,13 +600,13 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
*/ */
if (l_sect < 0) if (l_sect < 0)
goto DONE; goto DONE;
wait_for_DQ7(info, l_sect); wait_for_DQ7 (info, l_sect);
DONE: DONE:
#endif #endif
/* reset to read mode */ /* reset to read mode */
addr = (FLASH_WORD_SIZE *)info->start[0]; addr = (FLASH_WORD_SIZE *) info->start[0];
addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */ addr[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */
printf (" done\n"); printf (" done\n");
return 0; return 0;
@ -633,7 +619,7 @@ DONE:
* 2 - Flash not erased * 2 - Flash not erased
*/ */
int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
{ {
ulong cp, wp, data; ulong cp, wp, data;
int i, l, rc; int i, l, rc;
@ -645,19 +631,19 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
*/ */
if ((l = addr - wp) != 0) { if ((l = addr - wp) != 0) {
data = 0; data = 0;
for (i=0, cp=wp; i<l; ++i, ++cp) { for (i = 0, cp = wp; i < l; ++i, ++cp) {
data = (data << 8) | (*(uchar *)cp); data = (data << 8) | (*(uchar *) cp);
} }
for (; i<4 && cnt>0; ++i) { for (; i < 4 && cnt > 0; ++i) {
data = (data << 8) | *src++; data = (data << 8) | *src++;
--cnt; --cnt;
++cp; ++cp;
} }
for (; cnt==0 && i<4; ++i, ++cp) { for (; cnt == 0 && i < 4; ++i, ++cp) {
data = (data << 8) | (*(uchar *)cp); data = (data << 8) | (*(uchar *) cp);
} }
if ((rc = write_word(info, wp, data)) != 0) { if ((rc = write_word (info, wp, data)) != 0) {
return (rc); return (rc);
} }
wp += 4; wp += 4;
@ -668,10 +654,10 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
*/ */
while (cnt >= 4) { while (cnt >= 4) {
data = 0; data = 0;
for (i=0; i<4; ++i) { for (i = 0; i < 4; ++i) {
data = (data << 8) | *src++; data = (data << 8) | *src++;
} }
if ((rc = write_word(info, wp, data)) != 0) { if ((rc = write_word (info, wp, data)) != 0) {
return (rc); return (rc);
} }
wp += 4; wp += 4;
@ -686,15 +672,15 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
* handle unaligned tail bytes * handle unaligned tail bytes
*/ */
data = 0; data = 0;
for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) { for (i = 0, cp = wp; i < 4 && cnt > 0; ++i, ++cp) {
data = (data << 8) | *src++; data = (data << 8) | *src++;
--cnt; --cnt;
} }
for (; i<4; ++i, ++cp) { for (; i < 4; ++i, ++cp) {
data = (data << 8) | (*(uchar *)cp); data = (data << 8) | (*(uchar *) cp);
} }
return (write_word(info, wp, data)); return (write_word (info, wp, data));
} }
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------

@ -90,11 +90,11 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
/* DBU[dave@cray.com] For the CRAY-L1, but should be generically 405gp */ /* DBU[dave@cray.com] For the CRAY-L1, but should be generically 405gp */
#elif defined (CONFIG_405GP) #elif defined (CONFIG_405GP)
printf("\n405GP registers; MSR=%08x\n",mfmsr()); printf ("\n405GP registers; MSR=%08x\n",mfmsr());
printf ("\nUniversal Interrupt Controller Regs\n" printf ("\nUniversal Interrupt Controller Regs\n"
"uicsr uicsrs uicer uiccr uicpr uictr uicmsr uicvr uicvcr" "uicsr uicsrs uicer uiccr uicpr uictr uicmsr uicvr uicvcr"
"\n" "\n"
"%08x %08x %08x %08x %08x %08x %08x %08x %08x\n", "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
mfdcr(uicsr), mfdcr(uicsr),
mfdcr(uicsrs), mfdcr(uicsrs),
mfdcr(uicer), mfdcr(uicer),
@ -106,7 +106,7 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
mfdcr(uicvcr)); mfdcr(uicvcr));
printf ("\nMemory (SDRAM) Configuration\n" printf ("\nMemory (SDRAM) Configuration\n"
"besra besrsa besrb besrsb bear mcopt1 rtr pmit\n"); "besra besrsa besrb besrsb bear mcopt1 rtr pmit\n");
mtdcr(memcfga,mem_besra); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_besra); printf ("%08x ", mfdcr(memcfgd));
mtdcr(memcfga,mem_besrsa); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_besrsa); printf ("%08x ", mfdcr(memcfgd));
@ -118,7 +118,7 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
mtdcr(memcfga,mem_pmit); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_pmit); printf ("%08x ", mfdcr(memcfgd));
printf ("\n" printf ("\n"
"mb0cf mb1cf mb2cf mb3cf sdtr1 ecccf eccerr\n"); "mb0cf mb1cf mb2cf mb3cf sdtr1 ecccf eccerr\n");
mtdcr(memcfga,mem_mb0cf); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_mb0cf); printf ("%08x ", mfdcr(memcfgd));
mtdcr(memcfga,mem_mb1cf); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_mb1cf); printf ("%08x ", mfdcr(memcfgd));
mtdcr(memcfga,mem_mb2cf); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_mb2cf); printf ("%08x ", mfdcr(memcfgd));
@ -128,30 +128,33 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
mtdcr(memcfga,mem_eccerr); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_eccerr); printf ("%08x ", mfdcr(memcfgd));
printf ("\n\n" printf ("\n\n"
"DMA Channels\n" "DMA Channels\n"
"dmasr dmasgc dmaadr\n" "%08x %08x %08x\n" "dmasr dmasgc dmaadr\n"
"dmacr_0 dmact_0 dmada_0 dmasa_0 dmasb_0\n" "%08x %08x %08x %08x %08x\n" "%08x %08x %08x\n"
"dmacr_1 dmact_1 dmada_1 dmasa_1 dmasb_1\n" "%08x %08x %08x %08x %08x\n", "dmacr_0 dmact_0 dmada_0 dmasa_0 dmasb_0\n"
mfdcr(dmasr), mfdcr(dmasgc),mfdcr(dmaadr), "%08x %08x %08x %08x %08x\n"
mfdcr(dmacr0), mfdcr(dmact0),mfdcr(dmada0), mfdcr(dmasa0), mfdcr(dmasb0), "dmacr_1 dmact_1 dmada_1 dmasa_1 dmasb_1\n"
mfdcr(dmacr1), mfdcr(dmact1),mfdcr(dmada1), mfdcr(dmasa1), mfdcr(dmasb1)); "%08x %08x %08x %08x %08x\n",
mfdcr(dmasr), mfdcr(dmasgc),mfdcr(dmaadr),
mfdcr(dmacr0), mfdcr(dmact0),mfdcr(dmada0), mfdcr(dmasa0), mfdcr(dmasb0),
mfdcr(dmacr1), mfdcr(dmact1),mfdcr(dmada1), mfdcr(dmasa1), mfdcr(dmasb1));
printf ( printf (
"dmacr_2 dmact_2 dmada_2 dmasa_2 dmasb_2\n" "%08x %08x %08x %08x %08x\n" "dmacr_2 dmact_2 dmada_2 dmasa_2 dmasb_2\n" "%08x %08x %08x %08x %08x\n"
"dmacr_3 dmact_3 dmada_3 dmasa_3 dmasb_3\n" "%08x %08x %08x %08x %08x\n", "dmacr_3 dmact_3 dmada_3 dmasa_3 dmasb_3\n" "%08x %08x %08x %08x %08x\n",
mfdcr(dmacr2), mfdcr(dmact2),mfdcr(dmada2), mfdcr(dmasa2), mfdcr(dmasb2), mfdcr(dmacr2), mfdcr(dmact2),mfdcr(dmada2), mfdcr(dmasa2), mfdcr(dmasb2),
mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) ); mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
printf ("\n" printf ("\n"
"External Bus\n" "External Bus\n"
"pbear pbesr0 pbesr1 epcr\n"); "pbear pbesr0 pbesr1 epcr\n");
mtdcr(ebccfga,pbear); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pbear); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pbesr0); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pbesr0); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pbesr1); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pbesr1); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,epcr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,epcr); printf ("%08x ", mfdcr(ebccfgd));
printf ("\n" printf ("\n"
"pb0cr pb0ap pb1cr pb1ap pb2cr pb2ap pb3cr pb3ap\n"); "pb0cr pb0ap pb1cr pb1ap pb2cr pb2ap pb3cr pb3ap\n");
mtdcr(ebccfga,pb0cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb0cr); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb0ap); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb0ap); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb1cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb1cr); printf ("%08x ", mfdcr(ebccfgd));
@ -162,7 +165,7 @@ mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
mtdcr(ebccfga,pb3ap); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb3ap); printf ("%08x ", mfdcr(ebccfgd));
printf ("\n" printf ("\n"
"pb4cr pb4ap pb5cr bp5ap pb6cr pb6ap pb7cr pb7ap\n"); "pb4cr pb4ap pb5cr bp5ap pb6cr pb6ap pb7cr pb7ap\n");
mtdcr(ebccfga,pb4cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb4cr); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb4ap); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb4ap); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb5cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb5cr); printf ("%08x ", mfdcr(ebccfgd));
@ -175,11 +178,11 @@ mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
printf ("\n\n"); printf ("\n\n");
/* For the BUBINGA (IBM 405EP eval) but should be generically 405ep */ /* For the BUBINGA (IBM 405EP eval) but should be generically 405ep */
#elif defined(CONFIG_405EP) #elif defined(CONFIG_405EP)
printf("\n405EP registers; MSR=%08x\n",mfmsr()); printf ("\n405EP registers; MSR=%08x\n",mfmsr());
printf ("\nUniversal Interrupt Controller Regs\n" printf ("\nUniversal Interrupt Controller Regs\n"
"uicsr uicer uiccr uicpr uictr uicmsr uicvr uicvcr" "uicsr uicer uiccr uicpr uictr uicmsr uicvr uicvcr"
"\n" "\n"
"%08x %08x %08x %08x %08x %08x %08x %08x\n", "%08x %08x %08x %08x %08x %08x %08x %08x\n",
mfdcr(uicsr), mfdcr(uicsr),
mfdcr(uicer), mfdcr(uicer),
mfdcr(uiccr), mfdcr(uiccr),
@ -190,7 +193,7 @@ mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
mfdcr(uicvcr)); mfdcr(uicvcr));
printf ("\nMemory (SDRAM) Configuration\n" printf ("\nMemory (SDRAM) Configuration\n"
"mcopt1 rtr pmit mb0cf mb1cf sdtr1\n"); "mcopt1 rtr pmit mb0cf mb1cf sdtr1\n");
mtdcr(memcfga,mem_mcopt1); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_mcopt1); printf ("%08x ", mfdcr(memcfgd));
mtdcr(memcfga,mem_rtr); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_rtr); printf ("%08x ", mfdcr(memcfgd));
@ -200,30 +203,30 @@ mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
mtdcr(memcfga,mem_sdtr1); printf ("%08x ", mfdcr(memcfgd)); mtdcr(memcfga,mem_sdtr1); printf ("%08x ", mfdcr(memcfgd));
printf ("\n\n" printf ("\n\n"
"DMA Channels\n" "DMA Channels\n"
"dmasr dmasgc dmaadr\n" "%08x %08x %08x\n" "dmasr dmasgc dmaadr\n" "%08x %08x %08x\n"
"dmacr_0 dmact_0 dmada_0 dmasa_0 dmasb_0\n" "%08x %08x %08x %08x %08x\n" "dmacr_0 dmact_0 dmada_0 dmasa_0 dmasb_0\n" "%08x %08x %08x %08x %08x\n"
"dmacr_1 dmact_1 dmada_1 dmasa_1 dmasb_1\n" "%08x %08x %08x %08x %08x\n", "dmacr_1 dmact_1 dmada_1 dmasa_1 dmasb_1\n" "%08x %08x %08x %08x %08x\n",
mfdcr(dmasr), mfdcr(dmasgc),mfdcr(dmaadr), mfdcr(dmasr), mfdcr(dmasgc),mfdcr(dmaadr),
mfdcr(dmacr0), mfdcr(dmact0),mfdcr(dmada0), mfdcr(dmasa0), mfdcr(dmasb0), mfdcr(dmacr0), mfdcr(dmact0),mfdcr(dmada0), mfdcr(dmasa0), mfdcr(dmasb0),
mfdcr(dmacr1), mfdcr(dmact1),mfdcr(dmada1), mfdcr(dmasa1), mfdcr(dmasb1)); mfdcr(dmacr1), mfdcr(dmact1),mfdcr(dmada1), mfdcr(dmasa1), mfdcr(dmasb1));
printf ( printf (
"dmacr_2 dmact_2 dmada_2 dmasa_2 dmasb_2\n" "%08x %08x %08x %08x %08x\n" "dmacr_2 dmact_2 dmada_2 dmasa_2 dmasb_2\n" "%08x %08x %08x %08x %08x\n"
"dmacr_3 dmact_3 dmada_3 dmasa_3 dmasb_3\n" "%08x %08x %08x %08x %08x\n", "dmacr_3 dmact_3 dmada_3 dmasa_3 dmasb_3\n" "%08x %08x %08x %08x %08x\n",
mfdcr(dmacr2), mfdcr(dmact2),mfdcr(dmada2), mfdcr(dmasa2), mfdcr(dmasb2), mfdcr(dmacr2), mfdcr(dmact2),mfdcr(dmada2), mfdcr(dmasa2), mfdcr(dmasb2),
mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) ); mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
printf ("\n" printf ("\n"
"External Bus\n" "External Bus\n"
"pbear pbesr0 pbesr1 epcr\n"); "pbear pbesr0 pbesr1 epcr\n");
mtdcr(ebccfga,pbear); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pbear); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pbesr0); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pbesr0); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pbesr1); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pbesr1); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,epcr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,epcr); printf ("%08x ", mfdcr(ebccfgd));
printf ("\n" printf ("\n"
"pb0cr pb0ap pb1cr pb1ap pb2cr pb2ap pb3cr pb3ap\n"); "pb0cr pb0ap pb1cr pb1ap pb2cr pb2ap pb3cr pb3ap\n");
mtdcr(ebccfga,pb0cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb0cr); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb0ap); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb0ap); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb1cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb1cr); printf ("%08x ", mfdcr(ebccfgd));
@ -234,7 +237,7 @@ mfdcr(dmacr3), mfdcr(dmact3),mfdcr(dmada3), mfdcr(dmasa3), mfdcr(dmasb3) );
mtdcr(ebccfga,pb3ap); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb3ap); printf ("%08x ", mfdcr(ebccfgd));
printf ("\n" printf ("\n"
"pb4cr pb4ap\n"); "pb4cr pb4ap\n");
mtdcr(ebccfga,pb4cr); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb4cr); printf ("%08x ", mfdcr(ebccfgd));
mtdcr(ebccfga,pb4ap); printf ("%08x ", mfdcr(ebccfgd)); mtdcr(ebccfga,pb4ap); printf ("%08x ", mfdcr(ebccfgd));

Loading…
Cancel
Save