diff options
Diffstat (limited to 'drivers/staging/gma500/psb_drv.c')
-rw-r--r-- | drivers/staging/gma500/psb_drv.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/drivers/staging/gma500/psb_drv.c b/drivers/staging/gma500/psb_drv.c index 34cf24a..297b05a 100644 --- a/drivers/staging/gma500/psb_drv.c +++ b/drivers/staging/gma500/psb_drv.c @@ -448,12 +448,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) if (ret) return ret; -#if 0 - /*enable runtime pm at last*/ - pm_runtime_enable(&dev->pdev->dev); + + /* Enable runtime pm at last */ pm_runtime_set_active(&dev->pdev->dev); -#endif - /*Intel drm driver load is done, continue doing pvr load*/ return 0; out_err: psb_driver_unload(dev); @@ -470,14 +467,13 @@ static int psb_sizes_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { struct drm_psb_private *dev_priv = psb_priv(dev); - struct drm_psb_sizes_arg *arg = - (struct drm_psb_sizes_arg *) data; + struct drm_psb_sizes_arg *arg = data; *arg = dev_priv->sizes; return 0; } -static int psb_dc_state_ioctl(struct drm_device *dev, void * data, +static int psb_dc_state_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { uint32_t flags; @@ -485,8 +481,7 @@ static int psb_dc_state_ioctl(struct drm_device *dev, void * data, struct drm_mode_object *obj; struct drm_connector *connector; struct drm_crtc *crtc; - struct drm_psb_dc_state_arg *arg = - (struct drm_psb_dc_state_arg *)data; + struct drm_psb_dc_state_arg *arg = data; /* Double check MRST case */ @@ -1114,15 +1109,12 @@ static long psb_unlocked_ioctl(struct file *filp, unsigned int cmd, { struct drm_file *file_priv = filp->private_data; struct drm_device *dev = file_priv->minor->dev; - struct drm_psb_private *dev_priv = dev->dev_private; - static unsigned int runtime_allowed; - - if (runtime_allowed == 1 && dev_priv->is_lvds_on) { - runtime_allowed++; - pm_runtime_allow(&dev->pdev->dev); - dev_priv->rpm_enabled = 1; - } - return drm_ioctl(filp, cmd, arg); + int ret; + + pm_runtime_forbid(dev->dev); + ret = drm_ioctl(filp, cmd, arg); + pm_runtime_allow(dev->dev); + return ret; /* FIXME: do we need to wrap the other side of this */ } @@ -1141,8 +1133,12 @@ static void psb_remove(struct pci_dev *pdev) } static const struct dev_pm_ops psb_pm_ops = { - .resume = gma_power_resume, .suspend = gma_power_suspend, + .resume = gma_power_resume, + .freeze = gma_power_suspend, + .thaw = gma_power_resume, + .poweroff = gma_power_suspend, + .restore = gma_power_resume, .runtime_suspend = psb_runtime_suspend, .runtime_resume = psb_runtime_resume, .runtime_idle = psb_runtime_idle, |