我已经将 AIC3100与 NXP imx8mm 配合使用、我已将 AIC3100与 Linux 内核集成在一起的编解码器驱动程序。 现在编解码器寄存成功、但是当我尝试使用 tinyalsa 播放 WAV 文件时、它给出了"播放文件时出错"的错误。
器件树配置:
sound-tlv320aic31xx {
+兼容="简单音频卡";
+ simple-audio-card、name ="tlv320aic31xx-codec";
+ simple-audio 卡、格式="I2S";
+ simple-audio-card、frame-master =<&cpudai2>;
+ simple-audio 卡、bitclock-master =<&cpudai2>;
+/*简单音频卡,MCLK-FS=<256>;*/
+ simple-audio 卡、小工具=
+"耳机"、"耳机插孔";
+简单音频卡、路由=
+"耳机插孔"、"HPL"、
+"耳机插孔"、"HPR";
+
+ cpudai2:simple-audi-Card,cpu {
+ sound-dai =<&SAI2>;
+};
+
+简单音频卡,编解码器{
+ sound-dai =<&tlv320aic31xx>;
+ Clocks =<&CODEC_osc>;
+};
+};
+
+时钟{
+ CODEC_osc:AUD_MCLK{
+ compatible ="固定时钟";
+#clock-cells =<0>;
+时钟频率=<24000000>;
+ clock-output-names ="CODEC-MCLK";
+};
+};
SAI2时钟:
@@-118,8+194,9 @@&SAI2{
pinctrl-0 =<&pinctrL_SAI2>;
分配的时钟=<&clk IMX8MM_CLK_SAI2>;
分配的 clock-parents =<&clk IMX8MM_AUDIO_PLL1_OUT>
分配的时钟速率=<24576000>;
-状态="已禁用";
+状态="可以";
};
编解码器能够在 I2C 节点中检测到:
tlv320aic31xx:编解码器@18 {
+ compatible ="ti, TLV320AIC3100";
+ reg =<0x18>;
+#sound-Da-cells =<0>;
+/*稳压器*/
+ AVDD-SUPPLY =<_3p3v>;
+ HPVDD-SUPPLY =<_3p3v>;
+ SPRVDD-SUPPLY =<_5V>;
+ SPLVDD-SUPPLY =<_5V>;
+ DVDD-SUPPLY =<_1p8v>;
+ IOVDD-SUPPLY =<_1p8v>;
+
+ ai31xx-micbias-vg =<1>;
+};
问题:
root@picoimx8mm:/home/ubuntu # dmesg | grep tlv
[ 40.059531] tlv320aic31xx-codec 1-0018:aic31xx_set_di_SYSCLK:不支持的频率24576000
[ 40.088026] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-hifi 上的 SND_SoC_DAI_SET_SYSCLK 出错:-22
[ 40.121946] tlv320aic31xx-codec 1-0018:simple-card:set_SysClk 错误
[ 40.138078] 300200000.SAI-tlv320aic31xx-hifi:ASOC:在30020000.SAI-tlv320aic31xx-hifi 上发生 SND_SoC_LINK_INIT 错误:-22
[40.168804] ASOC-simple-card: probe of sound-tlv320aic31xx failed, with error - 22
根@picoimx8mm:/home/ubuntu
在外部将24MHZ 振荡器馈送到编解码器 MCLK、但是编解码器驱动程序不支持。
sound/45V soc codecs/tlv320aic31xx.c (无24Mhz 支持)
/*通过将 ADC 分频器配置为0、可以禁用 ADC 分频器*/
静态常量结构 aic31xx_rate_divs aic31xx_divs[]={
/* MCLK/p 速率 PLL:j d dosr ndac aors nadc mAdc */
/* 8k 速率*/
{12000,000,8000、81921920128、 48、2128、48、2}、
{12000,000,8000、81921920128、 32、3128、32、3}、
{12500,000,8000、78648643128、 48、2128、48、2}、
/* 11.025k 速率*/
{12000,000,11025、75265264128、 32、2128、32、2}、
{12000,000,11025、84674672128、 24、3128、24、3}、
{12500,000,11025、72252253128、 32、2128、32、2}、
/* 16k 速率*/
{12000,000,16000、81921920128、 24、2128、24、2}、
{12000,000,16000、81921920128、 16、3128、16、3}、
{12500,000,16000、78648643128、 24、2128、24、2}、
/* 22.05k 速率*/
{12000,000,22050、75265264128、 16、2128、16、2}、
{12000,000,22050、84674672128、 12、3128、12、3}、
{12500,000,22050、72252253128、 16、2128、16、2}、
/* 32k 速率*/
{12000,000,32000、81921920128、 12、2128、12、2}、
{12000,000,32000、81921920128、 8、3128、8、3}、
{12500,000,32000、78648643128、 12、2128、12、2}、
/* 44.1k 速率*/
{12000,000,44100、75265264128、 8、2128、8、2}、
{12000,000,44100、84674672128、 6、3128、6、3}、
{12500,000,44100、72252253128、 8、2128、8、2}、
/* 48K 速率*/
{12000,000,48000、81921920128、 8、2128、8、2}、
{12000,000,48000、76800、96、 5、4、96、5、4}、
{12500,000,48000、78648643128、 8、2128、8、2}、
/* 88.2k 速率*/
{12000,000,88200、75264、64、 8、2、64、
TI 驱动程序 TLV320AIC3100编解码器驱动程序不提供24MHZ 支持请为我们提供支持以解决该问题?
此致、
桑塔纳库马尔斯