drm: don't unnecessarily enable the polling work
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 24 Oct 2012 13:35:50 +0000 (13:35 +0000)
committerDave Airlie <airlied@redhat.com>
Tue, 20 Nov 2012 06:06:42 +0000 (16:06 +1000)
... by properly checking connector->polled. This doesn't matter too
much because the polling work itself gets this slightly more right and
doesn't set repoll if there's nothing to do. But we can do better.

v2: Chris Wilson noticed that I broke polling, since repoll will never
ever be set true. Fix this up, and simplify the logic a bit while at
it.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_crtc_helper.c

index 6437bb9..1fe719f 100644 (file)
@@ -974,8 +974,7 @@ static void output_poll_execute(struct work_struct *work)
                if (!connector->polled || connector->polled == DRM_CONNECTOR_POLL_HPD)
                        continue;
 
-               else if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT))
-                       repoll = true;
+               repoll = true;
 
                old_status = connector->status;
                /* if we are connected and don't want to poll for disconnect
@@ -1019,7 +1018,8 @@ void drm_kms_helper_poll_enable(struct drm_device *dev)
                return;
 
        list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
-               if (connector->polled)
+               if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT |
+                                        DRM_CONNECTOR_POLL_DISCONNECT))
                        poll = true;
        }