diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 20:22:30 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 20:22:30 -0700 |
commit | 90597b6cfc1fc9926a4d54f09bbf5b3254b1b028 (patch) | |
tree | 36e4f213e15dcc85620c7e0ccca42883d412fb8e /drivers/ata/libahci.c | |
parent | 7bfe0e66d5da32961f0060fc5d96b739b1ed64b9 (diff) | |
parent | b8cec3c253a2a001e463c43260fb75fb3223a04d (diff) |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev
Pull libata updates from Jeff Garzik:
1) AHCI regression fix. A recent "make driver conform to spec" change
broke on deployed hardware. Make new behavior optional, rather than
default, turning it on only for specific embedded platforms that
need this.
Everybody else runs in the famous "non conformant but working" mode.
2) pata_cmd64x, pata_legacy cleanups
3) new Intel SATA PCI IDs
4) misc minor vendor feature additions
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
pata_cmd64x: implement sff_irq_check() method
pata_cmd64x: implement sff_irq_clear() method
pata_cmd64x: use interrupt status from MRDMODE register
pata_cmd64x: turn string of *if* statements into *switch*
drivers/ata/pata_mpc52xx.c: clean up error handling code
ahci_platform: add STRICT_AHCI platform type
ahci: move AHCI_HFLAGS() macro to ahci.h
ahci: add AHCI_HFLAG_DELAY_ENGINE host flag
sata_fsl: add support for interrupt coalsecing feature
ata/pata_arasan_cf: Add Hibernation support
pata_legacy: correctly mask recovery field for HT6560B
ata_piix: IDE-mode SATA patch for Intel Lynx Point DeviceIDs
ahci: AHCI-mode SATA patch for Intel Lynx Point DeviceIDs
Diffstat (limited to 'drivers/ata/libahci.c')
-rw-r--r-- | drivers/ata/libahci.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index a72bfd0ecfe..f9eaa82311a 100644 --- a/drivers/ata/libahci.c +++ b/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) { |