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);
+
        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,
-- 
2.43.0

Reply via email to