drm/i915/eDP: When enabling panel VDD cancel pending disable worker
authorEgbert Eich <eich@suse.de>
Tue, 25 Nov 2014 11:54:57 +0000 (12:54 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 3 Dec 2014 08:29:40 +0000 (09:29 +0100)
Before testing if the panel VDD is enabled on eDP cancel any pending
disable worker. This makes sure the worker will be triggered with a
delay from the last time edp_panel_vdd_schedule_off() is called, not
the first time. This avoids unnecessary overhead.

https://bugs.freedesktop.org/show_bug.cgi?id=86201

v2: use cancel_delayed_work() instead of cancel_delayed_work_sync()
as the pps_mutexes will provide the required serialization with
edp_panel_vdd_work() while the sync variant may deadlock. Suggested
by Ville Syrjälä <ville.syrjala@linux.intel.com>.
Made commit message a bit clearer.

Signed-off-by: Egbert Eich <eich@suse.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_dp.c

index d2529ec..5cecc20 100644 (file)
@@ -1503,6 +1503,7 @@ static bool edp_panel_vdd_on(struct intel_dp *intel_dp)
        if (!is_edp(intel_dp))
                return false;
 
+       cancel_delayed_work(&intel_dp->panel_vdd_work);
        intel_dp->want_panel_vdd = true;
 
        if (edp_have_panel_vdd(intel_dp))