summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Ziecik <kosmo@semihalf.com>2008-11-17 15:49:32 +0100
committerStefan Roese <sr@denx.de>2008-11-24 10:55:36 +0100
commit6ea808efdf9aa5d9067fbfac32acde8539129ed2 (patch)
treea45a87f673cdca45d27a7ca6a4c4bd86f5256ab0
parentebc9784ce6528385bb8d2558e783622d4bbf20f8 (diff)
downloadu-boot-imx-6ea808efdf9aa5d9067fbfac32acde8539129ed2.zip
u-boot-imx-6ea808efdf9aa5d9067fbfac32acde8539129ed2.tar.gz
u-boot-imx-6ea808efdf9aa5d9067fbfac32acde8539129ed2.tar.bz2
cfi_flash: Add interface for flash verbosity control
Add interface for flash verbosity control. It allows to disable output from low-level flash API. It is useful when calling these low-level functions from context other than flash commands (for example the MTD/CFI interface implmentation). Signed-off-by: Piotr Ziecik <kosmo@semihalf.com> Signed-off-by: Stefan Roese <sr@denx.de>
-rw-r--r--drivers/mtd/cfi_flash.c33
-rw-r--r--include/flash.h1
2 files changed, 23 insertions, 11 deletions
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index 37af627..b8422e1 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -158,6 +158,7 @@ typedef union {
#define NUM_ERASE_REGIONS 4 /* max. number of erase regions */
static uint flash_offset_cfi[2] = { FLASH_OFFSET_CFI, FLASH_OFFSET_CFI_ALT };
+static uint flash_verbose = 1;
/* use CONFIG_SYS_MAX_FLASH_BANKS_DETECT if defined */
#ifdef CONFIG_SYS_MAX_FLASH_BANKS_DETECT
@@ -1070,7 +1071,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
if (prot) {
printf ("- Warning: %d protected sectors will not be erased!\n",
prot);
- } else {
+ } else if (flash_verbose) {
putc ('\n');
}
@@ -1117,11 +1118,14 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)
if (flash_full_status_check
(info, sect, info->erase_blk_tout, "erase")) {
rcode = 1;
- } else
+ } else if (flash_verbose)
putc ('.');
}
}
- puts (" done\n");
+
+ if (flash_verbose)
+ puts (" done\n");
+
return rcode;
}
@@ -1233,14 +1237,16 @@ void flash_print_info (flash_info_t * info)
*/
#ifdef CONFIG_FLASH_SHOW_PROGRESS
#define FLASH_SHOW_PROGRESS(scale, dots, digit, dots_sub) \
- dots -= dots_sub; \
- if ((scale > 0) && (dots <= 0)) { \
- if ((digit % 5) == 0) \
- printf ("%d", digit / 5); \
- else \
- putc ('.'); \
- digit--; \
- dots += scale; \
+ if (flash_verbose) { \
+ dots -= dots_sub; \
+ if ((scale > 0) && (dots <= 0)) { \
+ if ((digit % 5) == 0) \
+ printf ("%d", digit / 5); \
+ else \
+ putc ('.'); \
+ digit--; \
+ dots += scale; \
+ } \
}
#else
#define FLASH_SHOW_PROGRESS(scale, dots, digit, dots_sub)
@@ -1958,6 +1964,11 @@ ulong flash_get_size (ulong base, int banknum)
return (info->size);
}
+void flash_set_verbose(uint v)
+{
+ flash_verbose = v;
+}
+
/*-----------------------------------------------------------------------
*/
unsigned long flash_init (void)
diff --git a/include/flash.h b/include/flash.h
index 8a00c2f..05fa572 100644
--- a/include/flash.h
+++ b/include/flash.h
@@ -95,6 +95,7 @@ extern int flash_sect_erase (ulong addr_first, ulong addr_last);
extern int flash_sect_protect (int flag, ulong addr_first, ulong addr_last);
extern int flash_sect_roundb (ulong *addr);
extern unsigned long flash_sector_size(flash_info_t *info, flash_sect_t sect);
+extern void flash_set_verbose(uint);
/* common/flash.c */
extern void flash_protect (int flag, ulong from, ulong to, flash_info_t *info);