[PATCH 2/7] drm/edid: Allow to ignore the audio EDID data

Ville Syrjälä ville.syrjala at linux.intel.com
Tue Mar 5 19:15:54 UTC 2019


On Tue, Mar 05, 2019 at 05:24:13PM +0200, Ville Syrjälä wrote:
> On Tue, Mar 05, 2019 at 10:12:40AM +0100, Maxime Ripard wrote:
> > On Mon, Mar 04, 2019 at 03:05:31PM -0500, Alex Deucher wrote:
> > > On Mon, Mar 4, 2019 at 2:53 PM Eric Anholt <eric at anholt.net> wrote:
> > > >
> > > > Maxime Ripard <maxime.ripard at bootlin.com> writes:
> > > >
> > > > > In some cases, in order to accomodate with displays with poor EDIDs, we
> > > > > need to ignore that the monitor alledgedly supports audio output and
> > > > > disable the audio output.
> > > > >
> > > > > Signed-off-by: Maxime Ripard <maxime.ripard at bootlin.com>
> > > > > ---
> > > > >  drivers/gpu/drm/drm_edid.c | 8 ++++++++
> > > > >  1 file changed, 8 insertions(+)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> > > > > index 990b1909f9d7..c0258b011bb2 100644
> > > > > --- a/drivers/gpu/drm/drm_edid.c
> > > > > +++ b/drivers/gpu/drm/drm_edid.c
> > > > > @@ -4190,6 +4190,11 @@ bool drm_detect_hdmi_monitor(struct edid *edid)
> > > > >  }
> > > > >  EXPORT_SYMBOL(drm_detect_hdmi_monitor);
> > > > >
> > > > > +static bool ignore_edid_audio = false;
> > > > > +module_param(ignore_edid_audio, bool, 0644);
> > > > > +MODULE_PARM_DESC(ignore_edid_audio,
> > > > > +              "Ignore the EDID and always consider that a monitor doesn't have audio capabilities");
> > > > > +
> > > > >  /**
> > > > >   * drm_detect_monitor_audio - check monitor audio capability
> > > > >   * @edid: EDID block to scan
> > > > > @@ -4209,6 +4214,9 @@ bool drm_detect_monitor_audio(struct edid *edid)
> > > > >       bool has_audio = false;
> > > > >       int start_offset, end_offset;
> > > > >
> > > > > +     if (ignore_edid_audio)
> > > > > +             goto end;
> > > > > +
> > > > >       edid_ext = drm_find_cea_extension(edid);
> > > > >       if (!edid_ext)
> > > > >               goto end;
> > > >
> > > > It looks like the motivation for the original flag on Raspberry Pi was
> > > > "I've got a non-audio monitor, but the system comes up trying to play
> > > > audio to HDMI instead of the analog jack".  Do we have some way for DRM
> > > > to communicate to ALSA that this is not the right place to try to play
> > > > audio by default?
> > > 
> > > Apparently not.  We have users using debug knobs in our drivers to
> > > disable display audio because ALSA defaults to that rather than other
> > > audio.
> > 
> > I guess one way to do this would be to register the card only when an
> > audio-capable monitor is connected instead of doing this at probe
> > time. I'm not sure how convenient it is for userspace though.
> 
> We already provide the ELD to alsa. I'm pretty sure pulseaudio uses
> that stuff somehow to figure out whether to play audio over HDMI.
> But since I don't use pulseaudio myself I can't be 100% sure.
> 
> Cc:ing Takashi/alsa folks for confirmation.

I forgot that the .pin_eld_notify() stuff is i915 specific. But
I see some kind of hdmi_codec_ops thing used by some other drivers.
I guess that is supposed to achieve the same thing more or less?
I'm not immediately seeing any kind of drm->alsa notification
hook in there though.

-- 
Ville Syrjälä
Intel


More information about the dri-devel mailing list