[HW drivers, especially ATI's] What is "pseudo DMA"?

Michel Dänzer michel at daenzer.net
Sun Apr 16 10:23:57 PDT 2006

On Sun, 2006-04-16 at 14:36 +0200, Alberto Mardegan wrote:
> Hi all!
>   I'm willing to write a kdrive driver for the ATI Imageon (w100), used
> in several handheld devices. At a first glance at the sources, it
> appears to be quite close to a Radeon, so I've started by copying all
> the "ati" directory in a "w100" directory, and I've begun working on it.
> The first problem I've met is that I don't understand what pseudo DMA
> is, and if I really need it. My reference is the reverse-engineered
> AtiCore driver from the Sharp Zaurus; from what I understood, they
> upload the microcode in the FPGA (is this the same thing as the PM4?),
> and then the commands are written into the ring buffer.
> The ring buffer is controlled by registers named mmRBBM_STATUS,
> mmCP_[WR]B_RPTR, nothing else.
> In particular, the registers mmCP_CSQ_APER_PRIMARY and
> mmCP_CSQ_APER_INDIRECT are never used (yet present), while I see the
> kdrive ATI drivers use them a lot, and they seem to be used for pseudo
> DMA.
> Hence I'm a bit confused, on how I should port the driver. Do I need
> pseudo DMA? Is it an improvement (I guess not)?

No, it usually refers to using the DMA mechanisms such as the ring
buffer or indirect buffers but then submitting the actual commands via
direct MMIO register writes. This is usually done when these mechanisms
are needed but their requirements (e.g. kernel support) aren't met,
which sounds like it's not the case for you.

Earthling Michel Dänzer      |     Debian (powerpc), X and DRI developer
Libre software enthusiast    |   http://svcs.affero.net/rm.php?r=daenzer

More information about the xorg mailing list