From bb244e2551d45eb63ed29d38c11cee4b222d39e4 Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Tue, 21 Feb 2012 10:38:42 -0800 Subject: [PATCH] --- yaml --- r: 294049 b: refs/heads/master c: 66583c9fa63d05d5580e409f9a58d3cad6d76d17 h: refs/heads/master i: 294047: 3b8cde23955f1bb62161f977370e40a56b29444a v: v3 --- [refs] | 2 +- trunk/drivers/ata/ahci.h | 3 +++ trunk/drivers/ata/libahci.c | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 867b831c9efd..32d2dc77646f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6b4b8fc87dc5cbfcfb5c749dc200906471fb854c +refs/heads/master: 66583c9fa63d05d5580e409f9a58d3cad6d76d17 diff --git a/trunk/drivers/ata/ahci.h b/trunk/drivers/ata/ahci.h index b1750007c8dc..feb127ef4e4e 100644 --- a/trunk/drivers/ata/ahci.h +++ b/trunk/drivers/ata/ahci.h @@ -210,6 +210,9 @@ enum { AHCI_HFLAG_NO_SNTF = (1 << 12), /* no sntf */ AHCI_HFLAG_NO_FPDMA_AA = (1 << 13), /* no FPDMA AA */ AHCI_HFLAG_YES_FBS = (1 << 14), /* force FBS cap on */ + AHCI_HFLAG_DELAY_ENGINE = (1 << 15), /* do not start engine on + port start (wait until + error-handling stage) */ /* ap->flags bits */ diff --git a/trunk/drivers/ata/libahci.c b/trunk/drivers/ata/libahci.c index a72bfd0ecfee..f9eaa82311a9 100644 --- a/trunk/drivers/ata/libahci.c +++ b/trunk/drivers/ata/libahci.c @@ -737,6 +737,7 @@ static void ahci_power_down(struct ata_port *ap) static void ahci_start_port(struct ata_port *ap) { + struct ahci_host_priv *hpriv = ap->host->private_data; struct ahci_port_priv *pp = ap->private_data; struct ata_link *link; struct ahci_em_priv *emp; @@ -746,6 +747,10 @@ static void ahci_start_port(struct ata_port *ap) /* enable FIS reception */ ahci_start_fis_rx(ap); + /* enable DMA */ + if (!(hpriv->flags & AHCI_HFLAG_DELAY_ENGINE)) + ahci_start_engine(ap); + /* turn on LEDs */ if (ap->flags & ATA_FLAG_EM) { ata_for_each_link(link, ap, EDGE) {