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

Eric Anholt eric at anholt.net
Wed Mar 6 17:51:35 UTC 2019


Maxime Ripard <maxime.ripard at bootlin.com> writes:

> [ Unknown signature status ]
> On Tue, Mar 05, 2019 at 01:47:38PM -0800, Eric Anholt wrote:
>> Maxime Ripard <maxime.ripard at bootlin.com> writes:
>> 
>> > [ Unknown signature status ]
>> > 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.
>> 
>> Oh, right, the HDMI encoder passes the ELD to ALSA, and userspace gets
>> to use that.  So, open source is already doing the right thing, and the
>> problem was that the old driver talking to the firmware wouldn't, thus
>> the need for a flag.
>
> I started to look into this, and while on my laptop, the ELD seems to
> be exposed as part of /proc/asound/card0/eld*, there's no such file on
> the RPi with a 5.0 kernel (and an HDMI monitor with audio support,
> obviously). Is it something that used to work at some point?

I don't know, personally.  Sounds like it's worth investigating.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20190306/0cf0efde/attachment.sig>


More information about the dri-devel mailing list