linux/drivers/gpu/drm/i915
Daniel Vetter 35a38556d9 drm/i915: reorder edp disabling to fix ivb MacBook Air
eDP is tons of fun. It turns out that at least the new MacBook Air 5,1
model absolutely doesn't like the new force vdd dance we've introduced
in

commit 6cb49835da
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Sun May 20 17:14:50 2012 +0200

    drm/i915: enable vdd when switching off the eDP panel

But that patch also tried to fix some neat edp sequence issue with the
force_vdd timings. Closer inspection reveals that we've raised
force_vdd only to do the aux channel communication dp_sink_dpms. If we
move the edp_panel_off below that, we don't need any force_vdd for the
disable sequence, which makes the Air happy.

Unfortunately the reporter of the original bug that the above commit
fixed is travelling, so we can't test whether this regresses things.
But my theory is that since we don't check for any power-off ->
force_vdd-on delays in edp_panel_vdd_on, this was the actual
root-cause of this failure. With that force_vdd dance completely
eliminated, I'm hopeful the original bug stays fixed, too.

For reference the old bug, which hopefully doesn't get broken by this:

https://bugzilla.kernel.org/show_bug.cgi?id=43163

In any case, regression fixers win over plain bugfixes, so this needs
to go in asap.

v2: The crucial pieces seems to be to clear the force_vdd flag
uncoditionally, too, in edp_panel_off. Looks like this is left behind
by the firmware somehow.

v3: The Apple firmware seems to switch off the panel on it's own, hence
we still need to keep force_vdd on, but properly clear it when switching
the panel off.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=45671
Tested-by: Roberto Romer <sildurin@gmail.com>
Tested-by: Daniel Wagner <wagi@monom.org>
Tested-by: Keith Packard <keithp@keithp.com>
Cc: stable@vger.kernel.org
Cc: Keith Packard <keithp@keithp.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-08-14 09:38:25 +02:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_sil164.c
dvo_tfp410.c
dvo.h drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
i915_debugfs.c drm/i915: Add comments to explain the BSD tail write workaround 2012-07-20 12:21:37 +02:00
i915_dma.c drm/i915: unbreak lastclose for failed driver init 2012-07-25 10:40:00 +02:00
i915_drv.c drm/i915: add more Haswell PCI IDs 2012-08-07 13:17:33 +02:00
i915_drv.h drm/i915: Add comments to explain the BSD tail write workaround 2012-07-20 12:21:37 +02:00
i915_gem_context.c drm/i915: remove unused variable 2012-08-05 22:39:53 +02:00
i915_gem_debug.c drm/i915: stop using dev->agp->base 2012-06-12 22:18:06 +02:00
i915_gem_dmabuf.c i915: add dma-buf vmap support for exporting vmapped buffer 2012-05-31 14:13:57 +01:00
i915_gem_evict.c drm: Add colouring to the range allocator 2012-07-16 05:59:37 +10:00
i915_gem_execbuffer.c drm/i915: Don't forget to apply SNB PIPE_CONTROL GTT workaround. 2012-08-05 21:45:01 +02:00
i915_gem_gtt.c i915: don't map imported dma-bufs for dmar. 2012-08-05 22:53:59 +02:00
i915_gem_stolen.c
i915_gem_tiling.c
i915_gem.c drm/i915: Add -EIO to the list of known errors for __wait_seqno 2012-07-25 10:39:57 +02:00
i915_ioc32.c
i915_irq.c Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2012-07-26 10:40:31 +10:00
i915_reg.h drm/i915: fix up PCH backlight #define mixup 2012-07-20 12:21:38 +02:00
i915_suspend.c Linux 3.5-rc7 2012-07-20 00:53:28 -04:00
i915_sysfs.c drm/i915: make rc6 in sysfs functions conditional 2012-08-06 19:31:33 +02:00
i915_trace_points.c
i915_trace.h drm/i915: improve i915_wait_request_begin trace 2012-05-25 09:55:15 +02:00
intel_acpi.c
intel_bios.c drm/i915/bios: cleanup return type of intel_parse_bios() 2012-06-27 10:17:51 +01:00
intel_bios.h drm/i915/bios: cleanup return type of intel_parse_bios() 2012-06-27 10:17:51 +01:00
intel_crt.c drm/i915: check whether we actually received an edid in detect_ddc 2012-07-20 12:21:38 +02:00
intel_ddi.c drm/i915: program FDI_RX TP and FDI delays 2012-07-05 15:09:03 +02:00
intel_display.c drm/i915: ignore eDP bpc settings from vbt 2012-08-11 21:42:52 +02:00
intel_dp.c drm/i915: reorder edp disabling to fix ivb MacBook Air 2012-08-14 09:38:25 +02:00
intel_drv.h drm/i915: Workaround hang with BSD and forcewake on SandyBridge 2012-08-06 10:43:29 +02:00
intel_dvo.c drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
intel_fb.c drm/i915: Zero initialize mode_cmd 2012-07-05 13:27:58 +02:00
intel_hdmi.c drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
intel_i2c.c drm/i915: ensure i2c adapter is all set before adding it 2012-08-13 19:04:24 +02:00
intel_lvds.c drm/i915/lvds: ditch ->prepare special case 2012-07-25 10:39:59 +02:00
intel_modes.c drm/i915: kill intel_ddc_probe 2012-07-20 12:21:39 +02:00
intel_opregion.c
intel_overlay.c drm/i915: s/i915_wait_request/i915_wait_seqno/g 2012-05-25 14:18:42 +02:00
intel_panel.c drm/i915: Fix blank panel at reopening lid 2012-08-11 21:15:16 +02:00
intel_pm.c drm/i915: fix forcewake related hangs on snb 2012-07-27 08:23:28 +02:00
intel_ringbuffer.c drm/i915: correctly order the ring init sequence 2012-08-08 10:23:35 +02:00
intel_ringbuffer.h drm/i915: disable flushing_list/gpu_write_list 2012-06-20 13:54:28 +02:00
intel_sdvo_regs.h
intel_sdvo.c i915: fix error path leak in intel_sdvo_write_cmd 2012-07-26 09:50:04 +02:00
intel_sprite.c drm/i915: mask tiled bit when updating ILK sprites 2012-07-20 12:21:40 +02:00
intel_tv.c drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
Makefile drm/i915: preliminary context support 2012-06-14 17:36:16 +02:00