请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TLV320AIC3104 工具/软件:Linux
您好!
我尝试在我自己的主板上运行带有imx6ul处理器的tlv320aic3104编解码器。 在DTS中,我描述如下:
i2c2{
Clock_frequency =<10万>;
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_i2c2>;
状态="正常";
Clock_frequency =<10万>;
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_i2c2>;
状态="正常";
编解码器:tlv320aic3x@18 {
兼容="ti,tlv320aic3x";
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_gPI_key>;
REG =<0x18>;
GPIO重置=<&GPIO5 0 GPIO主动_低>;
/*
时钟=<&CLKS IMX6UL_CLK_SAI2>;
Clock-names ="MCLK";
*/
状态="正常";
};
};
兼容="ti,tlv320aic3x";
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_gPI_key>;
REG =<0x18>;
GPIO重置=<&GPIO5 0 GPIO主动_低>;
/*
时钟=<&CLKS IMX6UL_CLK_SAI2>;
Clock-names ="MCLK";
*/
状态="正常";
};
};
内核版本4.1 .15。
驱动程序报告成功注册:
12月25日09:44:35 MYD-y6ul14x14 user.debug内核:of_GET_NAMED_gpiod_FLAGS:节点'/ SoC / AIPS-bus @ 210万 / i2c @ 021a4000的解析'GPIO重置'属性
/ tlv320aic3x @ 18 [0]'-状态(0)
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018 SUPPLY IOVDD not found,using mummy regulator (使用虚拟调节器时未找到IOVDD)
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018 SUPPLY DVDD not found, using mummy regulator
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018未找到SUPPLY AVDD,正在使用虚拟调节器
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018 supply DRVDD not found,using mummy regulator (未找到DRVDD源,使用虚拟调节器)
12月25日09:44:35 MYD-y6ul14x14 user.debug内核:I2C-core:driver [tlv320aic3x-codec] registered
12月25日09:44:35 MYD-y6ul14x14 user.info内核:FSL - ASRC 203.4万。asrc:驱动程序已注册
但在i2c总线上不再执行任何操作。
/ tlv320aic3x @ 18 [0]'-状态(0)
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018 SUPPLY IOVDD not found,using mummy regulator (使用虚拟调节器时未找到IOVDD)
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018 SUPPLY DVDD not found, using mummy regulator
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018未找到SUPPLY AVDD,正在使用虚拟调节器
12月25日09:44:35 MYD-y6ul14x14 user.warn内核:1-0018 supply DRVDD not found,using mummy regulator (未找到DRVDD源,使用虚拟调节器)
12月25日09:44:35 MYD-y6ul14x14 user.debug内核:I2C-core:driver [tlv320aic3x-codec] registered
12月25日09:44:35 MYD-y6ul14x14 user.info内核:FSL - ASRC 203.4万。asrc:驱动程序已注册
但在i2c总线上不再执行任何操作。
我没有看到任何访问IC的尝试(内核配置中的CONFIG_I2C_DEBUG*= y)。
ALSA报告:
12月25日09:44:35 MYD-y6ul14x14 user.info内核:ALSA设备列表:
12月25日09:44:35 MYD-y6ul14x14 user.info内核:未找到声卡。
12月25日09:44:35 MYD-y6ul14x14 user.info内核:ALSA设备列表:
12月25日09:44:35 MYD-y6ul14x14 user.info内核:未找到声卡。
其他设备(例如ds1307)成功使用的i2c总线。
如果从DTS中删除编解码器描述,i2cdetect还定义地址0x18处的响应。
我尝试调试tlv320aic3x.c驱动程序:
和SAI2 {
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_SAI2>;
Assigned-Clocks =<&CLKS IMX6UL_CLK_SAI2_SEL>,
<&CLKS IMX6UL_CLK_SAI2>;
assigned-clock-parents =<& CLKS IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-Rates =<0>,<1228.8万>;
状态="正常";
};
如果从DTS中删除编解码器描述,i2cdetect还定义地址0x18处的响应。
我尝试调试tlv320aic3x.c驱动程序:
aic3x_i2c_prob()过程已成功执行(return =0),但未调用aic3x_probe()过程。
我尝试用不同的方式描述DTS中的声节点,但得到了相同的结果:
变量1:
声音{
兼容="简单音频卡";
simple-audio-card,name ="OnboardTLV320";
simile-audio-card,format ="I2S";
simple-audio-card,bitclock-master =<&dailink_master>;
simple-audio-card,frame-master =<&dailink_master>;
简单音频卡,小工具=
"麦克风","麦克风插孔",
"线路","线路输入",
"线路","线路输出",
"扬声器","扬声器",
"耳机","耳机插孔";
simple-audio-card,routing=
"线路输出","LLOOUt",
"线路输出","RLOUT",
"扬声器","SPOP",
"扬声器","SPOM",
"耳机插孔","HPLOUT",
"耳机插孔","HPROUT",
"MIC3L","麦克风插孔",
"MIC3R","Mic插孔",
"MIC插孔","Mic Bias",
LINE1L,Line In,
"LINE1R","线路输入";
简单音频卡,CPU{
SOUND DAI =<&SAI2>;
};
dailink_master:simple音频卡,codec {
sound-dai =<&codec>;
Clocks =<&tlv320_MCLK>;
};
变量2:
声音{
兼容="ti,tlv320aic3x";
CPU-DAI =<&SAI2>;
GPR =<&GPR>;
TI,audio-codec =<&codec>;
TI,ASRC控制器=<&AURC>;
TI,codec-clock-rate =<1200万>;
TI,音频路由=
"耳机插孔","HPLOUT",
"耳机插孔","HPROUT",
LINE1L,Line In,
"LINE1R","线路输入";
};
SAI描述:
我尝试用不同的方式描述DTS中的声节点,但得到了相同的结果:
变量1:
声音{
兼容="简单音频卡";
simple-audio-card,name ="OnboardTLV320";
simile-audio-card,format ="I2S";
simple-audio-card,bitclock-master =<&dailink_master>;
simple-audio-card,frame-master =<&dailink_master>;
简单音频卡,小工具=
"麦克风","麦克风插孔",
"线路","线路输入",
"线路","线路输出",
"扬声器","扬声器",
"耳机","耳机插孔";
simple-audio-card,routing=
"线路输出","LLOOUt",
"线路输出","RLOUT",
"扬声器","SPOP",
"扬声器","SPOM",
"耳机插孔","HPLOUT",
"耳机插孔","HPROUT",
"MIC3L","麦克风插孔",
"MIC3R","Mic插孔",
"MIC插孔","Mic Bias",
LINE1L,Line In,
"LINE1R","线路输入";
简单音频卡,CPU{
SOUND DAI =<&SAI2>;
};
dailink_master:simple音频卡,codec {
sound-dai =<&codec>;
Clocks =<&tlv320_MCLK>;
};
变量2:
声音{
兼容="ti,tlv320aic3x";
CPU-DAI =<&SAI2>;
GPR =<&GPR>;
TI,audio-codec =<&codec>;
TI,ASRC控制器=<&AURC>;
TI,codec-clock-rate =<1200万>;
TI,音频路由=
"耳机插孔","HPLOUT",
"耳机插孔","HPROUT",
LINE1L,Line In,
"LINE1R","线路输入";
};
SAI描述:
和SAI2 {
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_SAI2>;
Assigned-Clocks =<&CLKS IMX6UL_CLK_SAI2_SEL>,
<&CLKS IMX6UL_CLK_SAI2>;
assigned-clock-parents =<& CLKS IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-Rates =<0>,<1228.8万>;
状态="正常";
};
内核配置:
$ grep -i snd .config |grep -v ^#
config_snd=y
config_snd_timer=y
config_snd_pcm=y
CONFIG_SND_DMANGINE_PCM=y
config_snd_HWDEP=y
config_snd_RAWMIDI=y
config_snd_compress_offload=y
config_snd_jack=y
config_snd_support_old_api=y
config_snd_verbose_procfs=y
config_snd_verbose_PRINTT=y
config_snd_debug=y
config_snd_debug_verbose=y
config_snd_arm=y
config_snd_spi=y
config_snd_usb=y
config_snd_usb_audio=y
config_snd_so=y
CONFIG_SND_SOC_GENERIC_DMANGINE_PCM=y
CONFIG_Snd_SOC_FSL_ASRC=y
CONFIG_Snd_SOC_FSL_SAI=y
CONFIG_SND_SOC_FSL_SSI=y
CONFIG_SND_SOC_IMX_PCM_DMA=y
CONFIG_SND_SOC_IMX_AUDMUX=y
CONFIG_Snd_IMX_SOC=y
CONFIG_SND_SOC_IMX_PCM_FIC=y
CONFIG_SND_SOC_I2C_AND_SPI=y
CONFIG_Snd_SOC_TLV320AIC3X=y
config_snd=y
config_snd_timer=y
config_snd_pcm=y
CONFIG_SND_DMANGINE_PCM=y
config_snd_HWDEP=y
config_snd_RAWMIDI=y
config_snd_compress_offload=y
config_snd_jack=y
config_snd_support_old_api=y
config_snd_verbose_procfs=y
config_snd_verbose_PRINTT=y
config_snd_debug=y
config_snd_debug_verbose=y
config_snd_arm=y
config_snd_spi=y
config_snd_usb=y
config_snd_usb_audio=y
config_snd_so=y
CONFIG_SND_SOC_GENERIC_DMANGINE_PCM=y
CONFIG_Snd_SOC_FSL_ASRC=y
CONFIG_Snd_SOC_FSL_SAI=y
CONFIG_SND_SOC_FSL_SSI=y
CONFIG_SND_SOC_IMX_PCM_DMA=y
CONFIG_SND_SOC_IMX_AUDMUX=y
CONFIG_Snd_IMX_SOC=y
CONFIG_SND_SOC_IMX_PCM_FIC=y
CONFIG_SND_SOC_I2C_AND_SPI=y
CONFIG_Snd_SOC_TLV320AIC3X=y
我可以检查或更改哪些内容?