mtd: cfi: introduce CFI_FLASH_BANKS
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Tue, 4 Jan 2022 13:23:58 +0000 (14:23 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 21 Jan 2022 19:01:35 +0000 (14:01 -0500)
Replace CONFIG_SYS_MAX_FLASH_BANKS by CFI_FLASH_BANKS to prepare
Kconfig migration and avoid to redefine CONFIG_SYS_MAX_FLASH_BANKS
in cfi_flash.h.

After this patch CONFIG_SYS_MAX_FLASH_BANKS should be never used in
the cfi code: use CFI_MAX_FLASH_BANKS for struct size or CFI_FLASH_BANKS
for number of CFI banks which can be dynamic.

This patch modify all the files which include mtd/cfi_flash.h.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Stefan Roese <sr@denx.de>
cmd/bootm.c
cmd/flash.c
common/flash.c
common/update.c
drivers/mtd/cfi_flash.c
drivers/mtd/cfi_mtd.c
drivers/mtd/spi/spi-nor-core.c
include/mtd/cfi_flash.h

index b82a872..e8b7066 100644 (file)
@@ -338,7 +338,7 @@ static int do_imls_nor(void)
        void *hdr;
 
        for (i = 0, info = &flash_info[0];
-               i < CONFIG_SYS_MAX_FLASH_BANKS; ++i, ++info) {
+               i < CFI_FLASH_BANKS; ++i, ++info) {
 
                if (info->flash_id == FLASH_UNKNOWN)
                        goto next_bank;
index 594e2ca..db4bb25 100644 (file)
@@ -60,7 +60,7 @@ abbrev_spec(char *str, flash_info_t **pinfo, int *psf, int *psl)
 
        bank = dectoul(str, &ep);
        if (ep == str || *ep != '\0' ||
-           bank < 1 || bank > CONFIG_SYS_MAX_FLASH_BANKS)
+           bank < 1 || bank > CFI_FLASH_BANKS)
                return -1;
 
        fp = &flash_info[bank - 1];
@@ -104,7 +104,7 @@ int flash_sect_roundb(ulong *addr)
 
        /* find the end addr of the sector where the *addr is */
        found = 0;
-       for (bank = 0; bank < CONFIG_SYS_MAX_FLASH_BANKS && !found; ++bank) {
+       for (bank = 0; bank < CFI_FLASH_BANKS && !found; ++bank) {
                info = &flash_info[bank];
                for (i = 0; i < info->sector_count && !found; ++i) {
                        /* get the end address of the sector */
@@ -201,13 +201,13 @@ flash_fill_sect_ranges(ulong addr_first, ulong addr_last,
 
        *s_count = 0;
 
-       for (bank = 0; bank < CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
+       for (bank = 0; bank < CFI_FLASH_BANKS; ++bank) {
                s_first[bank] = -1;     /* first sector to erase        */
                s_last[bank] = -1;      /* last  sector to erase        */
        }
 
        for (bank = 0, info = &flash_info[0];
-            (bank < CONFIG_SYS_MAX_FLASH_BANKS) && (addr_first <= addr_last);
+            (bank < CFI_FLASH_BANKS) && (addr_first <= addr_last);
             ++bank, ++info) {
                ulong b_end;
                int sect;
@@ -278,7 +278,7 @@ static int do_flinfo(struct cmd_tbl *cmdtp, int flag, int argc,
 
 #ifdef CONFIG_MTD_NOR_FLASH
        if (argc == 1) {        /* print info for all FLASH banks */
-               for (bank = 0; bank < CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
+               for (bank = 0; bank < CFI_FLASH_BANKS; ++bank) {
                        printf("\nBank # %ld: ", bank + 1);
 
                        flash_print_info(&flash_info[bank]);
@@ -287,9 +287,9 @@ static int do_flinfo(struct cmd_tbl *cmdtp, int flag, int argc,
        }
 
        bank = hextoul(argv[1], NULL);
-       if (bank < 1 || bank > CONFIG_SYS_MAX_FLASH_BANKS) {
+       if (bank < 1 || bank > CFI_FLASH_BANKS) {
                printf("Only FLASH Banks # 1 ... # %d supported\n",
-                      CONFIG_SYS_MAX_FLASH_BANKS);
+                      CFI_FLASH_BANKS);
                return 1;
        }
        printf("\nBank # %ld: ", bank);
@@ -316,7 +316,7 @@ static int do_flerase(struct cmd_tbl *cmdtp, int flag, int argc,
                return CMD_RET_USAGE;
 
        if (strcmp(argv[1], "all") == 0) {
-               for (bank = 1; bank <= CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
+               for (bank = 1; bank <= CFI_FLASH_BANKS; ++bank) {
                        printf("Erase Flash Bank # %ld ", bank);
                        info = &flash_info[bank - 1];
                        rcode = flash_erase(info, 0, info->sector_count - 1);
@@ -366,9 +366,9 @@ static int do_flerase(struct cmd_tbl *cmdtp, int flag, int argc,
 
        if (strcmp(argv[1], "bank") == 0) {
                bank = hextoul(argv[2], NULL);
-               if (bank < 1 || bank > CONFIG_SYS_MAX_FLASH_BANKS) {
+               if (bank < 1 || bank > CFI_FLASH_BANKS) {
                        printf("Only FLASH Banks # 1 ... # %d supported\n",
-                              CONFIG_SYS_MAX_FLASH_BANKS);
+                              CFI_FLASH_BANKS);
                        return 1;
                }
                printf("Erase Flash Bank # %ld ", bank);
@@ -397,7 +397,7 @@ int flash_sect_erase(ulong addr_first, ulong addr_last)
 {
        flash_info_t *info;
        ulong bank;
-       int s_first[CONFIG_SYS_MAX_FLASH_BANKS], s_last[CONFIG_SYS_MAX_FLASH_BANKS];
+       int s_first[CFI_FLASH_BANKS], s_last[CFI_FLASH_BANKS];
        int erased = 0;
        int planned;
        int rcode = 0;
@@ -406,7 +406,7 @@ int flash_sect_erase(ulong addr_first, ulong addr_last)
 
        if (planned && rcode == 0) {
                for (bank = 0, info = &flash_info[0];
-                    bank < CONFIG_SYS_MAX_FLASH_BANKS && rcode == 0;
+                    bank < CFI_FLASH_BANKS && rcode == 0;
                     ++bank, ++info) {
                        if (s_first[bank] >= 0) {
                                erased += s_last[bank] - s_first[bank] + 1;
@@ -463,7 +463,7 @@ static int do_protect(struct cmd_tbl *cmdtp, int flag, int argc,
 
 #ifdef CONFIG_MTD_NOR_FLASH
        if (strcmp(argv[2], "all") == 0) {
-               for (bank = 1; bank <= CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
+               for (bank = 1; bank <= CFI_FLASH_BANKS; ++bank) {
                        info = &flash_info[bank - 1];
                        if (info->flash_id == FLASH_UNKNOWN)
                                continue;
@@ -547,9 +547,9 @@ static int do_protect(struct cmd_tbl *cmdtp, int flag, int argc,
 
        if (strcmp(argv[2], "bank") == 0) {
                bank = hextoul(argv[3], NULL);
-               if (bank < 1 || bank > CONFIG_SYS_MAX_FLASH_BANKS) {
+               if (bank < 1 || bank > CFI_FLASH_BANKS) {
                        printf("Only FLASH Banks # 1 ... # %d supported\n",
-                              CONFIG_SYS_MAX_FLASH_BANKS);
+                              CFI_FLASH_BANKS);
                        return 1;
                }
                printf("%sProtect Flash Bank # %ld\n",
@@ -596,7 +596,7 @@ int flash_sect_protect(int p, ulong addr_first, ulong addr_last)
 {
        flash_info_t *info;
        ulong bank;
-       int s_first[CONFIG_SYS_MAX_FLASH_BANKS], s_last[CONFIG_SYS_MAX_FLASH_BANKS];
+       int s_first[CFI_FLASH_BANKS], s_last[CFI_FLASH_BANKS];
        int protected, i;
        int planned;
        int rcode;
@@ -607,7 +607,7 @@ int flash_sect_protect(int p, ulong addr_first, ulong addr_last)
 
        if (planned && rcode == 0) {
                for (bank = 0, info = &flash_info[0];
-                    bank < CONFIG_SYS_MAX_FLASH_BANKS; ++bank, ++info) {
+                    bank < CFI_FLASH_BANKS; ++bank, ++info) {
                        if (info->flash_id == FLASH_UNKNOWN)
                                continue;
 
index bb82385..f939c2f 100644 (file)
@@ -91,7 +91,7 @@ addr2info(ulong addr)
        flash_info_t *info;
        int i;
 
-       for (i=0, info = &flash_info[0]; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i, ++info) {
+       for (i = 0, info = &flash_info[0]; i < CFI_FLASH_BANKS; ++i, ++info) {
                if (info->flash_id != FLASH_UNKNOWN &&
                    addr >= info->start[0] &&
                    /* WARNING - The '- 1' is needed if the flash
index f5c8684..b9ad475 100644 (file)
@@ -112,12 +112,12 @@ static int update_flash_protect(int prot, ulong addr_first, ulong addr_last)
 
        if (prot == 0) {
                saved_prot_info =
-                       calloc(CONFIG_SYS_MAX_FLASH_BANKS * CONFIG_SYS_MAX_FLASH_SECT, 1);
+                       calloc(CFI_FLASH_BANKS * CONFIG_SYS_MAX_FLASH_SECT, 1);
                if (!saved_prot_info)
                        return 1;
        }
 
-       for (bank = 0; bank < CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
+       for (bank = 0; bank < CFI_FLASH_BANKS; ++bank) {
                cnt = 0;
                info = &flash_info[bank];
 
index 9c27fea..71cefc1 100644 (file)
@@ -191,7 +191,7 @@ static flash_info_t *flash_get_info(ulong base)
        int i;
        flash_info_t *info;
 
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
+       for (i = 0; i < CFI_FLASH_BANKS; i++) {
                info = &flash_info[i];
                if (info->size && info->start[0] <= base &&
                    base <= info->start[0] + info->size - 1)
@@ -2419,7 +2419,7 @@ unsigned long flash_init(void)
 #endif
 
        /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
+       for (i = 0; i < CFI_FLASH_BANKS; ++i) {
                flash_info[i].flash_id = FLASH_UNKNOWN;
 
                /* Optionally write flash configuration register */
index 2295bb7..f998ffa 100644 (file)
@@ -207,10 +207,10 @@ int cfi_mtd_init(void)
        int error, i;
 #ifdef CONFIG_MTD_CONCAT
        int devices_found = 0;
-       struct mtd_info *mtd_list[CONFIG_SYS_MAX_FLASH_BANKS];
+       struct mtd_info *mtd_list[CFI_FLASH_BANKS];
 #endif
 
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
+       for (i = 0; i < CFI_FLASH_BANKS; i++) {
                fi = &flash_info[i];
                mtd = &cfi_mtd_info[i];
 
index 4388a08..6acaa84 100644 (file)
@@ -3707,9 +3707,8 @@ int spi_nor_scan(struct spi_nor *nor)
        int ret;
        int cfi_mtd_nb = 0;
 
-#ifdef CONFIG_SYS_MAX_FLASH_BANKS
-       cfi_mtd_nb = CONFIG_SYS_MAX_FLASH_BANKS;
-#endif
+       if (IS_ENABLED(CONFIG_FLASH_CFI_MTD))
+               cfi_mtd_nb = CFI_FLASH_BANKS;
 
        /* Reset SPI protocol for all commands. */
        nor->reg_proto = SNOR_PROTO_1_1_1;
index a1af6fc..d62c8f1 100644 (file)
@@ -154,21 +154,24 @@ struct cfi_pri_hdr {
 /*
  * CFI_MAX_FLASH_BANKS only used for flash_info struct declaration.
  *
- * Use CONFIG_SYS_MAX_FLASH_BANKS_DETECT if defined
+ * CFI_FLASH_BANKS selects the correct number of available banks =
+ * cfi_flash_num_flash_banks when CONFIG_SYS_MAX_FLASH_BANKS_DETECT is defined
+ * or CONFIG_SYS_MAX_FLASH_BANKS
  */
 #if defined(CONFIG_SYS_MAX_FLASH_BANKS_DETECT)
 #define CFI_MAX_FLASH_BANKS    CONFIG_SYS_MAX_FLASH_BANKS_DETECT
 /* map to cfi_flash_num_flash_banks only when supported */
 #if IS_ENABLED(CONFIG_FLASH_CFI_DRIVER) && \
     (!IS_ENABLED(CONFIG_SPL_BUILD) || IS_ENABLED(CONFIG_SPL_MTD_SUPPORT))
-#define CONFIG_SYS_MAX_FLASH_BANKS     (cfi_flash_num_flash_banks)
+#define CFI_FLASH_BANKS                (cfi_flash_num_flash_banks)
 /* board code can update this variable before CFI detection */
 extern int cfi_flash_num_flash_banks;
 #else
-#define CONFIG_SYS_MAX_FLASH_BANKS     CONFIG_SYS_MAX_FLASH_BANKS_DETECT
+#define CFI_FLASH_BANKS                CONFIG_SYS_MAX_FLASH_BANKS_DETECT
 #endif
 #else
 #define CFI_MAX_FLASH_BANKS    CONFIG_SYS_MAX_FLASH_BANKS
+#define CFI_FLASH_BANKS                CONFIG_SYS_MAX_FLASH_BANKS
 #endif
 
 phys_addr_t cfi_flash_bank_addr(int i);