皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linux 内核补丁发布以在 Apple M1 / M2 上启用 USB3 支持

除了本周为 Linux 6.18 准备 Apple SoC DT 更新,以及为主线 Linux 内核提交的有关 Apple 笔记本电脑盖事件和电源按钮驱动程序补丁进行审查之外,今天在 Linux 内核邮件列表上还发布了关于为 Apple Silicon M1 / M2 SoC 启用 USB3 支持的补丁请求意见(RFC)。

这些 USB3 支持补丁已经在下游 Asahi Linux 中使用了数月,现在 Sven Peter 将其作为 RFC 补丁系列提交,供主线 Linux 内核考虑。Sven 在内核补丁系列的覆盖信中提到了几个关于 Apple USB3 支持的注意事项和问题:

这个系列包括对 dwc3、tipd 以及一个新的 phy 驱动的更改,以在这些机器上启用 USB3。此外,还有一些准备工作,最终目的是启用 DisplayPort AltMode 和 Thunderbolt,但这些需要未来的工作。总体来说,整个设置相当混乱,我们已经尝试了很长时间,终于找到了这个解决方案。

USB3 控制器是一种非常特殊的故障:它从未接收到任何本应直接到达 dwc3 的端口插拔事件。此外,每次新连接都需要进行完整的硬复位,大多数模式更改也是如此。为什么需要这样做的原因在提交描述中有所说明。

此外,我们还需要保持 Type-C PHY 的初始化和 dwc3 的初始化紧密同步。如果两个系统之间存在竞争,最坏的情况是端口在系统重启前停止工作,最糟糕的情况是某个看门狗在大约 5 秒后强制复位整个 SoC。到目前为止,我只在启用 Thunderbolt 时见过这种情况,但也不排除 USB3 也会发生类似的情况。

这些机器上的 CD321x TIPD 变体负责整个 bringup 过程。与原始芯片不同,我们无法控制协商的模式,甚至无法看到 PDO 或 VDO。我们只能在模式协商完成后才知道,并且必须相应地行动。我甚至将芯片的固件进行了 dump 以确认这一点。

赫克托在 1 月初也写了一个关于这个的总结,而这个系列是唯一一种能使这些端口可靠启动的方法。有些地方并不漂亮,但我没有其他办法来实现这一点,因此使用了 RFC 标签。我很乐意讨论其他方法。

PHY 和 TIPD 驱动程序已经包含了 DisplayPort AltMode 和 USB4/Thunderbolt 的更改。但这些仍需要额外的工作,但由于我们无法控制设备进入的模式,我们现在就可以合并它们。

我使用了 phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml 作为 atcphy 的 dt-binding 模板(特别是端口部分)。这是我找到的具有类似功能的 PHY 的最新绑定。

为了测试这一点,你需要运行最新的 m1n1 主分支,因为 1.5.0 版本不包含从 Apple 设备树中提取可调参数的代码。用于测试的内核树也标记为 apple-usb3-v1。

如果这里的整体方法没有问题,而且没有人能想到更好的支持这种 SoC 的方法,我将放弃 RFC 并将其他 M1 和 M2 机器的 dts 修改也包含进去。

有兴趣了解此 USB3 支持的读者可以查看 RFC 代码系列

Linux 内核补丁发布以在 Apple M1 / M2 上启用 USB3 支持

总体而言,上游 Linux 内核对现代 Apple 系统的支持仍然远非理想,本周的例子包括 USB3 支持和 Apple 笔记本盖子事件以及电源按钮的工作向上游推进……而搭载 Snapdragon X1 的笔记本也存在(不同的)Linux 问题,AMD Ryzen 和 Intel Core Ultra 笔记本仍然是 Linux 笔记本使用中更为全面和高性能的选择。

转自 Linux Kernel Patches Posted For Enabling USB3 Support On Apple M1 / M2 – Phoronix