工具与软件:
我正在 尝试使用 IMX93QS93 Linux 板测试 TLV320DAC3100EVM-U 套件。 您可以在这里看到、我能够检测到它:
root@qs93-5210:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: tlv320aic31xxco [tlv320aic31xx-codec], device 0: 443b0000.sai-tlv320dac31xx-hifi tlv320dac31xx-hifi-0 [443b0000.sai-tlv320dac31xx-hifi tlv320dac31xx-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0
和、
root@qs93-5210:~# aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=tlv320aic31xxco
tlv320aic31xx-codec, 443b0000.sai-tlv320dac31xx-hifi tlv320dac31xx-hifi-0
Default Audio Device
-但当我试图玩正弦波,我得到了以下错误:
root@qs93-5210:~# speaker-test -D plughw:0,0 -c 2 -r 48000 -F S16_LE -t sine -f 500 speaker-test 1.2.8 Playback device is plughw:0,0 Stream parameters are 48000[ 247.600154] tlv320aic31xx-codec 1-0018: aic31xx_setup_pll: Sample rate (48000) and format not supported Hz, S16_LE, 2 ch[ 247.610738] tlv320aic31xx-codec 1-0018: ASoC: error at snd_soc_dai_hw_params on tlv320dac31xx-hifi: -22 annels Sine wave[ 247.621511] 443b0000.sai-tlv320dac31xx-hifi: ASoC: error at __soc_pcm_hw_params on 443b0000.sai-tlv320dac31xx-hifi: -22 rate is 500.0000Hz Rate set to 48000Hz (requested 48000Hz) Buffer size range from 32 to 131072 Period size range from 16 to 8184 Using max buffer size 131072 Periods = 4 Unable to set hw params for playback: Invalid argument Setting of hwparams failed: Invalid argument
-我也看到过以下相关的内核消息:
alsa-lib /usr/src/debug/alsa-lib/1.2.8-r0/src/ucm/main.c:1541:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -2 No state is present for card tlv320aic31xxco alsa-lib /usr/src/debug/alsa-lib/1.2.8-r0/src/ucm/main.c:1541:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -2 Found hardware: "simple-card" "" "" "" "" Hardware is initialized using a generic method
-这里是我的设备树:
audio_clk: audio-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <12288000>;
};
codec_audio: sound {
compatible = "simple-audio-card";
simple-audio-card,name = "tlv320aic31xx-codec";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&codec_dai>;
simple-audio-card,frame-master = <&codec_dai>;
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Line", "Line In",
"Line", "Line Out",
"Headphone", "Headphone Jack",
"Speaker", "Speaker Out";
simple-audio-card,routing =
"Line In", "AIN1", // Line input route
"Line Out", "HPL", // Line out to left headphone
"Line Out", "HPR", // Line out to right headphone
"Headphone Jack", "HPL",
"Headphone Jack", "HPR";
status = "okay";
cpu_dai: simple-audio-card,cpu {
sound-dai = <&sai1>;
};
codec_dai: simple-audio-card,codec {
sound-dai = <&audio_codec>;
clocks = <&audio_clk>;
};
};
};
&sai1 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
status = "okay";
assigned-clocks = <&clk IMX93_CLK_SAI1>;
assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
assigned-clock-rates = <12288000>;
clocks = <&clk IMX93_CLK_SAI1_IPG>,
<&clk IMX93_CLK_AUDIO_PLL>,
<&clk IMX93_CLK_DUMMY>, <&clk IMX93_CLK_DUMMY>,
<&clk IMX93_CLK_AUDIO_PLL>;
clock-names = "bus", "mclk1", "mclk2", "mclk3", "pll";
};
&lpi2c2 {
clock-frequency = <400000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpi2c2>;
status = "okay";
// Add TLV320AIC3100 audio codec node
audio_codec: codec@18 {
compatible = "ti,tlv320dac3100";
pinctrl-names = "default";
reg = <0x18>;
#sound-dai-cells = <0>;
reset-gpio = <&gpio4 9 GPIO_ACTIVE_LOW>;
HPVDD-supply = <®_vdd_3v3>;
AVDD-supply = <®_vdd_3v3>;
DVDD-supply = <®_vref_1v8>;
IOVDD-supply = <®_vdd_3v3>;
SPRVDD-supply = <®_vdd_3v3>;
SPLVDD-supply = <®_vdd_3v3>;
status = "okay";
};
};
我在努力工作、有人能帮我解决这个问题吗?