This series adds parsing of the Display Device Technology field from
the DisplayID v2.x Display Parameters Data Block (tag 0x21), enabling
panel type detection (LCD/OLED) through a standards-based source.

Previously, amdgpu_dm determined panel type only from AMD VSDB, DPCD
sink extended caps, and a Samsung luminance heuristic. A TODO comment
in dm_set_panel_type() acknowledged the need to also use DisplayID as
a source. This series resolves that by parsing the Display Parameters
block in DRM core and wiring it into amdgpu_dm's detection priority
chain as: VSDB > DPCD > DisplayID > Samsung heuristic.

Patch 1 extracts the base section header processing into a helper and
removes the break so the iterator can walk through all data blocks.
The helper is invoked only once via a base_section_header_processed
flag because displayid_version() and displayid_primary_use() always
return values captured from the base section — they are fixed
regardless of which extension section the iterator is currently in,
so processing the header more than once would be redundant.

Changes in v3:
- Renamed helper to drm_displayid_process_base_section_header() to
  reflect it handles the base section (Jani)
- Fixed argument alignment to match opening parenthesis (Jani)
- Renamed header_processed to base_section_header_processed (Jani)
- Fully expanded displayid_display_params_block struct with all named
  fields per spec Table 4-7, replacing u8 payload[27] (Jani)
- Added DISPLAYID_DEVICE_TECH_{UNSPECIFIED,LCD,OLED} named defines (Jani)
- Removed DISPLAYID_DISPLAY_PARAMS_MIN_LEN macro, use inline sizeof (Jani)
- Removed superfluous blank line and useless inline comments (Jani)
- Debug print now shows "LCD"/"OLED" string instead of number (Jani)
- Renamed did_panel_type to panel_type (Jani)
- Added LCD to drm_panel_type_enum_list[] and property documentation (Jani)
- Added PANEL_TYPE_LCD branch in dm_set_panel_type() property setting

Chenyu Chen (3):
  drm/edid: extract base section header processing into helper
  drm/edid: parse panel type from DisplayID 2.x Display Parameters
  drm/amd/display: use DisplayID panel type in dm_set_panel_type

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 ++--
 drivers/gpu/drm/drm_connector.c               |  3 +-
 drivers/gpu/drm/drm_displayid_internal.h      | 24 ++++++
 drivers/gpu/drm/drm_edid.c                    | 80 +++++++++++++++----
 include/drm/drm_connector.h                   |  6 ++
 include/uapi/drm/drm_mode.h                   |  1 +
 6 files changed, 109 insertions(+), 21 deletions(-)

-- 
2.43.0

Reply via email to