summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/gma500/psb_device.c
diff options
context:
space:
mode:
authorAlan Cox <alan@linux.intel.com>2012-05-14 12:03:34 +0100
committerDave Airlie <airlied@redhat.com>2012-05-17 11:05:29 +0100
commit6607e024014e4920e8d3e43bcfeec0436d43d980 (patch)
tree67058567b0e441d84cb3ba72a361a54581bceb8e /drivers/gpu/drm/gma500/psb_device.c
parentf9aa76a85248565ff13dc0e10633c4343a059f71 (diff)
gma500: Fix crash on D2700MUD and various other boards
The recent changes led to the lid timer code being run on various devices. It does no harm on most but isn't needed. It also calls unconditionally into the Poulsbo backlight code which goes bang on Cedartrail. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/gma500/psb_device.c')
-rw-r--r--drivers/gpu/drm/gma500/psb_device.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/gma500/psb_device.c b/drivers/gpu/drm/gma500/psb_device.c
index 651af6768e1..6a67cec3384 100644
--- a/drivers/gpu/drm/gma500/psb_device.c
+++ b/drivers/gpu/drm/gma500/psb_device.c
@@ -352,8 +352,17 @@ static int psb_chip_setup(struct drm_device *dev)
return 0;
}
+/* Not exactly an erratum more an irritation */
+static int psb_chip_errata(struct drm_device *dev)
+{
+ struct drm_psb_private *dev_priv = dev->dev_private;
+ psb_lid_timer_init(dev_priv);
+}
+
static void psb_chip_teardown(struct drm_device *dev)
{
+ struct drm_psb_private *dev_priv = dev->dev_private;
+ psb_lid_timer_takedown(dev_priv);
gma_intel_teardown_gmbus(dev);
}
@@ -367,6 +376,7 @@ const struct psb_ops psb_chip_ops = {
.sgx_offset = PSB_SGX_OFFSET,
.chip_setup = psb_chip_setup,
.chip_teardown = psb_chip_teardown,
+ .errata = psb_chip_errata,
.crtc_helper = &psb_intel_helper_funcs,
.crtc_funcs = &psb_intel_crtc_funcs,