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.

[参考译文] AM3358:禁用音频编解码器节能功能

Guru**** 2914610 points

Other Parts Discussed in Thread: TLV320AIC3106

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664733/am3358-disabling-audio-codec-power-saving

器件型号:AM3358
主题中讨论的其他器件:TLV320AIC3106

我在定制电路板上使用处理器 SDK 03.03。

我正在使用来自 am335xevm-sk.dts 设备树的默认音频条目。

使用应用程序播放音频时、我可以听到噼啪声。 在不到10秒的停机时间内再次播放、不会产生任何噼啪声。

对来自处理器的音频控制信号进行范围界定、看起来就像未使用10秒后的音频模块电源。

我想禁用此功能、但我很难这样做。

Documentation (文档)/sound/salsa 中的 powersave.txt 文档仅引用了 AC97和 HD 音频驱动程序。

我使用 的是具有 tlv320aic3106编解码器的简单音频卡驱动程序

是否可以使用这些驱动程序禁用节能>

此致、

Ugnius

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

    您能否在 AM335x TI 入门套件上重现此问题? 这可能是与定制板相关的硬件问题。

    关于音频编解码器节能、您使用示波器测量哪种 AM335x 处理器音频控制信号?

    检查 AM335x 音频引脚是否从激活模式变为睡眠模式。 查看以下 wiki:

    processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.4)

    噼啪/喀哒声减少:可通过按正确顺序(包括使用数字静音)为编解码器加电/断电来减少爆裂声和咔嗒声。 ASOC 在何时向编解码器发送信号以更改电源状态。

    e2e.ti.com/.../1692239
    e2e.ti.com/.../1400091

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

    TLV320输入信号 WCLK、BCLK、Din 和 DOUT 在播放音频时均处于活动状态。
    当它停止时、大约8秒、WCLK 和 BCLK 仍然有效、然后它们停止。
    这就是我认为系统正在将音频子系统置于睡眠模式的原因。

    我将使用入门套件对此进行仔细检查并告知您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可以确认入门套件存在相同的问题。 此设计没有放大器、音频将播放到耳机插孔。
    但效果是相同的:
    *播放时听起来不错。
    *如果我在~8秒内停止并重放,则声音清晰。
    *如果我停止超过~8s,则在开始播放时会听到一个弹出的声音。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试读取控制信号的状态、它们确实会更改为睡眠模式。
    我将睡眠模式定义为与活动模式相同、通过读取模式值可以看到它不会进入睡眠模式。
    但是、仍然有噼啪声。
    这是否意味着问题不是由驱动程序的睡眠模式引起的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将控制音频芯片的 i2c 线路范围限定为范围、现在可以看到 MCU 在停止播放声音时禁用电源。

    *当播放停止时、左右输出 DAC 将被静音。
    *在5秒内,如果没有播放任何内容,则通过发送 i2c 事务来禁用所有输出的电源。

    要禁用此功能、我是否必须修改 TLV320的驱动程序源代码?
    是否有任何指南/建议?

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

    首先确保 AM335x 器件不会进入低功耗模式且始终处于活动状态。 可能的低功耗模式为:DVFS/cpufreq、CPUIdle、待机、深度睡眠0/mem、仅 RTC

    processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.4)

    检查是否调用了 DaVinci_McASP_SUSP()函数:
    Linux 内核/sound/soc/co/Davinci/Davinci-McAP.c

    另请检查 DaVinci_McASP_stop ()-> McASP_STOP_TX ()函数是否向 AIC3x 发送 i2c 命令以进入低功耗模式。 如果是这种情况、您应该修改 McASP 音频驱动程序(Davinci-McAP.c)以删除该驱动程序。

    关于 TLV320AIC3106音频编解码器电源管理、请检查其驱动程序:

    linux-kernel/sound/soc/codecs/tlv320aic3x.c

    有关 TLV320AIC3106音频编解码器电源管理及其驱动程序(tlv320aic3x.c)的更多信息、您应在音频转换器论坛中发帖:

    e2e.ti.com/.../64

    此论坛中的一个相关 e2e 主题、链接如下:

    e2e.ti.com/.../397557

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

    感谢您的回复、

    处理器不会进入低功耗模式、它始终运行 GUI 和 SPI。

    我检查了在驱动程序源代码中添加列印所发生的情况。

    播放结束似乎是由达芬奇-McASP 驱动程序发出的。

    然后在5秒内、所有输出 DAC 都被 SoC-Dapm 模块禁用。

    它运行 SoC_dapm_update_bits 命令来更新 TLV320寄存器。

    它看起来具有一个定义的所有步骤序列。

    因此、我想我应该对其进行修改、以避免在每次播放后禁用所有输出。 我只是不知道它是在哪里定义的。

    编解码器论坛是否是处理此主题的最佳场所?

    由于我不确定天气、这是设置这些事务的编解码器或音频驱动程序。

    此致、

    Ugnius

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

    Ugnius、

    是的、DAPM (动态音频电源管理)负责 AIC3x 的低功耗。

    ASOC 层旨在解决这些问题并提供以下特性:

    动态音频电源管理(DAPM):DAPM 始终自动将编解码器设置为其最低功耗状态。 这包括根据内部编解码器音频路由和任何活动流为内部电源块加电/断电。

    为了实现上述目标、ASOC 将嵌入式音频系统分为三个组件:

    编解码器驱动程序:编解码器驱动程序独立于平台、包含音频控制、音频接口功能、编解码器 Dapm 定义和编解码器 IO 功能。

    机器驱动器:机器驱动器处理任何特定于机器的控制和音频事件、即在回放开始时打开一个放大器。

     

    processors.wiki.ti.com/.../AM335x_Audio_Driver's_Guide

     


    在编解码器驱动程序[1]和机器驱动程序[2]中启用/配置 DAPM 功能:

    [1] linux-kernel/sound/soc/codecs/tlv320aic3x.c

    [2] Linux 内核/sound/soc/co/Davinci/Davinci-evm.c

     

    另请参阅:

    Linux-kernel/Documentation/sound/salsa/soc overview.txt

    Linux-kernel/Documentation/sound/salsa/soc pops_clicks.txt

    Linux-kernel/Documentation/sound/salsa/soc dapm.txt

     

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有任何有关如何修改小工具架构的示例?

    我尝试禁用 Path 域小工具、并在 probe 函数中将关联的寄存器设置为我想要的值。
    但是、如果我这么做、启用左右 DAC 的流域小工具也不起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找不到有关如何修改 AIC3x DAPM 小工具架构的示例。 我找到的唯一示例是根本不使用 DAPM:

    processors.wiki.ti.com/.../Sitara_Linux_Audio_DAC_Example

    机器驱动器实现系统级设置、例如数字音频接口链路定义和配置、设置电源和时钟。 它还可以声明机器级 DAPM 小工具并将其与编解码器小工具连接。

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

    那么、这将同时使用不同的编解码器来驱动音频芯片?
    我可能会在某个时候尝试一下。

    我想我使用 tlv320驱动程序成功地消除了不需要的声音。 我删除了小工具:

    * LLOPM_CTRL

    * RLOPM_CTRL

    * HPLOT_CTRL

    * HPROUT_CTRL

    * HPLCOM_CTRL

    * HPRCOM_CTRL

    并重新路由这些小工具互连的节点。
    我还删除了处于 snd_SOC_BIAS_OFF 状态的 aic3x_set_power (CODEC、0)函数。
    现在、这仅在播放停止时禁用驱动程序 PLL。 在新播放时、不会听到不需要的声音。

    此致
    Ugnius