I forgot to include Mario's Reviewed-by in the commit message:

Reviewed-by: Mario Limonciello (AMD) <[email protected]>

On 5/26/2026 10:59 AM, Chenyu Chen wrote:
> Extract the DisplayID base section header logging and non_desktop
> detection from update_displayid_info() into a dedicated helper,
> drm_displayid_process_base_section_header(). Remove the break so the
> iterator walks through all data blocks, preparing for future patches
> that will parse additional block types within the loop.
> 
> The helper is called only once for the base section via a
> base_section_header_processed flag. Since version and primary_use are
> only captured from the base section, and extension sections carry a
> primary use of zero per spec, the non_desktop logic is unaffected.
> 
> No functional change.
> 
> Assisted-by: Copilot:Claude-Opus-4.6
> Signed-off-by: Chenyu Chen <[email protected]>
> ---
>  drivers/gpu/drm/drm_edid.c | 37 +++++++++++++++++++++----------------
>  1 file changed, 21 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 8031f021d4d0..7ad3f939dbe6 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -6715,30 +6715,35 @@ static void drm_reset_display_info(struct 
> drm_connector *connector)
>       memset(&info->amd_vsdb, 0, sizeof(info->amd_vsdb));
>  }
>  
> +static void drm_displayid_process_base_section_header(struct drm_connector 
> *connector,
> +                                                   const struct 
> displayid_iter *iter)
> +{
> +     struct drm_display_info *info = &connector->display_info;
> +
> +     drm_dbg_kms(connector->dev,
> +                 "[CONNECTOR:%d:%s] DisplayID extension version 0x%02x, 
> primary use 0x%02x\n",
> +                 connector->base.id, connector->name,
> +                 displayid_version(iter),
> +                 displayid_primary_use(iter));
> +     if (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
> +         (displayid_primary_use(iter) == PRIMARY_USE_HEAD_MOUNTED_VR ||
> +          displayid_primary_use(iter) == PRIMARY_USE_HEAD_MOUNTED_AR))
> +             info->non_desktop = true;
> +}
> +
>  static void update_displayid_info(struct drm_connector *connector,
>                                 const struct drm_edid *drm_edid)
>  {
> -     struct drm_display_info *info = &connector->display_info;
>       const struct displayid_block *block;
>       struct displayid_iter iter;
> +     bool base_section_header_processed = false;
>  
>       displayid_iter_edid_begin(drm_edid, &iter);
>       displayid_iter_for_each(block, &iter) {
> -             drm_dbg_kms(connector->dev,
> -                         "[CONNECTOR:%d:%s] DisplayID extension version 
> 0x%02x, primary use 0x%02x\n",
> -                         connector->base.id, connector->name,
> -                         displayid_version(&iter),
> -                         displayid_primary_use(&iter));
> -             if (displayid_version(&iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
> -                 (displayid_primary_use(&iter) == 
> PRIMARY_USE_HEAD_MOUNTED_VR ||
> -                  displayid_primary_use(&iter) == 
> PRIMARY_USE_HEAD_MOUNTED_AR))
> -                     info->non_desktop = true;
> -
> -             /*
> -              * We're only interested in the base section here, no need to
> -              * iterate further.
> -              */
> -             break;
> +             if (!base_section_header_processed) {
> +                     drm_displayid_process_base_section_header(connector, 
> &iter);
> +                     base_section_header_processed = true;
> +             }
>       }
>       displayid_iter_end(&iter);
>  }

Reply via email to