Commit be0b23f2 authored by Thierry Reding's avatar Thierry Reding

drm/tegra: sor: Implement system suspend/resume

Upon system suspend, make sure the +5V HDMI regulator is disabled. This
avoids potentially leaking current to the HDMI connector. This also
makes sure that upon resume the regulator is enabled again, which in
some cases is necessary to properly restore the state of the supply on
resume.
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent c52e167b
...@@ -3912,8 +3912,7 @@ static int tegra_sor_remove(struct platform_device *pdev) ...@@ -3912,8 +3912,7 @@ static int tegra_sor_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM static int tegra_sor_runtime_suspend(struct device *dev)
static int tegra_sor_suspend(struct device *dev)
{ {
struct tegra_sor *sor = dev_get_drvdata(dev); struct tegra_sor *sor = dev_get_drvdata(dev);
int err; int err;
...@@ -3935,7 +3934,7 @@ static int tegra_sor_suspend(struct device *dev) ...@@ -3935,7 +3934,7 @@ static int tegra_sor_suspend(struct device *dev)
return 0; return 0;
} }
static int tegra_sor_resume(struct device *dev) static int tegra_sor_runtime_resume(struct device *dev)
{ {
struct tegra_sor *sor = dev_get_drvdata(dev); struct tegra_sor *sor = dev_get_drvdata(dev);
int err; int err;
...@@ -3967,10 +3966,25 @@ static int tegra_sor_resume(struct device *dev) ...@@ -3967,10 +3966,25 @@ static int tegra_sor_resume(struct device *dev)
return 0; return 0;
} }
#endif
static int tegra_sor_suspend(struct device *dev)
{
struct tegra_sor *sor = dev_get_drvdata(dev);
return regulator_disable(sor->hdmi_supply);
}
static int tegra_sor_resume(struct device *dev)
{
struct tegra_sor *sor = dev_get_drvdata(dev);
return regulator_enable(sor->hdmi_supply);
}
static const struct dev_pm_ops tegra_sor_pm_ops = { static const struct dev_pm_ops tegra_sor_pm_ops = {
SET_RUNTIME_PM_OPS(tegra_sor_suspend, tegra_sor_resume, NULL) SET_RUNTIME_PM_OPS(tegra_sor_runtime_suspend, tegra_sor_runtime_resume,
NULL)
SET_SYSTEM_SLEEP_PM_OPS(tegra_sor_suspend, tegra_sor_resume)
}; };
struct platform_driver tegra_sor_driver = { struct platform_driver tegra_sor_driver = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment