diff options
author | 2022-06-29 12:27:55 +0300 | |
---|---|---|
committer | 2022-06-30 10:51:12 +0300 | |
commit | b1dee9527e654207c0980023fadabdd12d3dba80 (patch) | |
tree | ecc6eca44fe4490c62a4344c56dacc907705dab3 | |
parent | drm/edid: add HF-EEODB support to EDID read and allocation (diff) | |
download | linux-dev-b1dee9527e654207c0980023fadabdd12d3dba80.tar.xz linux-dev-b1dee9527e654207c0980023fadabdd12d3dba80.zip |
drm/edid: take HF-EEODB extension count into account
Take the HF-EEODB extension count override into account.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/c31b5796feb05c3ebac067600be2e88e098d7592.1656494768.git.jani.nikula@intel.com
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index fa3a3e294560..bbc25e3b7220 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -1629,6 +1629,19 @@ static int drm_edid_block_count(const struct drm_edid *drm_edid) /* Starting point */ num_blocks = edid_block_count(drm_edid->edid); + /* HF-EEODB override */ + if (drm_edid->size >= edid_size_by_blocks(2)) { + int eeodb; + + /* + * Note: HF-EEODB may specify a smaller extension count than the + * regular one. Unlike in buffer allocation, here we can use it. + */ + eeodb = edid_hfeeodb_block_count(drm_edid->edid); + if (eeodb) + num_blocks = eeodb; + } + /* Limit by allocated size */ num_blocks = min(num_blocks, (int)drm_edid->size / EDID_LENGTH); |