]> Git Repo - u-boot.git/blobdiff - cmd/sf.c
Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"
[u-boot.git] / cmd / sf.c
index 11b9c25896a1e82e2f7fa0b7890debd64ccd4178..f43a2e08b318ca3a6ddc4f8af791d46a455d7611 100644 (file)
--- a/cmd/sf.c
+++ b/cmd/sf.c
@@ -5,7 +5,6 @@
  * Copyright (C) 2008 Atmel Corporation
  */
 
-#include <common.h>
 #include <command.h>
 #include <display_options.h>
 #include <div64.h>
@@ -14,6 +13,7 @@
 #include <malloc.h>
 #include <mapmem.h>
 #include <spi.h>
+#include <time.h>
 #include <spi_flash.h>
 #include <asm/cache.h>
 #include <jffs2/jffs2.h>
@@ -135,8 +135,9 @@ static int do_spi_flash_probe(int argc, char *const argv[])
        }
        flash = NULL;
        if (use_dt) {
-               spi_flash_probe_bus_cs(bus, cs, &new);
-               flash = dev_get_uclass_priv(new);
+               ret = spi_flash_probe_bus_cs(bus, cs, &new);
+               if (!ret)
+                       flash = dev_get_uclass_priv(new);
        } else {
                flash = spi_flash_probe(bus, cs, speed, mode);
        }
@@ -353,6 +354,11 @@ static int do_spi_flash_erase(int argc, char *const argv[])
        if (ret != 1)
                return CMD_RET_USAGE;
 
+       if (size == 0) {
+               debug("ERROR: Invalid size 0\n");
+               return CMD_RET_FAILURE;
+       }
+
        /* Consistency checking */
        if (offset + size > flash->size) {
                printf("ERROR: attempting %s past flash size (%#x)\n",
@@ -361,7 +367,7 @@ static int do_spi_flash_erase(int argc, char *const argv[])
        }
 
        if (flash->flash_is_unlocked &&
-           !flash->flash_is_unlocked(flash, offset, len)) {
+           !flash->flash_is_unlocked(flash, offset, size)) {
                printf("ERROR: flash area is locked\n");
                return CMD_RET_FAILURE;
        }
@@ -599,7 +605,7 @@ static int do_spi_flash(struct cmd_tbl *cmdtp, int flag, int argc,
                ret = do_spi_flash_read_write(argc, argv);
        else if (strcmp(cmd, "erase") == 0)
                ret = do_spi_flash_erase(argc, argv);
-       else if (strcmp(cmd, "protect") == 0)
+       else if (IS_ENABLED(CONFIG_SPI_FLASH_LOCK) && strcmp(cmd, "protect") == 0)
                ret = do_spi_protect(argc, argv);
        else if (IS_ENABLED(CONFIG_CMD_SF_TEST) && !strcmp(cmd, "test"))
                ret = do_spi_flash_test(argc, argv);
@@ -609,8 +615,7 @@ static int do_spi_flash(struct cmd_tbl *cmdtp, int flag, int argc,
        return ret;
 }
 
-#ifdef CONFIG_SYS_LONGHELP
-static const char long_help[] =
+U_BOOT_LONGHELP(sf,
        "probe [[bus:]cs] [hz] [mode]   - init flash device on given SPI bus\n"
        "                                 and chip select\n"
        "sf read addr offset|partition len      - read `len' bytes starting at\n"
@@ -625,15 +630,16 @@ static const char long_help[] =
        "sf update addr offset|partition len    - erase and write `len' bytes from memory\n"
        "                                         at `addr' to flash at `offset'\n"
        "                                         or to start of mtd `partition'\n"
+#ifdef CONFIG_SPI_FLASH_LOCK
        "sf protect lock/unlock sector len      - protect/unprotect 'len' bytes starting\n"
        "                                         at address 'sector'"
+#endif
 #ifdef CONFIG_CMD_SF_TEST
        "\nsf test offset len           - run a very basic destructive test"
 #endif
-#endif /* CONFIG_SYS_LONGHELP */
-       ;
+       );
 
 U_BOOT_CMD(
        sf,     5,      1,      do_spi_flash,
-       "SPI flash sub-system", long_help
+       "SPI flash sub-system", sf_help_text
 );
This page took 0.030482 seconds and 4 git commands to generate.