drm: extract drm_kms_helper_hotplug_event
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 23 Oct 2012 18:23:32 +0000 (18:23 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 20 Nov 2012 05:50:32 +0000 (15:50 +1000)
Useful if drivers want to be slightly more clever about hotplug
handling.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_crtc_helper.c
include/drm/drm_crtc_helper.h

index b04cf5332599a2d019f5da08e17050ffadde2903..760a67534c6cfb562af3953d92aa07b0a27a7950 100644 (file)
@@ -936,6 +936,15 @@ int drm_helper_resume_force_mode(struct drm_device *dev)
 }
 EXPORT_SYMBOL(drm_helper_resume_force_mode);
 
+void drm_kms_helper_hotplug_event(struct drm_device *dev)
+{
+       /* send a uevent + call fbdev */
+       drm_sysfs_hotplug_event(dev);
+       if (dev->mode_config.funcs->output_poll_changed)
+               dev->mode_config.funcs->output_poll_changed(dev);
+}
+EXPORT_SYMBOL(drm_kms_helper_hotplug_event);
+
 #define DRM_OUTPUT_POLL_PERIOD (10*HZ)
 static void output_poll_execute(struct work_struct *work)
 {
@@ -978,12 +987,8 @@ static void output_poll_execute(struct work_struct *work)
 
        mutex_unlock(&dev->mode_config.mutex);
 
-       if (changed) {
-               /* send a uevent + call fbdev */
-               drm_sysfs_hotplug_event(dev);
-               if (dev->mode_config.funcs->output_poll_changed)
-                       dev->mode_config.funcs->output_poll_changed(dev);
-       }
+       if (changed)
+               drm_kms_helper_hotplug_event(dev);
 
        if (repoll)
                schedule_delayed_work(delayed_work, DRM_OUTPUT_POLL_PERIOD);
index defee28f6b95f22e20acda89a751b9d111ea2fac..f43d556bf40bcbe1968d2440e214160c02844a59 100644 (file)
@@ -164,6 +164,7 @@ extern int drm_helper_resume_force_mode(struct drm_device *dev);
 extern void drm_kms_helper_poll_init(struct drm_device *dev);
 extern void drm_kms_helper_poll_fini(struct drm_device *dev);
 extern void drm_helper_hpd_irq_event(struct drm_device *dev);
+extern void drm_kms_helper_hotplug_event(struct drm_device *dev);
 
 extern void drm_kms_helper_poll_disable(struct drm_device *dev);
 extern void drm_kms_helper_poll_enable(struct drm_device *dev);