添加ALC5640音频配置
base:
firefly3399pro-jd4
音频芯片ALC5640
系统Ubuntu18.04
linux kernel version:4.4.194
应公司需求,在自制的低板上+firefly3399pro核心板系统需要使用音频播放声音,发现音频芯片是ALC5640,
- 查看系统声卡信息:
firefly@firefly:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiphdmi [rockchip,hdmi], device 0: ff8a0000.i2s-i2s-hifi i2s-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: rockchiprk809co [rockchip,rk809-codec], device 0: ff890000.i2s-rk817-hifi rk817-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0`在这里插入代码片`
无rt5460声卡
2. 查看系统是有相应驱动源码的,并且make menuconfig后相应的配置也是yes的;
3. 查看设备树文件并添加配置:参考原理图
rt5640-sound {
//status = "okay";
compatible = "simple-audio-card";
simple-audio-card,format = "i2s";
simple-audio-card,name = "rockchip,rt5640-codec";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,widgets =
"Microphone", "Mic Jack",
"Headphone", "Headphone Jack";
simple-audio-card,routing =
"Mic Jack", "MICBIAS1",
"IN2P", "Mic Jack",
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR";
simple-audio-card,cpu {
sound-dai = <&i2s0>;
};
simple-audio-card,codec {
sound-dai = <&rt5640>;
};
};
.......
&i2c1 {
// status = "okay";
// i2c-scl-rising-time-ns = <300>;
// i2c-scl-falling-time-ns = <15>;
rt5640: rt5640@1c {
status = "okay";
#sound-dai-cells = <0>;
compatible = "realtek,rt5640";
reg = <0x1c>;
clocks = <&cru SCLK_I2S_8CH_OUT>;
clock-names = "mclk";
realtek,in1-differential;
// pinctrl-names = "default";
// pinctrl-0 = <&rt5640_hpcon &i2s_8ch_mclk>;
// hp-con-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
// io-channels = <&saradc 4>;
// hp-det-adc-value = <500>;
};
.......
&i2s0 {
#sound-dai-cells = <0>;
status = "okay";
};
注意下i2s0记得使能
4. 验证:
firefly@firefly:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: rockchiphdmi [rockchip,hdmi], device 0: ff8a0000.i2s-i2s-hifi i2s-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: rockchiprk809co [rockchip,rk809-codec], device 0: ff890000.i2s-rk817-hifi rk817-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: rockchiprt5640c [rockchip,rt5640-codec], device 0: ff880000.i2s-rt5640-aif1 rt5640-aif1-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
测试播放音频:
root@firefly:/usr/share/sounds/alsa# aplay -Dplughw:2,0 Front_Center.wav
Playing WAVE 'Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono