Merge git://git.denx.de/u-boot-usb
[oweals/u-boot.git] / cmd / sata.c
index 4f0c6e0137162e1990b115436be2e016a667edbd..aa396c1bbdff7f07fef1a373698baffa04bedc3b 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;