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]> --- v2: rebased, no functional change. 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 42f4e41c459f..9ea6f5f19131 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -2424,6 +2424,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; @@ -2431,6 +2432,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 899643586bb3..d242fb922741 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -2394,6 +2394,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.56.0
