drm/amd/display: Fix debugfs on MST connectors
authorMikita Lipski <mikita.lipski@amd.com>
Thu, 31 Oct 2019 20:09:01 +0000 (16:09 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Nov 2019 15:12:52 +0000 (10:12 -0500)
[why]
Previous patch allowed to initialize debugfs entries on both MST
and SST connectors, but MST connectors get registered much later
which exposed an issue of debugfs entries being initialized in the
same folder.

[how]
Return SST debugfs entries' initialization back to where it was.
For MST connectors we should initialize debugfs entries in connector
register function after the connector is registered.

Signed-off-by: Mikita Lipski <mikita.lipski@amd.com>
Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

index c4b9655640b8ab480d737da3560125fd20480095..11b9c65e1ee8569598c24919fbf57a7932ea08ff 100644 (file)
@@ -5584,12 +5584,6 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
                        drm_connector_attach_content_protection_property(&aconnector->base, false);
 #endif
        }
-
-#if defined(CONFIG_DEBUG_FS)
-       connector_debugfs_init(aconnector);
-       aconnector->debugfs_dpcd_address = 0;
-       aconnector->debugfs_dpcd_size = 0;
-#endif
 }
 
 static int amdgpu_dm_i2c_xfer(struct i2c_adapter *i2c_adap,
@@ -5712,8 +5706,6 @@ static int amdgpu_dm_connector_init(struct amdgpu_display_manager *dm,
                        &aconnector->base,
                        &amdgpu_dm_connector_helper_funcs);
 
-       drm_connector_register(&aconnector->base);
-
        amdgpu_dm_connector_init_helper(
                dm,
                aconnector,
@@ -5724,6 +5716,13 @@ static int amdgpu_dm_connector_init(struct amdgpu_display_manager *dm,
        drm_connector_attach_encoder(
                &aconnector->base, &aencoder->base);
 
+       drm_connector_register(&aconnector->base);
+#if defined(CONFIG_DEBUG_FS)
+       connector_debugfs_init(aconnector);
+       aconnector->debugfs_dpcd_address = 0;
+       aconnector->debugfs_dpcd_size = 0;
+#endif
+
        if (connector_type == DRM_MODE_CONNECTOR_DisplayPort
                || connector_type == DRM_MODE_CONNECTOR_eDP)
                amdgpu_dm_initialize_dp_connector(dm, aconnector);
index ba508a89726318c3a36f500f51093dfe36701a5d..205531ca686f647989a39b5afe31b0c9fcba5edc 100644 (file)
@@ -36,7 +36,9 @@
 #include "dc_link_ddc.h"
 
 #include "i2caux_interface.h"
-
+#if defined(CONFIG_DEBUG_FS)
+#include "amdgpu_dm_debugfs.h"
+#endif
 /* #define TRACE_DPCD */
 
 #ifdef TRACE_DPCD
@@ -147,6 +149,12 @@ amdgpu_dm_mst_connector_late_register(struct drm_connector *connector)
                to_amdgpu_dm_connector(connector);
        struct drm_dp_mst_port *port = amdgpu_dm_connector->port;
 
+#if defined(CONFIG_DEBUG_FS)
+       connector_debugfs_init(amdgpu_dm_connector);
+       amdgpu_dm_connector->debugfs_dpcd_address = 0;
+       amdgpu_dm_connector->debugfs_dpcd_size = 0;
+#endif
+
        return drm_dp_mst_connector_late_register(connector, port);
 }