Subject: Re: DMA beyond end of isa
To: None <port-i386@NetBSD.ORG>
From: Ty Sarna <tsarna@endicor.com>
List: port-i386
Date: 01/03/1996 21:59:55
In article <29126.820683482@NIAGARA.NECTAR.CS.CMU.EDU>,
 <Chris_G_Demetriou@NIAGARA.NECTAR.CS.CMU.EDU> wrote:
> It's not "would any", the correct question is "why wouldn't one."
> _EVERY_ ISA DMA device driver, if "properly written" should work on
> the i386 and the alpha (and other machines which support ISA, like the
> amiga), with no #ifdefs.

Well, actually they wouldn't work on the Amiga, because for all of the
ISA bridges availible that I know of:

 - No pc-style DMA controller is included
 - The bridge is one way: zorro cycles can be translated to ISA cycles,
   but not vice-versa. Boards couldn't busmaster into anything other than
   (eg for the GoldenGate2) the 384K area above the 640K mark.
 - There isn't any memory in that area.

So it wouldn't work without extra hardware to provide some memory to
bounce buffer into in that area (unlikely!), and then only with boards
that do their own access and don't rely on the PC DMA controller (unless
extra hardware provided that as well).  If you're going to do all that,
you might as well just build custom Zorro hardware.

The ISA bridges on the Amiga are neat hacks, and useful for non-DMA
hardware (I've written several drivers for PC data acq.  hardware
accessed through them), but it's not practical for DMA hardware, and is
(IMHO) a lot grosser than ISA on the Alpha. It just may not be worth
hobbling MI ISA code with the kludges and broken assumptions (eg: you
can't memcpy to/from ISA memory on a GG2, because every byte in ISA
memory space appears as the low byte of a 16 bit word in the Amiga
address space) necesarry to support it for anything other than simple
non-DMA (and maybe IO space only) boards.