drm/i915: Fix CRT hotplug regression in 2.6.35-rc1
authorAndy Lutomirski <luto@MIT.EDU>
Sat, 12 Jun 2010 09:21:18 +0000 (05:21 -0400)
committerEric Anholt <eric@anholt.net>
Thu, 1 Jul 2010 22:35:57 +0000 (15:35 -0700)
commit2d1c9752eaa4c0b38f6fb1ab79a6addc146cd64e
tree75d84be3c00a5be1a80fd90935c7c9294c8eaf3a
parentfe27d53e5c597ee5ba5d72a29d517091f244e974
drm/i915: Fix CRT hotplug regression in 2.6.35-rc1

Commit 7a772c492fcfffae812ffca78a628e76fa57fe58 has two bugs which
made the hotplug problems on my laptop worse instead of better.

First, it did not, in fact, disable the CRT plug interrupt -- it
disabled all the other hotplug interrupts.  It seems rather doubtful
that that bit of the patch fixed anything, so let's just remove it.
(If you want to add it back, you probably meant ~CRT_HOTPLUG_INT_EN.)

Second, on at least my GM45, setting CRT_HOTPLUG_ACTIVATION_PERIOD_64
and CRT_HOTPLUG_VOLTAGE_COMPARE_50 (when they were previously unset)
causes a hotplug interrupt about three seconds later.  The old code
never restored PORT_HOTPLUG_EN so this could only happen once, but
they new code restores those registers.  So just set those bits when
we set up the interrupt in the first place.

Signed-off-by: Andy Lutomirski <luto@mit.edu>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_crt.c