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: > Wire up the newly parsed panel_type from drm_display_info into > amdgpu_dm's panel type detection path. When neither the AMD VSDB > nor DPCD determines the panel type, fall back to the DisplayID > Display Device Technology field to set PANEL_TYPE_LCD or > PANEL_TYPE_OLED accordingly. Also expose LCD to userspace via > the panel_type connector property. > > Assisted-by: Copilot:Claude-Opus-4.6 > Signed-off-by: Chenyu Chen <[email protected]> > --- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index e42a5eecdf46..ccf933ed63de 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -3944,11 +3944,13 @@ static void dm_set_panel_type(struct > amdgpu_dm_connector *aconnector) > link->panel_type = PANEL_TYPE_OLED; > } > > - /* > - * TODO: get panel type from DID2 that has device technology field > - * to specify if it's OLED or not. But we need to wait for DID2 > - * support in DC and EDID parser to be able to use it here. > - */ > + /* If VSDB and DPCD didn't determine panel type, check DID */ > + if (link->panel_type == PANEL_TYPE_NONE) { > + if (display_info->panel_type == DRM_MODE_PANEL_TYPE_LCD) > + link->panel_type = PANEL_TYPE_LCD; > + else if (display_info->panel_type == DRM_MODE_PANEL_TYPE_OLED) > + link->panel_type = PANEL_TYPE_OLED; > + } > > if (link->panel_type == PANEL_TYPE_NONE) { > struct drm_amd_vsdb_info *vsdb = &display_info->amd_vsdb; > @@ -3966,6 +3968,10 @@ static void dm_set_panel_type(struct > amdgpu_dm_connector *aconnector) > drm_object_property_set_value(&connector->base, > adev_to_drm(adev)->mode_config.panel_type_property, > DRM_MODE_PANEL_TYPE_OLED); > + else if (link->panel_type == PANEL_TYPE_LCD) > + drm_object_property_set_value(&connector->base, > + adev_to_drm(adev)->mode_config.panel_type_property, > + DRM_MODE_PANEL_TYPE_LCD); > else > drm_object_property_set_value(&connector->base, > adev_to_drm(adev)->mode_config.panel_type_property,
