openvortex-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openvortex-dev] DMA questions


From: Manuel Jander
Subject: Re: [Openvortex-dev] DMA questions
Date: Sun, 13 Apr 2003 01:51:19 -0400
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030327 Debian/1.3-4

Hi Phil,

I would really recommend to take a look at the ALSA code. It is just as Jeff said.

Regarding the DMA buffers.
The current ALSA driver uses a little bit more complex method, to enhance the 4 DMA buffer table to an arbitrary length, by switching the DMA addresses on each page crossing interrupt. This allows more control over the period length (in ALSA terminology) and period count. This process is 100% transparent. The upper layer of the driver (ALSA) doesn't need any knowledge about this. It envolves a little overhead, but i think that it isnt a big deal, compared
to the flexibility gain.

I wrote a Scatter Gather variant of the ALSA driver some weeks ago, but the result was rather bad. Its hard to get different fragment (period) sizes to get aligned correctly (i never acomplished this),
and it introduces more code. It was simply a very disgusting experience.
I just throwed that into the trash can, and moved on with linear buffers, and it just works much better with much less code. Implementing different fragment (period) sizes is trivial in this case.

You should also know that there are many DMA channels. The AU8820 has 48 and the AU8830
and AU8810 have 96 DMA channels.

I uploaded the latest ALSA patch to
http://docencia.mat.utfsm.cl/~mjander/aureal/patch-au88x0-0.92c.bz2

I managed to record 16 bit audio, after fiddling with some bits of vortex_src_setupchannel(), but the
"chip 'n dale" problem (high pitch audio) still persists.

I tried to upload my entire ALSA tree to savannah, but i got only write access denied errors (?) Is it possible to access the CVS server with the "pserver" option or do i need "gserver" ?

Best Regards

Manuel Jander







reply via email to

[Prev in Thread] Current Thread [Next in Thread]