This allows us to understand if a TV supports ALLM and gpu drivers can use this to trigger ALLM when they so desire.
Signed-off-by: Tomasz Pakuła <[email protected]> Tested-by: Bernhard Berger <[email protected]> --- drivers/gpu/drm/drm_edid.c | 5 +++++ include/drm/drm_connector.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index e2e85345aa9a..bb6cee249749 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6274,6 +6274,8 @@ static void drm_parse_hdmi_forum_scds(struct drm_connector *connector, } drm_parse_ycbcr420_deep_color_info(connector, hf_scds); + if (cea_db_payload_len(hf_scds) >= 8 && hf_scds[8]) + hdmi->allm_supported = hf_scds[8] & DRM_EDID_ALLM; if (cea_db_payload_len(hf_scds) >= 11 && hf_scds[11]) { drm_parse_dsc_info(hdmi_dsc, hf_scds); @@ -6284,6 +6286,9 @@ static void drm_parse_hdmi_forum_scds(struct drm_connector *connector, "[CONNECTOR:%d:%s] HF-VSDB: max TMDS clock: %d KHz, HDMI 2.1 support: %s, DSC 1.2 support: %s\n", connector->base.id, connector->name, max_tmds_clock, str_yes_no(max_frl_rate), str_yes_no(dsc_support)); + drm_dbg_kms(connector->dev, + "[CONNECTOR:%d:%s] ALLM support: %s\n", + connector->base.id, connector->name, str_yes_no(hdmi->allm_supported)); } static void drm_parse_hdmi_deep_color_info(struct drm_connector *connector, diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 8f34f4b8183d..ac84884a96a5 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -330,6 +330,9 @@ struct drm_hdmi_info { /** @max_lanes: supported by sink */ u8 max_lanes; + /** @allm_supported: flag for auto low latency mode support by sink */ + bool allm_supported; + /** @dsc_cap: DSC capabilities of the sink */ struct drm_hdmi_dsc_cap dsc_cap; }; -- 2.52.0
