diff options
author | sos <sos@FreeBSD.org> | 2005-05-11 12:41:35 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2005-05-11 12:41:35 +0000 |
commit | eb109cd6d51514147a9c2d769779985b294d4574 (patch) | |
tree | dc73894672c909634df232648039664fe52cf440 /sys/dev/ata/ata-lowlevel.c | |
parent | 31532d6fec2c563dcbbf8aa9393bc7b667131871 (diff) | |
download | FreeBSD-src-eb109cd6d51514147a9c2d769779985b294d4574.zip FreeBSD-src-eb109cd6d51514147a9c2d769779985b294d4574.tar.gz |
Fix ATAPI DMA. We need to set the proper flags for DMA modes.
Diffstat (limited to 'sys/dev/ata/ata-lowlevel.c')
-rw-r--r-- | sys/dev/ata/ata-lowlevel.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-lowlevel.c b/sys/dev/ata/ata-lowlevel.c index c6aeb33..cb8ca58 100644 --- a/sys/dev/ata/ata-lowlevel.c +++ b/sys/dev/ata/ata-lowlevel.c @@ -670,9 +670,11 @@ ata_generic_command(struct ata_request *request) int timeout = 5000; /* issue packet command to controller */ + if (request->flags & ATA_R_DMA) + ATA_IDX_OUTB(ch, ATA_FEATURE, ATA_F_DMA); ATA_IDX_OUTB(ch, ATA_CYL_LSB, request->transfersize); ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->transfersize >> 8); - ATA_IDX_OUTB(ch, ATA_COMMAND, ATA_PACKET_CMD); + ATA_IDX_OUTB(ch, ATA_COMMAND, ATA_PACKET_CMD); /* command interrupt device ? just return and wait for interrupt */ if ((atadev->param.config & ATA_DRQ_MASK) == ATA_DRQ_INTR) |