aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-07-07 21:04:35 -0400
committerDave Airlie <airlied@redhat.com>2014-07-07 21:04:35 -0400
commitafa95e7403298110943bc2dc0ab25f8b42b6334c (patch)
treeb6ecacf111378b498099d025702dd81f3174a2ab
parent4b7ba8697bc519abd4f79057f65a8a8e7107ac37 (diff)
parent2a8c6edfd2a888085ae0ddaf6c3ea3f529fdc4e8 (diff)
Merge tag 'topic/core-stuff-2014-06-30' of git://anongit.freedesktop.org/drm-intel into drm-next
misc core patches picked up by Daniel and Jani. * tag 'topic/core-stuff-2014-06-30' of git://anongit.freedesktop.org/drm-intel: drm/fb-helper: Remove unnecessary list empty check in drm_fb_helper_debug_enter() drm/fb-helper: Redundant info->fix.type_aux setting in drm_fb_helper_fill_fix() drm/debugfs: add an "edid_override" file per connector drm/debugfs: add a "force" file per connector drm: add register and unregister functions for connectors drm: fix uninitialized acquire_ctx fields (v2) drm: Driver-specific ioctls range from 0x40 to 0x9f drm: Don't export internal module variables
-rw-r--r--Documentation/DocBook/drm.tmpl6
-rw-r--r--drivers/gpu/drm/armada/armada_output.c4
-rw-r--r--drivers/gpu/drm/ast/ast_mode.c4
-rw-r--r--drivers/gpu/drm/bridge/ptn3460.c2
-rw-r--r--drivers/gpu/drm/drm_crtc.c49
-rw-r--r--drivers/gpu/drm/drm_debugfs.c182
-rw-r--r--drivers/gpu/drm/drm_fb_helper.c4
-rw-r--r--drivers/gpu/drm/drm_probe_helper.c9
-rw-r--r--drivers/gpu/drm/drm_stub.c4
-rw-r--r--drivers/gpu/drm/drm_sysfs.c2
-rw-r--r--drivers/gpu/drm/exynos/exynos_dp_core.c2
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_connector.c6
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dpi.c4
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.c4
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.h2
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dsi.c2
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_vidi.c2
-rw-r--r--drivers/gpu/drm/exynos/exynos_hdmi.c2
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_crt.c4
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_dp.c4
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_hdmi.c4
-rw-r--r--drivers/gpu/drm/gma500/cdv_intel_lvds.c4
-rw-r--r--drivers/gpu/drm/gma500/mdfld_dsi_output.c4
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_hdmi.c2
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_lvds.c2
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_lvds.c4
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_sdvo.c4
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c2
-rw-r--r--drivers/gpu/drm/i915/intel_display.c2
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c4
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c2
-rw-r--r--drivers/gpu/drm/i915/intel_dvo.c2
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c2
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c2
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c10
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c2
-rw-r--r--drivers/gpu/drm/mgag200/mgag200_mode.c2
-rw-r--r--drivers/gpu/drm/msm/hdmi/hdmi_connector.c4
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_connector.c4
-rw-r--r--drivers/gpu/drm/omapdrm/omap_connector.c4
-rw-r--r--drivers/gpu/drm/qxl/qxl_display.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c6
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c4
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_vgacon.c4
-rw-r--r--drivers/gpu/drm/shmobile/shmob_drm_crtc.c6
-rw-r--r--drivers/gpu/drm/tegra/output.c4
-rw-r--r--drivers/gpu/drm/tilcdc/tilcdc_panel.c2
-rw-r--r--drivers/gpu/drm/tilcdc/tilcdc_slave.c2
-rw-r--r--drivers/gpu/drm/tilcdc/tilcdc_tfp410.c2
-rw-r--r--drivers/gpu/drm/udl/udl_connector.c4
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_kms.c2
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c2
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c2
-rw-r--r--drivers/staging/imx-drm/imx-drm-core.c6
-rw-r--r--include/drm/drmP.h11
-rw-r--r--include/drm/drm_crtc.h5
-rw-r--r--include/uapi/drm/drm.h2
57 files changed, 334 insertions, 98 deletions
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 7df3134ebc0e..b314a42bb18c 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -1610,7 +1610,7 @@ int max_width, max_height;</synopsis>
1610 The connector is then registered with a call to 1610 The connector is then registered with a call to
1611 <function>drm_connector_init</function> with a pointer to the connector 1611 <function>drm_connector_init</function> with a pointer to the connector
1612 functions and a connector type, and exposed through sysfs with a call to 1612 functions and a connector type, and exposed through sysfs with a call to
1613 <function>drm_sysfs_connector_add</function>. 1613 <function>drm_connector_register</function>.
1614 </para> 1614 </para>
1615 <para> 1615 <para>
1616 Supported connector types are 1616 Supported connector types are
@@ -1768,7 +1768,7 @@ int max_width, max_height;</synopsis>
1768 (<function>drm_encoder_cleanup</function>) and connectors 1768 (<function>drm_encoder_cleanup</function>) and connectors
1769 (<function>drm_connector_cleanup</function>). Furthermore, connectors 1769 (<function>drm_connector_cleanup</function>). Furthermore, connectors
1770 that have been added to sysfs must be removed by a call to 1770 that have been added to sysfs must be removed by a call to
1771 <function>drm_sysfs_connector_remove</function> before calling 1771 <function>drm_connector_unregister</function> before calling
1772 <function>drm_connector_cleanup</function>. 1772 <function>drm_connector_cleanup</function>.
1773 </para> 1773 </para>
1774 <para> 1774 <para>
@@ -1813,7 +1813,7 @@ void intel_crt_init(struct drm_device *dev)
1813 drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs); 1813 drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
1814 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); 1814 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
1815 1815
1816 drm_sysfs_connector_add(connector); 1816 drm_connector_register(connector);
1817}]]></programlisting> 1817}]]></programlisting>
1818 <para> 1818 <para>
1819 In the example above (taken from the i915 driver), a CRTC, connector and 1819 In the example above (taken from the i915 driver), a CRTC, connector and
diff --git a/drivers/gpu/drm/armada/armada_output.c b/drivers/gpu/drm/armada/armada_output.c
index d685a5421485..abbc309fe539 100644
--- a/drivers/gpu/drm/armada/armada_output.c
+++ b/drivers/gpu/drm/armada/armada_output.c
@@ -48,7 +48,7 @@ static void armada_drm_connector_destroy(struct drm_connector *conn)
48{ 48{
49 struct armada_connector *dconn = drm_to_armada_conn(conn); 49 struct armada_connector *dconn = drm_to_armada_conn(conn);
50 50
51 drm_sysfs_connector_remove(conn); 51 drm_connector_unregister(conn);
52 drm_connector_cleanup(conn); 52 drm_connector_cleanup(conn);
53 kfree(dconn); 53 kfree(dconn);
54} 54}
@@ -141,7 +141,7 @@ int armada_output_create(struct drm_device *dev,
141 if (ret) 141 if (ret)
142 goto err_conn; 142 goto err_conn;
143 143
144 ret = drm_sysfs_connector_add(&dconn->conn); 144 ret = drm_connector_register(&dconn->conn);
145 if (ret) 145 if (ret)
146 goto err_sysfs; 146 goto err_sysfs;
147 147
diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index 114aee941d46..9896286ed262 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -829,7 +829,7 @@ static void ast_connector_destroy(struct drm_connector *connector)
829{ 829{
830 struct ast_connector *ast_connector = to_ast_connector(connector); 830 struct ast_connector *ast_connector = to_ast_connector(connector);
831 ast_i2c_destroy(ast_connector->i2c); 831 ast_i2c_destroy(ast_connector->i2c);
832 drm_sysfs_connector_remove(connector); 832 drm_connector_unregister(connector);
833 drm_connector_cleanup(connector); 833 drm_connector_cleanup(connector);
834 kfree(connector); 834 kfree(connector);
835} 835}
@@ -871,7 +871,7 @@ static int ast_connector_init(struct drm_device *dev)
871 connector->interlace_allowed = 0; 871 connector->interlace_allowed = 0;
872 connector->doublescan_allowed = 0; 872 connector->doublescan_allowed = 0;
873 873
874 drm_sysfs_connector_add(connector); 874 drm_connector_register(connector);
875 875
876 connector->polled = DRM_CONNECTOR_POLL_CONNECT; 876 connector->polled = DRM_CONNECTOR_POLL_CONNECT;
877 877
diff --git a/drivers/gpu/drm/bridge/ptn3460.c b/drivers/gpu/drm/bridge/ptn3460.c
index 98fd17ae4916..d466696ed5e8 100644
--- a/drivers/gpu/drm/bridge/ptn3460.c
+++ b/drivers/gpu/drm/bridge/ptn3460.c
@@ -328,7 +328,7 @@ int ptn3460_init(struct drm_device *dev, struct drm_encoder *encoder,
328 } 328 }
329 drm_connector_helper_add(&ptn_bridge->connector, 329 drm_connector_helper_add(&ptn_bridge->connector,
330 &ptn3460_connector_helper_funcs); 330 &ptn3460_connector_helper_funcs);
331 drm_sysfs_connector_add(&ptn_bridge->connector); 331 drm_connector_register(&ptn_bridge->connector);
332 drm_mode_connector_attach_encoder(&ptn_bridge->connector, encoder); 332 drm_mode_connector_attach_encoder(&ptn_bridge->connector, encoder);
333 333
334 return 0; 334 return 0;
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index fe94cc10cd35..7db6251c38e7 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -881,6 +881,8 @@ int drm_connector_init(struct drm_device *dev,
881 drm_object_attach_property(&connector->base, 881 drm_object_attach_property(&connector->base,
882 dev->mode_config.dpms_property, 0); 882 dev->mode_config.dpms_property, 0);
883 883
884 connector->debugfs_entry = NULL;
885
884out_put: 886out_put:
885 if (ret) 887 if (ret)
886 drm_mode_object_put(dev, &connector->base); 888 drm_mode_object_put(dev, &connector->base);
@@ -921,6 +923,47 @@ void drm_connector_cleanup(struct drm_connector *connector)
921EXPORT_SYMBOL(drm_connector_cleanup); 923EXPORT_SYMBOL(drm_connector_cleanup);
922 924
923/** 925/**
926 * drm_connector_register - register a connector
927 * @connector: the connector to register
928 *
929 * Register userspace interfaces for a connector
930 *
931 * Returns:
932 * Zero on success, error code on failure.
933 */
934int drm_connector_register(struct drm_connector *connector)
935{
936 int ret;
937
938 ret = drm_sysfs_connector_add(connector);
939 if (ret)
940 return ret;
941
942 ret = drm_debugfs_connector_add(connector);
943 if (ret) {
944 drm_sysfs_connector_remove(connector);
945 return ret;
946 }
947
948 return 0;
949}
950EXPORT_SYMBOL(drm_connector_register);
951
952/**
953 * drm_connector_unregister - unregister a connector
954 * @connector: the connector to unregister
955 *
956 * Unregister userspace interfaces for a connector
957 */
958void drm_connector_unregister(struct drm_connector *connector)
959{
960 drm_sysfs_connector_remove(connector);
961 drm_debugfs_connector_remove(connector);
962}
963EXPORT_SYMBOL(drm_connector_unregister);
964
965
966/**
924 * drm_connector_unplug_all - unregister connector userspace interfaces 967 * drm_connector_unplug_all - unregister connector userspace interfaces
925 * @dev: drm device 968 * @dev: drm device
926 * 969 *
@@ -934,7 +977,7 @@ void drm_connector_unplug_all(struct drm_device *dev)
934 977
935 /* taking the mode config mutex ends up in a clash with sysfs */ 978 /* taking the mode config mutex ends up in a clash with sysfs */
936 list_for_each_entry(connector, &dev->mode_config.connector_list, head) 979 list_for_each_entry(connector, &dev->mode_config.connector_list, head)
937 drm_sysfs_connector_remove(connector); 980 drm_connector_unregister(connector);
938 981
939} 982}
940EXPORT_SYMBOL(drm_connector_unplug_all); 983EXPORT_SYMBOL(drm_connector_unplug_all);
@@ -3720,6 +3763,10 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector,
3720 struct drm_device *dev = connector->dev; 3763 struct drm_device *dev = connector->dev;
3721 int ret, size; 3764 int ret, size;
3722 3765
3766 /* ignore requests to set edid when overridden */
3767 if (connector->override_edid)
3768 return 0;
3769
3723 if (connector->edid_blob_ptr) 3770 if (connector->edid_blob_ptr)
3724 drm_property_destroy_blob(dev, connector->edid_blob_ptr); 3771 drm_property_destroy_blob(dev, connector->edid_blob_ptr);
3725 3772
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index b4b51d46f339..13bd42923dd4 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -35,6 +35,7 @@
35#include <linux/slab.h> 35#include <linux/slab.h>
36#include <linux/export.h> 36#include <linux/export.h>
37#include <drm/drmP.h> 37#include <drm/drmP.h>
38#include <drm/drm_edid.h>
38 39
39#if defined(CONFIG_DEBUG_FS) 40#if defined(CONFIG_DEBUG_FS)
40 41
@@ -237,5 +238,186 @@ int drm_debugfs_cleanup(struct drm_minor *minor)
237 return 0; 238 return 0;
238} 239}
239 240
241static int connector_show(struct seq_file *m, void *data)
242{
243 struct drm_connector *connector = m->private;
244 const char *status;
245
246 switch (connector->force) {
247 case DRM_FORCE_ON:
248 status = "on\n";
249 break;
250
251 case DRM_FORCE_ON_DIGITAL:
252 status = "digital\n";
253 break;
254
255 case DRM_FORCE_OFF:
256 status = "off\n";
257 break;
258
259 case DRM_FORCE_UNSPECIFIED:
260 status = "unspecified\n";
261 break;
262
263 default:
264 return 0;
265 }
266
267 seq_puts(m, status);
268
269 return 0;
270}
271
272static int connector_open(struct inode *inode, struct file *file)
273{
274 struct drm_connector *dev = inode->i_private;
275
276 return single_open(file, connector_show, dev);
277}
278
279static ssize_t connector_write(struct file *file, const char __user *ubuf,
280 size_t len, loff_t *offp)
281{
282 struct seq_file *m = file->private_data;
283 struct drm_connector *connector = m->private;
284 char buf[12];
285
286 if (len > sizeof(buf) - 1)
287 return -EINVAL;
288
289 if (copy_from_user(buf, ubuf, len))
290 return -EFAULT;
291
292 buf[len] = '\0';
293
294 if (!strcmp(buf, "on"))
295 connector->force = DRM_FORCE_ON;
296 else if (!strcmp(buf, "digital"))
297 connector->force = DRM_FORCE_ON_DIGITAL;
298 else if (!strcmp(buf, "off"))
299 connector->force = DRM_FORCE_OFF;
300 else if (!strcmp(buf, "unspecified"))
301 connector->force = DRM_FORCE_UNSPECIFIED;
302 else
303 return -EINVAL;
304
305 return len;
306}
307
308static int edid_show(struct seq_file *m, void *data)
309{
310 struct drm_connector *connector = m->private;
311 struct drm_property_blob *edid = connector->edid_blob_ptr;
312
313 if (connector->override_edid && edid)
314 seq_write(m, edid->data, edid->length);
315
316 return 0;
317}
318
319static int edid_open(struct inode *inode, struct file *file)
320{
321 struct drm_connector *dev = inode->i_private;
322
323 return single_open(file, edid_show, dev);
324}
325
326static ssize_t edid_write(struct file *file, const char __user *ubuf,
327 size_t len, loff_t *offp)
328{
329 struct seq_file *m = file->private_data;
330 struct drm_connector *connector = m->private;
331 char *buf;
332 struct edid *edid;
333 int ret;
334
335 buf = memdup_user(ubuf, len);
336 if (IS_ERR(buf))
337 return PTR_ERR(buf);
338
339 edid = (struct edid *) buf;
340
341 if (len == 5 && !strncmp(buf, "reset", 5)) {
342 connector->override_edid = false;
343 ret = drm_mode_connector_update_edid_property(connector, NULL);
344 } else if (len < EDID_LENGTH ||
345 EDID_LENGTH * (1 + edid->extensions) > len)
346 ret = -EINVAL;
347 else {
348 connector->override_edid = false;
349 ret = drm_mode_connector_update_edid_property(connector, edid);
350 if (!ret)
351 connector->override_edid = true;
352 }
353
354 kfree(buf);
355
356 return (ret) ? ret : len;
357}
358
359static const struct file_operations drm_edid_fops = {
360 .owner = THIS_MODULE,
361 .open = edid_open,
362 .read = seq_read,
363 .llseek = seq_lseek,
364 .release = single_release,
365 .write = edid_write
366};
367
368
369static const struct file_operations drm_connector_fops = {
370 .owner = THIS_MODULE,
371 .open = connector_open,
372 .read = seq_read,
373 .llseek = seq_lseek,
374 .release = single_release,
375 .write = connector_write
376};
377
378int drm_debugfs_connector_add(struct drm_connector *connector)
379{
380 struct drm_minor *minor = connector->dev->primary;
381 struct dentry *root, *ent;
382
383 if (!minor->debugfs_root)
384 return -1;
385
386 root = debugfs_create_dir(connector->name, minor->debugfs_root);
387 if (!root)
388 return -ENOMEM;
389
390 connector->debugfs_entry = root;
391
392 /* force */
393 ent = debugfs_create_file("force", S_IRUGO | S_IWUSR, root, connector,
394 &drm_connector_fops);
395 if (!ent)
396 goto error;
397
398 /* edid */
399 ent = debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root,
400 connector, &drm_edid_fops);
401 if (!ent)
402 goto error;
403
404 return 0;
405
406error:
407 debugfs_remove_recursive(connector->debugfs_entry);
408 connector->debugfs_entry = NULL;
409 return -ENOMEM;
410}
411
412void drm_debugfs_connector_remove(struct drm_connector *connector)
413{
414 if (!connector->debugfs_entry)
415 return;
416
417 debugfs_remove_recursive(connector->debugfs_entry);
418
419 connector->debugfs_entry = NULL;
420}
421
240#endif /* CONFIG_DEBUG_FS */ 422#endif /* CONFIG_DEBUG_FS */
241 423
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index d5d8cea1a679..5aab5ab8b584 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -199,9 +199,6 @@ int drm_fb_helper_debug_enter(struct fb_info *info)
199 struct drm_crtc_helper_funcs *funcs; 199 struct drm_crtc_helper_funcs *funcs;
200 int i; 200 int i;
201 201
202 if (list_empty(&kernel_fb_helper_list))
203 return false;
204
205 list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { 202 list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) {
206 for (i = 0; i < helper->crtc_count; i++) { 203 for (i = 0; i < helper->crtc_count; i++) {
207 struct drm_mode_set *mode_set = 204 struct drm_mode_set *mode_set =
@@ -1056,7 +1053,6 @@ void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch,
1056 info->fix.ypanstep = 1; /* doing it in hw */ 1053 info->fix.ypanstep = 1; /* doing it in hw */
1057 info->fix.ywrapstep = 0; 1054 info->fix.ywrapstep = 0;
1058 info->fix.accel = FB_ACCEL_NONE; 1055 info->fix.accel = FB_ACCEL_NONE;
1059 info->fix.type_aux = 0;
1060 1056
1061 info->fix.line_length = pitch; 1057 info->fix.line_length = pitch;
1062 return; 1058 return;
diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index d22676b89cbb..db7d250f7ac7 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -130,7 +130,14 @@ static int drm_helper_probe_single_connector_modes_merge_bits(struct drm_connect
130 count = drm_load_edid_firmware(connector); 130 count = drm_load_edid_firmware(connector);
131 if (count == 0) 131 if (count == 0)
132#endif 132#endif
133 count = (*connector_funcs->get_modes)(connector); 133 {
134 if (connector->override_edid) {
135 struct edid *edid = (struct edid *) connector->edid_blob_ptr->data;
136
137 count = drm_add_edid_modes(connector, edid);
138 } else
139 count = (*connector_funcs->get_modes)(connector);
140 }
134 141
135 if (count == 0 && connector->status == connector_status_connected) 142 if (count == 0 && connector->status == connector_status_connected)
136 count = drm_add_modes_noedid(connector, 1024, 768); 143 count = drm_add_modes_noedid(connector, 1024, 768);
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index 14d16464000a..f4148bfcb26d 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -38,17 +38,13 @@ unsigned int drm_debug = 0; /* 1 to enable debug output */
38EXPORT_SYMBOL(drm_debug); 38EXPORT_SYMBOL(drm_debug);
39 39
40unsigned int drm_rnodes = 0; /* 1 to enable experimental render nodes API */ 40unsigned int drm_rnodes = 0; /* 1 to enable experimental render nodes API */
41EXPORT_SYMBOL(drm_rnodes);
42 41
43/* 1 to allow user space to request universal planes (experimental) */ 42/* 1 to allow user space to request universal planes (experimental) */
44unsigned int drm_universal_planes = 0; 43unsigned int drm_universal_planes = 0;
45EXPORT_SYMBOL(drm_universal_planes);
46 44
47unsigned int drm_vblank_offdelay = 5000; /* Default to 5000 msecs. */ 45unsigned int drm_vblank_offdelay = 5000; /* Default to 5000 msecs. */
48EXPORT_SYMBOL(drm_vblank_offdelay);
49 46
50unsigned int drm_timestamp_precision = 20; /* Default to 20 usecs. */ 47unsigned int drm_timestamp_precision = 20; /* Default to 20 usecs. */
51EXPORT_SYMBOL(drm_timestamp_precision);
52 48
53/* 49/*
54 * Default to use monotonic timestamps for wait-for-vblank and page-flip 50 * Default to use monotonic timestamps for wait-for-vblank and page-flip
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index 369b26278e76..7827dad8fcf4 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -438,7 +438,6 @@ err_out_files:
438out: 438out:
439 return ret; 439 return ret;
440} 440}
441EXPORT_SYMBOL(drm_sysfs_connector_add);
442 441
443/** 442/**
444 * drm_sysfs_connector_remove - remove an connector device from sysfs 443 * drm_sysfs_connector_remove - remove an connector device from sysfs
@@ -468,7 +467,6 @@ void drm_sysfs_connector_remove(struct drm_connector *connector)
468 device_unregister(connector->kdev); 467 device_unregister(connector->kdev);
469 connector->kdev = NULL; 468 connector->kdev = NULL;
470} 469}
471EXPORT_SYMBOL(drm_sysfs_connector_remove);
472 470
473/** 471/**
474 * drm_sysfs_hotplug_event - generate a DRM uevent 472 * drm_sysfs_hotplug_event - generate a DRM uevent
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c
index a8ffc8c1477b..86dc69d9eabb 100644
--- a/drivers/gpu/drm/exynos/exynos_dp_core.c
+++ b/drivers/gpu/drm/exynos/exynos_dp_core.c
@@ -1018,7 +1018,7 @@ static int exynos_dp_create_connector(struct exynos_drm_display *display,
1018 } 1018 }
1019 1019
1020 drm_connector_helper_add(connector, &exynos_dp_connector_helper_funcs); 1020 drm_connector_helper_add(connector, &exynos_dp_connector_helper_funcs);
1021 drm_sysfs_connector_add(connector); 1021 drm_connector_register(connector);
1022 drm_mode_connector_attach_encoder(connector, encoder); 1022 drm_mode_connector_attach_encoder(connector, encoder);
1023 1023
1024 return 0; 1024 return 0;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c b/drivers/gpu/drm/exynos/exynos_drm_connector.c
index 9a16dbe121d1..25c788832e2e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
@@ -185,7 +185,7 @@ static void exynos_drm_connector_destroy(struct drm_connector *connector)
185 struct exynos_drm_connector *exynos_connector = 185 struct exynos_drm_connector *exynos_connector =
186 to_exynos_connector(connector); 186 to_exynos_connector(connector);
187 187
188 drm_sysfs_connector_remove(connector); 188 drm_connector_unregister(connector);
189 drm_connector_cleanup(connector); 189 drm_connector_cleanup(connector);
190 kfree(exynos_connector); 190 kfree(exynos_connector);
191} 191}
@@ -230,7 +230,7 @@ struct drm_connector *exynos_drm_connector_create(struct drm_device *dev,
230 drm_connector_init(dev, connector, &exynos_connector_funcs, type); 230 drm_connector_init(dev, connector, &exynos_connector_funcs, type);
231 drm_connector_helper_add(connector, &exynos_connector_helper_funcs); 231 drm_connector_helper_add(connector, &exynos_connector_helper_funcs);
232 232
233 err = drm_sysfs_connector_add(connector); 233 err = drm_connector_register(connector);
234 if (err) 234 if (err)
235 goto err_connector; 235 goto err_connector;
236 236
@@ -250,7 +250,7 @@ struct drm_connector *exynos_drm_connector_create(struct drm_device *dev,
250 return connector; 250 return connector;
251 251
252err_sysfs: 252err_sysfs:
253 drm_sysfs_connector_remove(connector); 253 drm_connector_unregister(connector);
254err_connector: 254err_connector:
255 drm_connector_cleanup(connector); 255 drm_connector_cleanup(connector);
256 kfree(exynos_connector); 256 kfree(exynos_connector);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
index 9e530f205ad2..3aa1c7ebbfcc 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
@@ -48,7 +48,7 @@ exynos_dpi_detect(struct drm_connector *connector, bool force)
48 48
49static void exynos_dpi_connector_destroy(struct drm_connector *connector) 49static void exynos_dpi_connector_destroy(struct drm_connector *connector)
50{ 50{
51 drm_sysfs_connector_remove(connector); 51 drm_connector_unregister(connector);
52 drm_connector_cleanup(connector); 52 drm_connector_cleanup(connector);
53} 53}
54 54
@@ -117,7 +117,7 @@ static int exynos_dpi_create_connector(struct exynos_drm_display *display,
117 } 117 }
118 118
119 drm_connector_helper_add(connector, &exynos_dpi_connector_helper_funcs); 119 drm_connector_helper_add(connector, &exynos_dpi_connector_helper_funcs);
120 drm_sysfs_connector_add(connector); 120 drm_connector_register(connector);
121 drm_mode_connector_attach_encoder(connector, encoder); 121 drm_mode_connector_attach_encoder(connector, encoder);
122 122
123 return 0; 123 return 0;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index ab7d182063c3..d82e3cb8a70d 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -39,8 +39,6 @@
39#define DRIVER_MAJOR 1 39#define DRIVER_MAJOR 1
40#define DRIVER_MINOR 0 40#define DRIVER_MINOR 0
41 41
42#define VBLANK_OFF_DELAY 50000
43
44static struct platform_device *exynos_drm_pdev; 42static struct platform_device *exynos_drm_pdev;
45 43
46static DEFINE_MUTEX(drm_component_lock); 44static DEFINE_MUTEX(drm_component_lock);
@@ -103,8 +101,6 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags)
103 /* setup possible_clones. */ 101 /* setup possible_clones. */
104 exynos_drm_encoder_setup(dev); 102 exynos_drm_encoder_setup(dev);
105 103
106 drm_vblank_offdelay = VBLANK_OFF_DELAY;
107
108 platform_set_drvdata(dev->platformdev, dev); 104 platform_set_drvdata(dev->platformdev, dev);
109 105
110 /* Try to bind all sub drivers. */ 106 /* Try to bind all sub drivers. */
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
index 06cde4506278..02f3b3dcb9f8 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
@@ -40,8 +40,6 @@ struct drm_device;
40struct exynos_drm_overlay; 40struct exynos_drm_overlay;
41struct drm_connector; 41struct drm_connector;
42 42
43extern unsigned int drm_vblank_offdelay;
44
45/* This enumerates device type. */ 43/* This enumerates device type. */
46enum exynos_drm_device_type { 44enum exynos_drm_device_type {
47 EXYNOS_DEVICE_TYPE_NONE, 45 EXYNOS_DEVICE_TYPE_NONE,
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 6302aa64f6c1..2df3592166de 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1246,7 +1246,7 @@ static int exynos_dsi_create_connector(struct exynos_drm_display *display,
1246 } 1246 }
1247 1247
1248 drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs); 1248 drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
1249 drm_sysfs_connector_add(connector); 1249 drm_connector_register(connector);
1250 drm_mode_connector_attach_encoder(connector, encoder); 1250 drm_mode_connector_attach_encoder(connector, encoder);
1251 1251
1252 return 0; 1252 return 0;
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
index 2fb8705d6461..9528d81d8004 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
@@ -562,7 +562,7 @@ static int vidi_create_connector(struct exynos_drm_display *display,
562 } 562 }
563 563
564 drm_connector_helper_add(connector, &vidi_connector_helper_funcs); 564 drm_connector_helper_add(connector, &vidi_connector_helper_funcs);
565 drm_sysfs_connector_add(connector); 565 drm_connector_register(connector);
566 drm_mode_connector_attach_encoder(connector, encoder); 566 drm_mode_connector_attach_encoder(connector, encoder);
567 567
568 return 0; 568 return 0;
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index aa259b0a873a..81df11d57673 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -1129,7 +1129,7 @@ static int hdmi_create_connector(struct exynos_drm_display *display,
1129 } 1129 }
1130 1130
1131 drm_connector_helper_add(connector, &hdmi_connector_helper_funcs); 1131 drm_connector_helper_add(connector, &hdmi_connector_helper_funcs);
1132 drm_sysfs_connector_add(connector); 1132 drm_connector_register(connector);
1133 drm_mode_connector_attach_encoder(connector, encoder); 1133 drm_mode_connector_attach_encoder(connector, encoder);
1134 1134
1135 return 0; 1135 return 0;
diff --git a/drivers/gpu/drm/gma500/cdv_intel_crt.c b/drivers/gpu/drm/gma500/cdv_intel_crt.c
index c18268cd516e..248c33a35ebf 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_crt.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_crt.c
@@ -192,7 +192,7 @@ static void cdv_intel_crt_destroy(struct drm_connector *connector)
192 struct gma_encoder *gma_encoder = gma_attached_encoder(connector); 192 struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
193 193
194 psb_intel_i2c_destroy(gma_encoder->ddc_bus); 194 psb_intel_i2c_destroy(gma_encoder->ddc_bus);
195 drm_sysfs_connector_remove(connector); 195 drm_connector_unregister(connector);
196 drm_connector_cleanup(connector); 196 drm_connector_cleanup(connector);
197 kfree(connector); 197 kfree(connector);
198} 198}
@@ -304,7 +304,7 @@ void cdv_intel_crt_init(struct drm_device *dev,
304 drm_connector_helper_add(connector, 304 drm_connector_helper_add(connector,
305 &cdv_intel_crt_connector_helper_funcs); 305 &cdv_intel_crt_connector_helper_funcs);
306 306
307 drm_sysfs_connector_add(connector); 307 drm_connector_register(connector);
308 308
309 return; 309 return;
310failed_ddc: 310failed_ddc:
diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c
index 9ff30c2efadb..a4cc0e60a1be 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_dp.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c
@@ -1713,7 +1713,7 @@ cdv_intel_dp_destroy(struct drm_connector *connector)
1713 } 1713 }
1714 } 1714 }
1715 i2c_del_adapter(&intel_dp->adapter); 1715 i2c_del_adapter(&intel_dp->adapter);
1716 drm_sysfs_connector_remove(connector); 1716 drm_connector_unregister(connector);
1717 drm_connector_cleanup(connector); 1717 drm_connector_cleanup(connector);
1718 kfree(connector); 1718 kfree(connector);
1719} 1719}
@@ -1847,7 +1847,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_dev
1847 connector->interlace_allowed = false; 1847 connector->interlace_allowed = false;
1848 connector->doublescan_allowed = false; 1848 connector->doublescan_allowed = false;
1849 1849
1850 drm_sysfs_connector_add(connector); 1850 drm_connector_register(connector);
1851 1851
1852 /* Set up the DDC bus. */ 1852 /* Set up the DDC bus. */
1853 switch (output_reg) { 1853 switch (output_reg) {
diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
index b99084b3f706..4268bf210034 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
@@ -248,7 +248,7 @@ static void cdv_hdmi_destroy(struct drm_connector *connector)
248 248
249 if (gma_encoder->i2c_bus) 249 if (gma_encoder->i2c_bus)
250 psb_intel_i2c_destroy(gma_encoder->i2c_bus); 250 psb_intel_i2c_destroy(gma_encoder->i2c_bus);
251 drm_sysfs_connector_remove(connector); 251 drm_connector_unregister(connector);
252 drm_connector_cleanup(connector); 252 drm_connector_cleanup(connector);
253 kfree(connector); 253 kfree(connector);
254} 254}
@@ -356,7 +356,7 @@ void cdv_hdmi_init(struct drm_device *dev,
356 356
357 hdmi_priv->hdmi_i2c_adapter = &(gma_encoder->i2c_bus->adapter); 357 hdmi_priv->hdmi_i2c_adapter = &(gma_encoder->i2c_bus->adapter);
358 hdmi_priv->dev = dev; 358 hdmi_priv->dev = dev;
359 drm_sysfs_connector_add(connector); 359 drm_connector_register(connector);
360 return; 360 return;
361 361
362failed_ddc: 362failed_ddc:
diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
index 8ecc920fc26d..0b770396548c 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
@@ -446,7 +446,7 @@ static void cdv_intel_lvds_destroy(struct drm_connector *connector)
446 446
447 if (gma_encoder->i2c_bus) 447 if (gma_encoder->i2c_bus)
448 psb_intel_i2c_destroy(gma_encoder->i2c_bus); 448 psb_intel_i2c_destroy(gma_encoder->i2c_bus);
449 drm_sysfs_connector_remove(connector); 449 drm_connector_unregister(connector);
450 drm_connector_cleanup(connector); 450 drm_connector_cleanup(connector);
451 kfree(connector); 451 kfree(connector);
452} 452}
@@ -774,7 +774,7 @@ void cdv_intel_lvds_init(struct drm_device *dev,
774 774
775out: 775out:
776 mutex_unlock(&dev->mode_config.mutex); 776 mutex_unlock(&dev->mode_config.mutex);
777 drm_sysfs_connector_add(connector); 777 drm_connector_register(connector);
778 return; 778 return;
779 779
780failed_find: 780failed_find:
diff --git a/drivers/gpu/drm/gma500/mdfld_dsi_output.c b/drivers/gpu/drm/gma500/mdfld_dsi_output.c
index 6e91b20ce2e5..abf2248da61e 100644
--- a/drivers/gpu/drm/gma500/mdfld_dsi_output.c
+++ b/drivers/gpu/drm/gma500/mdfld_dsi_output.c
@@ -318,7 +318,7 @@ static void mdfld_dsi_connector_destroy(struct drm_connector *connector)
318 318
319 if (!dsi_connector) 319 if (!dsi_connector)
320 return; 320 return;
321 drm_sysfs_connector_remove(connector); 321 drm_connector_unregister(connector);
322 drm_connector_cleanup(connector); 322 drm_connector_cleanup(connector);
323 sender = dsi_connector->pkg_sender; 323 sender = dsi_connector->pkg_sender;
324 mdfld_dsi_pkg_sender_destroy(sender); 324 mdfld_dsi_pkg_sender_destroy(sender);
@@ -597,7 +597,7 @@ void mdfld_dsi_output_init(struct drm_device *dev,
597 dsi_config->encoder = encoder; 597 dsi_config->encoder = encoder;
598 encoder->base.type = (pipe == 0) ? INTEL_OUTPUT_MIPI : 598 encoder->base.type = (pipe == 0) ? INTEL_OUTPUT_MIPI :
599 INTEL_OUTPUT_MIPI2; 599 INTEL_OUTPUT_MIPI2;
600 drm_sysfs_connector_add(connector); 600 drm_connector_register(connector);
601 return; 601 return;
602 602
603 /*TODO: add code to destroy outputs on error*/ 603 /*TODO: add code to destroy outputs on error*/
diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
index cf018ddcc5a6..e6f5c620a0a2 100644
--- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
+++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
@@ -665,7 +665,7 @@ void oaktrail_hdmi_init(struct drm_device *dev,
665 connector->display_info.subpixel_order = SubPixelHorizontalRGB; 665 connector->display_info.subpixel_order = SubPixelHorizontalRGB;
666 connector->interlace_allowed = false; 666 connector->interlace_allowed = false;
667 connector->doublescan_allowed = false; 667 connector->doublescan_allowed = false;
668 drm_sysfs_connector_add(connector); 668 drm_connector_register(connector);
669 dev_info(dev->dev, "HDMI initialised.\n"); 669 dev_info(dev->dev, "HDMI initialised.\n");
670 670
671 return; 671 return;
diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c
index 9b099468a5db..0d39da6e8b7a 100644
--- a/drivers/gpu/drm/gma500/oaktrail_lvds.c
+++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c
@@ -404,7 +404,7 @@ void oaktrail_lvds_init(struct drm_device *dev,
404out: 404out:
405 mutex_unlock(&dev->mode_config.mutex); 405 mutex_unlock(&dev->mode_config.mutex);
406 406
407 drm_sysfs_connector_add(connector); 407 drm_connector_register(connector);
408 return; 408 return;
409 409
410failed_find: 410failed_find:
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index d7778d0472c1..88aad95bde09 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -563,7 +563,7 @@ void psb_intel_lvds_destroy(struct drm_connector *connector)
563 563
564 if (lvds_priv->ddc_bus) 564 if (lvds_priv->ddc_bus)
565 psb_intel_i2c_destroy(lvds_priv->ddc_bus); 565 psb_intel_i2c_destroy(lvds_priv->ddc_bus);
566 drm_sysfs_connector_remove(connector); 566 drm_connector_unregister(connector);
567 drm_connector_cleanup(connector); 567 drm_connector_cleanup(connector);
568 kfree(connector); 568 kfree(connector);
569} 569}
@@ -829,7 +829,7 @@ void psb_intel_lvds_init(struct drm_device *dev,
829 */ 829 */
830out: 830out:
831 mutex_unlock(&dev->mode_config.mutex); 831 mutex_unlock(&dev->mode_config.mutex);
832 drm_sysfs_connector_add(connector); 832 drm_connector_register(connector);
833 return; 833 return;
834 834
835failed_find: 835failed_find:
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
index deeb0829b129..0be96fdb5e28 100644
--- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c
+++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
@@ -1682,7 +1682,7 @@ static void psb_intel_sdvo_destroy(struct drm_connector *connector)
1682 psb_intel_sdvo_connector->tv_format); 1682 psb_intel_sdvo_connector->tv_format);
1683 1683
1684 psb_intel_sdvo_destroy_enhance_property(connector); 1684 psb_intel_sdvo_destroy_enhance_property(connector);
1685 drm_sysfs_connector_remove(connector); 1685 drm_connector_unregister(connector);
1686 drm_connector_cleanup(connector); 1686 drm_connector_cleanup(connector);
1687 kfree(connector); 1687 kfree(connector);
1688} 1688}
@@ -2071,7 +2071,7 @@ psb_intel_sdvo_connector_init(struct psb_intel_sdvo_connector *connector,
2071 connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; 2071 connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB;
2072 2072
2073 gma_connector_attach_encoder(&connector->base, &encoder->base); 2073 gma_connector_attach_encoder(&connector->base, &encoder->base);
2074 drm_sysfs_connector_add(&connector->base.base); 2074 drm_connector_register(&connector->base.base);
2075} 2075}
2076 2076
2077static void 2077static void
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 5a045d3bd77e..8da5ef9f4828 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -869,7 +869,7 @@ void intel_crt_init(struct drm_device *dev)
869 869
870 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); 870 drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
871 871
872 drm_sysfs_connector_add(connector); 872 drm_connector_register(connector);
873 873
874 if (!I915_HAS_HOTPLUG(dev)) 874 if (!I915_HAS_HOTPLUG(dev))
875 intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT; 875 intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 556c916dbf9d..1112d9ecc226 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12260,7 +12260,7 @@ void intel_connector_unregister(struct intel_connector *intel_connector)
12260 struct drm_connector *connector = &intel_connector->base; 12260 struct drm_connector *connector = &intel_connector->base;
12261 12261
12262 intel_panel_destroy_backlight(connector); 12262 intel_panel_destroy_backlight(connector);
12263 drm_sysfs_connector_remove(connector); 12263 drm_connector_unregister(connector);
12264} 12264}
12265 12265
12266void intel_modeset_cleanup(struct drm_device *dev) 12266void intel_modeset_cleanup(struct drm_device *dev)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 52fda950fd2a..99f033f69189 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4246,7 +4246,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
4246 edp_panel_vdd_work); 4246 edp_panel_vdd_work);
4247 4247
4248 intel_connector_attach_encoder(intel_connector, intel_encoder); 4248 intel_connector_attach_encoder(intel_connector, intel_encoder);
4249 drm_sysfs_connector_add(connector); 4249 drm_connector_register(connector);
4250 4250
4251 if (HAS_DDI(dev)) 4251 if (HAS_DDI(dev))
4252 intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; 4252 intel_connector->get_hw_state = intel_ddi_connector_get_hw_state;
@@ -4289,7 +4289,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
4289 edp_panel_vdd_off_sync(intel_dp); 4289 edp_panel_vdd_off_sync(intel_dp);
4290 drm_modeset_unlock(&dev->mode_config.connection_mutex); 4290 drm_modeset_unlock(&dev->mode_config.connection_mutex);
4291 } 4291 }
4292 drm_sysfs_connector_remove(connector); 4292 drm_connector_unregister(connector);
4293 drm_connector_cleanup(connector); 4293 drm_connector_cleanup(connector);
4294 return false; 4294 return false;
4295 } 4295 }
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 02f99d768d49..7c07ee07a8ee 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -742,7 +742,7 @@ bool intel_dsi_init(struct drm_device *dev)
742 742
743 intel_connector_attach_encoder(intel_connector, intel_encoder); 743 intel_connector_attach_encoder(intel_connector, intel_encoder);
744 744
745 drm_sysfs_connector_add(connector); 745 drm_connector_register(connector);
746 746
747 fixed_mode = dsi->dev_ops->get_modes(&intel_dsi->dev); 747 fixed_mode = dsi->dev_ops->get_modes(&intel_dsi->dev);
748 if (!fixed_mode) { 748 if (!fixed_mode) {
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index a3631c0a5c28..3fb71a04e14f 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -558,7 +558,7 @@ void intel_dvo_init(struct drm_device *dev)
558 intel_dvo->panel_wants_dither = true; 558 intel_dvo->panel_wants_dither = true;
559 } 559 }
560 560
561 drm_sysfs_connector_add(connector); 561 drm_connector_register(connector);
562 return; 562 return;
563 } 563 }
564 564
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index eee2bbec2958..0b603102cb3b 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1490,7 +1490,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1490 intel_hdmi_add_properties(intel_hdmi, connector); 1490 intel_hdmi_add_properties(intel_hdmi, connector);
1491 1491
1492 intel_connector_attach_encoder(intel_connector, intel_encoder); 1492 intel_connector_attach_encoder(intel_connector, intel_encoder);
1493 drm_sysfs_connector_add(connector); 1493 drm_connector_register(connector);
1494 1494
1495 /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written 1495 /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written
1496 * 0xd. Failure to do so will result in spurious interrupts being 1496 * 0xd. Failure to do so will result in spurious interrupts being
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 23126023aeba..4d29a83fd163 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -1097,7 +1097,7 @@ out:
1097 DRM_DEBUG_KMS("lid notifier registration failed\n"); 1097 DRM_DEBUG_KMS("lid notifier registration failed\n");
1098 lvds_connector->lid_notifier.notifier_call = NULL; 1098 lvds_connector->lid_notifier.notifier_call = NULL;
1099 } 1099 }
1100 drm_sysfs_connector_add(connector); 1100 drm_connector_register(connector);
1101 1101
1102 intel_panel_init(&intel_connector->panel, fixed_mode, downclock_mode); 1102 intel_panel_init(&intel_connector->panel, fixed_mode, downclock_mode);
1103 intel_panel_setup_backlight(connector); 1103 intel_panel_setup_backlight(connector);
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 20375cc7f82d..9350edd6728d 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2433,7 +2433,7 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector,
2433 connector->base.unregister = intel_sdvo_connector_unregister; 2433 connector->base.unregister = intel_sdvo_connector_unregister;
2434 2434
2435 intel_connector_attach_encoder(&connector->base, &encoder->base); 2435 intel_connector_attach_encoder(&connector->base, &encoder->base);
2436 ret = drm_sysfs_connector_add(drm_connector); 2436 ret = drm_connector_register(drm_connector);
2437 if (ret < 0) 2437 if (ret < 0)
2438 goto err1; 2438 goto err1;
2439 2439
@@ -2446,7 +2446,7 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector,
2446 return 0; 2446 return 0;
2447 2447
2448err2: 2448err2:
2449 drm_sysfs_connector_remove(drm_connector); 2449 drm_connector_unregister(drm_connector);
2450err1: 2450err1:
2451 drm_connector_cleanup(drm_connector); 2451 drm_connector_cleanup(drm_connector);
2452 2452
@@ -2559,7 +2559,7 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type)
2559 return true; 2559 return true;
2560 2560
2561err: 2561err:
2562 drm_sysfs_connector_remove(connector); 2562 drm_connector_unregister(connector);
2563 intel_sdvo_destroy(connector); 2563 intel_sdvo_destroy(connector);
2564 return false; 2564 return false;
2565} 2565}
@@ -2638,7 +2638,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
2638 return true; 2638 return true;
2639 2639
2640err: 2640err:
2641 drm_sysfs_connector_remove(connector); 2641 drm_connector_unregister(connector);
2642 intel_sdvo_destroy(connector); 2642 intel_sdvo_destroy(connector);
2643 return false; 2643 return false;
2644} 2644}
@@ -2711,7 +2711,7 @@ static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo)
2711 list_for_each_entry_safe(connector, tmp, 2711 list_for_each_entry_safe(connector, tmp,
2712 &dev->mode_config.connector_list, head) { 2712 &dev->mode_config.connector_list, head) {
2713 if (intel_attached_encoder(connector) == &intel_sdvo->base) { 2713 if (intel_attached_encoder(connector) == &intel_sdvo->base) {
2714 drm_sysfs_connector_remove(connector); 2714 drm_connector_unregister(connector);
2715 intel_sdvo_destroy(connector); 2715 intel_sdvo_destroy(connector);
2716 } 2716 }
2717 } 2717 }
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 67c6c9a2eb1c..e211eef4b7e4 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -1680,5 +1680,5 @@ intel_tv_init(struct drm_device *dev)
1680 drm_object_attach_property(&connector->base, 1680 drm_object_attach_property(&connector->base,
1681 dev->mode_config.tv_bottom_margin_property, 1681 dev->mode_config.tv_bottom_margin_property,
1682 intel_tv->margin[TV_MARGIN_BOTTOM]); 1682 intel_tv->margin[TV_MARGIN_BOTTOM]);
1683 drm_sysfs_connector_add(connector); 1683 drm_connector_register(connector);
1684} 1684}
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
index a034ed408252..f9fe390920f1 100644
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
@@ -1621,7 +1621,7 @@ static struct drm_connector *mga_vga_init(struct drm_device *dev)
1621 1621
1622 drm_connector_helper_add(connector, &mga_vga_connector_helper_funcs); 1622 drm_connector_helper_add(connector, &mga_vga_connector_helper_funcs);
1623 1623
1624 drm_sysfs_connector_add(connector); 1624 drm_connector_register(connector);
1625 1625
1626 mga_connector->i2c = mgag200_i2c_create(dev); 1626 mga_connector->i2c = mgag200_i2c_create(dev);
1627 if (!mga_connector->i2c) 1627 if (!mga_connector->i2c)
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
index 28f7e3ec6c28..76960faae38f 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_connector.c
@@ -306,7 +306,7 @@ static void hdmi_connector_destroy(struct drm_connector *connector)
306 306
307 hdp_disable(hdmi_connector); 307 hdp_disable(hdmi_connector);
308 308
309 drm_sysfs_connector_remove(connector); 309 drm_connector_unregister(connector);
310 drm_connector_cleanup(connector); 310 drm_connector_cleanup(connector);
311 311
312 hdmi_unreference(hdmi_connector->hdmi); 312 hdmi_unreference(hdmi_connector->hdmi);
@@ -416,7 +416,7 @@ struct drm_connector *hdmi_connector_init(struct hdmi *hdmi)
416 connector->interlace_allowed = 1; 416 connector->interlace_allowed = 1;
417 connector->doublescan_allowed = 0; 417 connector->doublescan_allowed = 0;
418 418
419 drm_sysfs_connector_add(connector); 419 drm_connector_register(connector);
420 420
421 ret = hpd_enable(hdmi_connector); 421 ret = hpd_enable(hdmi_connector);
422 if (ret) { 422 if (ret) {
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 1fa222e8f007..680f46d007a0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -104,7 +104,7 @@ nouveau_connector_destroy(struct drm_connector *connector)
104 struct nouveau_connector *nv_connector = nouveau_connector(connector); 104 struct nouveau_connector *nv_connector = nouveau_connector(connector);
105 nouveau_event_ref(NULL, &nv_connector->hpd); 105 nouveau_event_ref(NULL, &nv_connector->hpd);
106 kfree(nv_connector->edid); 106 kfree(nv_connector->edid);
107 drm_sysfs_connector_remove(connector); 107 drm_connector_unregister(connector);
108 drm_connector_cleanup(connector); 108 drm_connector_cleanup(connector);
109 if (nv_connector->aux.transfer) 109 if (nv_connector->aux.transfer)
110 drm_dp_aux_unregister(&nv_connector->aux); 110 drm_dp_aux_unregister(&nv_connector->aux);
@@ -1236,6 +1236,6 @@ nouveau_connector_create(struct drm_device *dev, int index)
1236 1236
1237 INIT_WORK(&nv_connector->work, nouveau_connector_hotplug_work); 1237 INIT_WORK(&nv_connector->work, nouveau_connector_hotplug_work);
1238 1238
1239 drm_sysfs_connector_add(connector); 1239 drm_connector_register(connector);
1240 return connector; 1240 return connector;
1241} 1241}
diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c
index 86f4ead0441d..36bc5cc80816 100644
--- a/drivers/gpu/drm/omapdrm/omap_connector.c
+++ b/drivers/gpu/drm/omapdrm/omap_connector.c
@@ -130,7 +130,7 @@ static void omap_connector_destroy(struct drm_connector *connector)
130 struct omap_dss_device *dssdev = omap_connector->dssdev; 130 struct omap_dss_device *dssdev = omap_connector->dssdev;
131 131
132 DBG("%s", omap_connector->dssdev->name); 132 DBG("%s", omap_connector->dssdev->name);
133 drm_sysfs_connector_remove(connector); 133 drm_connector_unregister(connector);
134 drm_connector_cleanup(connector); 134 drm_connector_cleanup(connector);
135 kfree(omap_connector); 135 kfree(omap_connector);
136 136
@@ -307,7 +307,7 @@ struct drm_connector *omap_connector_init(struct drm_device *dev,
307 connector->interlace_allowed = 1; 307 connector->interlace_allowed = 1;
308 connector->doublescan_allowed = 0; 308 connector->doublescan_allowed = 0;
309 309
310 drm_sysfs_connector_add(connector); 310 drm_connector_register(connector);
311 311
312 return connector; 312 return connector;
313 313
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index 5d7ea2461852..b8ced08b6291 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -835,7 +835,7 @@ static void qxl_conn_destroy(struct drm_connector *connector)
835 struct qxl_output *qxl_output = 835 struct qxl_output *qxl_output =
836 drm_connector_to_qxl_output(connector); 836 drm_connector_to_qxl_output(connector);
837 837
838 drm_sysfs_connector_remove(connector); 838 drm_connector_unregister(connector);
839 drm_connector_cleanup(connector); 839 drm_connector_cleanup(connector);
840 kfree(qxl_output); 840 kfree(qxl_output);
841} 841}
@@ -902,7 +902,7 @@ static int qdev_output_init(struct drm_device *dev, int num_output)
902 902
903 drm_object_attach_property(&connector->base, 903 drm_object_attach_property(&connector->base,
904 qdev->hotplug_mode_update_property, 0); 904 qdev->hotplug_mode_update_property, 0);
905 drm_sysfs_connector_add(connector); 905 drm_connector_register(connector);
906 return 0; 906 return 0;
907} 907}
908 908
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index 44831197e82e..8137b7a34696 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -740,7 +740,7 @@ static void radeon_connector_destroy(struct drm_connector *connector)
740 if (radeon_connector->edid) 740 if (radeon_connector->edid)
741 kfree(radeon_connector->edid); 741 kfree(radeon_connector->edid);
742 kfree(radeon_connector->con_priv); 742 kfree(radeon_connector->con_priv);
743 drm_sysfs_connector_remove(connector); 743 drm_connector_unregister(connector);
744 drm_connector_cleanup(connector); 744 drm_connector_cleanup(connector);
745 kfree(connector); 745 kfree(connector);
746} 746}
@@ -2050,7 +2050,7 @@ radeon_add_atom_connector(struct drm_device *dev,
2050 connector->polled = DRM_CONNECTOR_POLL_HPD; 2050 connector->polled = DRM_CONNECTOR_POLL_HPD;
2051 2051
2052 connector->display_info.subpixel_order = subpixel_order; 2052 connector->display_info.subpixel_order = subpixel_order;
2053 drm_sysfs_connector_add(connector); 2053 drm_connector_register(connector);
2054 2054
2055 if (has_aux) 2055 if (has_aux)
2056 radeon_dp_aux_init(radeon_connector); 2056 radeon_dp_aux_init(radeon_connector);
@@ -2211,5 +2211,5 @@ radeon_add_legacy_connector(struct drm_device *dev,
2211 } else 2211 } else
2212 connector->polled = DRM_CONNECTOR_POLL_HPD; 2212 connector->polled = DRM_CONNECTOR_POLL_HPD;
2213 connector->display_info.subpixel_order = subpixel_order; 2213 connector->display_info.subpixel_order = subpixel_order;
2214 drm_sysfs_connector_add(connector); 2214 drm_connector_register(connector);
2215} 2215}
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
index 289048d1c7b2..21426bd234eb 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
@@ -64,7 +64,7 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
64 64
65static void rcar_du_lvds_connector_destroy(struct drm_connector *connector) 65static void rcar_du_lvds_connector_destroy(struct drm_connector *connector)
66{ 66{
67 drm_sysfs_connector_remove(connector); 67 drm_connector_unregister(connector);
68 drm_connector_cleanup(connector); 68 drm_connector_cleanup(connector);
69} 69}
70 70
@@ -105,7 +105,7 @@ int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu,
105 return ret; 105 return ret;
106 106
107 drm_connector_helper_add(connector, &connector_helper_funcs); 107 drm_connector_helper_add(connector, &connector_helper_funcs);
108 ret = drm_sysfs_connector_add(connector); 108 ret = drm_connector_register(connector);
109 if (ret < 0) 109 if (ret < 0)
110 return ret; 110 return ret;
111 111
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c b/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c
index ccfe64c7188f..8af3944d31b9 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_vgacon.c
@@ -32,7 +32,7 @@ static const struct drm_connector_helper_funcs connector_helper_funcs = {
32 32
33static void rcar_du_vga_connector_destroy(struct drm_connector *connector) 33static void rcar_du_vga_connector_destroy(struct drm_connector *connector)
34{ 34{
35 drm_sysfs_connector_remove(connector); 35 drm_connector_unregister(connector);
36 drm_connector_cleanup(connector); 36 drm_connector_cleanup(connector);
37} 37}
38 38
@@ -70,7 +70,7 @@ int rcar_du_vga_connector_init(struct rcar_du_device *rcdu,
70 return ret; 70 return ret;
71 71
72 drm_connector_helper_add(connector, &connector_helper_funcs); 72 drm_connector_helper_add(connector, &connector_helper_funcs);
73 ret = drm_sysfs_connector_add(connector); 73 ret = drm_connector_register(connector);
74 if (ret < 0) 74 if (ret < 0)
75 return ret; 75 return ret;
76 76
diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
index faf176b2daf9..47875de89010 100644
--- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c
@@ -692,7 +692,7 @@ static void shmob_drm_connector_destroy(struct drm_connector *connector)
692 struct shmob_drm_connector *scon = to_shmob_connector(connector); 692 struct shmob_drm_connector *scon = to_shmob_connector(connector);
693 693
694 shmob_drm_backlight_exit(scon); 694 shmob_drm_backlight_exit(scon);
695 drm_sysfs_connector_remove(connector); 695 drm_connector_unregister(connector);
696 drm_connector_cleanup(connector); 696 drm_connector_cleanup(connector);
697} 697}
698 698
@@ -726,7 +726,7 @@ int shmob_drm_connector_create(struct shmob_drm_device *sdev,
726 return ret; 726 return ret;
727 727
728 drm_connector_helper_add(connector, &connector_helper_funcs); 728 drm_connector_helper_add(connector, &connector_helper_funcs);
729 ret = drm_sysfs_connector_add(connector); 729 ret = drm_connector_register(connector);
730 if (ret < 0) 730 if (ret < 0)
731 goto err_cleanup; 731 goto err_cleanup;
732 732
@@ -749,7 +749,7 @@ int shmob_drm_connector_create(struct shmob_drm_device *sdev,
749err_backlight: 749err_backlight:
750 shmob_drm_backlight_exit(&sdev->connector); 750 shmob_drm_backlight_exit(&sdev->connector);
751err_sysfs: 751err_sysfs:
752 drm_sysfs_connector_remove(connector); 752 drm_connector_unregister(connector);
753err_cleanup: 753err_cleanup:
754 drm_connector_cleanup(connector); 754 drm_connector_cleanup(connector);
755 return ret; 755 return ret;
diff --git a/drivers/gpu/drm/tegra/output.c b/drivers/gpu/drm/tegra/output.c
index a3e4f1eca6f7..446837e955b6 100644
--- a/drivers/gpu/drm/tegra/output.c
+++ b/drivers/gpu/drm/tegra/output.c
@@ -105,7 +105,7 @@ static void drm_connector_clear(struct drm_connector *connector)
105 105
106static void tegra_connector_destroy(struct drm_connector *connector) 106static void tegra_connector_destroy(struct drm_connector *connector)
107{ 107{
108 drm_sysfs_connector_remove(connector); 108 drm_connector_unregister(connector);
109 drm_connector_cleanup(connector); 109 drm_connector_cleanup(connector);
110 drm_connector_clear(connector); 110 drm_connector_clear(connector);
111} 111}
@@ -318,7 +318,7 @@ int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
318 drm_encoder_helper_add(&output->encoder, &encoder_helper_funcs); 318 drm_encoder_helper_add(&output->encoder, &encoder_helper_funcs);
319 319
320 drm_mode_connector_attach_encoder(&output->connector, &output->encoder); 320 drm_mode_connector_attach_encoder(&output->connector, &output->encoder);
321 drm_sysfs_connector_add(&output->connector); 321 drm_connector_register(&output->connector);
322 322
323 output->encoder.possible_crtcs = 0x3; 323 output->encoder.possible_crtcs = 0x3;
324 324
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_panel.c b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
index 86c67329b605..0c0bce7e9007 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_panel.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_panel.c
@@ -247,7 +247,7 @@ static struct drm_connector *panel_connector_create(struct drm_device *dev,
247 if (ret) 247 if (ret)
248 goto fail; 248 goto fail;
249 249
250 drm_sysfs_connector_add(connector); 250 drm_connector_register(connector);
251 251
252 return connector; 252 return connector;
253 253
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_slave.c b/drivers/gpu/drm/tilcdc/tilcdc_slave.c
index 595068ba2d5e..c578d144ce6d 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_slave.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_slave.c
@@ -261,7 +261,7 @@ static struct drm_connector *slave_connector_create(struct drm_device *dev,
261 if (ret) 261 if (ret)
262 goto fail; 262 goto fail;
263 263
264 drm_sysfs_connector_add(connector); 264 drm_connector_register(connector);
265 265
266 return connector; 266 return connector;
267 267
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
index c38b56b268ac..5324dfd0b5ed 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
@@ -261,7 +261,7 @@ static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
261 if (ret) 261 if (ret)
262 goto fail; 262 goto fail;
263 263
264 drm_sysfs_connector_add(connector); 264 drm_connector_register(connector);
265 265
266 return connector; 266 return connector;
267 267
diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c
index b44d548c56f8..dea38ab6c47d 100644
--- a/drivers/gpu/drm/udl/udl_connector.c
+++ b/drivers/gpu/drm/udl/udl_connector.c
@@ -124,7 +124,7 @@ static int udl_connector_set_property(struct drm_connector *connector,
124 124
125static void udl_connector_destroy(struct drm_connector *connector) 125static void udl_connector_destroy(struct drm_connector *connector)
126{ 126{
127 drm_sysfs_connector_remove(connector); 127 drm_connector_unregister(connector);
128 drm_connector_cleanup(connector); 128 drm_connector_cleanup(connector);
129 kfree(connector); 129 kfree(connector);
130} 130}
@@ -154,7 +154,7 @@ int udl_connector_init(struct drm_device *dev, struct drm_encoder *encoder)
154 drm_connector_init(dev, connector, &udl_connector_funcs, DRM_MODE_CONNECTOR_DVII); 154 drm_connector_init(dev, connector, &udl_connector_funcs, DRM_MODE_CONNECTOR_DVII);
155 drm_connector_helper_add(connector, &udl_connector_helper_funcs); 155 drm_connector_helper_add(connector, &udl_connector_helper_funcs);
156 156
157 drm_sysfs_connector_add(connector); 157 drm_connector_register(connector);
158 drm_mode_connector_attach_encoder(connector, encoder); 158 drm_mode_connector_attach_encoder(connector, encoder);
159 159
160 drm_object_attach_property(&connector->base, 160 drm_object_attach_property(&connector->base,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 8f3edc4710f2..1a024e3b7285 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -75,7 +75,7 @@ void vmw_display_unit_cleanup(struct vmw_display_unit *du)
75 vmw_surface_unreference(&du->cursor_surface); 75 vmw_surface_unreference(&du->cursor_surface);
76 if (du->cursor_dmabuf) 76 if (du->cursor_dmabuf)
77 vmw_dmabuf_unreference(&du->cursor_dmabuf); 77 vmw_dmabuf_unreference(&du->cursor_dmabuf);
78 drm_sysfs_connector_remove(&du->connector); 78 drm_connector_unregister(&du->connector);
79 drm_crtc_cleanup(&du->crtc); 79 drm_crtc_cleanup(&du->crtc);
80 drm_encoder_cleanup(&du->encoder); 80 drm_encoder_cleanup(&du->encoder);
81 drm_connector_cleanup(&du->connector); 81 drm_connector_cleanup(&du->connector);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
index b2b9bd23aeee..15e185ae4c99 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
@@ -371,7 +371,7 @@ static int vmw_ldu_init(struct vmw_private *dev_priv, unsigned unit)
371 encoder->possible_crtcs = (1 << unit); 371 encoder->possible_crtcs = (1 << unit);
372 encoder->possible_clones = 0; 372 encoder->possible_clones = 0;
373 373
374 (void) drm_sysfs_connector_add(connector); 374 (void) drm_connector_register(connector);
375 375
376 drm_crtc_init(dev, crtc, &vmw_legacy_crtc_funcs); 376 drm_crtc_init(dev, crtc, &vmw_legacy_crtc_funcs);
377 377
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index a95d3a0cabe4..b295463a60b3 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -467,7 +467,7 @@ static int vmw_sou_init(struct vmw_private *dev_priv, unsigned unit)
467 encoder->possible_crtcs = (1 << unit); 467 encoder->possible_crtcs = (1 << unit);
468 encoder->possible_clones = 0; 468 encoder->possible_clones = 0;
469 469
470 (void) drm_sysfs_connector_add(connector); 470 (void) drm_connector_register(connector);
471 471
472 drm_crtc_init(dev, crtc, &vmw_screen_object_crtc_funcs); 472 drm_crtc_init(dev, crtc, &vmw_screen_object_crtc_funcs);
473 473
diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c
index def8280d7ee6..6f54ff4f9372 100644
--- a/drivers/staging/imx-drm/imx-drm-core.c
+++ b/drivers/staging/imx-drm/imx-drm-core.c
@@ -202,7 +202,7 @@ static const struct file_operations imx_drm_driver_fops = {
202 202
203void imx_drm_connector_destroy(struct drm_connector *connector) 203void imx_drm_connector_destroy(struct drm_connector *connector)
204{ 204{
205 drm_sysfs_connector_remove(connector); 205 drm_connector_unregister(connector);
206 drm_connector_cleanup(connector); 206 drm_connector_cleanup(connector);
207} 207}
208EXPORT_SYMBOL_GPL(imx_drm_connector_destroy); 208EXPORT_SYMBOL_GPL(imx_drm_connector_destroy);
@@ -293,10 +293,10 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags)
293 * userspace will expect to be able to access DRM at this point. 293 * userspace will expect to be able to access DRM at this point.
294 */ 294 */
295 list_for_each_entry(connector, &drm->mode_config.connector_list, head) { 295 list_for_each_entry(connector, &drm->mode_config.connector_list, head) {
296 ret = drm_sysfs_connector_add(connector); 296 ret = drm_connector_register(connector);
297 if (ret) { 297 if (ret) {
298 dev_err(drm->dev, 298 dev_err(drm->dev,
299 "[CONNECTOR:%d:%s] drm_sysfs_connector_add failed: %d\n", 299 "[CONNECTOR:%d:%s] drm_connector_register failed: %d\n",
300 connector->base.id, 300 connector->base.id,
301 connector->name, ret); 301 connector->name, ret);
302 goto err_unbind; 302 goto err_unbind;
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 8af71a8e2c00..57ecc421b19c 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1419,6 +1419,8 @@ extern int drm_debugfs_create_files(const struct drm_info_list *files,
1419extern int drm_debugfs_remove_files(const struct drm_info_list *files, 1419extern int drm_debugfs_remove_files(const struct drm_info_list *files,
1420 int count, struct drm_minor *minor); 1420 int count, struct drm_minor *minor);
1421extern int drm_debugfs_cleanup(struct drm_minor *minor); 1421extern int drm_debugfs_cleanup(struct drm_minor *minor);
1422extern int drm_debugfs_connector_add(struct drm_connector *connector);
1423extern void drm_debugfs_connector_remove(struct drm_connector *connector);
1422#else 1424#else
1423static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id, 1425static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id,
1424 struct dentry *root) 1426 struct dentry *root)
@@ -1443,6 +1445,15 @@ static inline int drm_debugfs_cleanup(struct drm_minor *minor)
1443{ 1445{
1444 return 0; 1446 return 0;
1445} 1447}
1448
1449static inline int drm_debugfs_connector_add(struct drm_connector *connector)
1450{
1451 return 0;
1452}
1453static inline void drm_debugfs_connector_remove(struct drm_connector *connector)
1454{
1455}
1456
1446#endif 1457#endif
1447 1458
1448 /* Info file support */ 1459 /* Info file support */
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 251b75e6bf7a..857bbb1551f8 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -533,6 +533,7 @@ struct drm_connector {
533 533
534 /* forced on connector */ 534 /* forced on connector */
535 enum drm_connector_force force; 535 enum drm_connector_force force;
536 bool override_edid;
536 uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER]; 537 uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER];
537 struct drm_encoder *encoder; /* currently active encoder */ 538 struct drm_encoder *encoder; /* currently active encoder */
538 539
@@ -545,6 +546,8 @@ struct drm_connector {
545 int audio_latency[2]; 546 int audio_latency[2];
546 int null_edid_counter; /* needed to workaround some HW bugs where we get all 0s */ 547 int null_edid_counter; /* needed to workaround some HW bugs where we get all 0s */
547 unsigned bad_edid_counter; 548 unsigned bad_edid_counter;
549
550 struct dentry *debugfs_entry;
548}; 551};
549 552
550/** 553/**
@@ -878,6 +881,8 @@ extern int drm_connector_init(struct drm_device *dev,
878 struct drm_connector *connector, 881 struct drm_connector *connector,
879 const struct drm_connector_funcs *funcs, 882 const struct drm_connector_funcs *funcs,
880 int connector_type); 883 int connector_type);
884int drm_connector_register(struct drm_connector *connector);
885void drm_connector_unregister(struct drm_connector *connector);
881 886
882extern void drm_connector_cleanup(struct drm_connector *connector); 887extern void drm_connector_cleanup(struct drm_connector *connector);
883/* helper to unplug all connectors from sysfs for device */ 888/* helper to unplug all connectors from sysfs for device */
diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
index 9abbeb924cbb..b0b855613641 100644
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -780,7 +780,7 @@ struct drm_prime_handle {
780 780
781/** 781/**
782 * Device specific ioctls should only be in their respective headers 782 * Device specific ioctls should only be in their respective headers
783 * The device specific ioctl range is from 0x40 to 0x99. 783 * The device specific ioctl range is from 0x40 to 0x9f.
784 * Generic IOCTLS restart at 0xA0. 784 * Generic IOCTLS restart at 0xA0.
785 * 785 *
786 * \sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and 786 * \sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and