Subject: DMA operation
To: None <tech-kern@netbsd.org>
From: Nitin P Mahajan <Nitin@soc-soft.com>
List: tech-net
Date: 03/17/2004 19:01:36
Hi!

	I have to do a DMA transfer for an Ethernet controller which has
its own DMA engine.
The frame descriptor is the third structure given below and the actual
data to be transmitted is pointed by BuffData field.=20
To the DMA controller I have to give the address of the TxFD and it
itself gets the pointer for BuffData and starts transmitting and
meanwhile uses/fills some control information also in the other fields.

What I am not trying to understand is , do I need to allocate and create
DMA map for the complete TxFD from the DMA frame work or I need to
create DMA map only for the the Buffer pointed by BuffData from the DMA
framework using the bus_dma framework.
Can anyone please help me out of this confusion?

Thanking in advance=20

Regards

-Nitin =09

struct FDesc {
	volatile uint32_t FDNext;
	volatile uint32_t FDSystem;
	volatile uint32_t FDStat;
	volatile uint32_t FDCtl;
};

/* Buffer descripter */
struct BDesc {
	volatile uint32_t BuffData;
	volatile uint32_t BDCtl;
};

/* Frame descriptor of packet ready for transmission .*/
struct TxFD {
	struct FDesc fd;
	struct BDesc bd;
	struct BDesc unused;
};