summaryrefslogtreecommitdiff
path: root/sys/dev/ata
diff options
context:
space:
mode:
authorAlexander Yurchenko <grange@cvs.openbsd.org>2003-07-23 22:07:16 +0000
committerAlexander Yurchenko <grange@cvs.openbsd.org>2003-07-23 22:07:16 +0000
commitc828fcd5606221baa4bcf2cda327d01774e99bb3 (patch)
tree39ed56e5cdffc1a6159671b70ab244cf3f011380 /sys/dev/ata
parent26663ca3acb8e283d5dd460ed33ff13d743223ee (diff)
Old Promise ATA controllers need some additional operations
during DMA transfers to work correctly with LBA48 drives. Based on diff from Takeshi Nakayama <tn@catvmics.ne.jp> for NetBSD with some corrections from FreeBSD ATA driver.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r--sys/dev/ata/ata_wdc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/ata/ata_wdc.c b/sys/dev/ata/ata_wdc.c
index 88a8455c879..623676d97c4 100644
--- a/sys/dev/ata/ata_wdc.c
+++ b/sys/dev/ata/ata_wdc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ata_wdc.c,v 1.20 2003/02/21 20:10:33 grange Exp $ */
+/* $OpenBSD: ata_wdc.c,v 1.21 2003/07/23 22:07:15 grange Exp $ */
/* $NetBSD: ata_wdc.c,v 1.21 1999/08/09 09:43:11 bouyer Exp $ */
/*
@@ -222,6 +222,8 @@ _wdc_ata_bio_start(chp, xfer)
if (drvp->n_xfers <= NXFER)
drvp->n_xfers++;
dma_flags = (ata_bio->flags & ATA_READ) ? WDC_DMA_READ : 0;
+ if (ata_bio->flags & ATA_LBA48)
+ dma_flags |= WDC_DMA_LBA48;
}
if (ata_bio->flags & ATA_SINGLE)
ata_delay = ATA_DELAY;