Audio cap & Linux version 4.1.3-ti-r6.2

Hi,

I wanted to know if someone has made the audio cap working on 4.1.3 ti r6.2 ?

my config :

/* audio rev b /
mcasp0_pins_audio_revb: mcasp0_pins_audio_revb {
pinctrl-single,pins = <
0x1ac (PIN_INPUT_PULLUP | MUX_MODE0) /
BONE_P9_25 mcasp0_ahclkx, OUTPUT | MODE0, Codec MCLK /
0x190 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /
BONE_P9_31 mcasp0_aclkx, INPUT | MODE0, Codec BCLK /
0x194 (PIN_OUTPUT_PULLUP | MUX_MODE0) /
BONE_P9_29 mcasp0_fsx, INPUT | MODE0, Codec WCLK /
0x198 0x20 /
BONE_P9_30 mcasp0_axr0, INPUT | MODE0, Codec DOUT /
0x19c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /
BONE_P9_28 mcasp0_axr2, INPUT | MODE2, Codec DIN */

;
};

I rewrote the audio cape rev b late last week..

https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-BONE-AUDI-02-00A0.dts

Regards,

Thx,

But I can’t see anything at the output :

I’ve enabled debug on two files, and i can see :

[ 3.315883] snd-soc-dummy snd-soc-dummy: ASoC: dai register snd-soc-dummy #1
[ 3.315898] snd-soc-dummy snd-soc-dummy: ASoC: Registered DAI ‘snd-soc-dummy-dai’
[ 3.315913] snd-soc-dummy snd-soc-dummy: ASoC: Registered codec ‘snd-soc-dummy’
[ 3.315925] snd-soc-dummy snd-soc-dummy: ASoC: platform register snd-soc-dummy
[ 3.315941] snd-soc-dummy snd-soc-dummy: ASoC: Registered platform ‘snd-soc-dummy’
[ 6.625830] davinci-mcasp 48038000.mcasp: ASoC: dai register 48038000.mcasp #1
[ 6.625871] davinci-mcasp 48038000.mcasp: ASoC: Registered DAI ‘48038000.mcasp’
[ 6.626052] davinci-mcasp 48038000.mcasp: ASoC: Registered platform ‘48038000.mcasp’
[ 6.898534] tlv320aic3x-codec 2-0018: ASoC: dai register 2-0018 #1
[ 6.898557] tlv320aic3x-codec 2-0018: ASoC: Registered DAI ‘tlv320aic3x-hifi’
[ 6.898580] tlv320aic3x-codec 2-0018: ASoC: Registered codec ‘tlv320aic3x-codec.2-0018’
[ 7.375455] asoc-simple-card sound: ASoC: binding davinci-mcasp.0-tlv320aic3x-hifi at idx 0
[ 7.376572] asoc-simple-card sound: ASoC: probe AudioCape Rev B dai link 0 late -2
[ 7.376599] asoc-simple-card sound: ASoC: probe AudioCape Rev B dai link 0 late -1
[ 7.376616] asoc-simple-card sound: ASoC: probe AudioCape Rev B dai link 0 late 0
[ 7.376633] asoc-simple-card sound: ASoC: probe AudioCape Rev B dai link 0 late 1
[ 7.376648] asoc-simple-card sound: ASoC: probe AudioCape Rev B dai link 0 late 2

but when I start playing an audio file, nothing happen.

On i2c2, I can see that the beagleboneblack write some data to the tlv320aic3104, but on MCLK, nothing … .

I’m trying to find where i should put debug ^^ .

Just to be sure, to disable the hdmi audio ( not the video ), is it enough ? =>

hdmi {
compatible = “ti,tilcdc,slave”;
i2c = <&i2c0>;
pinctrl-names = “default”, “off”;
pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
status = “okay”;
};

fb {
compatible = “ti,am33xx-tilcdc”;
reg = <0x4830e000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <36>;
ti,hwmods = “lcdc”;
ti,allow-non-reduced-blanking-modes;
ti,allow-non-audio-modes;
};

boot with:

dtb=am335x-boneblack-nhdmi-overlay.dtb

and hdmi (video) will still work..

and then you can load the audio cape..

Regards,

Thx, but I’m working without overlay : #include “am335x-bone-common-no-capemgr.dtsi”

So, I was wondering if putting :

fb {
compatible = “ti,am33xx-tilcdc”;
reg = <0x4830e000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <36>;
ti,hwmods = “lcdc”;
ti,allow-non-reduced-blanking-modes;
ti,allow-non-audio-modes;
};

is enough ?

no... that just allows drm to use a mode that doesn't support audio...

if you don't want hdmi audio, you need to disable... lots of things..

run meld/diff against:

https://github.com/RobertCNelson/dtb-rebuilder/blob/4.1-ti/src/arm/am335x-boneblack-hdmi-overlay.dts
https://github.com/RobertCNelson/dtb-rebuilder/blob/4.1-ti/src/arm/am335x-boneblack-nhdmi-overlay.dts

and it'll become obvious..

hdmi-overlay = video + audio
nhdmi-overlay = video

Regards,

looks like that my config is good … But I can’t figure out, where i’m blocked …

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) <b>_/*_</b>
[694](http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L694) <b> _* Called by ALSA when the PCM substream is prepared, can set format, sample_</b>
[695](http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L695) <b> _* rate, etc.  This function is non atomic and can be called multiple times,_</b>
[696](http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L696) <b> _* it can refer to the runtime info._</b>
[697](http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L697) <b> _*/_</b>
[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.prepare(… )

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

Hi Micka

looks like that my config is good ..... But I can't figure out, where i'm blocked ....

I am having the same problem with 4.1.0

Do you know who call the function soc_pcm_prepare ?

http://lxr.free-electrons.com/source/sound/soc/soc-pcm.c#L698

I will try and repeat the same exercise but it will be early next week.

Hi,

Thx to this site :
http://www.programdevelop.com/4763397/

I understand better the flow of ALSA :slight_smile:

this is my new log :

[ 84.688930] snd_soc_dai_digital_mute 0 0
[ 84.689000] snd_pcm_playback_ioctl
[ 84.689032] snd_pcm_playback_ioctl1 3229892899
[ 84.689057] call snd_pcm_common_ioctl1
[ 84.689084] snd_pcm_common_ioctl1 3229892899
[ 84.689109] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.689624] snd_pcm_playback_ioctl
[ 84.689664] snd_pcm_playback_ioctl1 3228057875
[ 84.689689] call snd_pcm_common_ioctl1
[ 84.689715] snd_pcm_common_ioctl1 3228057875
[ 84.695219] snd_pcm_playback_ioctl
[ 84.695269] snd_pcm_playback_ioctl1 3229892899
[ 84.695296] call snd_pcm_common_ioctl1
[ 84.695322] snd_pcm_common_ioctl1 3229892899
[ 84.695347] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.695400] snd_pcm_playback_ioctl
[ 84.695427] snd_pcm_playback_ioctl1 3229892899
[ 84.695451] call snd_pcm_common_ioctl1
[ 84.695476] snd_pcm_common_ioctl1 3229892899
[ 84.695499] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.696332] snd_pcm_playback_ioctl
[ 84.696364] snd_pcm_playback_ioctl1 3229892899
[ 84.696389] call snd_pcm_common_ioctl1
[ 84.696414] snd_pcm_common_ioctl1 3229892899
[ 84.696438] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.696474] snd_pcm_playback_ioctl
[ 84.696501] snd_pcm_playback_ioctl1 3229892899
[ 84.696524] call snd_pcm_common_ioctl1
[ 84.696548] snd_pcm_common_ioctl1 3229892899
[ 84.696572] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.729249] snd_pcm_playback_ioctl
[ 84.729289] snd_pcm_playback_ioctl1 3229892899
[ 84.729303] call snd_pcm_common_ioctl1
[ 84.729317] snd_pcm_common_ioctl1 3229892899
[ 84.729329] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.729355] snd_pcm_playback_ioctl
[ 84.729368] snd_pcm_playback_ioctl1 3229892899
[ 84.729378] call snd_pcm_common_ioctl1
[ 84.729390] snd_pcm_common_ioctl1 3229892899
[ 84.729401] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.729787] snd_pcm_playback_ioctl
[ 84.729801] snd_pcm_playback_ioctl1 3229892899
[ 84.729812] call snd_pcm_common_ioctl1
[ 84.729824] snd_pcm_common_ioctl1 3229892899
[ 84.729835] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.729852] snd_pcm_playback_ioctl
[ 84.729865] snd_pcm_playback_ioctl1 3229892899
[ 84.729875] call snd_pcm_common_ioctl1
[ 84.729887] snd_pcm_common_ioctl1 3229892899
[ 84.729898] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.731902] snd_pcm_playback_ioctl
[ 84.731914] snd_pcm_playback_ioctl1 3229892899
[ 84.731925] call snd_pcm_common_ioctl1
[ 84.731937] snd_pcm_common_ioctl1 3229892899
[ 84.731947] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.731962] snd_pcm_playback_ioctl
[ 84.731974] snd_pcm_playback_ioctl1 3229892899
[ 84.731984] call snd_pcm_common_ioctl1
[ 84.731996] snd_pcm_common_ioctl1 3229892899
[ 84.732007] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.732314] snd_pcm_playback_ioctl
[ 84.732328] snd_pcm_playback_ioctl1 3229892899
[ 84.732338] call snd_pcm_common_ioctl1
[ 84.732350] snd_pcm_common_ioctl1 3229892899
[ 84.732361] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.732375] snd_pcm_playback_ioctl
[ 84.732387] snd_pcm_playback_ioctl1 3229892899
[ 84.732398] call snd_pcm_common_ioctl1
[ 84.732410] snd_pcm_common_ioctl1 3229892899
[ 84.732421] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.734421] snd_pcm_playback_ioctl
[ 84.734434] snd_pcm_playback_ioctl1 3229892899
[ 84.734444] call snd_pcm_common_ioctl1
[ 84.734456] snd_pcm_common_ioctl1 3229892899
[ 84.734467] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.734481] snd_pcm_playback_ioctl
[ 84.734493] snd_pcm_playback_ioctl1 3229892899
[ 84.734503] call snd_pcm_common_ioctl1
[ 84.734515] snd_pcm_common_ioctl1 3229892899
[ 84.734526] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.734826] snd_pcm_playback_ioctl
[ 84.734839] snd_pcm_playback_ioctl1 3229892899
[ 84.734850] call snd_pcm_common_ioctl1
[ 84.734862] snd_pcm_common_ioctl1 3229892899
[ 84.734872] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.734887] snd_pcm_playback_ioctl
[ 84.734899] snd_pcm_playback_ioctl1 3229892899
[ 84.734909] call snd_pcm_common_ioctl1
[ 84.734921] snd_pcm_common_ioctl1 3229892899
[ 84.734932] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.734974] snd_pcm_playback_ioctl
[ 84.734987] snd_pcm_playback_ioctl1 3229892899
[ 84.734998] call snd_pcm_common_ioctl1
[ 84.735010] snd_pcm_common_ioctl1 3229892899
[ 84.735020] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.735034] snd_pcm_playback_ioctl
[ 84.735046] snd_pcm_playback_ioctl1 16706
[ 84.735057] call snd_pcm_common_ioctl1
[ 84.735068] snd_pcm_common_ioctl1 16706
[ 84.735080] --SNDRV_PCM_IOCTL_START:
[ 84.735096] snd_pcm_do_start
[ 84.735108] soc_pcm_trigger
[ 84.737206] snd_pcm_playback_ioctl
[ 84.737221] snd_pcm_playback_ioctl1 3229892899
[ 84.737232] call snd_pcm_common_ioctl1
[ 84.737244] snd_pcm_common_ioctl1 3229892899
[ 84.737254] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.737280] snd_pcm_playback_ioctl
[ 84.737293] snd_pcm_playback_ioctl1 3229892899
[ 84.737303] call snd_pcm_common_ioctl1
[ 84.737315] snd_pcm_common_ioctl1 3229892899
[ 84.737326] SNDRV_PCM_IOCTL_SYNC_PTR:
[ 84.747620] snd_pcm_playback_ioctl
[ 84.747647] snd_pcm_playback_ioctl1 3229892899
[ 84.747660] call snd_pcm_common_ioctl1
[ 84.747673] snd_pcm_common_ioctl1 3229892899
[ 84.747685] SNDRV_PCM_IOCTL_SYNC_PTR:

From what I see, it looks like that the alsa lib is calling multiple time SNDRV_PCM_IOCTL_SYNC_PTR

And it’s not calling SNDRV_PCM_IOCTL_WRITEN_FRAMES …

Robert, I’m having issue to find out the version of alsa lib, do you have any idea ?

Maybe I’m going to compile it

Ok,

some news :

I find out where it’s blocked :

I’ve compiled the alsa-lib, and I’ve put a lot of printf.

In the file pcm.c, in the function : snd_pcm_wait_nocheck

This line : err_poll = poll(pfd, npfds, timeout);

is called, but I never go out …

my trace show :

struct pollfd *pfd: 0xbed64780, npfds: 1, timeout: -1

I don’t know if it’s ok ?

Micka,

Hey, did you manage to make it work?
I have beaglebone ubuntu 4.1.18-ti-r56.

if I put BB-BONE-AUDI-00A0-02.dts from https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-BONE-AUDI-02-00A0.dts
my cape is not detected but if i put this device tree:

http://elinux.org/BBB_Audio_Cape_RevB_Getting_Started

it is detected:

**** List of PLAYBACK Hardware Devices ****
card 0: EVM [DA830 EVM], device 0: AIC3X tlv320aic3x-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

but cannot play:

ubuntu ~/microphone $ aplay bonjour.wav
Playing WAVE ‘bonjour.wav’ : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
aplay: set_params:1145: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 16000
PERIOD_TIME: 125000
PERIOD_SIZE: 2000
PERIOD_BYTES: 4000
PERIODS: 4
BUFFER_TIME: 500000
BUFFER_SIZE: 8000
BUFFER_BYTES: 16000
TICK_TIME: 0

please help.
thanks

I'm actually at this state now, too (kernel 4.4.6 r7), but I haven't looked into making sure the ALSA (asound) config is correct yet.