Skip to content

Commit

Permalink
drm/omap: stop connector polling during suspend
Browse files Browse the repository at this point in the history
When not using proper hotplug detection, DRM polls periodically the
connectors to find out if a cable is connected. This polling can happen
at any time, even very late in the suspend process.

This causes a problem with omapdrm, when the poll happens during the
suspend process after GPIOs have been disabled, leading to a crash in
gpio_get().

This patch fixes the issue by adding suspend and resume hooks to
omapdrm, in which we disable and enable, respectively, the polling.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Tomi Valkeinen committed Mar 24, 2015
1 parent f5a1d31 commit ccd7b5e
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion drivers/gpu/drm/omapdrm/omap_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -706,9 +706,28 @@ static int pdev_remove(struct platform_device *device)
return 0;
}

static int omap_drm_suspend(struct device *dev)
{
struct drm_device *drm_dev = dev_get_drvdata(dev);

drm_kms_helper_poll_disable(drm_dev);

return 0;
}

static int omap_drm_resume(struct device *dev)
{
struct drm_device *drm_dev = dev_get_drvdata(dev);

drm_kms_helper_poll_enable(drm_dev);

return omap_gem_resume(dev);
}

#ifdef CONFIG_PM
static const struct dev_pm_ops omapdrm_pm_ops = {
.resume = omap_gem_resume,
.suspend = omap_drm_suspend,
.resume = omap_drm_resume,
};
#endif

Expand Down

0 comments on commit ccd7b5e

Please sign in to comment.