Convert CONFIG_SYS_MAX_FLASH_SECT to Kconfig
[platform/kernel/u-boot.git] / cmd / sata.c
index 6d62ba8..76da190 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <common.h>
 #include <ahci.h>
+#include <blk.h>
 #include <dm.h>
 #include <command.h>
 #include <part.h>
@@ -26,6 +27,8 @@ int sata_remove(int devnum)
        struct udevice *dev;
        int rc;
 
+       blk_unbind_all(IF_TYPE_SATA);
+
        rc = uclass_find_device(UCLASS_AHCI, devnum, &dev);
        if (!rc && !dev)
                rc = uclass_find_first_device(UCLASS_AHCI, &dev);
@@ -60,6 +63,10 @@ int sata_probe(int devnum)
                printf("Cannot probe SATA device %d (err=%d)\n", devnum, rc);
                return CMD_RET_FAILURE;
        }
+       if (!dev) {
+               printf("No SATA device found!\n");
+               return CMD_RET_FAILURE;
+       }
        rc = sata_scan(dev);
        if (rc) {
                printf("Cannot scan SATA device %d (err=%d)\n", devnum, rc);
@@ -72,7 +79,8 @@ int sata_probe(int devnum)
 #endif
 }
 
-static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_sata(struct cmd_tbl *cmdtp, int flag, int argc,
+                  char *const argv[])
 {
        int rc = 0;
 
@@ -80,7 +88,7 @@ static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                int devnum = 0;
 
                if (argc == 3)
-                       devnum = (int)simple_strtoul(argv[2], NULL, 10);
+                       devnum = (int)dectoul(argv[2], NULL);
                if (!strcmp(argv[1], "stop"))
                        return sata_remove(devnum);