cfi_flash: Cleanup flash_print_info()
This patch does the following: - Extract code to detect if sector is erased into function sector_erased(). - Because of this, we don't have variable declarations inside the sector loop in flash_print_info() - Change "return" to "break" in the "if (ctrlc()) statement: This fixes a problem with the resulting output. Before this patch the output was: Sector Start Addresses: FC000000 FC020000 FC040000 => With this patch it is now: Sector Start Addresses: FC000000 FC020000 FC040000 => Signed-off-by: Stefan Roese <sr@denx.de> Cc: Kim Phillips <kim.phillips@freescale.com> Cc: Wolfgang Denk <wd@denx.de>
This commit is contained in:
parent
d77c7ac47e
commit
70084df712
@ -1096,8 +1096,30 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
|
||||
return rcode;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
*/
|
||||
#ifdef CONFIG_SYS_FLASH_EMPTY_INFO
|
||||
static int sector_erased(flash_info_t *info, int i)
|
||||
{
|
||||
int k;
|
||||
int size;
|
||||
volatile unsigned long *flash;
|
||||
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
size = flash_sector_size(info, i);
|
||||
flash = (volatile unsigned long *) info->start[i];
|
||||
/* divide by 4 for longword access */
|
||||
size = size >> 2;
|
||||
|
||||
for (k = 0; k < size; k++) {
|
||||
if (*flash++ != 0xffffffff)
|
||||
return 0; /* not erased */
|
||||
}
|
||||
|
||||
return 1; /* erased */
|
||||
}
|
||||
#endif /* CONFIG_SYS_FLASH_EMPTY_INFO */
|
||||
|
||||
void flash_print_info (flash_info_t * info)
|
||||
{
|
||||
int i;
|
||||
@ -1162,33 +1184,14 @@ void flash_print_info (flash_info_t * info)
|
||||
puts ("\n Sector Start Addresses:");
|
||||
for (i = 0; i < info->sector_count; ++i) {
|
||||
if (ctrlc())
|
||||
return;
|
||||
break;
|
||||
if ((i % 5) == 0)
|
||||
printf ("\n");
|
||||
putc('\n');
|
||||
#ifdef CONFIG_SYS_FLASH_EMPTY_INFO
|
||||
int k;
|
||||
int size;
|
||||
int erased;
|
||||
volatile unsigned long *flash;
|
||||
|
||||
/*
|
||||
* Check if whole sector is erased
|
||||
*/
|
||||
size = flash_sector_size(info, i);
|
||||
erased = 1;
|
||||
flash = (volatile unsigned long *) info->start[i];
|
||||
size = size >> 2; /* divide by 4 for longword access */
|
||||
for (k = 0; k < size; k++) {
|
||||
if (*flash++ != 0xffffffff) {
|
||||
erased = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* print empty and read-only info */
|
||||
printf (" %08lX %c %s ",
|
||||
info->start[i],
|
||||
erased ? 'E' : ' ',
|
||||
sector_erased(info, i) ? 'E' : ' ',
|
||||
info->protect[i] ? "RO" : " ");
|
||||
#else /* ! CONFIG_SYS_FLASH_EMPTY_INFO */
|
||||
printf (" %08lX %s ",
|
||||
|
Loading…
Reference in New Issue
Block a user