[alsa-devel] Correct use of ak4114.c?

Takashi Iwai tiwai at suse.de
Mon Apr 2 11:28:56 CEST 2007


At Sun, 01 Apr 2007 23:09:01 +0200 (CEST),
dustin at seznam.cz wrote:
> 
> Hi Takashi
> >  
> >  > BTW, what is difference between professional and spdif pcms? Is it
> >  > only about digital format (like professional/consumer in iecset)?
> >  > Sorry for stupid questions, but I do not know which pcm to use. 
> >  
> >  VT1724 has seperate DMAs for the analog and the SPDIF streams while 
> >  ICE1712 has only one for both (mixed up).
> >  
> >  Confusingly the analog PCM is named "professional" there because it
> >  was called so in ice1712 driver, and vt1724 driver is derived from
> >  ice1712 driver.  ICE1712 has two analog connections modes, consumer
> >  mode (usually via ac97) and professional mode (via i2s).
> > 
> 
> 
> Uff, that is a lot of background knowledge. Would it be possible to
> put this explanation into ice1724.c code? It would definitely help
> newcomers. Thanks a lot. 

A patch is welcome ;)


> >  > Would I get to playback/capture substreams e.g. using
> >  > ice->pcm_pro->streams[0/1]->substream at the end of
> >  > snd_vt1724_probe? I understand I could probably find this
> >  > information in alsa documentation.
> >  
> >  The build_controls callback is called after creation of PCMs.
> >  So, you can call it there.  The proposed fix for Juli is below.
> >  
> >  Can any Juli users test the latest HG version with this patch?
> >  
> 
> I tested the code with prodigy192 and my current ak4114 code. I used
> ice->pcm stream instead of ice->pcm_pro  
> since I guess that is the one for SPDIF data. 
> 
> Probing the module produced error -16 (EBUSY). Analysis showed
> duplicity of control item  
> SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT) defined in ice1724.c
> (snd_vt1724_spdif_default) as well as ak4114.c . Upon removing the
> control from ak4114.c (and adjusting AK4114_CONTROLS) the module
> loaded correctly and all the new PCM controls were available in
> amixer. 
> 
> I think the problem is that the  ak4114 support assumes both SPDIF
> OUT and IN functions are used, whereas ice1724 support assumes
> SPDIF-OUT is handled by ice1724, leaving only SPDIF-IN to other
> chips. At least with Prodigy192 + MI/ODI/O that is the case in
> reality too (ak4114 spdif-out capability is not used, signal goes
> from ice1724 directly to output buffers on the add-on card). 
> 
> What solution would you suggest? I guess a solution would be to
> check for duplicity before adding new controls, or perhaps continue
> after hitting error EBUSY in snd_ctl_add. 

Then the problem is that it passed the playback substream to
snd_ak4114_build().  I guess passing NULL there instead should work.


Takashi


More information about the Alsa-devel mailing list