[alsa-devel] How to specify data format if playback/capture were different ?

Lars-Peter Clausen lars at metafoo.de
Wed May 22 10:43:02 CEST 2013


On 05/22/2013 03:12 AM, Kuninori Morimoto wrote:
> 
> Hi again
> 
>>>> But, ak4554 case, data formats are
>>>>  playback : SND_SOC_DAIFMT_RIGHT_J
>>>>  capture  : SND_SOC_DAIFMT_LEFT_J
>>>> and, it can't exchange this data format.
>>>>
>>>> CPU driver should set these information for ak4554 when playback/capture.
>>>>
>>>> Then, how to specify these data format on ALSA SoC ?
>>>
>>> You can add two different DAIs one for playback one for capture. Then you
>>> can specify the format for each.
> 
> 1 more question.
> 
> On ak4554 side driver, I guess, it will be
> 
> struct snd_soc_dai_driver ak4554_playback_dai = {
> 	.name = "ak4554-playback",
> 	.playback = {
> 		...
> 	},
> }
> 
> struct snd_soc_dai_driver ak4554_captrure_dai = {
> 	.name = "ak4554-captrure",
> 	.capture = {
> 		...
> 	},
> };

You'll want to put both DAIs into an array which you can pass to
snd_soc_register_codec, but otherwise it looks ok.

> 
> But, ak4554 needs .symmetric_rates between playback <--> capture.
> Is it possible ?
> Or, am I misunderstanding ?

Yes, that won't work, you'd have to implement this by hand.

- Lars


More information about the Alsa-devel mailing list