[PATCH v3 0/5] Add support for fetching EDID from ACPI _DDC

From: Mario Limonciello
Date: Thu Feb 01 2024 - 17:12:10 EST


Some laptops ship an EDID in the BIOS encoded in the _DDC method that
differs than the EDID directly on the laptop panel for $REASONS.

This is the EDID that is used by the AMD Windows driver, and so sometimes
different results are found in different operating systems.

This series adds a new DRM helper that will use acpi_video to fetch the
EDID.

On amdgpu when an eDP panel is found the BIOS
is checked first for an EDID and that used as a preference if found.

On nouveau it replaces the previous local function doing a similar role.

This does *not* use struct drm_edid as this will require more involved
amdgpu display driver work that will come separately as part of follow-ups
to: https://lore.kernel.org/amd-gfx/20240126163429.56714-1-mwen@xxxxxxxxxx/

v2-v3:
* Clean up some of the 'select ACPI_VIDEO' kconfig spaghetti reported by LKP
* Drop the 'select ACPI_VIDEO' from the DRM drivers

Mario Limonciello (5):
ACPI: video: Handle fetching EDID that is longer than 256 bytes
drm: Add drm_get_acpi_edid() helper
drm/amd: Fetch the EDID from _DDC if available for eDP
drm/nouveau: Use drm_get_acpi_edid() helper
drm: Drop unneeded selects in DRM drivers

drivers/acpi/acpi_video.c | 25 +++----
drivers/gpu/drm/Kconfig | 5 ++
drivers/gpu/drm/amd/amdgpu/Kconfig | 7 --
drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
.../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 4 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 ++
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ++-
.../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 9 ++-
drivers/gpu/drm/drm_edid.c | 73 +++++++++++++++++++
drivers/gpu/drm/gma500/Kconfig | 6 --
drivers/gpu/drm/i915/Kconfig | 7 --
drivers/gpu/drm/nouveau/nouveau_acpi.c | 27 -------
drivers/gpu/drm/nouveau/nouveau_acpi.h | 2 -
drivers/gpu/drm/nouveau/nouveau_connector.c | 2 +-
drivers/gpu/drm/radeon/Kconfig | 7 --
drivers/gpu/drm/xe/Kconfig | 6 --
include/drm/drm_edid.h | 1 +
17 files changed, 116 insertions(+), 84 deletions(-)

--
2.34.1