*    and host.
   *
   */
 -int ata_device_resume(struct ata_port *ap, struct ata_device *dev)
 +int ata_device_resume(struct ata_device *dev)
  {
 +      struct ata_port *ap = dev->ap;
 +
        if (ap->flags & ATA_FLAG_SUSPENDED) {
 +              struct ata_device *failed_dev;
++
+               ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 200000);
++
                ap->flags &= ~ATA_FLAG_SUSPENDED;
 -              ata_set_mode(ap);
 +              while (ata_set_mode(ap, &failed_dev))
 +                      ata_dev_disable(failed_dev);
        }
 -      if (!ata_dev_present(dev))
 +      if (!ata_dev_enabled(dev))
                return 0;
        if (dev->class == ATA_DEV_ATA)
 -              ata_start_drive(ap, dev);
 +              ata_start_drive(dev);
  
        return 0;
  }