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.

[参考译文] TAS2781:适用于 Lenovo 笔记本电脑的 tas2781 Linux 驱动程序

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1208376/tas2781-tas2781s-linux-drivers-for-lenovo-laptops

器件型号:TAS2781

尊敬的社区:

希望一切都好在你的终点

我最近从 Lenovo ( Legion Gen8 16IRX8H )购买了一台笔记本电脑, 该笔记本电脑在 Linux 用户中没有声音支持。

多亏了 I2C、我相信我找到了一个由德州仪器制造的设备:

/sys/bus/i2c/devices/i2c-TIAS2781:00/

此智能放大器是 TAS2781,它已经支持 ALSA SoC git.ti.com/.../ ,但在 Linux x86/x86_64上无法使用。

tas2781在这台笔记本电脑中与 Realtek (ALC287)编解码器连接。 遗憾的是,Lenovo BIOS 不包含使 Realtek 编解码器与 AMP 芯片通信的正确信息(它遗漏了 init verbs 表),因此需要对 Realtek 驱动程序进行大量的重新设计。

据我所知,  在当前 Linux 内核源代码中有一个名为 patch_Realtek.c  的文件,特别是 sound/pi/hda/patch_Realtek.c。 该文件有一个与 sd_pci_quirk 固定的主板来修复许多笔记本电脑/台式机的扬声器。 例如、包含使用 Cirrus AMP 的特定笔记本电脑的补丁的行如下所示:  
SND_PCI_QUIRK (0x17aa 0x3874 "Legion 7 16IAX7"、ALC287_fixup_CS35L41_I2C_2 )、

Legion 笔记本电脑
SND_PCI_quirk (0x17aa  0x3884   "Legion 7 Pro 16IRX8H" ALC287_fixup_TAS2781S_I2C_2)、
其中 ALC287是内核识别的特定编解码器。
我采用了与我的 alsa-infohttp://alsa-project.org/db/?f=ed0116e9d7235fd5cbece5dccaa589ecad71f534 和 DSDT 表(可在此处找到 https://bugzilla.kernel.org/attachment.cgi?id=303959)相匹配的(0x17aa、0x3884)、其摘录如下:
 范围(PC00.I2C2)
       {
         器件(SPKR)
         {
           名称(_HID、"TIAS2781") //_HID:硬件 ID
           名称(_UID、零) //_UID:唯一的 ID
           方法(_sub、0、NotSerialized) //_sub: subsystem ID
           {
             如果((SPID => 0))
             {
               返回("17AA3886")
             }

             如果((SPID == one))
             {
               返回("17AA3884")
             }
           }
我可以将您链接到以下补丁 https://bugzilla.kernel.org/attachment.cgi?id=303828 已经张贴在以下讨论 https://bugzilla.kernel.org/show_bug.cgi?id=216194#c66 为某人修补了 Realtek 驱动程序他的笔记本电脑(一个 Legion 7 16IAX7上板载的 SMART AMP CSC3551)
如果 TI 社区的人能够提供帮助、或者可以让驱动程序包含在主内核版本中、那将非常好。
非常感谢您的观看
此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    感谢您的信任。 我已经从联想确认有两个 tas2781在 军团 Gen8 16IRX8H。

    为了我可以在同一页面工作,我可以收集以下信息:

    1. Linux、Ubuntu 或其它什么类型的?
    2. 6.2或其他版本?

    一台类似的笔记本电脑正在  从联想借用,我认为它将在下周准备.

    本周、我将准备 tas2781 Linux 驱动程序以支持 ACPI 架构 Linux。

    如果我有一些问题,我会告诉你通过 e2e forrum,邮件或 conf-Call 可以分享屏幕和代码等

    Br

    丁圣浩

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

    尊敬的盛豪:  

    这是一个了不起的消息!

    我目前使用 Ubuntu 22.10与内核6.2.7 ,我在这里从 kernel.ubuntu.com/.../检索

    非常感谢 TI 和 Lenovo 团队!

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

    您好、Carlo。

    只是重复检查一下、您的问题是否得到解决、还是正在等待升豪的回复?

    谢谢!

    Jeff McPherson

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

    Jeff、您好、感谢您的留言。

    实际上、该线程应该仍处于打开状态。 我正在等待盛豪给我更多的指示. 他负责在 Linux 上为放大器芯片构建驱动程序

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

    引用一个处理另一个联想军团的朋友:
    "cs35l41驱动程序最初是严格的 ASOC ,并支持

    cs35l41智能放大器在笔记本电脑上,Cirrus Logic 采用了制造的方法
    将部分驱动程序整合到一个"共享库"中、以便它们可以共享
    具有从 sound/PCI/hda/patch_Realtek.c 调用的回调/挂钩、允许
    扬声器输出如何在此类系统上工作。

    TI 开发人员可以关注围绕这一点和/或查看的一些讨论
    至少让他们在正确的方向开始。"

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

    您好、Carlo。

    感谢您的澄清。 在这种情况下、请等待回复、直到升豪有机会为您准备驱动程序、除非出现另一个问题。

    谢谢!

    Jeff McPherson

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

    你(们)好

    就在本周一。 我买的是联想入门笔记本电脑。 Yesterdya、我已经在其上演示了 Ubuntu 22.10、并与 AMD 伙计们分享原理图以供审查、并确认如何修改适用于 Linux 的 ASL 文件和 Realtek 编解码器驱动器代码。 这项任务涉及 AMD、TI、Realtek 和 Lenovo、启动了。

    您是否会如此善良、在您的笔记本电脑中运行以下 Linux 命令、并与我一起上传日志和文件?

    以下4个命令将输出多个文件并上载这些文件。

    # acpidump -s > acpi-table、lst

     #acpidump -o acpi_table.out

    # acpixtrack -a acpi_table.out

    # amixer > kcontrol.lst

    以下3个命令将会在 COM 终端中退出一些日志、进行捕获并上传。

    # ls /dev/snd -al.

    # cat /proc/asound/pcm

    # cat /proc/asound/cards

    Br

    丁圣浩

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

    您好,升豪。

    非常感谢您的支持。

    我要求联想论坛上有人使用我的相同硬件和 BIOS 固件这样做、因为我目前无法访问我的笔记本电脑。

    原帖: forums.lenovo.com/.../5944669

    在此您可以找到适合我们的型号的 ACPI_AMIXER: https://forums.lenovo.com/download/oJ0EhFr8QFk

    这是我们的 ls 的摘录:

    1)# ls /dev/snd -al.

    总计0
    drwxr-xr-x 3 root   380 Apr 5:22。
    drwxr-xr-x 20 root 5420  四月 5:24 ..
    drwxr-xr-x 2 root   80四月 5:22 by-path
    crw-rw--> 1 root audio 116、4月15日 5 12:22 controlC0
    crw-rw--> 1 root audio 116、 4月6日 5 12:22 controlC1
    crw-rw--> 1 root audio 116, 13 Apr 5 12:22 hwC0D0
    crw-rw--> 1 root audio 116, 14 Apr 5 12:22 hwC0D2
    crw-rw----+ 1根音频116, 4月 5日12:22 hwC1D0
    crw-rw--> 1 root audio 116, 8 Apr 5 12:26 pcmC0D0c.
    crw-rw--> 1 root audio 116, 7 Apr 5 12:32 pcmC0D0p.
    crw-rw--> 1 root audio 116, 9 Apr 5 12:26 pcmC0D3p.
    crw-rw--> 1 root audio 116, 10 Apr 5 12:26 pcmC0D7p.
    crw-rw--> 1 root audio 116, 11 Apr 5 12:26 pcmC0D8p.
    crw-rw--> 1 root audio 116, 12 Apr 5 12:26 pcmC0D9p.
    crw-rw--> 1 root audio 116, 2 Apr 5 12:26 pcmC1D3p.
    crw-rw--> 1 root audio 116, 3 Apr 5 12:26 pcmC1D7p.
    crw-rw--> 1 root audio 116, 4 Apr 5 12:26 pcmC1D8p.
    crw-rw--> 1 root audio 116, 1 Apr 5 12:22序列
    crw-rw--> 1 root audio 116, 33 Apr 5 12:22计时器

    2)#猫/proc/asound/pcm

    00-00: ALC287模拟: ALC287模拟:回放1:捕捉1.
    00-03: HDMI 0: HDMI 0:播放1.
    00-07: HDMI 1: HDMI 1:播放1.
    00-08: HDMI 2: HDMI 2:播放1.
    00-09: HDMI 3: HDMI 3:播放1.
    01-03: HDMI 0: HDMI 0:播放1.
    01-07:HDMI 1:HDMI 1:回放1.
    01-08: HDMI 2: HDMI 2:回放1.

     

    3)#猫/proc/asound/cards

    0[ph.         ]:HDA-Intel - HDA Intel PCH
                         HDA Intel PCH 在0x6405130000 IRQ 239上
     1 [NVIDIA     ]:HDA-Intel - HDA NVIDIA
                        HDA NVIDIA 在0x86000000 IRQ 17

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

    我也布置我的,因为它们有点不同

    转储文件为: forums.lenovo.com/.../w_VqKdO9zjA

    LS /dev/snd -al.  
    /dev/snd:
    总计0
    drwxr-xr-x  3 root     280 4月 5 18:29。
    drwxr-xr-x 21 root    4880 4月 5 18:29。
    drwxr-xr-x  2 root      80四月 5:29按路径
    crw-rw--> 1 root audio 116、10 Apr 5 18:29 controlC0
    crw-rw----+ 1根音频116, 4月6日 5 18:29 controlC1
    crw-rw--> 1 root audio 116, 9 Apr 5 18:29 hwC0D0
    crw-rw----+ 1根音频116, 4月 5日18:29 hwC1D0
    crw-rw--> 1 root audio 116, 8 Apr 5 18:29 pcmC0D0c.
    crw-rw--> 1 root audio 116, 7 Apr 5 18:29 pcmC0D0p.
    crw-rw--> 1 root audio 116, 2 Apr 5 18:29 pcmC1D3p.
    crw-rw--> 1 root audio 116, 3 Apr 5 18:29 pcmC1D7p.
    crw-rw--> 1 root audio 116, 4 Apr 5 18:29 pcmC1D8p.
    crw-rw--> 1 root audio 116, 1 Apr 5 18:29序列
    crw-rw--> 1 root audio 116, 33 Apr 5 18:29 timer


     CAT /proc/asound/pcm
    00-00: ALC287模拟: ALC287模拟:回放1:捕捉1.
    01-03: HDMI 0: HDMI 0:播放1.
    01-07:HDMI 1:HDMI 1:回放1.
    01-08: HDMI 2: HDMI 2:回放1.

     CAT /proc/asound/cards
     0 [PCH           ]:HDA-Intel - HDA Intel PCH
                         0x4404130000 IRQ 220上的 HDA Intel PCH
     1 [NVidia        ]: HDA-Intel - HDA NVIDIA
                         HDA NVIDIA 在0x86000000 IRQ 17

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

    不要忽略运行"amixer > kcontrol.lst"

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

    您好,升豪
    它包含在我发布的转储 forums.lenovo.com/.../w_VqKdO9zjA 中

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

    你(们)好

    谢谢、您会为我在 win11中提供供应商 ID 和器件 ID 吗?

    如以下快照。 期待您的反馈。

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

    你好,升豪:)

    感谢您发送的消息。 在单独的硬盘上、我刚刚完成了 Windows 11的安装。 (我为笔记本电脑购买了无操作系统版本)。

    输入声卡驱动程序后、我得到了以下结果:

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

    谢谢、我收集了所有已经耗尽 tas2781的笔记本电脑。

    在计划将以下内容添加到 patch_Realtek.c 之前,我将讨论  patch_Realtek.c 的 wtih mantianer (Realtek Guy)

    和笔记本电脑供应商(Lenovo Guy)优先。 然后、我可以设定我的编码

    SND_PCI_quirk (0x17aa、0x387d、"Coga S780-16 pro Quad AAC"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_quirk (0x17aa、0x387e、"Coga S780-16 pro Quad YC"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x3881、"YB9双电源模式2 YC"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x3884、"Y780 YG DUAL_"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x3886、"Y780 VECO dual"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_quirk (0x17aa、0x38a7、"Y780P AMD YG dual"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_quirk (0x17aa、0x38a8、"Y780P AMD VECO dual"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x38ba、"Coga S780-14.5 Air AMD Quad YC"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x38bb、"Coga S780-14.5 Air AMD Quad AAC"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_quirk (0x17aa、0x38be、"Coga S980-14.5 Prox YC Dual"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x38bf、"Coga S980-14.5 prox LX Dual"、ALC287_fixup_TAS2781_I2C)、
    SND_PCI_QUIRK (0x17aa、0x38c3、"Y980 DUAL"、ALC287_fixup_TAS2781_I2C)、

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

    你(们)好

    HDA 驱动程序看起来与编解码器驱动程序有很大不同。 我还在说一段时间来研究它。

    我努力尽快开始编码。 以下是驱动程序架构。 期待您的  

    添加注释。

    周末愉快!

    丁圣浩

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

    你(们)好

    用于 BYPASS 的代码已就绪。

    e2e.ti.com/.../2500.current.7z

    文件夹名称

    说明

    用途

    config_dir

    用于内核映像编译的配置文件

    合并时、不会将它们复制或覆盖到编译文件夹中

    文档

    存储 Tas2781 DTS 插图文件

    包括

    tas2781驱动程序的三个头文件

    声音

    存储 tas2781驱动程序的源文件

    ubuntu2304-make.sh

    编译脚本

    为使用 tas2781部署的不同笔记本电脑存储固件

    将整个文件夹复制到 Laptop /

    • 此补丁已在 ubuntu 23.04/kernel6.4.0-rc5+上进行了测试
    • 代码合并后、使用 ubuntu2304-make.sh 编译和映像部署
    • 不要忘记将整个文件夹库复制到笔记本电脑库中
    • 然后重新启动笔记本电脑

    Br

    丁圣浩

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

    非常感谢晟豪