- Joined
- Apr 16, 2019
- Messages
- 26
- Motherboard
- Gigabyte Z390 Designare
- CPU
- i9-9900K
- Graphics
- Radaeon VII
- Mac
- Mobile Phone
Thunderbolt controllers can be operated in two ways:
Windows operates in ICM mode and the firmware (BIOS) contains a simple method called WMI (Windows Management Interface) that allows Windows to handle some basic functions.
- With ICM (Intel Connection Manager) doing all the work of hot-plug, link training, device I/O.
- Without ICM -- with the operating system drivers doing most of the work.
MacOS can operate in both modes. The reason Thunderbolt with hot-plug is already working on the Designare Z390 is because it's operating in ICM mode. But this mode cannot be used to enable the more advanced Thunderbolt functionality built into macOS, namely Thunderbolt Bus and Local Node.
To enable the full potential of Thunderbolt on a macOS system, we need to activate Thunderbolt Bus and Local Node, which then puts Apple's Thunderbolt drivers in complete control. Doing this is tricky because it requires us to disable ICM mode ourselves (via SSDT), configure Thunderbolt registers/devices (UPSB, DSB0, NHI0, DSB1, DSB2, DSB4, XHC2), and provide _PS0 (power-on) and _PS3 (power-off) functions for each of the above registers/devices. This also means responding to hot-plug events and handling link training functions via SSDT.
On Alpine Ridge systems it seems that creating the necessary SSDT functions is relatively straightforward. But on Titan Ridge systems the task is much harder. Maybe we haven't yet figured out how to configure all the relevant registers. Maybe there's some hidden interaction with the controller's firmware. It's a good mystery!
Will the benefits outweigh the effort? It all seems like a lot or work, I'm unsure if there is something I am missing?