]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_flash.c
arm: mx6: fix NFC clock get/set routines for i.MX6QP,i.MX6UL
[karo-tx-uboot.git] / common / cmd_flash.c
index 5d8fb7a836169c50f13b3a8c03d6145948c6e64d..85d18bb2c53a4787af348147fe2dd1a4b7242c42 100644 (file)
@@ -2,23 +2,7 @@
  * (C) Copyright 2000
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /*
@@ -31,7 +15,7 @@
 #include <dataflash.h>
 #endif
 
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
 #include <jffs2/jffs2.h>
 
 /* partition handling routines */
@@ -42,6 +26,8 @@ int find_dev_and_part(const char *id, struct mtd_device **dev,
 #endif
 
 #ifndef CONFIG_SYS_NO_FLASH
+#include <flash.h>
+#include <mtd/cfi_flash.h>
 extern flash_info_t flash_info[];      /* info for FLASH chips */
 
 /*
@@ -137,7 +123,7 @@ int flash_sect_roundb (ulong *addr)
                } /* bank */
        }
        if (!found) {
-               /* error, addres not in flash */
+               /* error, address not in flash */
                printf("Error: end address (0x%08lx) not in flash!\n", *addr);
                return 1;
        }
@@ -287,7 +273,7 @@ flash_fill_sect_ranges (ulong addr_first, ulong addr_last,
 }
 #endif /* CONFIG_SYS_NO_FLASH */
 
-int do_flinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_flinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 #ifndef CONFIG_SYS_NO_FLASH
        ulong bank;
@@ -319,23 +305,21 @@ int do_flinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 0;
 }
 
-int do_flerase (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_flerase(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 #ifndef CONFIG_SYS_NO_FLASH
-       flash_info_t *info;
+       flash_info_t *info = NULL;
        ulong bank, addr_first, addr_last;
-       int n, sect_first, sect_last;
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+       int n, sect_first = 0, sect_last = 0;
+#if defined(CONFIG_CMD_MTDPARTS)
        struct mtd_device *dev;
        struct part_info *part;
        u8 dev_type, dev_num, pnum;
 #endif
        int rcode = 0;
 
-       if (argc < 2) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (argc < 2)
+               return CMD_RET_USAGE;
 
        if (strcmp(argv[1], "all") == 0) {
                for (bank=1; bank<=CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
@@ -357,7 +341,7 @@ int do_flerase (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return rcode;
        }
 
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
        /* erase <part-id> - erase partition */
        if ((argc == 2) && (mtd_id_parse(argv[1], NULL, &dev_type, &dev_num) == 0)) {
                mtdparts_init();
@@ -383,10 +367,8 @@ int do_flerase (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        }
 #endif
 
-       if (argc != 3) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (argc != 3)
+               return CMD_RET_USAGE;
 
        if (strcmp(argv[1], "bank") == 0) {
                bank = simple_strtoul(argv[2], NULL, 16);
@@ -406,10 +388,8 @@ int do_flerase (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return 1;
        }
 
-       if (addr_first >= addr_last) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (addr_first >= addr_last)
+               return CMD_RET_USAGE;
 
        rcode = flash_sect_erase(addr_first, addr_last);
        return rcode;
@@ -423,11 +403,7 @@ int flash_sect_erase (ulong addr_first, ulong addr_last)
 {
        flash_info_t *info;
        ulong bank;
-#ifdef CONFIG_SYS_MAX_FLASH_BANKS_DETECT
-       int s_first[CONFIG_SYS_MAX_FLASH_BANKS_DETECT], s_last[CONFIG_SYS_MAX_FLASH_BANKS_DETECT];
-#else
        int s_first[CONFIG_SYS_MAX_FLASH_BANKS], s_last[CONFIG_SYS_MAX_FLASH_BANKS];
-#endif
        int erased = 0;
        int planned;
        int rcode = 0;
@@ -451,7 +427,8 @@ int flash_sect_erase (ulong addr_first, ulong addr_last)
                                rcode = flash_erase (info, s_first[bank], s_last[bank]);
                        }
                }
-               printf ("Erased %d sectors\n", erased);
+               if (rcode == 0)
+                       printf("Erased %d sectors\n", erased);
        } else if (rcode == 0) {
                puts ("Error: start and/or end address"
                        " not on sector boundary\n");
@@ -461,40 +438,38 @@ int flash_sect_erase (ulong addr_first, ulong addr_last)
 }
 #endif /* CONFIG_SYS_NO_FLASH */
 
-int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_protect(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
+       int rcode = 0;
 #ifndef CONFIG_SYS_NO_FLASH
-       flash_info_t *info;
+       flash_info_t *info = NULL;
        ulong bank;
-       int i, n, sect_first, sect_last;
-#endif /* CONFIG_SYS_NO_FLASH */
-#if !defined(CONFIG_SYS_NO_FLASH) || defined(CONFIG_HAS_DATAFLASH)
-       ulong addr_first, addr_last;
-#endif
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+       int i, n, sect_first = 0, sect_last = 0;
+#if defined(CONFIG_CMD_MTDPARTS)
        struct mtd_device *dev;
        struct part_info *part;
        u8 dev_type, dev_num, pnum;
 #endif
+#endif /* CONFIG_SYS_NO_FLASH */
 #ifdef CONFIG_HAS_DATAFLASH
        int status;
 #endif
+#if !defined(CONFIG_SYS_NO_FLASH) || defined(CONFIG_HAS_DATAFLASH)
        int p;
-       int rcode = 0;
+       ulong addr_first, addr_last;
+#endif
 
-       if (argc < 3) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (argc < 3)
+               return CMD_RET_USAGE;
 
-       if (strcmp(argv[1], "off") == 0) {
+#if !defined(CONFIG_SYS_NO_FLASH) || defined(CONFIG_HAS_DATAFLASH)
+       if (strcmp(argv[1], "off") == 0)
                p = 0;
-       } else if (strcmp(argv[1], "on") == 0) {
+       else if (strcmp(argv[1], "on") == 0)
                p = 1;
-       } else {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       else
+               return CMD_RET_USAGE;
+#endif
 
 #ifdef CONFIG_HAS_DATAFLASH
        if ((strcmp(argv[2], "all") != 0) && (strcmp(argv[2], "bank") != 0)) {
@@ -565,7 +540,7 @@ int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return rcode;
        }
 
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
        /* protect on/off <part-id> */
        if ((argc == 3) && (mtd_id_parse(argv[2], NULL, &dev_type, &dev_num) == 0)) {
                mtdparts_init();
@@ -592,10 +567,8 @@ int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        }
 #endif
 
-       if (argc != 4) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (argc != 4)
+               return CMD_RET_USAGE;
 
        if (strcmp(argv[2], "bank") == 0) {
                bank = simple_strtoul(argv[3], NULL, 16);
@@ -634,10 +607,9 @@ int do_protect (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return 1;
        }
 
-       if (addr_first >= addr_last) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (addr_first >= addr_last)
+               return CMD_RET_USAGE;
+
        rcode = flash_sect_protect (p, addr_first, addr_last);
 #endif /* CONFIG_SYS_NO_FLASH */
        return rcode;
@@ -648,11 +620,7 @@ int flash_sect_protect (int p, ulong addr_first, ulong addr_last)
 {
        flash_info_t *info;
        ulong bank;
-#ifdef CONFIG_SYS_MAX_FLASH_BANKS_DETECT
-       int s_first[CONFIG_SYS_MAX_FLASH_BANKS_DETECT], s_last[CONFIG_SYS_MAX_FLASH_BANKS_DETECT];
-#else
        int s_first[CONFIG_SYS_MAX_FLASH_BANKS], s_last[CONFIG_SYS_MAX_FLASH_BANKS];
-#endif
        int protected, i;
        int planned;
        int rcode;
@@ -700,7 +668,7 @@ int flash_sect_protect (int p, ulong addr_first, ulong addr_last)
 
 
 /**************************************************/
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
 # define TMP_ERASE     "erase <part-id>\n    - erase partition\n"
 # define TMP_PROT_ON   "protect on <part-id>\n    - protect partition\n"
 # define TMP_PROT_OFF  "protect off <part-id>\n    - make partition writable\n"