summaryrefslogtreecommitdiff
path: root/drivers/ata/libahci.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-11-03 22:04:05 -0800
committerMark Brown <broonie@linaro.org>2013-11-03 22:04:05 -0800
commitca89bc248e2fac44d6374a48b8d38b068c7a1bdf (patch)
tree0c10af2a5f22a1ad0283023d403022ce6b84ebc4 /drivers/ata/libahci.c
parent9645083ca5ef365b7b750cf219bb20b61bb925f8 (diff)
parent7b5bfb82882b9b1c8423ce0ed6852ca3762d967a (diff)
Merge remote-tracking branch 'asoc/fix/ak4642' into asoc-linus
Diffstat (limited to 'drivers/ata/libahci.c')
-rw-r--r--drivers/ata/libahci.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index acfd0f711069..aaac4fb0d564 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -778,8 +778,16 @@ static void ahci_start_port(struct ata_port *ap)
rc = ap->ops->transmit_led_message(ap,
emp->led_state,
4);
+ /*
+ * If busy, give a breather but do not
+ * release EH ownership by using msleep()
+ * instead of ata_msleep(). EM Transmit
+ * bit is busy for the whole host and
+ * releasing ownership will cause other
+ * ports to fail the same way.
+ */
if (rc == -EBUSY)
- ata_msleep(ap, 1);
+ msleep(1);
else
break;
}