summaryrefslogtreecommitdiff
path: root/linux-core/drm_crtc.c
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@jbarnes-t61.(none)>2008-04-09 11:30:15 -0700
committerJesse Barnes <jbarnes@jbarnes-t61.(none)>2008-04-09 11:30:15 -0700
commitfa116081a919e716eb95fcfa421d93f10f6f0a4f (patch)
tree01e89a10b30d5c17b494335f815a9c3b8e8818a9 /linux-core/drm_crtc.c
parente3c7a0fcb0122400e5b5035125ad4fa88599f28a (diff)
Fixup sysfs output registration
Put off registering new outputs with sysfs until they're properly configured, or we may get duplicates if the type hasn't been set yet (as is the case with SDVO initialization). This also means moving de-registration into the cleanup function instead of output destroy, since the latter occurs during the normal course of setup when an output isn't found (and therefore not registered with sysfs yet.
Diffstat (limited to 'linux-core/drm_crtc.c')
-rw-r--r--linux-core/drm_crtc.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/linux-core/drm_crtc.c b/linux-core/drm_crtc.c
index 19155e1f..f54ceb76 100644
--- a/linux-core/drm_crtc.c
+++ b/linux-core/drm_crtc.c
@@ -651,8 +651,6 @@ struct drm_output *drm_output_create(struct drm_device *dev,
/* output_set_monitor(output)? */
/* check for output_ignored(output)? */
- drm_sysfs_output_add(output);
-
mutex_lock(&dev->mode_config.mutex);
list_add_tail(&output->head, &dev->mode_config.output_list);
dev->mode_config.num_output++;
@@ -683,8 +681,6 @@ void drm_output_destroy(struct drm_output *output)
struct drm_device *dev = output->dev;
struct drm_display_mode *mode, *t;
- drm_sysfs_output_remove(output);
-
if (*output->funcs->cleanup)
(*output->funcs->cleanup)(output);
@@ -1080,6 +1076,7 @@ void drm_mode_config_cleanup(struct drm_device *dev)
struct drm_property *property, *pt;
list_for_each_entry_safe(output, ot, &dev->mode_config.output_list, head) {
+ drm_sysfs_output_remove(output);
drm_output_destroy(output);
}