[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: DMA function
- To: Mailing List Recipients <pci-sig-request@znyx.com>
- Subject: RE: DMA function
- From: Ali Najafi - Azfin <alinajafi@hqexchg.aztech.com.sg>
- Date: Wed, 11 Nov 1998 18:43:53 +0800
- Delivered-To: pcisig@teleport.com
- Resent-Date: Wed, 11 Nov 1998 22:38:38 -0800
- Resent-From: pci-sig-request@znyx.com
- Resent-Message-ID: <"z52Ju1.0.xv4._uNIs"@electra.znyx.com>
- Resent-Sender: pci-sig-request@znyx.com
For doing a DMA in PCI, the PCI device, as you said, should be capable of
mastering the PCI bus. However, being ISA-DMA compatible is another issue.
If you were not concerned with ISA DMA compatibility, you could design your
DMA channel the way you like it (as long as it performs the transactions
according to PCI spec) and forget about the ISA DMA altogether, meaning that
you could design it with as many registers as you wish and the definition of
the reigsters and the capabilities of the DMA channel can be as you wish,
according to your design requirements. Another point is that, unlike ISA-DMA
where the DMA channels will usually be assigned to user applications (eg, an
add-on board), the DMA channel that you put in your PCI device is always
dedicated to your specific application on or behind your PCI device and only
your device driver communicates with it.
In order to initiate a DMA transfer, or to rephrase it in PCI terms, in
order to perform a master transaction, your PCI device sends the request,
NOT to the host DMA controller, but to the PCI bus arbiter. This is done
through the signal REQ#. Your device asserts REQ# when it needs the bus and
waits for GNT# to be asserted. Once it receives GNT#, it can perform the
transaction according to PCI bus protocol.
As long as ISA DMA compatibility is not concerned, if you want to design a
DMA channel on a PCI device, forget about ISA DMA channel altogether. That
is to say, forget about its definitions, features, registers, and everything
else.
For implementing ISA DMA compatibility on PCI Bus, on the other hand, to the
best of my knowledge, there have been two different standards. They were
called "PC PCI" and "Distributed DMA". A few vendors also made chips to
implement such devices. Both these standards needed sideband signals on the
PCI bus. Therefore, they were suggested to be used only on mother board
devices and never on add-on boards. I have lost touch with this topic and I
am not very uptodate.
My $0.02
A. Najafi
> ----------
> From: Moonima Kibria[SMTP:mkibria@ics.uci.edu]
> Sent: Sunday, November 08, 1998 4:26 AM
> To: Mailing List Recipients
> Subject: DMA function
>
> Hello all:
>
> I have an ISA core that I am trying to port to PCI platform. This ISA core
> uses host DMA channel to achive data transfer. I understand in PCI
> environment the preferred way to do DMA is: a) need to be a PCI master. b)
> provide all the DMA registers in the master.
>
> Is there any other way to achive this, and be compatible with ISA DMA
> scheme
> (i.e. using host DMA capability) in PCI? How does a PCI card signal the
> host
> DMA controller to intiate DMA transfer? Can any of you shed some lights on
> this issue. Can any of you share your experience of porting any ISA
> functions with DMA to PCI?
>
> Many thanks and best regards,
>
> Khan.
> kkibria@iss-us,com
> (949)587-0628
>
>