From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sound4 - Camille Gonnet Subject: Creating a new hardware Date: Wed, 06 Dec 2006 13:00:59 +0100 Message-ID: <4576B0FB.6060402@sound4.biz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0985296884==" Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@lists.sourceforge.net Errors-To: alsa-devel-bounces@lists.sourceforge.net To: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org --===============0985296884== Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit Hello,

If this is not the right place to send these questions, please tell me where I should ask !

I'm creating a company in the sound processing domain. It is for a very specific domain : audio broadcasting (radio FM, AM, TV, internet radio, ...).
The hardware is ready, but I need to finish my programmable logic inside the board.
This card will be able to playback and capture, but this is not only a standard audio board, there is a huge DSP processing inside, and the card can work from connectors audio input/outputs without PCI access at all.

I made my own pci driver to access my DSP, and everything worked fine.
Now I am working on the ALSA driver, but I didn't understand everything, and it doesn't work.
I don't know which way I should take ! Like vx222 (interrupt manual copy) or like rme9652 (.copy operator) ?
As I need to fix my hardware, I would like to make it correct for ALSA.
Here is how it works for the moment, and how I would like to let it !

I have 2 buffers for playback and 2 for capture. They work in the same way.
The 4 are mapped on the same address range.
We can write only on an empty buffer for playback, and read from a ready buffer for capture.
Buffers are toggled automatically (double-buffering) :
    - one hidden sending audio playback , the other for filling thru PCI the playback buffer,
    - one hidden  receiving audio for capture, the other for reading thru PCI the capture buffer.
An interrupt is generated (and stays active) when there is at least one free buffer for playback.
An interrupt is generated (and stays active) when there is at least one ready buffer for capture.
I also have a sticky flag to know if playback has underrun or capture has overrun.
Buffers are very small (85 samples stereo 24 bits on three bytes), and a buffer is considered
    - not empty for playback (ie can be send) when last position is written
    - not ready for capture (ie can be recorded) when last position is read
Buffers are pci resource ioremapped.
I don't have pointer of current hardware position, but I could add one if necessary.

I didn't find informations or forums to help me and I don't know where to search. I am pretty new in Linux development.
Please help me to make my board efficient with ALSA.

Thanks a lot for your help,


Camille Gonnet
Hardware developper, DSP programmer & driver writer.
http://www.sound4.biz

--===============0985296884== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV --===============0985296884== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Alsa-devel mailing list Alsa-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/alsa-devel --===============0985296884==--