Hi, On Wed, May 27, 2026 at 04:53:29PM +0800, [email protected] wrote: > From: wangdicheng <[email protected]> > > The DRM HDMI audio helper framework notifies the audio codec about > physical connection changes via drm_connector_hdmi_audio_plugged_notify(), > but has no mechanism to notify when the CRTC state changes while the > connector remains physically connected. > > This is a real problem on platforms with DP/HDMI audio. When a CRTC is > disabled while the sink remains connected (e.g. user switches to > "internal display only" mode but still wants audio from the external > monitor), the audio path silently breaks because: > > 1. The video stream is disabled, so there are no blanking intervals > for audio Secondary Data Packets (SDP) to be transported. > > 2. The audio codec still believes the jack is present because > plugged_notify() was not called (the connector is still physically > connected). > > 3. Userspace (PulseAudio/PipeWire) continues routing audio to the > external display, but no sound is actually output. > > Without a framework-level notification, vendors who need to support > "audio output to external display while CRTC is inactive" are forced > to scatter condition checks across CRTC disable, encoder disable, > suspend, and resume paths. This pattern is fragile: any change in > the display pipeline can break the audio path, and the same condition > ("connector connected but CRTC inactive, and audio is in use") must > be duplicated in multiple locations. > > The root cause is architectural: the audio codec has no visibility > into CRTC state changes, so there is no clean way to implement > policies like: > > - Mute audio output when CRTC is disabled (instead of silent breakage) > - Keep the video stream alive for audio transport > - Switch to DP Audio Only mode (hardware-supported on some platforms, > e.g. Intel TRANS_DP_AUDIO_ONLY, but never used in i915 driver) > > The HDA HDMI silent stream / KAE mechanism partially addresses this on > Intel platforms, but it operates only on the audio codec side and does > not coordinate with the DRM side. It also cannot work on platforms > without HDA codec support (e.g. ASoC-based designs). > > Add an optional callback crtc_state_change() to > drm_connector_hdmi_audio_funcs, and a corresponding notification > function drm_connector_hdmi_audio_crtc_notify(). DRM drivers should > call this when the CRTC state changes on a connector with audio > capability, allowing audio codec implementations to react to display > pipeline state changes rather than only physical connection changes. > > This provides a framework-level mechanism to implement "audio without > active display" policies cleanly, instead of scattering condition > checks across the display pipeline. > > Signed-off-by: wangdicheng <[email protected]>
I'm not saying this is right or wrong, but I'd like to see what it looks like from a driver point of view before merging anything in the framework. Maxime
signature.asc
Description: PGP signature
