From 94d80484a64945b22348a657ea42f7b377739521 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Mon, 14 May 2012 12:03:34 +0100 Subject: [PATCH] --- yaml --- r: 307385 b: refs/heads/master c: 6607e024014e4920e8d3e43bcfeec0436d43d980 h: refs/heads/master i: 307383: 4dc9ef1c4385f0387cbcc10609ee23ce4054e2b1 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/gma500/psb_device.c | 10 ++++++++++ trunk/drivers/gpu/drm/gma500/psb_drv.c | 6 ++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 1c977112cdcd..f55d4e8c5072 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f9aa76a85248565ff13dc0e10633c4343a059f71 +refs/heads/master: 6607e024014e4920e8d3e43bcfeec0436d43d980 diff --git a/trunk/drivers/gpu/drm/gma500/psb_device.c b/trunk/drivers/gpu/drm/gma500/psb_device.c index 651af6768e14..6a67cec33845 100644 --- a/trunk/drivers/gpu/drm/gma500/psb_device.c +++ b/trunk/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, diff --git a/trunk/drivers/gpu/drm/gma500/psb_drv.c b/trunk/drivers/gpu/drm/gma500/psb_drv.c index 7473d3b8fffe..c4c6c8ea129a 100644 --- a/trunk/drivers/gpu/drm/gma500/psb_drv.c +++ b/trunk/drivers/gpu/drm/gma500/psb_drv.c @@ -208,11 +208,11 @@ static int psb_driver_unload(struct drm_device *dev) psb_modeset_cleanup(dev); if (dev_priv) { - psb_intel_opregion_fini(dev); - psb_lid_timer_takedown(dev_priv); if (dev_priv->ops->chip_teardown) dev_priv->ops->chip_teardown(dev); + + psb_intel_opregion_fini(dev); psb_do_takedown(dev); @@ -336,8 +336,6 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) PSB_WSGX32(0x30000000, PSB_CR_BIF_3D_REQ_BASE); acpi_video_register(); - if (dev_priv->opregion.lid_state) - psb_lid_timer_init(dev_priv); ret = drm_vblank_init(dev, dev_priv->num_pipe); if (ret)