aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/armada
diff options
context:
space:
mode:
authorNoralf Trønnes <noralf@tronnes.org>2017-01-26 17:56:07 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2017-03-01 10:09:51 -0500
commitb516a6c9549a99907940bd070a8244f716c23733 (patch)
treef98f4826b92b48b1cf448af705a329e96596e690 /drivers/gpu/drm/armada
parent75bb485d741aa7d7df68b77b85a177227f4b5941 (diff)
drm/armada: Remove armada_drm_debugfs_cleanup()
drm_debugfs_cleanup() now removes all minor->debugfs_list entries automatically, so no need to do this explicitly. Additionally it uses debugfs_remove_recursive() to clean up the debugfs files, so no need for adding fake drm_info_node entries. And finally there's no need to clean up on error, drm_debugfs_cleanup() is called in the error path. Cc: linux@armlinux.org.uk Signed-off-by: Noralf Trønnes <noralf@tronnes.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/20170126225621.12314-6-noralf@tronnes.org
Diffstat (limited to 'drivers/gpu/drm/armada')
-rw-r--r--drivers/gpu/drm/armada/armada_debugfs.c65
-rw-r--r--drivers/gpu/drm/armada/armada_drm.h1
-rw-r--r--drivers/gpu/drm/armada/armada_drv.c3
3 files changed, 10 insertions, 59 deletions
diff --git a/drivers/gpu/drm/armada/armada_debugfs.c b/drivers/gpu/drm/armada/armada_debugfs.c
index a8020cf9da2e..6758c3a83de2 100644
--- a/drivers/gpu/drm/armada/armada_debugfs.c
+++ b/drivers/gpu/drm/armada/armada_debugfs.c
@@ -107,40 +107,9 @@ static struct drm_info_list armada_debugfs_list[] = {
107}; 107};
108#define ARMADA_DEBUGFS_ENTRIES ARRAY_SIZE(armada_debugfs_list) 108#define ARMADA_DEBUGFS_ENTRIES ARRAY_SIZE(armada_debugfs_list)
109 109
110static int drm_add_fake_info_node(struct drm_minor *minor, struct dentry *ent,
111 const void *key)
112{
113 struct drm_info_node *node;
114
115 node = kmalloc(sizeof(struct drm_info_node), GFP_KERNEL);
116 if (!node) {
117 debugfs_remove(ent);
118 return -ENOMEM;
119 }
120
121 node->minor = minor;
122 node->dent = ent;
123 node->info_ent = (void *) key;
124
125 mutex_lock(&minor->debugfs_lock);
126 list_add(&node->list, &minor->debugfs_list);
127 mutex_unlock(&minor->debugfs_lock);
128
129 return 0;
130}
131
132static int armada_debugfs_create(struct dentry *root, struct drm_minor *minor,
133 const char *name, umode_t mode, const struct file_operations *fops)
134{
135 struct dentry *de;
136
137 de = debugfs_create_file(name, mode, root, minor->dev, fops);
138
139 return drm_add_fake_info_node(minor, de, fops);
140}
141
142int armada_drm_debugfs_init(struct drm_minor *minor) 110int armada_drm_debugfs_init(struct drm_minor *minor)
143{ 111{
112 struct dentry *de;
144 int ret; 113 int ret;
145 114
146 ret = drm_debugfs_create_files(armada_debugfs_list, 115 ret = drm_debugfs_create_files(armada_debugfs_list,
@@ -149,29 +118,15 @@ int armada_drm_debugfs_init(struct drm_minor *minor)
149 if (ret) 118 if (ret)
150 return ret; 119 return ret;
151 120
152 ret = armada_debugfs_create(minor->debugfs_root, minor, 121 de = debugfs_create_file("reg", S_IFREG | S_IRUSR,
153 "reg", S_IFREG | S_IRUSR, &fops_reg_r); 122 minor->debugfs_root, minor->dev, &fops_reg_r);
154 if (ret) 123 if (!de)
155 goto err_1; 124 return -ENOMEM;
156 125
157 ret = armada_debugfs_create(minor->debugfs_root, minor, 126 de = debugfs_create_file("reg_wr", S_IFREG | S_IWUSR,
158 "reg_wr", S_IFREG | S_IWUSR, &fops_reg_w); 127 minor->debugfs_root, minor->dev, &fops_reg_w);
159 if (ret) 128 if (!de)
160 goto err_2; 129 return -ENOMEM;
161 return ret;
162
163 err_2:
164 drm_debugfs_remove_files((struct drm_info_list *)&fops_reg_r, 1, minor);
165 err_1:
166 drm_debugfs_remove_files(armada_debugfs_list, ARMADA_DEBUGFS_ENTRIES,
167 minor);
168 return ret;
169}
170 130
171void armada_drm_debugfs_cleanup(struct drm_minor *minor) 131 return 0;
172{
173 drm_debugfs_remove_files((struct drm_info_list *)&fops_reg_w, 1, minor);
174 drm_debugfs_remove_files((struct drm_info_list *)&fops_reg_r, 1, minor);
175 drm_debugfs_remove_files(armada_debugfs_list, ARMADA_DEBUGFS_ENTRIES,
176 minor);
177} 132}
diff --git a/drivers/gpu/drm/armada/armada_drm.h b/drivers/gpu/drm/armada/armada_drm.h
index 77952d559a3c..b064879ecdbd 100644
--- a/drivers/gpu/drm/armada/armada_drm.h
+++ b/drivers/gpu/drm/armada/armada_drm.h
@@ -90,6 +90,5 @@ void armada_fbdev_fini(struct drm_device *);
90int armada_overlay_plane_create(struct drm_device *, unsigned long); 90int armada_overlay_plane_create(struct drm_device *, unsigned long);
91 91
92int armada_drm_debugfs_init(struct drm_minor *); 92int armada_drm_debugfs_init(struct drm_minor *);
93void armada_drm_debugfs_cleanup(struct drm_minor *);
94 93
95#endif 94#endif
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 737bfcbce87b..1952e8748fea 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -209,9 +209,6 @@ static void armada_drm_unbind(struct device *dev)
209 drm_kms_helper_poll_fini(&priv->drm); 209 drm_kms_helper_poll_fini(&priv->drm);
210 armada_fbdev_fini(&priv->drm); 210 armada_fbdev_fini(&priv->drm);
211 211
212#ifdef CONFIG_DEBUG_FS
213 armada_drm_debugfs_cleanup(priv->drm.primary);
214#endif
215 drm_dev_unregister(&priv->drm); 212 drm_dev_unregister(&priv->drm);
216 213
217 component_unbind_all(dev, &priv->drm); 214 component_unbind_all(dev, &priv->drm);