|
@@ -62,20 +62,9 @@
|
|
|
* reading and writing ... (yes there is such a Hardware).
|
|
|
*/
|
|
|
|
|
|
-#ifndef CONFIG_SYS_FLASH_BANKS_LIST
|
|
|
-#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
|
|
|
-#endif
|
|
|
-
|
|
|
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
|
|
|
-# define CFI_MAX_FLASH_BANKS CONFIG_SYS_MAX_FLASH_BANKS_DETECT
|
|
|
-#else
|
|
|
-# define CFI_MAX_FLASH_BANKS CONFIG_SYS_MAX_FLASH_BANKS
|
|
|
-#endif
|
|
|
-
|
|
|
flash_info_t flash_info[CFI_MAX_FLASH_BANKS]; /* FLASH chips info */
|
|
|
|
|
|
/*
|
|
@@ -85,6 +74,17 @@ flash_info_t flash_info[CFI_MAX_FLASH_BANKS]; /* FLASH chips info */
|
|
|
#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_8BIT
|
|
|
#endif
|
|
|
|
|
|
+#if defined(CONFIG_SYS_MAX_FLASH_BANKS_DETECT)
|
|
|
+int cfi_flash_num_flash_banks = CONFIG_SYS_MAX_FLASH_BANKS_DETECT;
|
|
|
+#endif
|
|
|
+
|
|
|
+static phys_addr_t __cfi_flash_bank_addr(int i)
|
|
|
+{
|
|
|
+ return ((phys_addr_t [])CONFIG_SYS_FLASH_BANKS_LIST)[i];
|
|
|
+}
|
|
|
+phys_addr_t cfi_flash_bank_addr(int i)
|
|
|
+ __attribute__((weak, alias("__cfi_flash_bank_addr")));
|
|
|
+
|
|
|
static void __flash_write8(u8 value, void *addr)
|
|
|
{
|
|
|
__raw_writeb(value, addr);
|
|
@@ -153,7 +153,7 @@ u64 flash_read64(void *addr)__attribute__((weak, alias("__flash_read64")));
|
|
|
flash_info_t *flash_get_info(ulong base)
|
|
|
{
|
|
|
int i;
|
|
|
- flash_info_t * info = 0;
|
|
|
+ flash_info_t *info = NULL;
|
|
|
|
|
|
for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
|
|
|
info = & flash_info[i];
|
|
@@ -162,7 +162,7 @@ flash_info_t *flash_get_info(ulong base)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- return i == CONFIG_SYS_MAX_FLASH_BANKS ? 0 : info;
|
|
|
+ return info;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -2021,14 +2021,12 @@ unsigned long flash_init (void)
|
|
|
getenv_f("unlock", s, sizeof(s));
|
|
|
#endif
|
|
|
|
|
|
-#define BANK_BASE(i) (((phys_addr_t [CFI_MAX_FLASH_BANKS])CONFIG_SYS_FLASH_BANKS_LIST)[i])
|
|
|
-
|
|
|
/* Init: no FLASHes known */
|
|
|
for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
|
|
|
flash_info[i].flash_id = FLASH_UNKNOWN;
|
|
|
|
|
|
- if (!flash_detect_legacy (BANK_BASE(i), i))
|
|
|
- flash_get_size (BANK_BASE(i), i);
|
|
|
+ if (!flash_detect_legacy(cfi_flash_bank_addr(i), i))
|
|
|
+ flash_get_size(cfi_flash_bank_addr(i), i);
|
|
|
size += flash_info[i].size;
|
|
|
if (flash_info[i].flash_id == FLASH_UNKNOWN) {
|
|
|
#ifndef CONFIG_SYS_FLASH_QUIET_TEST
|