If there is no GPU present, skip creation of the GPU-related debugfs
files, making the MSM's debugfs more usable.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
 drivers/gpu/drm/msm/msm_debugfs.c | 41 +++++++++++++++++++------------
 drivers/gpu/drm/msm/msm_rd.c      |  3 +++
 2 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_debugfs.c 
b/drivers/gpu/drm/msm/msm_debugfs.c
index 04d304eed223..4494f6d1c7cb 100644
--- a/drivers/gpu/drm/msm/msm_debugfs.c
+++ b/drivers/gpu/drm/msm/msm_debugfs.c
@@ -304,36 +304,21 @@ int msm_debugfs_late_init(struct drm_device *dev)
        return ret;
 }
 
-void msm_debugfs_init(struct drm_minor *minor)
+static void msm_debugfs_gpu_init(struct drm_minor *minor)
 {
        struct drm_device *dev = minor->dev;
        struct msm_drm_private *priv = dev->dev_private;
        struct dentry *gpu_devfreq;
 
-       drm_debugfs_create_files(msm_debugfs_list,
-                                ARRAY_SIZE(msm_debugfs_list),
-                                minor->debugfs_root, minor);
-
        debugfs_create_file("gpu", S_IRUSR, minor->debugfs_root,
                dev, &msm_gpu_fops);
 
-       if (priv->kms) {
-               drm_debugfs_create_files(msm_kms_debugfs_list,
-                                        ARRAY_SIZE(msm_kms_debugfs_list),
-                                        minor->debugfs_root, minor);
-               debugfs_create_file("kms", S_IRUSR, minor->debugfs_root,
-                                   dev, &msm_kms_fops);
-       }
-
        debugfs_create_u32("hangcheck_period_ms", 0600, minor->debugfs_root,
                &priv->hangcheck_period);
 
        debugfs_create_bool("disable_err_irq", 0600, minor->debugfs_root,
                &priv->disable_err_irq);
 
-       debugfs_create_file("shrink", S_IRWXU, minor->debugfs_root,
-               dev, &shrink_fops);
-
        gpu_devfreq = debugfs_create_dir("devfreq", minor->debugfs_root);
 
        debugfs_create_bool("idle_clamp",0600, gpu_devfreq,
@@ -344,6 +329,30 @@ void msm_debugfs_init(struct drm_minor *minor)
 
        debugfs_create_u32("downdifferential",0600, gpu_devfreq,
                           &priv->gpu_devfreq_config.downdifferential);
+}
+
+void msm_debugfs_init(struct drm_minor *minor)
+{
+       struct drm_device *dev = minor->dev;
+       struct msm_drm_private *priv = dev->dev_private;
+
+       drm_debugfs_create_files(msm_debugfs_list,
+                                ARRAY_SIZE(msm_debugfs_list),
+                                minor->debugfs_root, minor);
+
+       if (priv->gpu_pdev)
+               msm_debugfs_gpu_init(minor);
+
+       if (priv->kms) {
+               drm_debugfs_create_files(msm_kms_debugfs_list,
+                                        ARRAY_SIZE(msm_kms_debugfs_list),
+                                        minor->debugfs_root, minor);
+               debugfs_create_file("kms", S_IRUSR, minor->debugfs_root,
+                                   dev, &msm_kms_fops);
+       }
+
+       debugfs_create_file("shrink", S_IRWXU, minor->debugfs_root,
+               dev, &shrink_fops);
 
        if (priv->kms && priv->kms->funcs->debugfs_init)
                priv->kms->funcs->debugfs_init(priv->kms, minor);
diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c
index 5adc51f7ab59..ca44fd291c5b 100644
--- a/drivers/gpu/drm/msm/msm_rd.c
+++ b/drivers/gpu/drm/msm/msm_rd.c
@@ -270,6 +270,9 @@ int msm_rd_debugfs_init(struct drm_minor *minor)
        struct msm_rd_state *rd;
        int ret;
 
+       if (!priv->gpu_pdev)
+               return 0;
+
        /* only create on first minor: */
        if (priv->rd)
                return 0;
-- 
2.39.2

Reply via email to