[alsa-devel] How to correct params_format on DPCM ?
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Mon Apr 13 06:54:39 CEST 2015
Hi Mark, Lars again
> > > format = fe_cpu->formats & fe_codec->formats &
> > > be_cpu->formats & be_codec->formats;
> >
> > > I guess it is done before hw_param() (?),
> > > or snd_soc_instantiate_card() timing. but I couldn't find it.
> > > It is very confusable/complex. which function is doing this ?
> >
> > My point is that it's not happening and you're going to need to add that
> > support. It's slightly more complex than your picture as most things
> > that do DPCM can rewrite the format so we normally don't want to
> > constrain with the back end constraints. Like I said in my eariler
> > reply I think we want to change things so that if there's no front end
> > constraint we take the back end one instead.
In my debug, I guess key function is dpcm_init_runtime_hw()
But, I would like to know about concept about this.
If my understanding is correct, the information which userland
can get is setuped in .open
In non-DPCM case
soc_pcm_open()
- soc_pcm_init_runtime_hw() /* setup runtime->hw */
In DPCM case
dpcm_fe_dai_open()
- dpcm_fe_dai_startup()
- dpcm_be_dai_startup()
- soc_pcm_open() /* don't care runtime->hw */
- soc_pcm_open() /* don't care runtime-hw */
- dpcm_set_fe_runtime()
- dpcm_init_runtime_hw() /* setup runtime->hw */
I guess my issue will be solved if I added code here which cares BE.
But, I wounder non-DPCM case, runtime->hw has cpu/codec merged information
in soc_pcm_init_runtime_hw().
But, DPCM cases, it cares only cpu information. why it doesn't care codec ?
If my understanding was correct, corrent image is...
non-DPCM
hw = cpu & codec
DPCM
hw = fe_cpu
I guess DPCM should be...
FE.hw = fe_cpu & fe_codec
BE.hw = be_cpu & be_codec
And, if no FE constraint, final image will be
hw = FE.hw & BE.hw
But, am I misunderstanding ?
Best regards
---
Kuninori Morimoto
More information about the Alsa-devel
mailing list