BTW, on PCI0646U2 and later chips, the interrupt status (it's not really
DMA interrupt status but a latched INTRQ signal not "coupled" with DMA logic,
according to the datasheets) can be read from MRDMODE reg. which is accessible
in I/O space at BMIDE base + 1 which is certainly faster. That's what
drivers/ide/cmd64x.c is doing in its test_dma_irq() method (however, it's
doign this on PCI0643 and early revs of PCI0646 which don't have these bits).
The driver's dma_end() method is acting really strange: it checks if the cjip
is PCI-648/9 and reads the PCI config space to clear those interrupt bits
while these chips have them in I/O mapped MRDMODE; OTOH, it ignores these bits
on earlier chips which have them in oonfig. space only (CFR/ARTTIM23 regs)...
go figure. I'm going to clean this up but don't heve the h/w handy... :-/
Sent rev. 1.3... Hopefully gkernel.sourceforge.net/specs/ will be updated.
MBR, Sergei
-