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.

[参考译文] TLV320AIC3206EVM-U:关于混频器控制。

Guru**** 1737970 points
Other Parts Discussed in Thread: TLV320AIC3206, PCM1780, TLV320AIC3206EVM-U
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1094336/tlv320aic3206evm-u-about-mixer-control

器件型号:TLV320AIC3206EVM-U
主题中讨论的其他器件:TLV320AIC3206PCM1780

您好!

我以前曾尝试过 STM32MP157D-DK1和 PCM1780。 但是、我无法解决问题、因此我将器件更改为 TLV320AIC3206。

使用示例器件树作为参考、我为 STM32MP157D 和 TLV320AIC3206构建了"简单音频卡"器件树。

I/F:i2c4 & sa.1

--------

STM32MP> i2c DEV 0
 将总线设置为0
STM32MP> i2c 探针
 有效芯片地址:18 33
STM32MP> i2c 总线0
 总线0:I2C@5c002000 (有效0)
 33:stpmic@33、偏移 len 1、标志0

 18:generic_18、偏移 len 1、标志0 // TLVC320AIC3206
STM32MP> i2c MD 18 32 10.
 0032:00 00 12 03 02 00 00 01 00 14 0c 00
STM32MP> i2c MW 18 34 01
STM32MP> i2c MD 18 32 10.
 0032:00 01 12 01 00 00 00 00 01 01 00 14 0c D8…

--------

我可以通过 i2c 从 u-boot 控制台访问 TLV320AIC3206。

从 Linux 终端尝试混频器控制失败。
您是否知道此问题的原因是什么?

[3.609648] ALSA 器件列表:
[3.611159]未找到声卡。
[70.881989] ASOC-simple-card sound:tlv320aic32x4-hifi <-> 4400a004.audio-controller 映射正常

$alsamixer
无法加载混合器控件:不允许操作
$ amixer -c0
amixer:Mixer HW:0加载错误:不允许操作

$ sudo i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:------------ ------
10:------------ ------ UU -------------- ----
20:------------ ------------ ------------ --
30:---- UU -------------- ------------ ----
40:------------ ------------ ------------ --
50:---------- ------------ ------------ --
60:------------ ------------ ------------ --
70:------------ ------

谢谢、

西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已请求我们的驱动器专家来看看。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它看起来声卡没有注册。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我尝试了一些命令。
    器件驱动程序构建为内核模块、因此似乎不在 ASLA 声卡列表中。
    设备树是否有问题?

    $ aplay -l
    ****播放硬件设备列表****
    卡0:BoardTLV32 [Board-TLV320AIC3206]、器件0:4400a004.audio-controller-tlv320aic32x4-hifi tlv320aic32x4-hifi [4400a004.audio-controller-tlv320aic32x4-hifi tlv320aic32x4-hifi]
    子设备:1/1
    子设备#0:子设备#0

    $ amixer 控件
    numid=5、iface=Mixer、name='PCM 播放音量'
    numid=13、iface=mixer、name='IC PGA Switch'
    ・・・μ A

    $ cat /etc/group
    根:x:0:
    ・・・μ A
    音频:x:29:debian
    ・・・μ A

    $ aplay loop3.wav -D plushw:0、0
    播放波'loop3.wav':有符号16位小端字节序、速率44100Hz、立体声
    aplay:PCM_WRITE:2058:写入错误:输入/输出错误

    /{
     声音:声音{
      兼容="简单音频卡";
      simple-audio-card、name ="Board-TLV320AIC3206";
      simple-audio-card、format ="I2S";
      simple-audio-card、bitclock-master =<&dailink_master>;
      simple-audio-card、frame-master =<&dailink_master>;
      simple-audio-card、小工具=
       "线路"、"线路输入"、
       "线路"、"线路输出"、
       "耳机"、"耳机";
      简单音频卡,路由=
       "线路输出"、"LOL"、
       "线路输出"、"左"、
       "耳机"、"HPL"、
       "耳机"、"HPR"、
       "IN1_L"、"线路输入"、
       "IN1_R"、"线路输入";
      状态="正常";

      simple-audio-card、CPU{
       Sound-Dai =<?Saa1a>;
      };

      dailink_master:simple-audio-card、codec{
       sound-dai =<&tlv3206_codec>;
       时钟=<&RCC SAI1>;
      };
     };
    };/*root*/

    i2c4{(&I)
     pinctrl-names ="default"、"sleep";
     pinctrl-0 =<&i2c4_PINs_a>;
     pinctrl-1 =<&i2c4_PINS_SLEEP_A>;
     I2C-SCL-rising-time-ns =<185>;
     I2C-SCL-Falling-time-ns =<20>;
     时钟频率=<400000>;
     状态="正常";
     /*其他用途备用 DMA */
     /delete-property/DMA;
     /delete-property/dma-names;

     tlv3206_codec:tlv320aic32x6@18{
      兼容="ti、tlv320aic32x6";
      #sound-da-cells =<0>;
      reg =<0x18>;

      时钟=<(&S) 1a>;
      时钟名称="MCLK";
      aic32x4-GPIO-func=<
       0x00 // MFP1:默认值=0xff
       0xFF // MFP2:默认值=0xff,DOUT=ENABLE/Primary
       0x00 // MFP3:默认值=0xff,DIN=DISABLE
       0x00 // MFP4:默认值=0xff
       0x00 // MFP5:默认值=0xff
      >;

      IOV-supply =<&V v3v3>;//数字 IO 电源
      ldoin_supply =<_v1v8_audio>;// LDO 电源
      dV-supply =<&v1v8_audio>;//数字内核电源
      AV-SUPPLY =<_v1v8_AUDIO_>;//模拟内核电源

      状态="正常";

      tlv3206_port:端口{
       #address-cells =<1>;
       #size-cells =<0>;

        tlv3206_TX_终结 点:端点@0{
         reg =<0>;
         远程端点=<(&S) a 端点>;
         帧主控;
         位时钟主器件;
        };
      };
     };
    };

    Saa1{(&S)
     时钟=<&RCC SAI1>、<&RCC PLL3_Q>、<&RCC PLL3_R>;
     时钟名称="pclk"、"x8k"、"x11k";
     pinctrl-names ="default"、"sleep";
     pinctrl-0 =<&sa1a_pins_a>;
     pinctrl-1 =<&sa1a_sleep_pins_a>;
     状态="正常";

     Saa1a:音频控制器@4400a004{
      #clock-cells =<0>;
      dma-names ="TX";
      时钟=<&RCC SAI1_K>;
      时钟名称="SAI_CK";
      状态="正常";

      Saa1a_port:端口{
       Saa1a_endpoint:端点{
        远程端点=<&tlv3206_TX_end点>;
        格式="I2S";
        MCLK-FS =<256>;
        da-tdm-slot-num =<2>;
        da-tdm-slot-width =<32>;
       };
      };
     };
     SaB1b:音频控制器@4400a024{
      STATUS ="禁用";
     };
    };

    谢谢、

    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    STM32MP157D-DK1上安装了音频 IC (cs42l51)。(stm32mp15xx-dkx.dtsi)

    我们希望将 CS42l51替换为 TLV320AIC3206。
    CS42l51连接到器件树中的 SAI2和 I2C1、我是否可以将其替换为 TLV320AIC3206?
    我正在检查 TLV320AIC3206的示例器件树。 (AM335x-bonebblack-common.dtsi)

    谢谢、
    Nihsimura

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Raphael 会用他的评论来回复您。

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nishimura。

    如果您有空、我们可以进行电话会议。我的邮箱地址:shenghao-ding@ti.com

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、盛豪生、

    您能支持日语吗?

    谢谢、

    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    英语怎么样?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉、我的英语不是很好、所以如果可能、我想在支持网站上交换信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nishimura San、您好!

    在 conf-call 之前、我们先检查声卡、然后运行以下命令:

    Cat /proc/asound/PCM

    CAT /proc/asound/card

    CAT /sys/kernel/debug/ASOC/组件(用于内核4.19或更高版本)

    CAT /sys/kernel/debug/ASOC/编解码器(用于内核4.14或更低版本)

    LS /dev/snd

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    无问题:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我尝试了一些命令。

    # cat /proc/asound/PCM
    00-00:4400a004.audio-controller-tlv320aic32x4-hifi tlv320aic32x4-hifi:4400a004.audio-controller-tlv320aic32x4-hifi tlv320aic32x4-hifi:播放1.

    # cat /proc/asound/PCM
    00-00:4400a004.audio-controller-tlv320aic32x4-hifi tlv320aic32x4-hifi:4400a004.audio-controller-tlv320aic32x4-hifi tlv320aic32x4-hifi:播放1.
    root@arm:/home/debian# cat /proc/asound/cards
    0 [IoTGatewayTLV32]:IoTGateway-TLV3 - IoTGateway-TLV320AIC3206
    IoTGateway-TLV320AIC3206

    # uname -a
    Linux ARM 5.4.56 #33 SMP 抢先于4月20日10:05:56 JST 2022 armv7l GNU/Linux

    # cat /sys/kernel/debug/ASOC/组件
    tlv320aic32x4.0-0018
    4400a004.audio-controller
    4400a004.audio-controller
    SND-SOC-Dummd.
    SND-SOC-Dummd.

    # ls /dev/snd
    逐路径 controlC0 pcmC0D0p 计时器

    # alsactl init
    alsa-lib main.c:1014:(snd_use_case_mgr_open)错误:无法导入 HW:0用例配置-2
    已找到硬件:"IoTGateway-TLV3"""""""
    使用通用方法初始化硬件
    /usr/share/doc/alsa/init/default:181:值写入错误:无此类设备或地址
    /usr/share/doc/alsa/init/default:181:值写入错误:无此类设备或地址

    # cat /etc/group | grep audio
    音频:x:29:debian

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    其他信息。
    # CD snd/
    # ls -l
    总计0
    drwxr-xr-x 2根根根,2021年6月20日,路径
    crw-rw-- 1根音频116,2021年6月3日 controlC0
    crw-rw-- 1根音频116,2021年6月2日 pcmC0D0p
    crw-rw-- 1根音频116、2021年6月33日计时器

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    其他信息。
    我向 tlv320aic32x4_i2c 驱动程序添加了调试打印并将其内核内置。
    它在 ALSA 声卡列表中被选中、但混音器没有解决问题。

    正在启动内核...

    [0.252943]已初始化高级 Linux 声音架构驱动程序。

    [3.330752] ASOC TLV320AIC32x4编解码器驱动程序 I2C:aic32x4_i2c_probe ()
    [3.336226] asoc tlv320aic32x4编解码器驱动程序:aic32x4_probe () start
    [3.342444] asoc tlv320aic32x4编解码器驱动程序:aic32x4_probe () np --> aic32x4_pars_dt ()
    [3.350652] asoc tlv320aic32x4编解码器驱动程序:aic32x4_pars_dt()
    [3.356789] asoc tlv320aic32x4编解码器驱动程序:aic32x4_pars_dt () aic32x4->MCLK_name=audio-controller,aic32x4->RSTN_GPIO=-2,aic32x4_setup->GPIO_func=0,ff,0,0,0
    [3.371214] ASOC TLV320AIC32x4时钟:aic32x4_register_clocks () MCLK_NAME=audio-controller
    [3.379487] ASOC TLV320AIC32x4时钟:aic32x4_register_clk() devname=0-0018,desc->name=PLL
    [3.388278] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.395307] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_recalc_rate ()
    [3.401513] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_muldiv ()
    [3.408810] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_calc_rate ()
    [3.414072] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.421537] ASOC TLV320AIC32x4时钟:aic32x4_register_clk () devname=0-0018,desc->name=codec_CLKIN
    [3.430351] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.437498] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.444628] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.451647] ASOC TLV320AIC32x4时钟:aic32x4_register_clk() devname=0-0018,desc->name=ndac
    [3.460253] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.468637] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.476073] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.483116] ASOC TLV320AIC32x4时钟:aic32x4_register_clk () devname=0-0018,desc->name=MDAC
    [3.491715] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.500081] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_clkin_get_parent()
    [3.507515] ASOC TLV320AIC32x4时钟:clk_aic32x4_pll_get_parent() val=17,ret=0
    [3.514571] ASOC TLV320AIC32x4时钟:aic32x4_register_clk() devname=0-0018,desc->name=nadc
    [3.523190] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.531530] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.538962] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [ 3.546012] ASOC TLV320AIC32x4时钟:aic32x4_register_clk () devname=0-0018,desc->name=mAdc
    [3.554569] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.562977] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.570413] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.577496] ASOC TLV320AIC32x4时钟:aic32x4_register_clk() devname=0-0018,desc->name=bdiv
    [3.585746] ASOC TLV320AIC32x4时钟:clk_aic32x4_bdiv_get_parent()
    [3.592540] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.600699] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.608129] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.615225] asoc tlv320aic32x4编解码器驱动程序:aic32x4_setup_regulators()
    [3.622194] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_probe ()成功

    [3.709390] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.715920] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.723210] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.729883] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.737542] reg11:由 VDD 供电
    [3.740210] reg18:由 VDD 供电
    [3.744242] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()
    [3.751005] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0
    [3.758003] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_GET_parent()

    [3.772763] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_get_parent() val=17,ret=0

    [3.948335] asoc tlv320aic32x4编解码器驱动程序:aic32x4_component_probe ()
    [3.954021] asoc tlv320aic32x4编解码器驱动程序:aic32x4_setup_GPIOs()
    [3.961622] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.969192] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.977907] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.98661] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [3.995313] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.003730] ASOC TLV320AIC32x4时钟:clk_aic32x4_codec_CLKIN_SET_parent()
    [4.011444] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.019627] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.028335] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.037051] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.045750] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.054445] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.062909] ASOC TLV320AIC32x4时钟:clk_aic32x4_bdiv_set_parent()
    [4.070045] ASOC TLV320AIC32x4时钟:clk_aic32x4_div_recalc_rate () parent_rate = 0、v=1、ret=0
    [4.093577] asoc tlv320aic32x4编解码器驱动程序:aic32x4_set_da_SYSCLK ()
    [4.098788] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_set_da_fmt () snd_SOC_DAIFMT_CBM_CFM
    [4.107126] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_set_da_fmt () snd_SOC_DAIFMT_I2S
    [4.117132] ASOC-simple-card sound:tlv320aic32x4-hifi <-> 4400a004.audio-controller 映射正常
    [4.128527] asoc tlv320aic32x4编解码器驱动程序:aic32x4_set_bias _level()

    [4.144031] ASOC TLV320AIC32x4时钟:clk_aic32x4_PLL_is_preped()
    [4.149870] ALSA 器件列表:
    [4.152224]#0:IoTGateway-TLV320AIC3206

    有关详细信息、请参阅'stemctl status haveged.service'。
    正在开始保存/恢复声卡状态...
    [确定]已完成保存/恢复声卡状态。
    [确定]已到达目标声卡。


    Debian@arm:~$ sudo alsamixer
    [141.652160] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp1_gpio() 0x1.
    [141.658375] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp3_gp() 0x0
    无法加载混合器控件:不允许操作

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这似乎  是由您的用户不在音频组中引起的。 了解一下用户模式

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    登录用户属于音频组。

    Debian@ARM:~$世卫组织
    Debian ttySTM0 2022-04-21 15:20
    Debian@ARM:~$ cat /etc/group | grep audio
    音频:x:29:debian

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请使用  amixer 而不是 alsamixer、然后尝试一下。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Debian@arm:~$ sudo amixer -c 0
    [6783.0138] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp1_gpio() 0x1.
    [6783.019893] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp3_gp() 0x0
    amixer:Mixer HW:0加载错误:不允许操作
    Debian@ARM:~$ sudo amixer -c 0 sset PCM 50%、50%取消静音
    [6791.775242] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp1_gpio() 0x1.
    [6791.781315] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp3_gp() 0x0
    amixer:Mixer HW:0加载错误:不允许操作

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很好奇没有混频器名称。

    Debian@ARM:~$ amixer 信息
    卡默认值'IoTGatewayTLV32'/'IoTGateway-TLV320AIC3206'
    混音器名称:“”
    组件:“”
    控件:49.
    [7075.330392] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp1_gpio() 0x1.
    [7075.336385] asoc tlv320aic32x4编解码器驱动程序:aic32x4_get_mfp3_gp() 0x0
    amixer:混频器加载默认错误:不允许操作

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个权限问题,您能否更改权限以启用 amixer 访问音频卡。 在 BBB 中、我从未遇到过这样的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它解决了有49个控件。 由于权限问题、无法获取混频器名称。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以共享当前代码吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将再次检查设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这是用于记录保留的占位符消息。 请在您有更新后回复。

    谢谢、

    Jeff

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我以“root”身份登录并尝试了,但问题并没有消失。
    alsamixer 的工作方式是从设备树中删除以下定义。

    aic32x4-GPIO-func=<
     0x00
     0xFF
     0x00
     0x00
     0x00
    >;

    然后、我对 aplay 错误提出质疑。
    我希望这是"时钟"问题。
     aplay:PCM_WRITE:2058:写入错误:输入/输出错误

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    驱动程序正在打印以下错误,我应该检查什么?

    (笑声)
    [941.174812]在内核中除以0。
    [941.178582] CPU:0 PID:8178 Comm:aplay not intasy 5.4.56 #40
    [941.184265]硬件名称:STM32 (设备树支持)
    [941.189355] systemd-journale[3711]:/dev/kmsg 缓冲区溢出,一些消息丢失。
    [941.189440][ ](展开回扫)从[ ](show_stack+0x10/0x14)
    [941.204672][ ](show_stack)从[ ](dump_stack+b0/0xc4)
    [941.211900][ ](dump_stack)从[ ](Ldiv0_64+0x8/0x18)
    [941.2218871][ ](Ldiv0_64)从[ ](clk_aic32x4_pll_calc_muldiv+0xe8/0x134)
    [941.227497][ ](clk_aic32x4_pll_calc_muldiv)、从[ ](clk_aic32x4_pll_round_rate + 0x2C/0x68)
    [941.237605][ ](clk_aic32x4_pll_round_rate)、来自[ ](clk_core_determine、round_nolock.part.0+0x44/0x60)
    [941.248670][ ](clk_core_determine round_nolock.part.0)从[ ](clk_round_rate + 0x5c/0xe0)
    [941.258689][ ](clk_round_rate)、来自[ ](aic32x4_hw_params+0x270/0x4ec)
    [941.267059][ ](aic32x4_hw_params)、来自[ ](snd_soc Dai_hw_params+0x5c/0xa4)
    [941.275859][ ](snd_soc_da_hw_params)从[ ](SoC_PCM_HW_params+0x248/0x5b4)
    [941.284831][ ](SoC_PCM_HW_params)从[ ](SND_PCM_HW_params+0x118/0x388)
    [941.293457][ ](snd_pcm_hw_params)、来自[ ](snd_pcm_common_ioctl+0x250/0x1118)
    [941.302441][ ](snd_pcm_common_ioctl)、来自[ ](do_vfs_ioctl+0x404/0x7c8)
    [941.310886][ ](do _vfs_ioctl)、从[ ](ksys_ioctl+0x34/0x60)
    [941.318292][ ](ksys_ioctl)从[ ](RET_FAST_SYSCALL +0x0/0x54)
    [941.325949]异常堆栈(0xd1cd9fa8至0xd1cd9ff0)
    [941.331007] 9fa0:bef82680 004fdd98 00000004 c25c4111 bef82680 0002000e
    [941.339201] 9fc0:bef82680 004fdd98 004fdd48 00000036 bef822b0 004f33f8 bef822c0 0000ac44
    [941.347386] 9fe0:b6f46844 bef821e4 b6ee002b b6e10418
    [941.35536]tlv320aic32x4 0-0018:无法设置时钟以支持采样率。
    aplay:PCM_WRITE:2058:写入错误:输入/输出错误

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在错误情况下、采样率/位时钟/和 MCLK 是多少?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我不熟悉器件树的设置、因此我担心能否正确满足您的要求。
    设置了以下内容。

    用于测试的"WAV "文件;
     'loop3.wav':有符号16位小端字节序、速率44100Hz、立体声

    SAI1.
     24MHz -> HSE -> DIVM3 (/2)-> DIVN3 (x34)-> DIVP3 (/2)= PLL3P
     PLL3P -> ACUDIV (/1)-> APB2DIV (/2)= 104.438965MHz (PCLK2)

    SAI1_K
     24MHz -> HSE -> DIVM3 (/2)-> DIVN3 (x34)-> DIVQ3 (/17)= 24.573874MHz (PLL3Q)


    /{
     ・・・μ A
     声音:声音{
      兼容="简单音频卡";
      simple-audio-card、name ="IoTGateway-S";
      simple-audio-card、format ="I2S";
      simple-audio-card、bitclock-master =<&dailink_master>;
      simple-audio-card、frame-master =<&dailink_master>;
     ・・・μ A
      simple-audio-card、CPU{
       Sound-Dai =<?Saa1a>;
      };

      dailink_master:simple-audio-card、codec{
       sound-dai =<&tlv3206_codec>;
       时钟=<&RCC SAI1>;
      };
     ・・・μ A
    };/*root*/

    i2c4{(&I)
     ・・・μ A
     I2C-SCL-rising-time-ns =<185>;
     I2C-SCL-Falling-time-ns =<20>;
     时钟频率=<400000>;
     ・・・μ A
     tlv3206_codec:tlv320aic32x6@18{
      兼容="ti、tlv320aic32x6";
      #sound-da-cells =<0>;
      reg =<0x18>;

      时钟=<(&S) 1a>;
      时钟名称="MCLK";
     ・・・μ A
     };
    };

    Saa1{(&S)
     时钟=<&RCC SAI1>、<&RCC PLL3_Q>、<&RCC PLL3_R>;
     时钟名称="pclk"、"x8k"、"x11k";
     ・・・μ A
     Saa1a:音频控制器@4400a004{
      ・・・μ A
      时钟=<&RCC SAI1_K>;
      时钟名称="SAI_CK";
      ・・・μ A
     };
    };

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    五天前、您向我显示了显示声卡已注册到系统的日志。

    请检查 MCLK、BCK 和 ws clk 与示波器。 我将首先检查 clk。因为昨天的日志告诉我 、在由 aic32x4_hw_params 调用的 clk_aic32x4_pll_calc_muldiv 中、"zero by zero"。 您也可以添加一些日志这些函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我正在检查 MCLK、但我无法解决问题...
    我的设备树是否有问题?

    wiki.st.com/.../SAI_device_tree_configuration

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为、使用示波器测量 MCLK、bck clk 和 fyans clk 引脚是 首先检查问题的最佳方法。

    之后、我们可以判断 ii 是否是配置问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我用示波器检查了每个信号。
    当 Linux 启动时、它会更改为以下状态、但即使执行了 aplay 命令、它也不会更改。

    MCLK = 3.3V
    WCLK (FSA)= 3.3V
    BCLK (SCKA)= 0.0V

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nishimura、

    感谢您的耐心等待、我们会为您提供帮助。 这可能需要一些时间。

    此致、

    Jeff

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Nishimura

    对于来自平台的 MCLK/WCLK/BCLK、请提供频率而不是电压、并和我一起拍摄图片。

    还有一件事、为什么没有 BCLK?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉、有一个拼写错误。
    正确答案如下。

    MCLK = 0V
    WCLK (FSA)= 3.3V
    BCLK (SCKA)= 3.3V

    当 Linux 引导时、BCLK 和 WCLK 变为3.3V。
    之后、即使您执行了 aplay 命令、它也不会更改。
    也就是说、没有频率。

    # cat /sys/kernel/debug/clk/clk_summary
    我的董事会;
    pll3 1 0 417755859 0 50000
    pll3_r 0 0 11290699 0 50000
    pll3_q 0 0 24573875 0 47058
    adfsdm_k 0 0 24573875 0 50000
    Saa_1_k 0 0 24573875 0 50000
    SaI1A_MCLK 0 0 0 0 0 0 0 50000


    STM32MP157D-DK1;
    pll3 1 0 417755859 0 50000
    pll3_r 0 0 11290699 0 50000
    pll3_q 0 0 24573875 0 47058
    SAI2_k 0 0 24573875 0 50000
    SaI2A_MCLK 0 0 0 0 0 0 0 50000

    执行完 aplay 命令后
    pll3 1 0 417755859 0 50000
    pll3_r 0 0 11290699 0 50000
    SAI2_k 1 0 11290699 0 50000
    SaI2a_MCLK 1 0 11290699 0 50000
    pll3_q 0 0 24573875 0 47058

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请告诉我您从哪里获得代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有关 clk 问题、请咨询平台供应商。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    可以从以下站点获取 BSP。 我使用的是2.1.0。

    www.st.com/.../stm32mp1dev.html
    STM32MP1 OpenSTLinux 开发者套件2.1.0

    TLV320AIC32x4驱动程序在执行 aplay 命令时是否设置了时钟?

    # aplay loop3.wav
    播放波'loop3.wav':有符号16位小端字节序、速率44100

    [233977836] asoc tlv320aic32x4编解码器驱动程序:aic32x4_hw_params()
    [233984007] ASOC tlv320aic32x4编解码器驱动程序:aic32x4_setup_Clocks () sample_rate =44100
    [233992007] asoc tlv320aic32x4编解码器驱动程序:aic32x4_set_processing_blocks()

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您将3206E 设置为主器件、它将输出 clk。 如果设置为从器件、则无法输出 clk。

    还有一件事、我想得到您的确认、您测量的时钟引脚是从托盘形侧或3206E 侧。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    我正在检查时钟设置。
    事实证明,问题是由 aic32x4_setup_Clocks ()的故障引起的。
    成功的 cs42l51在 aplay 命令后调用".set_SYSCLK"、".hw_params"。
    但是、在 TLV320AIC32x4中、首先调用".hw_params"。
    您知道为什么不调用".set_SYSCLK"吗?

    静态常量结构 snd_soc_da_ops aic32x4_ops ={
     hw_params = aic32x4_hw_params、
     digited_mute = aic32x4_mute、
     set_fmt = aic32x4_set_dai fmt、
     .set_SYSCLK = aic32x4_set_dai SYSCLK、
    };

    谢谢、

    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Nishimura

    请删除.symmetric 比率=1;  

    我们可以有一个 conf-call、我的邮件地址是 shenghao-ding@ti.com吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的评论、我明天会尝试。

    如何在 aic32x4_set_da_fmt ()函数中的 snd_SOC_DAIFMT_CBM_CFM 和 snd_SOC_DAIFMT_CBS_CFS 之间切换?
    它是设备树吗? 还是需要自定义驱动程序?

    很抱歉、我的英语不是很好、所以我想通过电子邮件交换信息。

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nishimura

    在 aic32x4_set_dai fmt 中、我们实现了以下代码。

    switch (fmt & snd_SOC_DAIFMT_MASTER_MASK){
    案例 SND_SOC_DAIFMT_CBM_CFM:
    iface_reg_1 |= AIC32X4_BCLKMASTER | AIC32X4_WCLKMASTER;
    中断;
    案例 SND_SOC_DAIFMT_CBS_CFS:
    中断;
    默认值:
    printk (Kern_ERR "aic32x4:DAI 主/从接口无效\n");
    return -EINVAL;

    至于器件树设置、您能否共享 CS 的 DST 设置。 我将进行检查。 谢谢。

    BR

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我尝试了下面的一些设置、但找不到正确的设置。

    FSL、MODE ="I2S-SLAVE (I2S-SLAVE)";//飞思卡尔?

    fmt 参数在0x1001处未更改。

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不熟悉飞思卡尔设置。 希望附件能为您提供帮助。 位于第14页底部

    e2e.ti.com/.../AN5125-_2D00_-device-tree.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用的是 STM32MP157D。
    我尝试了"FSL.MODE"、因为我找不到在主器件和从器件之间切换的定义。
    但是、这要么是 Freescale 驱动程序专用的、要么是不起作用的。

    谢谢、
    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    您也可以咨询平台供应商、也可以研究 Freescale 相关代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我从驱动程序中删除了".symmet_RARates = 1;"、但未调用".set_SYSCLK"。

    谢谢、

    西村

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CS 芯片运行的 Linux 内核版本是什么? CS 芯片和 TI 芯片是否运行相同的 Linux 系统。

    我浏览 SoC 代码、似乎应该在 器件树中定义 MCLK-FS、然后将调用 SET_SYSCLK。 您能否共享 CS 芯片的设备树设置? 我可以检查有何差异。

    静态空 simple_parse_mclk_fs (struct device_node *top、
    struct device_node *CPU,
    struct device_node *编解码器,
    struct simple_da_props * props、
    字符*前缀)

    struct device_node *节点= of _get_parent (CPU);
    字符 prop[128];

    snprintf (prop、sizeof (prop)、"%smclk-FS"、前缀);
    of_property_read_u32 (top、prop、&props->MCLK_fs);

    snprintf (prop、sizeof (prop)、"%smclk-FS"、前缀);
    of_property_read_u32 (节点、prop、&props->MCLK_fs);
    of_property_read_u32 (CPU、prop、&props->MCLK_fs);
    of_property_read_u32 (编解码器、prop、&props->MCLK_fs);

    of _node_put (node);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    CS 和 TI 使用相同的 Linux 版本。
    Linux ARM 5.4.56

    CS 和 TI 的器件树中介绍了"MCLK-FS"。
    是否可以附加文件?

    CS 的器件树(部分摘录)
    /{
    (笑声)
    听起来{
    兼容="音频图形卡";
    标签="STM32MP1-DK";
    路由=
    "回放"、"MCLK"、
    "捕获"、"MCLK"、
    "MICL"、"Mic Bias";
    Dais =<&Sai2a_port &Sai2b_port &i2s2_port>;
    状态="正常";
    };
    (笑声)
    };

    i2c1{(&I)
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&i2c1_PINs_a>;
    pinctrl-1 =<&i2c1_PINS_SLEEP_A>;
    I2C-SCL-Rising - Time-ns =<100>;
    I2C-SCL-FALLINE-TIME-ns =<7>;
    状态="正常";
    /delete-property/DMA;
    /delete-property/dma-names;
    (笑声)
    cs42l51:cs42l51@4a{
    兼容="Circ,cs42l51";
    reg =<0x4a>;
    #sound-da-cells =<0>;
    VL-SUPPLY =<_v3v3>;
    VD-SUPPLY =<_v1v8_AUDIO_>;
    va-supply =<_v1v8_audio>;
    vahp-supply =<_v1v8_audio>;
    RESET-GPIO =<&gpiog 9 GPIO_ACTIVE_LOW>;
    时钟=<?Sa义2a>;
    时钟名称="MCLK";
    状态="正常";

    cs42l51_port:端口{
    #address-cells =<1>;
    #size-cells =<0>;

    cs42l51_TX_终结 点:端点@0{
    reg =<0>;
    远程端点=<(&S) 2a_end点>;
    帧主控;
    位时钟主器件;
    };

    cs42l51_rx_endpoint:endpoint@1{
    reg =<1>;
    远程端点=<(&S) 2b_endpoint>;
    帧主控;
    位时钟主器件;
    };
    };
    };
    };

    SAI2{
    时钟=<&RCC SAI2>、<&RCC PLL3_Q>、<&RCC PLL3_R>;
    时钟名称="pclk"、"x8k"、"x11k";
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&sa2a_pins_a>、<&sa2b_pins_b>;
    pinctrl-1 =<&sa2a_sleep_pins_a>、<&sa2b_sleep_pins_b>;
    状态="正常";

    Saa2a:音频控制器@4400b004{
    #clock-cells =<0>;
    dma-names ="TX";
    时钟=<&RCC SAI2_K>;
    时钟名称="SAI_CK";
    状态="正常";

    Saa2a_port:端口{
    sa2a_endpoint:endpoint{
    远程端点=<&cs42l51_TX_endpoint>;
    格式="I2S";
    MCLK-FS =<256>;
    da-tdm-slot-num =<2>;
    da-tdm-slot-width =<32>;
    };
    };
    };

    Saa2b:音频控制器@4400b024{
    dma-names ="rx";
    ST、SYNC =<(&S) 2a 2>;
    时钟=<&RCC SAI2_K>、<&Sai2a>;
    时钟名称="SAI_CK"、"MCLK";
    状态="正常";

    Saa2b_port:端口{
    Saa2b_endpoint:endpoint{
    远程端点=<&cs42l51_Rx_endpoint>;
    格式="I2S";
    MCLK-FS =<256>;
    da-tdm-slot-num =<2>;
    da-tdm-slot-width =<32>;
    };
    };
    };
    };

    谢谢、
    西村