[alsa-devel] davinci_evm ocp:sound: ASoC: CPU DAI (null) not registered

Caleb Crome caleb at crome.org
Mon Oct 5 16:34:32 CEST 2015


I can't really help here -- my board has an on-board crystal, so I'm
not using the mclk output from the mcasp.

The steps that I used that finally worked for me was:

Start with the audio cape -- that finally worked after I got the pin
mapping right, and with no kernel mods (just dts mods).

Then, step by step, wire over to my board and tweak the kernel & dts
as necessary.

Have you ever had the audio cape up and running?

-c

On Mon, Oct 5, 2015 at 4:38 AM, Rick Mann <rmann at latencyzero.com> wrote:
> UPDATE: I was able to read the McASP registers (turns out, its clocks are only enabled while speaker-test is running, so that's the only time the registers are mapped). AHCLKXCTL is 0x00008000, which corresponds to having it set as an output, not inverted, and clock divide-by-1. This seems wrong. I'm having trouble determining what the AUXCLK that feeds the McASP is, but it's not 12 MHz, and without division, I don't see how to get there. For reference, here are the actual values of the McASP transmit registers:
>
> GBLCTL          0x00000000      Lots of stuff held in reset (red flag?)
> XGBLCTL         0x00000000      Same
> XMASK           0x0000FFFF      I think this masks out 16-bits?
> XFMT            0x00008074      MSB bit first, slot size 16-bit, rot right 16 bits
> AFSXCTL         0x00000100      2-slot TDM (I2S mode)
> ACLKXCTL        0x00000000      Sync xmit, ACLKX is from pin
> AHCLKXCTL       0x00008000      Internal high-freq clock from clock divider
> XTDM            0x00000003      2 TDM slots active
> XINTCTL         0x00000000
> XSTAT           0x0000010C      Xmit error occurred, cur TDM slot is even, xmit clock failure
> XSLOT           0x0000017F      Current time slot (shouldn't this be 0 or 1?)
> XCLKCHK         0x00000000
> XEVTCTL         0x00000000
>
> Thanks,
> Rick
>
> ----
>
> I've been at this for weeks and I'm still unable to get linux to work correctly with my TI codec. This is on a Beaglebone Black running a 4.1.4 kernel (later versions are worse). I've tried multiple versions of the kernel trying to narrow it down. I keep coming back to 4.1.4 as the most recent that at least generates some audio clocks.
>
> The AM335x mcasp0 should be speaking i2s with the tlv320aic3104.
>
> I have my own build from source of the BBB 4.1.4-ti-r9 release (mainline plus TI plus Beaglebone stuff). I've sprinkled some logging around the audio drivers, but so far I don't see much, and I really don't understand how all the pieces fit together.
>
> One thing I found with my logging is the mcasp MCLK (AHCLKXDIV) is never set. I have logging calls in __davinci_mcasp_set_clkdiv() (sound/soc/davinci/davinci-mcasp.c), which is the only code I could find that sets the McASP clock, and it's never called. I tried to use devmem2 to read the registers in the SoC to see if they were set correctly, but I just get a bus error (other reads do work).
>
> Errors in dmesg when I load the device tree overlay for my cape suggest I still don't have something configured correctly (see below).
>
> I'd sure appreciate any insight into these latest issues. Thanks!
>
>
> Symptoms:
>
> MCLK should be 12 MHz, but is 24.00 MHz.
> Buffer underflows when running speaker-test.
>
> Errors to console upon loading cape:
>
> [   38.502299] davinci_evm ocp:sound: ASoC: CPU DAI (null) not registered
> [   38.517917] davinci_evm ocp:sound: snd_soc_register_card failed (-517)
> [   38.530425] davinci_evm ocp:sound: ASoC: CPU DAI (null) not registered
> [   38.536996] davinci_evm ocp:sound: snd_soc_register_card failed (-517)
> [   38.564279] davinci_evm ocp:sound: ASoC: DAPM unknown pin MONO_LOUT
>
> dmesg upon loading cape overlay (https://github.com/JetForMe/podtique/blob/v1/bbb/cape/Podtique1/BB-ENABLE-PRU.dts):
>
> [  568.323587] bone_capemgr bone_capemgr: part_number 'BB-ENABLE-PRU', version 'N/A'
> [  568.323629] bone_capemgr bone_capemgr: slot #4: override
> [  568.323646] bone_capemgr bone_capemgr: Using override eeprom data at slot 4
> [  568.323663] bone_capemgr bone_capemgr: slot #4: 'Override Board Name,00A0,Override Manuf,BB-ENABLE-PRU'
> [  568.323804] bone_capemgr:capemgr_load_slot:1148: bone_capemgr bone_capemgr: slot #4: Requesting part number/version based 'BB-ENABLE-PRU-00A0.dtbo
> [  568.323825] bone_capemgr:capemgr_load_slot:1162: bone_capemgr bone_capemgr: slot #4: Requesting firmware 'BB-ENABLE-PRU-00A0.dtbo' for board-name 'Override Board Name', version '00A0'
> [  568.330369] bone_capemgr:capemgr_load_slot:1171: bone_capemgr bone_capemgr: slot #4: dtbo 'BB-ENABLE-PRU-00A0.dtbo' loaded; converting to live tree
> [  568.341685] gpio-of-helper ocp:gpio_helper: ready
> [  568.344695] bone_capemgr bone_capemgr: slot #4: dtbo 'BB-ENABLE-PRU-00A0.dtbo' loaded; overlay id #0
> [  568.387640] **** RLM davinci-evm.c:480: RLM: clock rate: 12000000
> [  568.387695] snd_soc_core:soc_bind_dai_link:938: davinci_evm ocp:sound: ASoC: binding TLV320AIC3X at idx 0
> [  568.387712] davinci_evm ocp:sound: ASoC: CPU DAI (null) not registered
> [  568.394284] davinci_evm ocp:sound: snd_soc_register_card failed (-517)
> [  568.410560] snd_soc_core:snd_soc_register_codec:3064: tlv320aic3x-codec 2-0018: codec register 2-0018
> [  568.410614] snd_soc_core:snd_soc_register_dais:2590: tlv320aic3x-codec 2-0018: ASoC: dai register 2-0018 #1
> [  568.410633] snd_soc_core:snd_soc_register_dais:2634: tlv320aic3x-codec 2-0018: ASoC: Registered DAI 'tlv320aic3x-hifi'
> [  568.410653] snd_soc_core:snd_soc_register_codec:3138: tlv320aic3x-codec 2-0018: ASoC: Registered codec 'tlv320aic3x-codec.2-0018'
> [  568.421529] **** RLM davinci-evm.c:480: RLM: clock rate: 12000000
> [  568.421588] snd_soc_core:soc_bind_dai_link:938: davinci_evm ocp:sound: ASoC: binding TLV320AIC3X at idx 0
> [  568.421605] davinci_evm ocp:sound: ASoC: CPU DAI (null) not registered
> [  568.431455] **** RLM davinci-mcasp.c:1734: davinci_mcasp_probe
> [  568.431507] base:of_property_match_string:1398: comparing tx with tx
> [  568.431544] base:of_property_match_string:1398: comparing rx with tx
> [  568.431555] base:of_property_match_string:1398: comparing rx with rx
> [  568.431608] base:of_property_match_string:1398: comparing common with tx
> [  568.431621] base:of_property_match_string:1398: comparing common with rx
> [  568.431633] base:of_property_match_string:1398: comparing rx with tx
> [  568.431643] base:of_property_match_string:1398: comparing rx with rx
> [  568.434643] base:of_property_match_string:1398: comparing tx with tx
> [  568.437971] davinci_evm ocp:sound: snd_soc_register_card failed (-517)
> [  568.446651] snd_soc_core:snd_soc_register_dais:2590: davinci-mcasp 48038000.mcasp: ASoC: dai register 48038000.mcasp #1
> [  568.446682] snd_soc_core:snd_soc_register_dais:2634: davinci-mcasp 48038000.mcasp: ASoC: Registered DAI '48038000.mcasp'
> [  568.446840] snd_soc_core:snd_soc_add_platform:2892: davinci-mcasp 48038000.mcasp: ASoC: Registered platform '48038000.mcasp'
> [  568.450046] **** RLM davinci-evm.c:480: RLM: clock rate: 12000000
> [  568.450100] snd_soc_core:soc_bind_dai_link:938: davinci_evm ocp:sound: ASoC: binding TLV320AIC3X at idx 0
> [  568.450425] snd_soc_core:snd_soc_dapm_new_dai_widgets:3494: tlv320aic3x-codec 2-0018: ASoC: adding Playback widget
> [  568.450448] snd_soc_core:snd_soc_dapm_new_dai_widgets:3513: tlv320aic3x-codec 2-0018: ASoC: adding Capture widget
> [  568.450995] snd_soc_core:soc_probe_link_dais:1334: davinci_evm ocp:sound: ASoC: probe Podtique DaVinci EVM dai link 0 late -2
> [  568.451015] snd_soc_core:soc_probe_link_dais:1334: davinci_evm ocp:sound: ASoC: probe Podtique DaVinci EVM dai link 0 late -1
> [  568.451030] snd_soc_core:soc_probe_link_dais:1334: davinci_evm ocp:sound: ASoC: probe Podtique DaVinci EVM dai link 0 late 0
> [  568.451045] snd_soc_core:soc_probe_link_dais:1334: davinci_evm ocp:sound: ASoC: probe Podtique DaVinci EVM dai link 0 late 1
> [  568.451059] snd_soc_core:soc_probe_link_dais:1334: davinci_evm ocp:sound: ASoC: probe Podtique DaVinci EVM dai link 0 late 2
> [  568.451099] davinci_evm ocp:sound: ASoC: DAPM unknown pin MONO_LOUT
> [  568.465530] snd_soc_core:soc_new_pcm:2510: davinci_evm ocp:sound: ASoC: registered pcm #0 AIC3X tlv320aic3x-hifi-0
> [  568.466155] davinci_evm ocp:sound: tlv320aic3x-hifi <-> 48038000.mcasp mapping ok
> [  568.466185] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Right ADC -> Capture
> [  568.466206] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Left ADC -> Capture
> [  568.466226] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Playback -> Right DAC
> [  568.466241] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Playback -> Left DAC
>
> upon starting speaker-test:
>
> [  572.786071] snd_soc_core:soc_pcm_open:535: ASoC: tlv320aic3x-hifi <-> 48038000.mcasp info:
> [  572.786103] snd_soc_core:soc_pcm_open:536: ASoC: rate mask 0x7fe
> [  572.786114] snd_soc_core:soc_pcm_open:538: ASoC: min ch 2 max ch 2
> [  572.786126] snd_soc_core:soc_pcm_open:540: ASoC: min rate 8000 max rate 96000
> [  572.841514] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> ...repeated
> [  574.087162] davinci-mcasp 48038000.mcasp: Transmit buffer underflow
> [  579.135283] snd_soc_core:close_delayed_work:602:  TLV320AIC3X: ASoC: pop wq checking: Playback status: inactive waiting: yes
>
>
> --
> Rick Mann
> rmann at latencyzero.com
>
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


More information about the Alsa-devel mailing list