Mastodon
Zuletzt aktualisiert am
Phoronix Linux News
Michael Larabel

Linux-Kernel-Patches zur Aktivierung der USB3-Unterstützung auf Apple M1 / M2 veröffentlicht

In dieser Woche wurden nicht nur die Apple SoC DT Updates für Linux 6.18 vorbereitet, sondern auch die Patches für die Apple Laptop-Deckel-Ereignisse und den Power-Button-Treiber für den Mainline-Linux-Kernel zur Überprüfung veröffentlicht. Außerdem wurde heute auf der Linux-Kernel-Mailingliste ein Request for Comments (RFC) für Patches zur Aktivierung der USB3-Unterstützung mit Apple Silicon M1 / M2 SoCs veröffentlicht.
Eine Übersetzung von 🇬🇧 Phoronix.com

Diese USB3-Unterstützungspatches werden seit Monaten vom Downstream Asahi Linux getragen, während Sven Peter sie jetzt als RFC-Patch-Serie zur Berücksichtigung im Mainline-Linux-Kernel veröffentlicht hat. Svens Begleitschreiben zu der Kernel-Patch-Serie ist recht interessant, da es mehrere Vorbehalte und Probleme mit Apples USB3-Unterstützung aufzeigt:

Diese Serie umfasst Änderungen an dwc3, tipd und einen neuen phy-Treiber, um USB3 auf diesen Rechnern zu ermöglichen. Es gibt auch einige Vorbereitungen, um DisplayPort AltMode und Thunderbolt zu aktivieren, aber daran muss noch gearbeitet werden. Alles in allem ist dieses ganze Setup ein ziemliches Durcheinander, und wir haben schon eine ganze Weile versucht, es zum Laufen zu bringen, und sind schließlich zu dieser Lösung hier gekommen.

Der USB3-Controller ist eine ganz besondere Art von defekt: Er sieht nie irgendwelche Port-Plug/Unplug-Ereignisse, die normalerweise direkt bei dwc3 ankommen sollten. Außerdem muss er bei jeder neuen Verbindung und bei den meisten Moduswechseln einen kompletten Hardreset durchführen. Details dazu, warum dies erforderlich ist, finden Sie in der Commit-Beschreibung.

Darüber hinaus müssen wir das Type-C PHY Bringup und das dwc3 Bringup eng miteinander synchronisieren. Wenn es einen Wettlauf zwischen den beiden Systemen gibt, funktioniert der Port im besten Fall nicht mehr, bis das System neu gestartet wird, und im schlimmsten Fall gibt es irgendwo einen Watchdog, der das gesamte SoC nach ~5 Sekunden zwangsweise zurücksetzt. Letzteres habe ich bisher nur beim Hochfahren von Thunderbolt gesehen, aber es würde mich nicht wundern, wenn es auch mit usb3 passiert.

Das gesamte Hochfahren wird von einer TIPD-Variante namens CD321x orchestriert, die auf diesen Geräten zu finden ist. Im Gegensatz zu den ursprünglichen Chips haben wir jedoch keine Kontrolle darüber, welcher Modus ausgehandelt wird, und können auch die PDOs oder VDOs nicht sehen. Wir erfahren es erst, wenn der Modus ausgehandelt wurde, und müssen dann entsprechend handeln. Ich bin sogar so weit gegangen, die Firmware des Chips zu dumpen, um dies zu bestätigen.

Hector hat Anfang Januar eine weitere Zusammenfassung dazu geschrieben, und diese Serie ist der einzige Weg, wie wir diese Ports zuverlässig bereitstellen können. Es ist an einigen Stellen nicht schön, aber ich habe keine andere Idee, wie man das implementieren kann, daher der RFC-Tag. Ich bin gerne bereit, auch andere Ansätze zu diskutieren.

Sowohl der PHY als auch der TIPD-Treiber enthalten bereits Änderungen für DisplayPort AltMode und USB4/Thunderbolt. Diese müssen zwar noch überarbeitet werden, aber da wir nicht kontrollieren können, in welchem Modus sich die Geräte befinden, können wir sie bereits jetzt zusammenführen.

Ich habe phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml als Vorlage für die dt-Bindung für atcphy verwendet (insbesondere die Ports). Das war die aktuellste Bindung, die ich für einen PHY mit ähnlichen Eigenschaften gefunden habe.

Um dies zu testen, müssen Sie den neuesten m1n1-Master laufen lassen, da die Version 1.5.0 nicht den Code enthält, der die Tunables aus Apples Device-Tree herausnimmt. Ein Kernel-Tree zum Testen ist ebenfalls als apple-usb3-v1 gekennzeichnet.

Wenn der Gesamtansatz hier in Ordnung ist und niemandem ein besserer Weg einfällt, dieses SoC zu unterstützen, werde ich den RFC fallen lassen und die dts-Änderungen auch für die anderen M1- und M2-Maschinen aufnehmen.

Siehe die RFC-Patch-Reihe für diejenigen, die sich für diese USB3-Unterstützung interessieren.

Insgesamt ist die Upstream-Linux-Kernel-Unterstützung für moderne Apple-Systeme nach wie vor alles andere als wünschenswert, wobei die Beispiele gerade in dieser Woche die USB3-Unterstützung, das Apple-Laptop-Deckel-Ereignis und die Arbeit am Power-Button in Richtung Upstream betreffen... Da auch Snapdragon X1-Laptops (verschiedene) Probleme mit Linux haben, bleiben AMD Ryzen- und Intel Core Ultra-Laptops die weitaus bessere Wahl für die Nutzung von Linux-Laptops.

Unterstützen Sie Michael

Ein Service von s3n🧩net

Comments