LPE AUDIO INTEGRATION FOR HDMI OR DP PLAYBACK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🎧 LPE Audio integration for HDMI or DP playback πŸ‘‘

okay so real talk β€” this is from the Kernel API Manual, and the page is literally called LPE Audio integration for HDMI or DP playback(9). Yes the header abbreviates it as LPE Audio i... DP playback(9), and no we're not gonna be normal about it, but everything you actually need is right here, bestie. Let's go πŸ’…


πŸ’– Motivation

So here's the tea πŸ«–: Atom platforms (think valleyview and cherryTrail) ship a DMA-based interface as an alternative to the traditional HDaudio path. Iconic of them honestly.

And a tiny heads-up so nobody gets confused later: this mode is unrelated to the LPE aka SST audio engine β€” but the docs still call it LPE anyway, and we're keeping that notation for the sake of consistency. That's just the vibe, okay? πŸ¦‹

The interface is handled by a separate standalone driver maintained in the ALSA subsystem for simplicity. And to minimize the interaction between the two subsystems, a bridge is set up between hdmi-lpe-audio and i915. The bridge has three steps, and they ate, no notes ✨:

  1. Create a platform device to share MMIO/IRQ resources.
  2. Make the platform device child of i915 device for runtime PM.
  3. Create IRQ chip to forward the LPE audio irqs.

And then β€” the payoff πŸŽ€ β€” the hdmi-lpe-audio driver probes the lpe audio device and creates a new sound card. Sound card creation: main character energy, fr fr.


πŸ’€ Threats

⚠️ Bestie, listen to me. This part is important.

Due to the restriction in the Linux platform device model, you (yes, you, manually, with your own hands πŸ™ˆ) need to manually uninstall the hdmi-lpe-audio driver before uninstalling the i915 module. Otherwise we might run into use-after-free issues after i915 removes the platform device: even though the hdmi-lpe-audio driver is released, the module is still in "installed" status. 😭 Not cute. Do not do that. Order matters, periodt.


πŸ› οΈ Implementation

The MMIO/REG platform resources are created according to the registers specification. πŸ“‹

When forwarding LPE audio irqs, the flow control handler selection depends on the platform β€” for example, on valleyview, handle_simple_irq is enough. Lowkey elegant ngl. 🌸


πŸ”— SEE ALSO


🫢 that's the whole page, bestie β€” go read the source, it's giving essential. This one lives at ./drivers/gpu/drm/i915/display, dated October 2026, straight out of the Kernel API Manual. mwah πŸ’‹πŸŒˆ

πŸ“¦ where this page comes from