summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-core/drm_crtc.c5
-rw-r--r--linux-core/drm_sysfs.c2
-rw-r--r--linux-core/intel_crt.c2
-rw-r--r--linux-core/intel_lvds.c1
-rw-r--r--linux-core/intel_sdvo.c2
-rw-r--r--linux-core/intel_tv.c2
6 files changed, 10 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);
}
diff --git a/linux-core/drm_sysfs.c b/linux-core/drm_sysfs.c
index 3e682c99..427a2e54 100644
--- a/linux-core/drm_sysfs.c
+++ b/linux-core/drm_sysfs.c
@@ -287,6 +287,7 @@ err_out_files:
out:
return ret;
}
+EXPORT_SYMBOL(drm_sysfs_output_add);
/**
* drm_sysfs_output_remove - remove an output device from sysfs
@@ -306,6 +307,7 @@ void drm_sysfs_output_remove(struct drm_output *output)
sysfs_remove_bin_file(&output->kdev.kobj, &edid_attr);
device_unregister(&output->kdev);
}
+EXPORT_SYMBOL(drm_sysfs_output_remove);
/**
* drm_sysfs_hotplug_event - generate a DRM uevent
diff --git a/linux-core/intel_crt.c b/linux-core/intel_crt.c
index 915e430d..ef40871e 100644
--- a/linux-core/intel_crt.c
+++ b/linux-core/intel_crt.c
@@ -261,5 +261,7 @@ void intel_crt_init(struct drm_device *dev)
output->interlace_allowed = 0;
output->doublescan_allowed = 0;
+ drm_sysfs_output_add(output);
+
drm_output_attach_property(output, dev->mode_config.connector_type_property, ConnectorVGA);
}
diff --git a/linux-core/intel_lvds.c b/linux-core/intel_lvds.c
index 80f77af6..378ce457 100644
--- a/linux-core/intel_lvds.c
+++ b/linux-core/intel_lvds.c
@@ -500,6 +500,7 @@ void intel_lvds_init(struct drm_device *dev)
#endif
out:
+ drm_sysfs_output_add(output);
drm_output_attach_property(output, dev->mode_config.connector_type_property, ConnectorLVDS);
return;
diff --git a/linux-core/intel_sdvo.c b/linux-core/intel_sdvo.c
index a8441d8f..4fb3f21c 100644
--- a/linux-core/intel_sdvo.c
+++ b/linux-core/intel_sdvo.c
@@ -1123,6 +1123,8 @@ void intel_sdvo_init(struct drm_device *dev, int output_device)
output->output_type = output_type;
output->output_type_id = output_id;
+ drm_sysfs_output_add(output);
+
/* Set the input timing to the screen. Assume always input 0. */
intel_sdvo_set_target_input(output, true, false);
diff --git a/linux-core/intel_tv.c b/linux-core/intel_tv.c
index 0edbdbac..cc50f8c1 100644
--- a/linux-core/intel_tv.c
+++ b/linux-core/intel_tv.c
@@ -1760,4 +1760,6 @@ intel_tv_init(struct drm_device *dev)
output->driver_private = intel_output;
output->interlace_allowed = FALSE;
output->doublescan_allowed = FALSE;
+
+ drm_sysfs_output_add(output);
}