Title: MacBookPro12,1 (A1502) Keyboard/Trackpad Fail on Fedora Live - applespi Aborts with “USB interface already enabled”
I am attempting to dual-boot Fedora Linux on a MacBook Pro 12,1 (Early 2015, A1502). The built-in keyboard and trackpad work perfectly in macOS, but they are completely unresponsive in the Linux live environment. This persists even after an installation
When attempting to force-load the SPI driver subsystem manually:
sudo modprobe intel_lpss intel_lpss_pci spi_pxa2xx_platform spi_pxa2xx_pci applespi
The modules load cleanly without standard errors, but the input devices remain dead. Running sudo dmesg | grep -E "applespi|lpss|spi" reveals this explicit abort message from the driver:
[ 21.703956] applespi spi-APP000D:00: USB interface already enabled
[ 2482.404410] applespi spi-APP000D:00: USB interface already enabled
Looking at the driver source code (applespi.c), this indicates that the ACPI method UIST (USB Interface Status) is returning 1. The driver throws -ENODEV and exits intentionally because it detects that the hardware interface is actively bound to the legacy USB HID emulation layer instead of the true SPI bus.
I have already verified, tested, and definitively ruled out the following variables:
- HARDWARE / CABLE IS FINE: The keyboard, trackpad, and backlight work perfectly in macOS, Apple Startup Manager, and the GRUB menu.
- OPENCORE INNOCENT: The exact same failure occurs when bypassing OpenCore completely and booting straight from Apple’s native EFI firmware.
- KERNEL BUILT-IN ROADBLOCK: The driver
intel_lpss_pciis compiled directly into the Fedora kernel core (=y). It cannot be removed or re-probed usingrmmod. - TRIED PARAMETERS: Booting with
acpi_osi=Linux,acpi_osi=!Darwin,acpi_osi=! acpi_osi="Windows 2015", andintel_lpss_pci.rpm_disabled=1did not drop the firmware’s legacy USB emulation lock or trigger the SPI handoff. - COLD CYCLE MANEUVERS: Fully draining the system capacitors by keeping the device completely shut down and unplugged from MagSafe for 5+ minutes does not reset the status bit; the firmware persistently loads with UIST=1.
Given that the built-in intel_lpss_pci driver handles early subsystem mapping before applespi can evaluate ACPI switches, how can I force the kernel or ACPI layer to execute the UIEN (USB Interface Enable = 0) and SIEN (SPI Interface Enable = 1) sequence early enough to drop the USB emulation mode?
Are there specific low-level DSDT override overrides, dracut early hook modifications, or undocumented intel_lpss flags that can force the SPI host controller bridge out of this firmware loop on a kernel where the LPSS drivers are built-in?