T507 音频调试
一、音频系统
ASOC音频系统由Codec Platform 和 Machine组成。单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作
1、音频设备
在T5平台中,最多可以存在8个音频设备,分别是:
• daudio0
• daudio1(默认用于HDMI音频播放)
• daudio2
• daudio3
• audiocodec(line out)
• DMIC
• SPDIF
• AHUB
2、硬件框图
二、硬件连接
T507 内置audiocodec模块,audiocodec仅支持Lineout输出。
R_LINE_IN_P和L_LINE_IN_P直接连到了audio的LINEOUTR和LINEOUTL
三、软件配置
1、内核配置
(1) 在内核目录下输入如下命令:
cd kernel/linux-4.9/make ARCH=arm64 menuconfig
(2)使能音频模块
Device Drivers –><*> Sound card support –><*> Advanced Linux Sound Architecture –><*> ALSA for SoC audio support –><*> Allwinner SoC Audio support –>
2、board.dts
/* 内置音频编解码器配置 */
&codec {adcdrc_cfg = <0x00>; // 关闭ADC DRCadchpf_cfg = <0x00>; // 关闭ADC高通滤波dacdrc_cfg = <0x00>; // 关闭DAC DRCdachpf_cfg = <0x00>; // 关闭DAC高通滤波fmin_gain = <0x03>; // FM输入增益linein_gain = <0x03>; // Linein输入增益digital_vol = <0x00>; // 数字音量(0dB)lineout_vol = <0x1a>; // Lineout输出音量(0x1a = 26/31)pa_ctl_level = <0x00>; // PA控制电平pa_msleep_time = <0x78>; // PA使能延时ramp_func_used = <0x01>; // 启用音量渐变avcc-supply = <®_aldo2>; // 模拟部分供电(1.8V)status = "okay"; // 启用编解码器
};/* 内置编解码器声卡 */
&sndcodec {status = "okay"; // 启用内置编解码器声卡
};/* 关闭不必要的音频接口 */
&ahub_daudio0 {status = "disabled"; // 不需要外部DAI
};&snddaudio0 {status = "disabled"; // 禁用外部DAI声卡
};
3、驱动
sun50iw9-codec.c:目录位于sound/soc/sunxi中,负责audiocodec音频codec的部分,注册为codec,codec_dai模型。
四、测试
查看音频设备:
音频参数配置
配置如下:
播放
aplay -D hw:0,0 /usr/share/alsa/syfs-chenhuilin.wav
问题1:播放声音很小
输出混音器设置中,左声道使用了DACL和LINEINL,右声道使用了DACR和LINEINR。这意味着DAC和LINEIN的信号都被混合到了输出,但 LINEIN 没有输入信号,导致混合后信号弱。但这里我们只希望DAC输出,所以应该关闭LINEIN到输出混音器的开关。
重新配置如下:
播放正常!!!!!