自制的t113开发板,现状alse已经能识别到了wm8960,
[ 1.718394] ALSA device list:
[ 1.721733] #0: audiocodec
[ 1.724960] #1: snddmic
[ 1.727893] #2: wlf,wm8960
但是无法播放音频,aplay 报错。
root@TinaLinux:/mnt/UDISK# aplay -Dhw:2,0 -vvv ./3R2.wav
Playing WAVE './3R2.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Hardware PCM card 2 'wlf,wm8960' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
tstamp_type : MONOTONIC
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 24000
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
appl_ptr : 0
hw_ptr : 0
Max peak (12000 samples): 0x00000001 # 0%
Max peak (12000 samples): 0x00000001 # 0%
Max peak (12000 samples): 0x00000001 # 0%
Max peak (12000 samples): 0x00000001 # 0%
Max peak (64 samples): 0x00000001 # 0%
aplay: pcm_write:1980: write error: I/O error
设备树
&twi2 {
clock-frequency = <400000>;
pinctrl-0 = <&twi2_pins_a>;
pinctrl-1 = <&twi2_pins_b>;
pinctrl-names = "default", "sleep";
dmas = <&dma 45>, <&dma 45>;
dma-names = "tx", "rx";
status = "okay";
wm8960: wm8960@1a {
#sound-dai-cells = <0>;
compatible = "wlf,wm8960";
reg = <0x1a>;
clock-names = "mclk";
wlf,shared-lrclk;
};
};
&daudio2 {
mclk_div = <0x01>;
frametype = <0x00>;
tdm_config = <0x01>;
sign_extend = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x80>;
slot_width_select = <0x20>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&daudio2_pins_a &daudio2_pins_b &daudio2_pins_c>;
pinctrl-1 = <&daudio2_pins_d>;
pinctrl_used = <0x1>;
status = "okay";
};
&sounddaudio2 {
status = "okay";
compatible = "sunxi,simple-audio-card";
simple-audio-card,name = "wlf,wm8960";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&daudio2_master>;
simple-audio-card,frame-master = <&daudio2_master>;
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Line", "Line In",
"Line", "Line Out",
"Speaker", "Speaker",
"Headphone", "Headphone Jack";
simple-audio-card,routing =
"Headphone Jack", "HP_L",
"Headphone Jack", "HP_R",
"Speaker", "SPK_LP",
"Speaker", "SPK_LN",
"Speaker", "SPK_RP",
"Speaker", "SPK_RN",
"LINPUT1", "Mic Jack",
"LINPUT3", "Mic Jack",
"RINPUT1", "Mic Jack",
"RINPUT2", "Mic Jack";
simple-audio-card,cpu {
sound-dai = <&daudio2>;
};
daudio2_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
sound-dai = <&wm8960>;
};
};
daudio2_pins_a: daudio2@0 {
/* I2S_PIN: MCLK, BCLK, LRCK */
pins = "PB7", "PB5", "PB6";
function = "i2s2";
drive-strength = <100>;
bias-disable;
};
daudio2_pins_b: daudio2@1 {
/* I2S_PIN: DIN0 */
pins = "PB3";
function = "i2s2_din";
drive-strength = <100>;
bias-disable;
};
daudio2_pins_c: daudio2@2 {
/* I2S_PIN: DOUT0 */
pins = "PB4";
function = "i2s2_dout";
drive-strength = <100>;
bias-disable;
};
daudio2_pins_d: daudio2_sleep@0 {
pins = "PB7", "PB6", "PB5", "PB4", "PB3";
function = "io_disabled";
drive-strength = <100>;
bias-disable;
};
经过查询得知说是音频通路没有设置对,
向各位大连求教,如何设置音频通路
最近编辑记录 cjia (2024-04-21 14:13:42)
离线
amixer 命令读出通路配置,然后对照wm8960手册设置。
最快的办法还是找一下其他开发板现成的配置
又排查了一下,发现是i2s_dout没有输出,其他的mclk sck,bclk,都有输出,现在也不知道该如何解决。
离线