aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnson Huang <b20788@freescale.com>2013-10-14 15:06:15 -0400
committerNitin Garg <nitin.garg@freescale.com>2014-04-16 09:05:48 -0400
commit04bcc0730a082d7e532e4db3581686d9328ba048 (patch)
treef5926fcb2865e5ff528d4d7fc675df073072dd8e
parentf90bd2476d9c59fa1132b18c9ad5bd33d1786d69 (diff)
ENGR00283508-1 pwm: imx: support pin sleep mode in suspend
When system suspend, need to switch pwm pin to sleep mode, this is to save IO power. Using pinctrl mode switch framework to make it happen. Signed-off-by: Anson Huang <b20788@freescale.com>
-rw-r--r--drivers/pwm/pwm-imx.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
index c938bae18812..45ad14896af5 100644
--- a/drivers/pwm/pwm-imx.c
+++ b/drivers/pwm/pwm-imx.c
@@ -1,4 +1,5 @@
1/* 1/*
2 * Copyright (C) 2013 Freescale Semiconductor, Inc.
2 * simple driver for PWM (Pulse Width Modulator) controller 3 * simple driver for PWM (Pulse Width Modulator) controller
3 * 4 *
4 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
@@ -292,10 +293,34 @@ static int imx_pwm_remove(struct platform_device *pdev)
292 return pwmchip_remove(&imx->chip); 293 return pwmchip_remove(&imx->chip);
293} 294}
294 295
296#ifdef CONFIG_PM
297static int imx_pwm_suspend(struct device *dev)
298{
299 pinctrl_pm_select_sleep_state(dev);
300
301 return 0;
302}
303
304static int imx_pwm_resume(struct device *dev)
305{
306 pinctrl_pm_select_default_state(dev);
307
308 return 0;
309}
310
311static const struct dev_pm_ops imx_pwm_pm_ops = {
312 SET_SYSTEM_SLEEP_PM_OPS(imx_pwm_suspend, imx_pwm_resume)
313};
314#endif
315
316
295static struct platform_driver imx_pwm_driver = { 317static struct platform_driver imx_pwm_driver = {
296 .driver = { 318 .driver = {
297 .name = "imx-pwm", 319 .name = "imx-pwm",
298 .of_match_table = of_match_ptr(imx_pwm_dt_ids), 320 .of_match_table = of_match_ptr(imx_pwm_dt_ids),
321#ifdef CONFIG_PM
322 .pm = &imx_pwm_pm_ops,
323#endif
299 }, 324 },
300 .probe = imx_pwm_probe, 325 .probe = imx_pwm_probe,
301 .remove = imx_pwm_remove, 326 .remove = imx_pwm_remove,