aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2014-11-26 00:44:30 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-26 12:28:12 -0500
commit2558c1f53bbbb5848fd5910918b97b03249d3885 (patch)
tree809e80cf032ee1bf8b33fbfcf592e9e2647a102e
parent8076932ff2fc0f6db0172420e6b148a8b2e8c805 (diff)
usb: chipidea: imx: add system power management support
Add basic system power management support Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/chipidea/ci_hdrc_imx.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c
index 8b1482aa1291..75421c2187f5 100644
--- a/drivers/usb/chipidea/ci_hdrc_imx.c
+++ b/drivers/usb/chipidea/ci_hdrc_imx.c
@@ -208,6 +208,41 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev)
208 return 0; 208 return 0;
209} 209}
210 210
211#ifdef CONFIG_PM_SLEEP
212static int imx_controller_suspend(struct device *dev)
213{
214 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
215
216 dev_dbg(dev, "at %s\n", __func__);
217
218 clk_disable_unprepare(data->clk);
219
220 return 0;
221}
222
223static int imx_controller_resume(struct device *dev)
224{
225 struct ci_hdrc_imx_data *data = dev_get_drvdata(dev);
226
227 dev_dbg(dev, "at %s\n", __func__);
228
229 return clk_prepare_enable(data->clk);
230}
231
232static int ci_hdrc_imx_suspend(struct device *dev)
233{
234 return imx_controller_suspend(dev);
235}
236
237static int ci_hdrc_imx_resume(struct device *dev)
238{
239 return imx_controller_resume(dev);
240}
241#endif /* CONFIG_PM_SLEEP */
242
243static const struct dev_pm_ops ci_hdrc_imx_pm_ops = {
244 SET_SYSTEM_SLEEP_PM_OPS(ci_hdrc_imx_suspend, ci_hdrc_imx_resume)
245};
211static struct platform_driver ci_hdrc_imx_driver = { 246static struct platform_driver ci_hdrc_imx_driver = {
212 .probe = ci_hdrc_imx_probe, 247 .probe = ci_hdrc_imx_probe,
213 .remove = ci_hdrc_imx_remove, 248 .remove = ci_hdrc_imx_remove,
@@ -215,6 +250,7 @@ static struct platform_driver ci_hdrc_imx_driver = {
215 .name = "imx_usb", 250 .name = "imx_usb",
216 .owner = THIS_MODULE, 251 .owner = THIS_MODULE,
217 .of_match_table = ci_hdrc_imx_dt_ids, 252 .of_match_table = ci_hdrc_imx_dt_ids,
253 .pm = &ci_hdrc_imx_pm_ops,
218 }, 254 },
219}; 255};
220 256