Convert CONFIG_SYS_MAX_FLASH_SECT to Kconfig
[platform/kernel/u-boot.git] / cmd / sata.c
index cc12afb..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);
@@ -51,7 +54,6 @@ int sata_probe(int devnum)
 {
 #ifdef CONFIG_AHCI
        struct udevice *dev;
-       struct udevice *blk;
        int rc;
 
        rc = uclass_get_device(UCLASS_AHCI, devnum, &dev);
@@ -61,27 +63,24 @@ 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);
                return CMD_RET_FAILURE;
        }
 
-       rc = blk_get_from_parent(dev, &blk);
-       if (!rc) {
-               struct blk_desc *desc = dev_get_uclass_platdata(blk);
-
-               if (desc->lba > 0 && desc->blksz > 0)
-                       part_init(desc);
-       }
-
        return 0;
 #else
        return sata_initialize() < 0 ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
 #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;
 
@@ -89,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);
 
@@ -107,8 +106,8 @@ static int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        /* If the user has not yet run `sata init`, do it now */
        if (sata_curr_device == -1) {
                rc = sata_probe(0);
-               if (rc < 0)
-                       return CMD_RET_FAILURE;
+               if (rc)
+                       return rc;
                sata_curr_device = 0;
        }