OSDN Git Service

drm/amd/display: MST topology debugfs
authorDavid Francis <David.Francis@amd.com>
Thu, 25 Jul 2019 19:22:16 +0000 (15:22 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 23 Aug 2019 16:43:28 +0000 (11:43 -0500)
DRM provides drm_dp_mst_dump_topology, which prints
useful information about MST devices

Hook this up to a debugfs file named amdgpu_mst_topology

Signed-off-by: David Francis <David.Francis@amd.com>
Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c

index 36a1d79..f3dfb28 100644 (file)
@@ -1053,9 +1053,33 @@ static int target_backlight_read(struct seq_file *m, void *data)
        return 0;
 }
 
+static int mst_topo(struct seq_file *m, void *unused)
+{
+       struct drm_info_node *node = (struct drm_info_node *)m->private;
+       struct drm_device *dev = node->minor->dev;
+       struct drm_connector *connector;
+       struct drm_connector_list_iter conn_iter;
+       struct amdgpu_dm_connector *aconnector;
+
+       drm_connector_list_iter_begin(dev, &conn_iter);
+       drm_for_each_connector_iter(connector, &conn_iter) {
+               if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort)
+                       continue;
+
+               aconnector = to_amdgpu_dm_connector(connector);
+
+               seq_printf(m, "\nMST topology for connector %d\n", aconnector->connector_id);
+               drm_dp_mst_dump_topology(m, &aconnector->mst_mgr);
+       }
+       drm_connector_list_iter_end(&conn_iter);
+
+       return 0;
+}
+
 static const struct drm_info_list amdgpu_dm_debugfs_list[] = {
        {"amdgpu_current_backlight_pwm", &current_backlight_read},
        {"amdgpu_target_backlight_pwm", &target_backlight_read},
+       {"amdgpu_mst_topology", &mst_topo},
 };
 
 /*