[PATCH 5/4] drm/edid: parse Tiled Display Topology Data Block for DisplayID 2.0
Dmitry Osipenko
dmitry.osipenko at collabora.com
Tue Feb 21 16:28:22 UTC 2023
On 2/17/23 13:46, Jani Nikula wrote:
> Currently we only parse the Tiled Display Topology Data Block for
> DisplayID structure version 1.2, but not 2.0. The contents seem to be
> the same for both, so expand the parsing to structure version 2.0.
>
> Note that DisplayID spec version is not the same as DisplayID structure
> version; DisplayID 1.3 uses structure version 1.2, and DisplayID 2.0-2.1
> use structure version 2.0. Lovely.
>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 03ad53a1ba82..ebab862b8b1a 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -7267,6 +7267,15 @@ static void drm_parse_tiled_block(struct drm_connector *connector,
> }
> }
>
> +static bool displayid_is_tiled_block(const struct displayid_iter *iter,
> + const struct displayid_block *block)
> +{
> + return (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_12 &&
> + block->tag == DATA_BLOCK_TILED_DISPLAY) ||
> + (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
> + block->tag == DATA_BLOCK_2_TILED_DISPLAY_TOPOLOGY);
> +}
> +
> static void _drm_update_tile_info(struct drm_connector *connector,
> const struct drm_edid *drm_edid)
> {
> @@ -7277,7 +7286,7 @@ static void _drm_update_tile_info(struct drm_connector *connector,
>
> displayid_iter_edid_begin(drm_edid, &iter);
> displayid_iter_for_each(block, &iter) {
> - if (block->tag == DATA_BLOCK_TILED_DISPLAY)
> + if (displayid_is_tiled_block(&iter, block))
> drm_parse_tiled_block(connector, block);
> }
> displayid_iter_end(&iter);
I don't have display setup to test this, but looks okay.
Reviewed-by: Dmitry Osipenko <dmitry.osipenko at collabora.com>
--
Best regards,
Dmitry
More information about the dri-devel
mailing list