Do not test for DMA status on legacy ATA devices. This has the unfortunate

side effect that legacy ATA controllers at irq14 and irq15 cannot share
interrupts with anything else without major problems.
This fixes the ATAPI DMA problems some systems/devices have seen.
This commit is contained in:
Søren Schmidt 2006-01-24 12:34:56 +00:00
parent 0b4ae859ac
commit 634c377652
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=154768

View file

@ -439,7 +439,8 @@ ata_pci_status(device_t dev)
{
struct ata_channel *ch = device_get_softc(dev);
if (ch->dma && ((ch->flags & ATA_ALWAYS_DMASTAT) ||
if (!ata_legacy(device_get_parent(dev)) &&
ch->dma && ((ch->flags & ATA_ALWAYS_DMASTAT) ||
(ch->dma->flags & ATA_DMA_ACTIVE))) {
int bmstat = ATA_IDX_INB(ch, ATA_BMSTAT_PORT) & ATA_BMSTAT_MASK;