[alsa-devel] A few general questions (my first driver): Marian MARC4

Joshua Boyd jdboyd at jdboyd.net
Fri Jun 20 08:07:49 CEST 2008

I have a Marian Marc4 card.  I have the documentation for this card,  
which has been on their web site for quite some time.  I want to  
write a driver for this card.  This is my first ALSA driver, but it  
isn't my first kernel driver.

Anyway, I can't google any mention of this family of cards on this  
mailing list, which seems a bit odd.  I did find some mentions on  
linux-audio-developer, about the documentation, but no mention there  
of prior work on this family.

However, I did find a MARC8 driver on sourceforge (http:// 
sourceforge.net/projects/marc8-driver).  Does anyone know anything  
about this?  I'm vary curious about why I've never seen it mentioned  
here before.  The license is listed as GPL.  The Marian Marc8 was  
formerly known as the Sek'd Siena, but again I can't find any real  
mention of that in the archives.  Does anyone have any idea why the  
MARC8 wasn't mentioned and merged into the main ALSA sources?

I did go ahead and add some Marian product information to the support  
matrix on the alsa wiki, including a link to the sourceforge page.

My plan is to add MARC4 to the MARC8 driver.  The register layout is  
basically the same, adjusted for the 4 versus 8 channels.  Both cards  
use the same PLX chip.  The biggest difference is in the layout of  
the play/capture RAM area, which is because of the 4 versus 8  
channels.  It seems silly to make two separate drivers.  I would like  
to see my results eventually merged into the main ALSA.  I'm hoping  
that if I get these into the main tree that I would then be able to  
get some support from Marian in the form of clearance (and a card) to  
do the Trace D4 and D4 SRC, and possibly even documentation and  
hardware for the UCON CX.

Anyway, moving on to my specific questions.

First, is it appropriate to put support for two device IDs in the  
same file?  The examples I tried looking at ended up being a single  
device id, differentiated by a subvendor ID.

Second, is it wrong to use the same structures, but with an enum  
field in the main snd_marc device structure that points out which  
card I'm talking about, then else where switching on that enum to  
figure out how many channels I need to operate on?

Third, once I get this functional on my MARC4 card, how hard is it  
likely to be to get it accepted?  I don't expect low standards for  
code that is accepted, but I'd like to have some idea how picky the  
process may be.

More information about the Alsa-devel mailing list