This fork contains fixes for Apple Silicon (tested on Mac mini M1 / j274) to enable stable 4K @ 120Hz video and DP/HDMI audio over USB-C (ATC PHYs) and the built-in HDMI port.
Upstream appledrm.hdmi_audio=1 was experimental and suffered from several issues across standby, hotplug, and modesets:
- AFK Slot Leak:
av_audiosrv_teardown()did not clearservice->enabled = false, exhausting the 16 AFK endpoint channel slots after repeated power cycles. - WirePlumber Probe Race / Standby Profile Loss:
dcp_pcm_open()returned-ENXIOwhen the screen was disconnected/sleeping, causing WirePlumber to permanently drop the stereo profile on boot or restart. - Standby Reconnect Recovery: When the display woke up, the stream stalled because
open_cookiewas out of sync. ReplacedSNDRV_PCM_STATE_DISCONNECTEDwithsnd_pcm_stop_xrun()and synced cookies onprepare(). - SIO DMA Descriptors & Period Limits: Fixed descriptor bitmap size (
devm_bitmap_zalloc) and capped ALSAperiods_maxat 32 to prevent-ENOMEMloops under PipeWire. - Modeset Order: Audio service initialization is deferred until after
iomfb_modeset()to prevent display pipeline failures on ATC PHYs. - Service Teardown, PM Balance & Disconnected State: Guarded
afk_service_call()anddcp_audiosrv_*againstNULLservice pointers during display standby, balanced runtime PM get/put vialink_started, and returned-ENODEVon disconnected prepare/start to eliminate runaway PipeWire CPU spin loops.
fairydust: Rebased on latest Asahi upstream (asahi-7.1.12-1/ kernel 7.1.12).fairydust-7.1.6: Stable tree matching Fedora Asahi Remix 7.1.6 kernel.
To compile just the appledrm module:
make -j$(nproc) M=drivers/gpu/drm/appleAll patches and cover letters are also exported as git format-patches in asahi-patches/.