diff options
author | Anson Huang <b20788@freescale.com> | 2013-10-14 15:06:15 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:05:48 -0400 |
commit | 04bcc0730a082d7e532e4db3581686d9328ba048 (patch) | |
tree | f5926fcb2865e5ff528d4d7fc675df073072dd8e | |
parent | f90bd2476d9c59fa1132b18c9ad5bd33d1786d69 (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.c | 25 |
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 | ||
297 | static int imx_pwm_suspend(struct device *dev) | ||
298 | { | ||
299 | pinctrl_pm_select_sleep_state(dev); | ||
300 | |||
301 | return 0; | ||
302 | } | ||
303 | |||
304 | static int imx_pwm_resume(struct device *dev) | ||
305 | { | ||
306 | pinctrl_pm_select_default_state(dev); | ||
307 | |||
308 | return 0; | ||
309 | } | ||
310 | |||
311 | static 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 | |||
295 | static struct platform_driver imx_pwm_driver = { | 317 | static 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, |