工具/软件:Linux
我需要将 HPCOM 多路复用器从差分模式更改为单端模式。 使用旧的3.3.0内核、工作正常。 现在我已经迁移到4.14.67内核、我通过 alsamixer 或从我的软件更改了 HPCOM 模式、软件中的模式发生了变化、但实际上并没有改变。 我在硬件中看到 HPCOM 驱动差分。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Linux
我需要将 HPCOM 多路复用器从差分模式更改为单端模式。 使用旧的3.3.0内核、工作正常。 现在我已经迁移到4.14.67内核、我通过 alsamixer 或从我的软件更改了 HPCOM 模式、软件中的模式发生了变化、但实际上并没有改变。 我在硬件中看到 HPCOM 驱动差分。
Steve Wilson、
在3.3.0内核上:
# cat /sys/bus/platform/devices/soc-audio.0/TLV320AIC3X/codec_reg …… 25:E0 26:10
寄存器37和38正确、HPCOM 设置为单端。
在4.14.67内核上、我在/sys/bus/platform/devices/sound/davinci-mcasp.0-tlv320aic3x-hifi 上找到 codec_reg、但它是空的。 如何启用此文件的寄存器打印?
我做了一些调查:
1) 1)在新的系统位0上、寄存器58和72中的"HPLCOM 完全上电"设置为1 -这会导致 HPLCOM/HPRCOM 引脚被主动驱动、即使 HPCOM 输出的单端模式被设置也是如此。 在旧内核上、该位设置为0。 驱动该引脚对我们来说是一个问题、因为它连接到了电路板上的接地端。
现在、我已经在 sound/soc/codecs/tlv320aic3x.c 中添加了对这些位的控制:
静态 const char * const aic3x_output_ptrl[]={"未完全上电"、"完全上电"};
静态 SOC_enum_single_DECL (aic3x_HPL_pctrl_enum、HPLOC_CTRL、0、 aic3x_output_ptrl);
静态 SOC_enum_single_DECL (aic3x_HPR_pctrl_enum、HPRCOM_CTRL、0、aic3x_output_ptrl);
(笑声)
SoC_enum ("左 HPCOM 电源控制"、aic3x_HPL_pctrl_enum)、
SOC_enum ("右 HPCOM 电源控制"、aic3x_HPR_pctrl_enum)、
我们可以从 alsa userapi 控制该位。
2) 2)要启用寄存器、需要添加 sound/soc/codecs/tlv320aic3x.c:
静态常量结构 snd_soc_codec_driver soc_codec_dev_aic3x ={ .set_bias _level = aic3x_set_bias _level、 +.reg_cache_size = array_size (aic3x_reg)、 +.reg_word_size = sizeof (u8)、 +.reg_cache_size = array_size= .ic3x、aid_probe =.icid_off、aid_probe =.ic3x、aide_probe =.icle_off、aide_probe =.
希望、这对某人有所帮助。