gfx: delay gfx h/w resume if early_suspend flag is true
authorLi Peng <peng.li@intel.com>
Thu, 25 Oct 2012 02:31:18 +0000 (10:31 +0800)
committerLi Peng <peng.li@intel.com>
Thu, 25 Oct 2012 03:07:18 +0000 (11:07 +0800)
Here early_suspend means we trigger gfx suspend at screen off,
which is gfx_runtime_suspend, and there are two points that we
can resume gfx back: gfx_resume() and gfx_runtime_resume().

The two functions looks same but in reality delay gfx resume to
gfx_runtime_resume() works better than gfx_resume(), because we
see some cases that screen can't resume back from gfx_resume().

Change-Id: I133a035cae0202f913ba918f798859fff0b920c0

Signed-off-by: Li Peng <peng.li@intel.com>
drivers/staging/mrst/drv/psb_powermgmt.c

index 4bca841..634f380 100644 (file)
@@ -352,7 +352,6 @@ int gfx_suspend(struct device *dev)
                if (drm_helper_encoder_in_use(encoder) && ehf && ehf->save)
                        ehf->save(encoder);
        }
-       early_suspend = true;
        mutex_unlock(&drm_dev->mode_config.mutex);
 
        return ospm_power_suspend(dev);
@@ -369,6 +368,9 @@ int gfx_resume(struct device *dev)
 
        dev_info(dev, "%s\n", __func__);
 
+       if (early_suspend)
+               return 0;
+
        pm_runtime_forbid(dev);
 
        ospm_power_resume(dev);