summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-core.c
diff options
context:
space:
mode:
authorAlan Cox2006-01-17 21:50:31 +0100
committerJeff Garzik2006-01-18 01:37:45 +0100
commit8d238e012469a9a332c78d6a69a8a46ac4b1e9c2 (patch)
treea882e4ec38a87d5ee61653ff9b16ccea57c2bf04 /drivers/scsi/libata-core.c
parent[PATCH] Intel ICH8 SATA: add PCI device IDs (diff)
downloadkernel-qcow2-linux-8d238e012469a9a332c78d6a69a8a46ac4b1e9c2.tar.gz
kernel-qcow2-linux-8d238e012469a9a332c78d6a69a8a46ac4b1e9c2.tar.xz
kernel-qcow2-linux-8d238e012469a9a332c78d6a69a8a46ac4b1e9c2.zip
[PATCH] libata: Fix heuristic typos add LBA48PIO flag and support code, add IRQ flag for next diff
Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r--drivers/scsi/libata-core.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
index b42acbe0e9a5..e6044455ca45 100644
--- a/drivers/scsi/libata-core.c
+++ b/drivers/scsi/libata-core.c
@@ -611,6 +611,10 @@ int ata_rwcmd_protocol(struct ata_queued_cmd *qc)
if (dev->flags & ATA_DFLAG_PIO) {
tf->protocol = ATA_PROT_PIO;
index = dev->multi_count ? 0 : 8;
+ } else if (lba48 && (qc->ap->flags & ATA_FLAG_PIO_LBA48)) {
+ /* Unable to use DMA due to host limitation */
+ tf->protocol = ATA_PROT_PIO;
+ index = dev->multi_count ? 0 : 4;
} else {
tf->protocol = ATA_PROT_DMA;
index = 16;