On 2026-01-06 12:00, Mario Limonciello (AMD) wrote:
> amdgpu verifies that a given panel is an OLED panel from extended caps
> and can provide accurate information to userspace.  Attach a property
> to the DRM connector.
> 
> Signed-off-by: Mario Limonciello (AMD) <[email protected]>
> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> 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 35dbc6aba4dfc..1cac5ebf50a9d 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -91,6 +91,7 @@
>  #include <drm/drm_fourcc.h>
>  #include <drm/drm_edid.h>
>  #include <drm/drm_eld.h>
> +#include <drm/drm_mode.h>
>  #include <drm/drm_utils.h>
>  #include <drm/drm_vblank.h>
>  #include <drm/drm_audio_component.h>
> @@ -3739,6 +3740,10 @@ static void update_connector_ext_caps(struct 
> amdgpu_dm_connector *aconnector)
>       caps->ext_caps = &aconnector->dc_link->dpcd_sink_ext_caps;
>       caps->aux_support = false;
>  
> +     drm_object_property_set_value(&conn_base->base,
> +                                   
> adev_to_drm(adev)->mode_config.panel_type_property,
> +                                   caps->ext_caps->bits.oled ? 
> DRM_MODE_PANEL_TYPE_OLED : DRM_MODE_PANEL_TYPE_UNKNOWN);
> +

I think we'll want to pull this out into something like `dm_set_panel_type()`, 
called after `update_connector_ext_caps()` and any additional bits of edid 
parsing needed to make panel_type detection more robust. I suppose that can be 
a future task.

Series is
Reviewed-by: Leo Li <[email protected]>

Thanks,
Leo

>       if (caps->ext_caps->bits.oled == 1
>           /*
>            * ||
> @@ -9020,6 +9025,8 @@ void amdgpu_dm_connector_init_helper(struct 
> amdgpu_display_manager *dm,
>       if (connector_type == DRM_MODE_CONNECTOR_eDP) {
>               struct drm_privacy_screen *privacy_screen;
>  
> +             drm_connector_attach_panel_type_property(&aconnector->base);
> +
>               privacy_screen = drm_privacy_screen_get(adev_to_drm(adev)->dev, 
> NULL);
>               if (!IS_ERR(privacy_screen)) {
>                       
> drm_connector_attach_privacy_screen_provider(&aconnector->base,

Reply via email to