[alsa-devel] Kernel Device Tree entries for simple-audio-card
Rick Mann
rmann at latencyzero.com
Fri Oct 2 11:55:04 CEST 2015
> On Oct 1, 2015, at 08:38 , Caleb Crome <caleb at crome.org> wrote:
>
> On Tue, Sep 29, 2015 at 11:41 AM, Rick Mann <rmann at latencyzero.com> wrote:
>> Ugh, sorry. Here you go:
>>
>> https://github.com/JetForMe/podtique/blob/v1/bbb/cape/Podtique1/BB-ENABLE-PRU.dts
>>
>> Sent from my iPhone
>>
>> On Sep 29, 2015, at 07:08, Caleb Crome <caleb at crome.org> wrote:
>>
>> Now I have a working MCLK, and I see clocking on BCLK and WCLK, but the
>> rates are questionable. MCLK is 24 MHz (even though in the DTS it's set to
>> 12 MHz); that might be okay.
>
> It's definitely not obvious why you'd be getting 24MHz instead of 12.
> Wait. Are you getting exactly 24 MHz, or about 24 MHz? in
> davinci-evm.c there are some .sysclk settings set to 24576000 as in
> the da830_snd_soc_card_crvdata.
It's pretty exactly 24.00 MHz, ±0.02 MHz.
I noticed I get these errors (this is 4.1.4-ti-r9 from the Beaglebone Black Debian "console" distro. For reference, here's my overlay: https://github.com/JetForMe/podtique/blob/v1/bbb/cape/Podtique1/BB-ENABLE-PRU.dts). Since I set the clock rate in the sound node, and snd_soc_register_card() is failing (-517 is EPROBE_DEFER, "Driver requests probe retry"), I wonder if the DTS-speified clock rate isn't getting passed through to the tlv320aic.
...
[ 133.516593] davinci_evm sound: ASoC: CPU DAI (null) not registered
[ 133.522815] davinci_evm sound: snd_soc_register_card failed (-517)
...
[ 133.607805] davinci_evm sound: ASoC: DAPM unknown pin MONO_LOUT
Now, I don't specify MONO_LOUT anywhere in my DTS, but it is in tlv320aic3x.c and davinci-evm.c.
Here's the complete dmesg upon loading the device tree:
[ 133.424928] bone_capemgr bone_capemgr: part_number 'BB-ENABLE-PRU', version 'N/A'
[ 133.424975] bone_capemgr bone_capemgr: slot #4: override
[ 133.424993] bone_capemgr bone_capemgr: Using override eeprom data at slot 4
[ 133.425011] bone_capemgr bone_capemgr: slot #4: 'Override Board Name,00A0,Override Manuf,BB-ENABLE-PRU'
[ 133.425143] bone_capemgr:capemgr_load_slot:1148: bone_capemgr bone_capemgr: slot #4: Requesting part number/version based 'BB-ENABLE-PRU-00A0.dtbo
[ 133.425164] 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'
[ 133.426741] bone_capemgr:capemgr_load_slot:1171: bone_capemgr bone_capemgr: slot #4: dtbo 'BB-ENABLE-PRU-00A0.dtbo' loaded; converting to live tree
[ 133.440820] gpio-of-helper ocp:gpio_helper: ready
[ 133.448385] pruss_uio 4a300000.pruss: pins are not configured from the driver
[ 133.460959] bone_capemgr bone_capemgr: slot #4: dtbo 'BB-ENABLE-PRU-00A0.dtbo' loaded; overlay id #0
[ 133.516558] snd_soc_core:soc_bind_dai_link:938: davinci_evm sound: ASoC: binding TLV320AIC3X at idx 0
[ 133.516593] davinci_evm sound: ASoC: CPU DAI (null) not registered
[ 133.522815] davinci_evm sound: snd_soc_register_card failed (-517)
[ 133.533356] snd_soc_core:snd_soc_register_codec:3064: tlv320aic3x-codec 2-0018: codec register 2-0018
[ 133.533406] snd_soc_core:snd_soc_register_dais:2590: tlv320aic3x-codec 2-0018: ASoC: dai register 2-0018 #1
[ 133.533424] snd_soc_core:snd_soc_register_dais:2634: tlv320aic3x-codec 2-0018: ASoC: Registered DAI 'tlv320aic3x-hifi'
[ 133.533442] snd_soc_core:snd_soc_register_codec:3138: tlv320aic3x-codec 2-0018: ASoC: Registered codec 'tlv320aic3x-codec.2-0018'
[ 133.546622] base:of_property_match_string:1398: comparing tx with tx
[ 133.546675] base:of_property_match_string:1398: comparing rx with tx
[ 133.546686] base:of_property_match_string:1398: comparing rx with rx
[ 133.546739] base:of_property_match_string:1398: comparing common with tx
[ 133.546751] base:of_property_match_string:1398: comparing common with rx
[ 133.546763] base:of_property_match_string:1398: comparing rx with tx
[ 133.546773] base:of_property_match_string:1398: comparing rx with rx
[ 133.550537] base:of_property_match_string:1398: comparing tx with tx
[ 133.556638] snd_soc_core:snd_soc_register_dais:2590: davinci-mcasp 48038000.mcasp: ASoC: dai register 48038000.mcasp #1
[ 133.556671] snd_soc_core:snd_soc_register_dais:2634: davinci-mcasp 48038000.mcasp: ASoC: Registered DAI '48038000.mcasp'
[ 133.556830] snd_soc_core:snd_soc_add_platform:2892: davinci-mcasp 48038000.mcasp: ASoC: Registered platform '48038000.mcasp'
[ 133.606784] snd_soc_core:soc_bind_dai_link:938: davinci_evm sound: ASoC: binding TLV320AIC3X at idx 0
[ 133.607118] snd_soc_core:snd_soc_dapm_new_dai_widgets:3494: tlv320aic3x-codec 2-0018: ASoC: adding Playback widget
[ 133.607139] snd_soc_core:snd_soc_dapm_new_dai_widgets:3513: tlv320aic3x-codec 2-0018: ASoC: adding Capture widget
[ 133.607704] snd_soc_core:soc_probe_link_dais:1334: davinci_evm sound: ASoC: probe Podtique DaVinci EVM dai link 0 late -2
[ 133.607724] snd_soc_core:soc_probe_link_dais:1334: davinci_evm sound: ASoC: probe Podtique DaVinci EVM dai link 0 late -1
[ 133.607738] snd_soc_core:soc_probe_link_dais:1334: davinci_evm sound: ASoC: probe Podtique DaVinci EVM dai link 0 late 0
[ 133.607752] snd_soc_core:soc_probe_link_dais:1334: davinci_evm sound: ASoC: probe Podtique DaVinci EVM dai link 0 late 1
[ 133.607766] snd_soc_core:soc_probe_link_dais:1334: davinci_evm sound: ASoC: probe Podtique DaVinci EVM dai link 0 late 2
[ 133.607805] davinci_evm sound: ASoC: DAPM unknown pin MONO_LOUT
[ 133.627880] snd_soc_core:soc_new_pcm:2510: davinci_evm sound: ASoC: registered pcm #0 AIC3X tlv320aic3x-hifi-0
[ 133.631201] davinci_evm sound: tlv320aic3x-hifi <-> 48038000.mcasp mapping ok
[ 133.631252] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Right ADC -> Capture
[ 133.631273] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Left ADC -> Capture
[ 133.631294] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Playback -> Right DAC
[ 133.631308] snd_soc_core:snd_soc_dapm_link_dai_widgets:3570: tlv320aic3x-codec 2-0018: Playback -> Left DAC
>
>>
>>
>> # speaker-test -r 22050 -c 2 -f 1000 -F S16_LE -t sine -s 1 -D hw:0,0
>>
>>
>> WCLK is 11.88 kHz, and it is pulses (DSP mode), rather than high for left,
>> low for right for each channel's word. BCLK is 379.5 kHz.
>
> Sounds like you're not in I2S mode, you must be in DSP or
> left-justified mode. That's set in your eavinci-evm.c in the
> snd_soc_dai_link structure under the field .dai_fmt. Most of them are
> set to SND_SOC_DAIFMT_DSP_B.
Interesting you mention that. It in fact does set it to DSP mode. Someone else on the list said for stereo, DSP and I2S modes were the same, and I didn't challenge him on that. I don't know how the code that reads the mcasp0 overlay (and thus reads the op-mode=0 part) communicates with the tlv320aic3x.c code to set the correct i2c register, but seems to not be doing that correctly.
I think it's time I built that tree myself and dropped in some printk() statements. :-/
--
Rick Mann
rmann at latencyzero.com
More information about the Alsa-devel
mailing list