diff options
author | Peter Chen <peter.chen@freescale.com> | 2014-11-26 00:44:30 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-26 12:28:12 -0500 |
commit | 2558c1f53bbbb5848fd5910918b97b03249d3885 (patch) | |
tree | 809e80cf032ee1bf8b33fbfcf592e9e2647a102e | |
parent | 8076932ff2fc0f6db0172420e6b148a8b2e8c805 (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.c | 36 |
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 | ||
212 | static 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 | |||
223 | static 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 | |||
232 | static int ci_hdrc_imx_suspend(struct device *dev) | ||
233 | { | ||
234 | return imx_controller_suspend(dev); | ||
235 | } | ||
236 | |||
237 | static int ci_hdrc_imx_resume(struct device *dev) | ||
238 | { | ||
239 | return imx_controller_resume(dev); | ||
240 | } | ||
241 | #endif /* CONFIG_PM_SLEEP */ | ||
242 | |||
243 | static 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 | }; | ||
211 | static struct platform_driver ci_hdrc_imx_driver = { | 246 | static 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 | ||