When an EDID override is in effect, the physical connector may not match reported capabilities. Adds a drm_connector flag that allows drivers to detect such mismatches.
Signed-off-by: Johannes Wüller <[email protected]> --- drivers/gpu/drm/drm_edid.c | 2 ++ include/drm/drm_connector.h | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 26bb7710a462..9b0f410ea2de 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2373,6 +2373,7 @@ static struct edid *_drm_do_get_edid(struct drm_connector *connector, struct edid *edid, *new; size_t alloc_size = EDID_LENGTH; + connector->edid_overridden = false; override = drm_edid_override_get(connector); if (override) { alloc_size = override->size; @@ -2380,6 +2381,7 @@ static struct edid *_drm_do_get_edid(struct drm_connector *connector, drm_edid_free(override); if (!edid) return NULL; + connector->edid_overridden = true; goto ok; } diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index c18be8c19de0..43d7ac31deba 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -2261,6 +2261,14 @@ struct drm_connector { /** @bad_edid_counter: track sinks that give us an EDID with invalid checksum */ unsigned bad_edid_counter; + /** + * @edid_overridden: Indicates whether the last read EDID was an + * override (e.g. via debugfs edid_override or drm.edid_firmware kernel + * parameter), which can cause the physical connector to differ from + * the advertised capabilities. + */ + bool edid_overridden; + /** * @edid_corrupt: Indicates whether the last read EDID was corrupt. Used * in Displayport compliance testing - Displayport Link CTS Core 1.2 -- 2.53.0
