Commit e79032aa authored by Vasily Khoruzhick's avatar Vasily Khoruzhick Committed by Ben Dooks

ARM: SAMSUNG: Add suspend/resume support for S3C PWM driver

Reset period_ns and duty_ns values in suspend handler to avoid skip of
configuration if same values passed to pwm_config;
Restore invertion bit in resume handler.

Without this patch PWM works incorrectly after resume from suspend.
Signed-off-by: default avatarVasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent 664e87e4
...@@ -379,6 +379,39 @@ static int __devexit s3c_pwm_remove(struct platform_device *pdev) ...@@ -379,6 +379,39 @@ static int __devexit s3c_pwm_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int s3c_pwm_suspend(struct platform_device *pdev, pm_message_t state)
{
struct pwm_device *pwm = platform_get_drvdata(pdev);
/* No one preserve these values during suspend so reset them
* Otherwise driver leaves PWM unconfigured if same values
* passed to pwm_config
*/
pwm->period_ns = 0;
pwm->duty_ns = 0;
return 0;
}
static int s3c_pwm_resume(struct platform_device *pdev)
{
struct pwm_device *pwm = platform_get_drvdata(pdev);
unsigned long tcon;
/* Restore invertion */
tcon = __raw_readl(S3C2410_TCON);
tcon |= pwm_tcon_invert(pwm);
__raw_writel(tcon, S3C2410_TCON);
return 0;
}
#else
#define s3c_pwm_suspend NULL
#define s3c_pwm_resume NULL
#endif
static struct platform_driver s3c_pwm_driver = { static struct platform_driver s3c_pwm_driver = {
.driver = { .driver = {
.name = "s3c24xx-pwm", .name = "s3c24xx-pwm",
...@@ -386,6 +419,8 @@ static struct platform_driver s3c_pwm_driver = { ...@@ -386,6 +419,8 @@ static struct platform_driver s3c_pwm_driver = {
}, },
.probe = s3c_pwm_probe, .probe = s3c_pwm_probe,
.remove = __devexit_p(s3c_pwm_remove), .remove = __devexit_p(s3c_pwm_remove),
.suspend = s3c_pwm_suspend,
.resume = s3c_pwm_resume,
}; };
static int __init pwm_init(void) static int __init pwm_init(void)
......
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