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.

[参考译文] TAS2563:将2个 reg.bins 集成为驱动程序的一部分

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1410576/tas2563-integrating-2-reg-bins-as-part-of-driver

器件型号:TAS2563

工具与软件:

尊敬的 TI 团队:

继续以下线程、用于开路/短路或正常负载检测的软件集成
https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1400336/tas2563-speaker-open-and-short-detection-in-tuning-mode

我们希望在初始启动期间执行负载诊断检查。 加载诊断检查成功后、我们希望使用初始化参数加载 reg.bin、但我们需要一个额外的 reg.bin 来在加载实际的 reg.bin 之前执行该检查。

您能告诉我们如何将2 reg.bin 整合为驱动程序的一部分吗? 而不会影响正常播放。

CC

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

    Savyasanchi 您好、

    我们很快会给您提供进一步的评论。

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    您可以将 regbin 文件和 DSP bin 文件另存为两个字符类型数组。

    在编解码器探测期间、可以加载这两个阵列而不是请求固件。 希望我的解决方案可以帮助您。

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

    尊敬的 Shenghao:
    如果我们要更改任何纸槽、这不会限制我们更新完整的驱动程序。 因为我们当前只需要更换/lib/firmware.中的纸槽 对于我们的用例、需要更新 Bins 特性。

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

    + Shailesh、

    BR、

    Rekha

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

    嗨、大家好

    您也可以根据当前的驱动程序进行第二次开发、如果驱动程序在系统中找不到 bin 文件、它可以加载保存固件的阵列。 谢谢。

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

    尊敬的 Shenghao:
    我们的用例如下所示

    • 默认 reg.bin 和默认 dsp.bin 可随时正常播放
    • 加载诊断 reg.bin 仅在器件启动时的加载诊断检查期间实现。
    • 加载后诊断默认值应重新加载、播放应正常

    我们将在初始启动期间首先在器件上执行负载诊断、只有在检测到正常负载时、我们才继续加载默认 reg.bin 和 dsp.bin 以实现正常播放。 是否有一种方法可以在移动中同时包含 reg.bin 和彼此之间的转换、以便在负载诊断后正常播放不受影响、并且不需要重新启动。

    我们之所以需要这样做、是因为在负载诊断检查中、我们会执行软件复位(根据 TI 的建议)、在软件复位后、寄存器必须恢复默认设置、但我们要重新加载 dsp.bin 和 reg.bin。

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

    嗨、大家好

    您的请求太简单,无法将任何代码添加到 tas2563驱动程序中。 可以将它们放入一个 regbin 文件和一个 dspbin 文件中。  我们的指南提供了与您的指南类似的案例。 从 P42到 P43、它描述了此类情况。 在用户空间中、可以创建映射表、以在 regbin 中保存 profileID 的映射关系、在 dspbin 中保存 program/config id 的映射关系。

    PowerPoint 演示文稿(TI.com)

    第1行、第5 ~ 8行、第17 ~ 20行用于工厂测试。 在这种情况下是四个片段 tas2563。 我认为这种解决方案绝对符合您的需求。

    至于软件重置、您有固件强制下载 Kcontrol。 请在运行 负载诊断检查后将其激活。

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

    尊敬的 Shenghao:
    我们尝试在现有 reg.bin 中再添加一个配置、并尝试使用以下命令切换到该配置
    amixer -c 1 cset name="x TASDEVICE 配置文件 id" 5.

    以下是扬声器未连接时的观察结果。

    • 启动时、我们将切换到配置文件 ID 5、然后进入加载诊断模式(第0页中的0x02 -> 0x43)
    • 我们采用第0页的转储
    • 我们观察到寄存器0x25读取为0x00或0x28、这是不一致的
    • 按照我们的预期、它应该将0x28读取为该开路负载检测

    在配置文件 ID 之间切换是处理多个配置的正确方式。

    e2e.ti.com/.../tas2563_2D00_1amp_2D00_reg.zip

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

     Savyasanchi 您好、

    在启动加载诊断后读取寄存器时、请确保等待诊断例程完成。 我们提供的脚本包括一个延迟命令来等待此时。

    我将请 谈谈配置文件切换问题。

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    会议5.
    ConfName:05 -自定义负载检测
    块类型:pre_shutdown device idx = 0x00
    单字节:
    BOOK0x00 PAGE0x00 REG0x02值= 0x0E
    块类型:PRE_POWER_UP 器件 idx = 0x00
    单字节:
    BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
    BOOK0x00 PAGE0x00 REG0x7F 值= 0x00
    BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
    BOOK0x00 PAGE0x00 REG0x01值= 0x01
    BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
    BOOK0x00 PAGE0x00 REG0x30 Value = 0x1d
    BOOK0x00 PAGE0x00 REG0x1b 值= 0xc7
    BOOK0x00 PAGE0x00 REG0x1a 值= 0xFD
    BOOK0x00 PAGE0x05 REG0x1c 值= 0x00
    BOOK0x00 PAGE0x05 REG0x1d 值= 0x49
    BOOK0x00 PAGE0x05 REG0x1e 值= 0x24
    BOOK0x00 PAGE0x05 REG0x1f 值= 0x92
    BOOK0x00 PAGE0x05 REG0x20值= 0x00
    BOOK0x00 PAGE0x05 REG0x21值= 0x1d
    BOOK0x00 PAGE0x05 REG0x22值= 0x41
    BOOK0x00 PAGE0x05 REG0x23值= 0x4d
    BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
    BOOK0x00 PAGE0x00 REG0x3d 值= 0x0E

    此配置将通过软件复位芯片、在软件复位后、DSP 将不会工作、直到将 DSP 固件重新加载到 tas2563中。

    是否确定重置了 tas2563? 运行该配置后、请调用 kcontrol 以强制加载固件、再次下载 DSP 固件。

    您能否共享用于 自定义负载检测的 cfg 文件?

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

    尊敬的 Shenghao:

    1. TI 建议为 LDG 模式例程执行软件复位。 我们已根据该响应实施了该策略。

    2.前一个回复中共享的 zip 文件是包含的 config 5文件。 它是 reg.bin 的一部分。

    3. 我的主要查询是打开负载检测与此 reg.bin 不一致的问题。

    • 我们观察到、寄存器0x25读取为0x00或0x28。在不同的配置文件 ID 之间切换时、这是不一致的。
    • 按照我们的预期、它应该将0x28读取为该开路负载检测

    在配置文件 ID 之间切换是否是处理多个配置的正确方式? 请解决这个问题。

    4.继续第3点,我们注意到配置 id 在播放后切换,如果我们按照下面的步骤,负载诊断是正确的
    amixer -c 1 cset name="x TASDEVICE 配置文件 id" 5.
    aplay /bin/vendor British_Female_2.wav
    i2cset -f -y 7 0x4e 0x02 0x43
    i2cdump -f -y 7 0x4e
    我们还在 dmesg 中注意到播放中的配置 ID 字符串
    [78.120834] tasdevice-codec 7-004e:tasdevice_hw_params:播放
    [ 78.120855] tasdevice-codec 7-004e:tasdevice_hw_params:BCLK 速率= 1536000通道= 2采样速率= 48000时隙宽度= 16
    [78.121028] tasdevice-codec 7-004e:snd_soc_dapm_post_pmu
    [78.134571] tasdevice-codec 7-004e:snd_soc_dapm_pre_pmd
    [78.134601] tasdevice-codec 7-004e:tasdevice_select_cfg_blk、Enter
    [78.141027] tasdevice-codec 7-004e:select_cfg_blk:profile_conf_id = 5
    [ 78.141032] tasdevice-codec 7-004e:select_cfg_blk:conf 5、块类型:pre_shutdown device idx = 0x00
    [78.142763] tasdevice-codec 7-004e:PowerControl_routine:Enter
    [78.142768] tasdevice-codec 7-004e:PowerControl_routine:在执行上电之前已断电
    [78.142770] tasdevice-codec 7-004e:PowerControl_routine:离开

    请对上述问题发表评论
    BR、

    Rekha

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

    请与我上传 json 文件。  

    我必须强调的是,你必须调用 tasdevice_force_dsp_download() after conf-5关机,就像校准一样。

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

    尊敬的 Shenghao:
    我们已在从驱动程序导入源 json 并添加我们自己的寄存器后、在 bin 上方的线程中共享了"tas2563-1amp-reg.zip"。

    我们已在以下方法中尝试强制下载
    1. echo > FORCE_FW_LOAD_CHIP (如 ppt 第38页中所述)
    2. 当配置文件切换为5时,我们也在驱动程序中添加了 tasdevice_force_dsp_download()

    即使使用上述两种方法、我们也看到在播放后、只有配置文件开关才会得到反映。

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

     Savyasanchi 您好、

    我更新了新的.jsn 文件作为配置5的附件。  e2e.ti.com/.../tas2563_2D00_1amp_2D00_reg_5F00_1021.zip

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

    尊敬的 Shenghao/ Ken:
    我们目前已实现如下所示的负载诊断功能

    • 我们通过在驱动器探头功能中手动写入寄存器、然后读取扬声器负载值来进入负载诊断模式。
    • 在此基础上、我们将继续加载驱动程序和固件。

    我们在一周内多次重新启动时测试了这种方法、目前未发现任何异常。 这种方法是否可靠? (以下随附代码供参考)

    我们尚未测试先前注释中随附的新.jsn 文件。

    e2e.ti.com/.../tasdevice_2D00_codec_5F00_load_5F00_diagnose.diff

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

    我这边很好。  

    以下内容  

    +{TASDEVICE_REG (0x00、0x00、0x7F)、0x00}、
    +{TASDEVICE_REG (0x00、0x00、0x01)、0x01}、

    请加一个睡眠至少50ns。
    +{TASDEVICE_REG (0x00、0x00、0x30)、0x1D}、

    诊断后请不要忘记重新加载 DSP 固件。

    另外、当运行诊断时、您选择哪个程序 ID、配置 ID 和配置文件 ID?

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

    尊敬的 Shenghao:
    是所有寄存器写入所需的睡眠状态、或在该特定情况下所需的睡眠状态。

    我们不会使用此实现设置任何程序 ID、配置 ID 和配置文件 ID。 我们仅在加载固件之前在驱动器探针处写入和读取这些寄存器。 获取这些寄存器写入的结果后、我们继续使用驱动程序、因此它会照常加载 DSP 固件。

    驱动程序在用户空间中加载播放后、我们将配置文件 id 设置为3以进行播放。

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

    Savyasanchi 您好、

    要在播放后关闭、您可以设置 b0p0r2 =01。

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

    尊敬的 Ken/ Shenghao:

    1.下面是由盛浩在同一线程中提出的。 这种睡眠是强制性的吗? 是否要在所有寄存器之间添加睡眠模式? 如果不添加睡眠、会产生任何后果?

    TI 建议(:

    +{TASDEVICE_REG (0x00、0x00、0x7F)、0x00}、
    +{TASDEVICE_REG (0x00、0x00、0x01)、0x01}、

    请加一个睡眠至少50ns
    +{TASDEVICE_REG (0x00、0x00、0x30)、0x1D}、

    2.在本例中、该器件始终处于软件关断状态(b0p0r2 = 0x0E)、播放音频时除外(b0p0r2 = 0x00)。 这是因为我们没有连续的 SBCLK。 在我们的案例中、这种静音模式进入是否必不可少?

    BR、

    Rekha

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

    嗨、大家好

    在我们的 ppc3中、 前提是您创建了 包含软件复位在内的 cfg 文件。 您将在软件复位后找到 SLEEP 命令

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

    尊敬的 Shenghao:

    FCT cfg 文件仅包括以下寄存器:

    校准参数位置(Book、Page、Offset、CoeffLength)
    UMG_SsmKEGCye = 0x00、0x0d、0x3c、0x01
    IKS_E0 = 0x00、0x0f、0x34、0x01
    YEP_LsqM0 = 0x00、0x0f、0x40、0x01
    MCB_ZwiNgmaj = 0x00、0x0f、0x44、0x01
    oyz_U0_ujx = 0x00、0x0f、0x48、0x01
    KGD_OEldlc = 0x00、0x10、0x14、0x01

    在此配置中我们看不到任何睡眠命令。 请告诉我们如何生成 cfg 文件(包括软件复位)、因为 PPC3中没有该选项。

    BR、

    Rekha

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

    您好、Rekha

    tasdevice-codec.c«src - tas2781-linux-drivers/tas2781-linux-driver - Unnamed repository;编辑此文件"destination "以命名存储库。

    tasdevice_force_dsp_download 将在校准后运行 swreset。

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

    尊敬的 Ken / Shenghao:
    我们使用 tasdevice_dev_write 来写入这些寄存器以进行负载诊断。 据我们所知、此 API 已处理寄存器写入之间的休眠操作

    我们将在 request_fw 之前在驱动器探针处写入和读取这些寄存器、因此驱动程序将照常加载 DSP bin。

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

     

    盛浩将为您稍后提供详细说明。  

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

    tas2563将花费一些时间在 swreset。 添加 SLEEP 命令很有意义。

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

    尊敬的 Shenghao:

    API 已经有200ms 的睡眠时间(如下所示)。 添加额外的50ns 是否能起到重要作用?  

    static int tasdevice_load_diagnostic (struct tasdevice_priv *tas_priv){
           Int ret、I;
           unsigned int READ_VALUE、READ_VALUE_24;

     

           //循环遍历数组并写入每个寄存器
           对于(I = 0;I < LOAD_DIAGNOSTIC _REGISTERS_COUNT;I++){
                   REt = tasdevice_dev_write (tas_priv、0、LOAD_DIAGNOSTICY_REGISTERS[i].reg、LOAD_DIAGNOSTICY_REGISTERS[i].val);
                   如果(ret < 0){
                           dev_err (tas_priv->dev、"Write register failed 0x%02x。 返回值:%d\n"、load_diagnostic_registers[i].reg、ret);
                           回流塔;
                   }
           }

    //休眠200 ms

           msleep (200);

    BR、

    Rekha

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

    我的意思是在将 b0p0r1设置为0x1后添加 usleep_range (1,000,1050)。

x 出现错误。请重试或与管理员联系。