工具/软件:
有 两个编解码器 tlv320aic34 连接到 am62x 上的 McASP1、正在使用编解码器的 A 和 B 部分、这意味着我们有四个编解码器共享同一个 CPU Dai、它们也共享同一个用于发送的 AXR0 和用于传输的 AXR1。 引脚 LINE2LP LINE2LM LINE2RP LINE2RM 用于线路输入、LEFT_LOP LEFT_LOM RIGHT_LOP RIGHT_LOM 用于线路输出。 我需要同时在 4 个编解码器上播放/录制。
我的问题是、我是否必须为此硬件配置创建新的机器驱动程序、或者是否可以应用简单的声卡驱动程序? 对我来说、我创建了一个新的机器驱动程序、其中包含一个 CPU Dai 和四个编解码器、CPU 正在执行主操作、它有 8 个插槽、每个 24 位。 数据格式为 DSP_b 但我在播放时听不到任何声音。 在 BCLK、FCLK 和 MCASPI 输出正确的波形时、从编程角度来看似乎运行良好。 我通过 amixer 将左右 DAX MUX 设置为 DAC_L3/R3、以便 DAC 直接连接到 Lineout。 当我播放静音振荡时、线路输出上的输出是一个正弦波、其频率和振幅相对稳定、为 1.18MHZ。 当我播放其他正常 wav 源时、输出是频率和振幅不断变化的正弦波。 频率太高、让人听不清。 请帮助您找出问题所在。
器件树如下:
&{/}{
声音{
compatible =“simple-audio-card-xxx";“;
简单音频卡、名称=“xxx";“;
#address-cells =<1>;
#size-cells =<0>;
简单音频卡、小工具=
“LINE",“,"codec1、"codec1 Line“ Line in“、
“LINE",“,"Codec1、"Codec1 Line“ Line Out“、
“LINE",“,"codec2、"codec2 Line“ Line in“、
“LINE",“,"Codec2、"Codec2 Line“ Line Out“、
“LINE",“,"codec3、"codec3 Line“ Line in“、
“LINE",“,"Codec3、"Codec3 Line“ Line Out“、
“LINE",“,"codec4、"codec4 Line“ Line in“、
“LINE",“,"codec4、"codec4 Line“ Line Out“;
简单音频卡、路由=
“codec1 LINE2L“、“codec1 Line in“、
“Codec1 LINE2R“、“Codec1 Line in“、
“Codec1 Line Out“、“Codec1 LLOut“、
“Codec1 Line Out“、“Codec1 RLOUT“、
“codec2 LINE2L“、“codec2 Line in“、
“Codec2 LINE2R“、“Codec2 Line in“、
“Codec2 Line Out“、“Codec2 LLOut“、
“Codec2 Line Out“、“Codec2 RLOUT“、
“Codec3 LINE2L“、“Codec3 Line in“、
“Codec3 LINE2R“、“Codec3 Line in“、
“Codec3 Line Out“、“Codec3 LLOut“、
“Codec3 Line Out“、“Codec3 RLOUT“、
“codec4 LINE2L“、“codec4 Line in“、
“Codec4 LINE2R“、“Codec4 Line in“、
“Codec4 Line Out“、“Codec4 LLOut“、
“Codec4 Line Out“、“Codec4 RLOUT“;
简单音频卡、Dai-link@0{
reg =<0>;
格式=“dsp_b";“;
bitclock-master =<&CPU>;
frame-master =<&cpu>;
位时钟反相;
cpu:cpu{
MCLK-FS =<384>;
sound-dai =<&McASP1>;
时钟=<&AUDIO_refclk0>;
系统时钟方向输出;
dai-tdm-slot-num =<8>;
dai-tdm-slot 宽度=<24>;
dai-tdm-slot-tx-mask =<1 1 1 1 1 1 1 1>;
dai-tdm-sLOT-rx-mask =<1 1 1 1 1 1 1 1>;
};
codec_ports{
编解码器:CODEC@0{
sound-dai =<&audio_codec1>;
dai-tdm-slot-num =<8>;
dai-tdm-slot 宽度=<24>;
dai-tdm-sLOT-tx-mask =<1 1 0 0 0 0>;
dai-tdm-sLOT-rx-mask =<1 1 0 0 0 0>;
};
codec1:编解码器@1{
dai-tdm-slot-num =<8>;
dai-tdm-slot 宽度=<24>;
dai-tdm-slot-tx-mask =<0 0 1 0 0 0>;
dai-tdm-sLOT-rx-mask =<0 0 1 0 0 0>;
sound-dai =<&audio_codec2>;
};
codec2:编解码器@2{
dai-tdm-slot-num =<8>;
dai-tdm-slot 宽度=<24>;
dai-tdm-sLOT-tx-mask =<0 0 0 0 1 0 0>;
dai-tdm-sLOT-rx-mask =<0 0 0 0 1 0 0>;
sound-dai =<&audio_codec3>;
};
codec3:编解码器@3{
dai-tdm-slot-num =<8>;
dai-tdm-slot 宽度=<24>;
dai-tdm-sLOT-tx-mask =<0 0 0 0 0 0 1 1>;
dai-tdm-sLOT-rx-mask =<0 0 0 0 0 0 1 1>;
sound-dai =<&audio_codec4>;
};
};
};
};
};