]> Git Repo - u-boot.git/blobdiff - drivers/ata/sata.c
Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet""
[u-boot.git] / drivers / ata / sata.c
index 6a38d5002455f2a3a0743ea94034c21f91e971d1..784d9bbeacb47985d9727f47e4d84726715f9487 100644 (file)
 #include <dm.h>
 #include <part.h>
 #include <sata.h>
-
-#ifndef CONFIG_AHCI
-struct blk_desc sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
-#endif
+#include <dm/device-internal.h>
+#include <dm/uclass-internal.h>
 
 int sata_reset(struct udevice *dev)
 {
@@ -50,16 +48,42 @@ int sata_scan(struct udevice *dev)
        return ops->scan(dev);
 }
 
-#ifndef CONFIG_AHCI
-#ifdef CONFIG_PARTITIONS
-struct blk_desc *sata_get_dev(int dev)
+int sata_rescan(bool verbose)
 {
-       return (dev < CONFIG_SYS_SATA_MAX_DEVICE) ? &sata_dev_desc[dev] : NULL;
+       int ret;
+       struct udevice *dev;
+
+       if (verbose)
+               printf("Removing devices on SATA bus...\n");
+
+       blk_unbind_all(UCLASS_AHCI);
+
+       ret = uclass_find_first_device(UCLASS_AHCI, &dev);
+       if (ret || !dev) {
+               printf("Cannot find SATA device (err=%d)\n", ret);
+               return -ENOENT;
+       }
+
+       ret = device_remove(dev, DM_REMOVE_NORMAL);
+       if (ret) {
+               printf("Cannot remove SATA device '%s' (err=%d)\n", dev->name, ret);
+               return -ENOSYS;
+       }
+
+       if (verbose)
+               printf("Rescanning SATA bus for devices...\n");
+
+       ret = uclass_probe_all(UCLASS_AHCI);
+
+       if (ret == -ENODEV) {
+               if (verbose)
+                       printf("No SATA block device found\n");
+               return 0;
+       }
+
+       return ret;
 }
-#endif
-#endif
 
-#ifdef CONFIG_BLK
 static unsigned long sata_bread(struct udevice *dev, lbaint_t start,
                                lbaint_t blkcnt, void *dst)
 {
@@ -71,70 +95,7 @@ static unsigned long sata_bwrite(struct udevice *dev, lbaint_t start,
 {
        return -ENOSYS;
 }
-#else
-static unsigned long sata_bread(struct blk_desc *block_dev, lbaint_t start,
-                               lbaint_t blkcnt, void *dst)
-{
-       return sata_read(block_dev->devnum, start, blkcnt, dst);
-}
 
-static unsigned long sata_bwrite(struct blk_desc *block_dev, lbaint_t start,
-                                lbaint_t blkcnt, const void *buffer)
-{
-       return sata_write(block_dev->devnum, start, blkcnt, buffer);
-}
-#endif
-
-#ifndef CONFIG_AHCI
-int __sata_initialize(void)
-{
-       int rc, ret = -1;
-       int i;
-
-       for (i = 0; i < CONFIG_SYS_SATA_MAX_DEVICE; i++) {
-               memset(&sata_dev_desc[i], 0, sizeof(struct blk_desc));
-               sata_dev_desc[i].if_type = IF_TYPE_SATA;
-               sata_dev_desc[i].devnum = i;
-               sata_dev_desc[i].part_type = PART_TYPE_UNKNOWN;
-               sata_dev_desc[i].type = DEV_TYPE_HARDDISK;
-               sata_dev_desc[i].lba = 0;
-               sata_dev_desc[i].blksz = 512;
-               sata_dev_desc[i].log2blksz = LOG2(sata_dev_desc[i].blksz);
-#ifndef CONFIG_BLK
-               sata_dev_desc[i].block_read = sata_bread;
-               sata_dev_desc[i].block_write = sata_bwrite;
-#endif
-               rc = init_sata(i);
-               if (!rc) {
-                       rc = scan_sata(i);
-                       if (!rc && sata_dev_desc[i].lba > 0 &&
-                           sata_dev_desc[i].blksz > 0) {
-                               part_init(&sata_dev_desc[i]);
-                               ret = i;
-                       }
-               }
-       }
-
-       return ret;
-}
-int sata_initialize(void) __attribute__((weak, alias("__sata_initialize")));
-
-__weak int __sata_stop(void)
-{
-       int i, err = 0;
-
-       for (i = 0; i < CONFIG_SYS_SATA_MAX_DEVICE; i++)
-               err |= reset_sata(i);
-
-       if (err)
-               printf("Could not reset some SATA devices\n");
-
-       return err;
-}
-int sata_stop(void) __attribute__((weak, alias("__sata_stop")));
-#endif
-
-#ifdef CONFIG_BLK
 static const struct blk_ops sata_blk_ops = {
        .read   = sata_bread,
        .write  = sata_bwrite,
@@ -145,11 +106,3 @@ U_BOOT_DRIVER(sata_blk) = {
        .id             = UCLASS_BLK,
        .ops            = &sata_blk_ops,
 };
-#else
-U_BOOT_LEGACY_BLK(sata) = {
-       .if_typename    = "sata",
-       .if_type        = IF_TYPE_SATA,
-       .max_devs       = CONFIG_SYS_SATA_MAX_DEVICE,
-       .desc           = sata_dev_desc,
-};
-#endif
This page took 0.025587 seconds and 4 git commands to generate.