From: Jeff Garzik Date: Sun, 28 May 2006 20:32:59 +0000 (-0400) Subject: Merge branch 'upstream-fixes' into upstream X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=e42d7be25cf53548347bff8b8f43410704ea7bb0;p=linux-beck.git Merge branch 'upstream-fixes' into upstream Conflicts: drivers/scsi/libata-core.c --- e42d7be25cf53548347bff8b8f43410704ea7bb0 diff --cc drivers/scsi/libata-core.c index f19fe662f0ca,b046ffa22101..abcf17ebda90 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c @@@ -5015,20 -4294,17 +5015,23 @@@ static int ata_start_drive(struct ata_d * 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; }