mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-10-04 09:10:50 -04:00
Fix problems with CMC_PU2 flash driver.
This commit is contained in:
parent
08f272787a
commit
400ab719c6
@ -335,11 +335,11 @@ 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;
|
||||||
|
|
||||||
start = get_timer (0);
|
reset_timer_masked ();
|
||||||
last = start;
|
last = start;
|
||||||
addr = (vu_short *)(info->start[l_sect]);
|
addr = (vu_short *)(info->start[l_sect]);
|
||||||
while ((addr[0] & 0x0080) != 0x0080) {
|
while ((addr[0] & 0x0080) != 0x0080) {
|
||||||
if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
|
if ((now = get_timer_masked ()) > CFG_FLASH_ERASE_TOUT) {
|
||||||
printf ("Timeout\n");
|
printf ("Timeout\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -394,6 +394,7 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
|||||||
while (cnt >= 2) {
|
while (cnt >= 2) {
|
||||||
data = *((vu_short *)src);
|
data = *((vu_short *)src);
|
||||||
if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) {
|
if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) {
|
||||||
|
printf ("write_buff 1: write_word_amd() rc=%d\n", rc);
|
||||||
return (rc);
|
return (rc);
|
||||||
}
|
}
|
||||||
src += 2;
|
src += 2;
|
||||||
@ -402,13 +403,13 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cnt == 0) {
|
if (cnt == 0) {
|
||||||
return (0);
|
return (ERR_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cnt == 1) {
|
if (cnt == 1) {
|
||||||
data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1))
|
data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) << 8);
|
||||||
<< 8);
|
|
||||||
if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) {
|
if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) {
|
||||||
|
printf ("write_buff 1: write_word_amd() rc=%d\n", rc);
|
||||||
return (rc);
|
return (rc);
|
||||||
}
|
}
|
||||||
src += 1;
|
src += 1;
|
||||||
@ -455,11 +456,11 @@ static int write_word_amd (flash_info_t *info, vu_short *dest, ushort data)
|
|||||||
if (flag)
|
if (flag)
|
||||||
enable_interrupts();
|
enable_interrupts();
|
||||||
|
|
||||||
start = get_timer (0);
|
reset_timer_masked ();
|
||||||
|
|
||||||
/* data polling for D7 */
|
/* data polling for D7 */
|
||||||
while ((*dest & 0x0080) != (data & 0x0080)) {
|
while ((*dest & 0x0080) != (data & 0x0080)) {
|
||||||
if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
|
if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) {
|
||||||
*dest = 0x00F0; /* reset bank */
|
*dest = 0x00F0; /* reset bank */
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user