On Thu, 17 Sep 2026, Mario Limonciello <[email protected]> wrote:
> DRM's EDID read helpers probe DDC before consulting debugfs or firmware
> overrides. This preserves connector-detection semantics for drivers that
> use a successful EDID read as evidence that a sink is connected, but it
> prevents drivers with independent presence detection from using an
> override when DDC is unresponsive.

IOW, your use case is that you want to use an override EDID with
reliable presence detection other than the DDC probe, and don't want to
use connector forcing.

> This affects AMD Display Core, which establishes physical presence from
> HPD before attempting to read the EDID. When a connected sink stops
> responding over DDC, the configured override is ignored and AMDGPU falls
> back to a 640x480 mode.
>
> Add an override-only EDID reader that does not access hardware, then use
> it in AMD Display Core before trying ACPI, VBIOS, or DDC sources. The new
> helper preserves DRM_FORCE_OFF handling and the existing preference for
> debugfs overrides over firmware EDIDs.

It was quite a bit of work to unify the firmware/override EDID handling
to be the same for all drivers. I'm not exactly thrilled about exposing
a mechanism to *only* get the override EDID, just to allow drivers to
deviate from the unified mechanisms.

The goal was to plug in the override at the low level, hidden away from
drivers, to make it as close to the normal case as possible. One of the
follow-up ideas, which I never really got around to, was to do the exact
same validity checking in _drm_do_get_edid() for override EDIDs as
regular EDIDs.

I'm thinking maybe we need a way to allow drivers to define a
drm_probe_ddc() alternative as a connector callback? If you set it, you
can use another mechanism for presence detection than DDC probe,
otherwise fall back to DDC probe. It could be used in the regular case
too, if you have a reliable and quicker mechanism than DDC probe.


BR,
Jani.


>
> The first patch introduces the helper. The second fixes the AMDGPU
> regression.
>
> Mario Limonciello (2):
>   drm/edid: Add an override-only EDID reader
>   drm/amd/display: Honor EDID overrides for connected sinks
>
>  .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 14 +++++++-----
>  drivers/gpu/drm/drm_edid.c                    | 22 +++++++++++++++++++
>  include/drm/drm_edid.h                        |  1 +
>  3 files changed, 32 insertions(+), 5 deletions(-)

-- 
Jani Nikula, Intel

Reply via email to