From 0e61a3a19c7c0d2d022754aade28581e00cd6ed0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Tue, 18 Jan 2011 16:53:52 +0800 Subject: [PATCH] i2c: rk29: make suspend later, resume early --- drivers/i2c/busses/i2c-rk29.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/i2c/busses/i2c-rk29.c b/drivers/i2c/busses/i2c-rk29.c index fdda20294820..3a7eff535075 100755 --- a/drivers/i2c/busses/i2c-rk29.c +++ b/drivers/i2c/busses/i2c-rk29.c @@ -768,16 +768,18 @@ static int rk29_i2c_remove(struct platform_device *pdev) } #ifdef CONFIG_PM - -static int rk29_i2c_suspend(struct platform_device *pdev, pm_message_t state) +static int rk29_i2c_suspend_noirq(struct device *dev) { + struct platform_device *pdev = to_platform_device(dev); struct rk29_i2c_data *i2c = platform_get_drvdata(pdev); i2c->suspended = 1; return 0; } -static int rk29_i2c_resume(struct platform_device *pdev) + +static int rk29_i2c_resume_noirq(struct device *dev) { + struct platform_device *pdev = to_platform_device(dev); struct rk29_i2c_data *i2c = platform_get_drvdata(pdev); i2c->suspended = 0; @@ -785,20 +787,22 @@ static int rk29_i2c_resume(struct platform_device *pdev) return 0; } -#else -#define rk29_i2c_suspend NULL -#define rk29_i2c_resume NULL -#endif +static struct dev_pm_ops rk29_i2c_pm_ops = { + .suspend_noirq = rk29_i2c_suspend_noirq, + .resume_noirq = rk29_i2c_resume_noirq, +}; +#endif static struct platform_driver rk29_i2c_driver = { .probe = rk29_i2c_probe, .remove = rk29_i2c_remove, - .suspend = rk29_i2c_suspend, - .resume = rk29_i2c_resume, .driver = { .owner = THIS_MODULE, .name = DRV_NAME, +#ifdef CONFIG_PM + .pm = &rk29_i2c_pm_ops, +#endif }, }; -- 2.34.1