Thunderbolt controllers can be operated in two ways:
- 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.
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.
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!