HI everyone, I'm trying to test the sound output with the driver tlv320aic3104.
I'm stuck somewhere and I can't figure it out !
I Put a lot of printk and I don't know where to put other printk.
Do you know who call the function soc_pcm_prepare ?
693 http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L693 */**694 http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L694 * * Called by ALSA when the PCM substream is prepared, can set format, sample*695 http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L695 * * rate, etc. This function is non atomic and can be called multiple times,*696 http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L696 * * it can refer to the runtime info.*697 http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L697 * */*698 http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L698 static int soc_pcm_prepare http://lxr.free-electrons.com/ident?i=soc_pcm_prepare(struct snd_pcm_substream http://lxr.free-electrons.com/ident?i=snd_pcm_substream *substream)
Looks like that it's ALSA, but I can't find where ?
I tried to find a line in the kernel calling the function: rtd->ops http://lxr.free-electrons.com/ident?i=ops.prepare(.... )
can't find it ....
my trace : [ 550.269286] ASoC: tlv320aic3x-hifi <-> 48038000.mcasp info: [ 550.269363] ASoC: rate mask 0x7fe [ 550.269398] ASoC: min ch 2 max ch 2 [ 550.269431] ASoC: min rate 8000 max rate 96000 [ 550.275809] tlv aic3x_hw_params [ 550.275862] snd_soc_read: snd soc component read: ret 0 reg 9 val 64 [ 550.275934] snd_soc_component_write reg 9 val 64 [ 550.275987] snd_soc_component_write reg 101 val 0 [ 550.276030] snd_soc_component_write reg 7 val 10 [ 550.276063] snd_soc_component_write reg 2 val 0 [ 550.289260] snd_soc_component_write reg 11 val 1 [ 550.289339] snd_soc_component_write reg 4 val 32 [ 550.289375] snd_soc_component_write reg 5 val 30 [ 550.289407] snd_soc_component_write reg 6 val 0 [ 550.289952] soc_pcm_prepare [ 550.290003] snd_soc_component_write reg 10 val 0 [ 550.290043] soc_dapm_stream_event 1 [ 550.290107] soc_dapm_stream_event: dapm_power_widgets:start dapm_power_widgets 1 [ 550.290150] trace_snd_soc_dapm_start [ 550.290176] dapm reset [ 550.290226] trace_snd_soc_dapm_widget_power [ 550.290257] trace_snd_soc_dapm_widget_power [ 550.290284] trace_snd_soc_dapm_widget_power [ 550.290311] trace_snd_soc_dapm_widget_power [ 550.290339] trace_snd_soc_dapm_widget_power [ 550.290370] trace_snd_soc_dapm_widget_power [ 550.290395] trace_snd_soc_dapm_widget_power [ 550.290423] trace_snd_soc_dapm_widget_power [ 550.290448] trace_snd_soc_dapm_widget_power [ 550.290477] trace_snd_soc_dapm_widget_power [ 550.290503] trace_snd_soc_dapm_widget_power [ 550.290531] trace_snd_soc_dapm_widget_power [ 550.290557] trace_snd_soc_dapm_widget_power [ 550.290582] trace_snd_soc_dapm_widget_power [ 550.290608] trace_snd_soc_dapm_widget_power [ 550.290634] trace_snd_soc_dapm_widget_power [ 550.290659] trace_snd_soc_dapm_widget_power [ 550.290686] trace_snd_soc_dapm_widget_power [ 550.290712] trace_snd_soc_dapm_widget_power [ 550.290738] trace_snd_soc_dapm_widget_power [ 550.290765] trace_snd_soc_dapm_widget_power [ 550.290791] trace_snd_soc_dapm_widget_power [ 550.290817] trace_snd_soc_dapm_widget_power [ 550.290842] trace_snd_soc_dapm_widget_power [ 550.290879] dap set bias to off [ 550.290910] dapm_pre_sequence_async off [ 550.290937] snd soc dapm set bias level 1 [ 550.290962] trace_snd_soc_bias_level_start 1 [ 550.290988] trace_snd_soc_bias_level_done 1 [ 550.291011] dapm_pre_sequence_async onsnd soc dapm set bias level 2 [ 550.291047] trace_snd_soc_bias_level_start 2 [ 550.291073] trace_snd_soc_bias_level_done 2 [ 550.291318] dapm_pre_sequence_async off [ 550.291354] snd soc dapm set bias level 1 [ 550.291381] trace_snd_soc_bias_level_start 1 [ 550.291405] soc set bias level [ 550.291432] tlv set bias level 1 [ 550.291456] tlv standby [ 550.291480] tlv set power [ 550.300504] snd_soc_read: snd soc component read: ret 0 reg 5 val 30 [ 550.300583] snd_soc_read: snd soc component read: ret 0 reg 6 val 0 [ 550.300631] snd_soc_component_write reg 5 val 30 [ 550.301103] snd_soc_component_write reg 6 val 0 [ 550.301577] trace_snd_soc_bias_level_done 1 [ 550.301611] dapm_pre_sequence_async onsnd soc dapm set bias level 2 [ 550.301650] trace_snd_soc_bias_level_start 2 [ 550.301675] soc set bias level [ 550.301701] tlv set bias level 2 [ 550.301724] tlv prepare [ 550.301757] trace_snd_soc_bias_level_done 2 [ 550.301864] dapm event WILL_PMU [ 550.301897] dapm event WILL_PMU [ 550.301923] dapm event WILL_PMU [ 550.301948] dapm event WILL_PMU [ 550.301972] dapm event WILL_PMU [ 550.301997] dapm event WILL_PMU [ 550.302021] dapm event WILL_PMU [ 550.302045] dapm event WILL_PMU [ 550.302069] dapm event WILL_PMU [ 550.302094] dapm event WILL_PMU [ 550.302119] dapm event WILL_PMU [ 550.302143] dapm event WILL_PMU [ 550.302168] dapm event WILL_PMU [ 550.302192] dapm event WILL_PMU [ 550.302216] dapm event WILL_PMU [ 550.302240] dapm event WILL_PMU [ 550.302265] dapm event WILL_PMU [ 550.302289] dapm event WILL_PMU [ 550.302313] dapm event WILL_PMU [ 550.302337] dapm event WILL_PMU [ 550.302362] dapm event WILL_PMU [ 550.302386] dapm event WILL_PMU [ 550.302410] dapm event WILL_PMU [ 550.302435] dapm event WILL_PMU [ 550.302460] dapm sq run 1 [ 550.302489] dapm sq run 1 [ 550.302523] dapm event PRE_PMU [ 550.302550] dapm event PRE_PMD [ 550.302575] dapm event PRE_PMU [ 550.302599] dapm event PRE_PMD [ 550.302623] dapm event PRE_PMU [ 550.302647] dapm event PRE_PMD [ 550.302671] dapm event PRE_PMU [ 550.302696] dapm event PRE_PMD [ 550.302720] dapm event PRE_PMU [ 550.302744] dapm event PRE_PMD [ 550.302769] dapm event PRE_PMU [ 550.302793] dapm event PRE_PMD [ 550.302817] dapm event POST_PMU [ 550.302842] dapm event POST_PMD [ 550.302867] dapm event POST_PMU [ 550.302891] dapm event POST_PMD [ 550.302915] dapm event POST_PMU [ 550.302939] dapm event POST_PMD [ 550.302964] dapm event POST_PMU [ 550.302988] dapm event POST_PMD [ 550.303012] dapm event POST_PMU [ 550.303036] dapm event POST_PMD [ 550.303060] dapm event POST_PMU [ 550.303084] dapm event POST_PMD [ 550.303110] dapm event PRE_PMU [ 550.303134] dapm event PRE_PMD [ 550.303159] dapm event POST_PMU [ 550.303183] dapm event POST_PMD [ 550.303209] dapm event PRE_PMU [ 550.303234] dapm event PRE_PMD [ 550.303258] dapm event PRE_PMU [ 550.303282] dapm event PRE_PMD [ 550.303306] dapm event PRE_PMU [ 550.303331] dapm event PRE_PMD [ 550.303355] dapm event PRE_PMU [ 550.303379] dapm event PRE_PMD [ 550.303403] dapm event POST_PMU [ 550.303427] dapm event POST_PMD [ 550.303451] dapm event POST_PMU [ 550.303475] dapm event POST_PMD [ 550.303499] dapm event POST_PMU [ 550.303524] dapm event POST_PMD [ 550.303548] dapm event POST_PMU [ 550.303572] dapm event POST_PMD [ 550.303598] dapm event PRE_PMU [ 550.303622] dapm event PRE_PMD [ 550.303647] dapm event PRE_PMU [ 550.303671] dapm event PRE_PMD [ 550.304162] dapm event POST_PMU [ 550.304199] dapm event POST_PMD [ 550.304226] dapm event POST_PMU [ 550.304250] dapm event POST_PMD [ 550.304278] dapm event PRE_PMU [ 550.304303] dapm event PRE_PMD [ 550.304328] dapm event PRE_PMU [ 550.304352] dapm event PRE_PMD [ 550.304377] dapm event PRE_PMU [ 550.304401] dapm event PRE_PMD [ 550.304426] dapm event PRE_PMU [ 550.304450] dapm event PRE_PMD [ 550.304474] dapm event POST_PMU [ 550.304499] dapm event POST_PMD [ 550.304523] dapm event POST_PMU [ 550.304547] dapm event POST_PMD [ 550.304572] dapm event POST_PMU [ 550.304596] dapm event POST_PMD [ 550.304620] dapm event POST_PMU [ 550.304644] dapm event POST_PMD [ 550.304670] dapm event PRE_PMU [ 550.304695] dapm event PRE_PMD [ 550.305156] dapm event POST_PMU [ 550.305191] dapm event POST_PMD [ 550.305219] dapm event PRE_PMU [ 550.305245] dapm event PRE_PMD [ 550.305696] dapm event POST_PMU [ 550.305730] dapm event POST_PMD [ 550.305757] dapm event PRE_PMU [ 550.305782] dapm event PRE_PMD [ 550.306275] dapm event POST_PMU [ 550.306312] dapm event POST_PMD [ 550.306341] dapm event PRE_PMU [ 550.306366] dapm event PRE_PMD [ 550.306849] dapm event POST_PMU [ 550.306885] dapm event POST_PMD [ 550.306914] dapm event PRE_PMU [ 550.306939] dapm event PRE_PMD [ 550.317926] dapm event POST_PMU [ 550.317958] dapm event POST_PMD [ 550.317977] dapm event PRE_PMU [ 550.317991] dapm event PRE_PMD [ 550.318401] dapm event POST_PMU [ 550.318422] dapm event POST_PMD [ 550.318439] dapm event PRE_PMU [ 550.318454] dapm event PRE_PMD [ 550.318467] dapm event POST_PMU [ 550.318480] dapm event POST_PMD [ 550.318496] dapm_power_widgets run all the bias changes in parrallel [ 550.321470] dapm_post_sequence_async prepare 1 [ 550.321498] snd soc dapm set bias level 3 [ 550.321513] trace_snd_soc_bias_level_start 3 [ 550.321527] soc set bias level [ 550.321543] tlv set bias level 3 [ 550.321555] tlv bias on [ 550.321570] trace_snd_soc_bias_level_done 3 [ 550.321649] dapm_power_widgets dapm_power_widgets [ 550.321666] DAPM sequencing finished [ 550.321680] trace_snd_soc_dapm_done [ 550.321695] pcm prepare call snd_soc_dai_digital_mute [ 550.321711] snd_soc_dai_digital_mute 0 0 [ 550.321725] tlv aic3x_mute [ 550.321739] snd_soc_read: snd soc component read: ret 0 reg 43 val 168 [ 550.321772] snd_soc_read: snd soc component read: ret 0 reg 44 val 168 [ 550.321798] snd_soc_component_write reg 43 val 40 [ 550.322224] snd_soc_component_write reg 44 val 40 [ 550.322630] pcm prepare call snd_soc_dai_digital_mute for cpu_dai [ 550.322651] snd_soc_dai_digital_mute 0 0