From: 黄涛 Date: Tue, 18 Jan 2011 08:53:52 +0000 (+0800) Subject: i2c: rk29: make suspend later, resume early X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0e61a3a19c7c0d2d022754aade28581e00cd6ed0;p=firefly-linux-kernel-4.4.55.git i2c: rk29: make suspend later, resume early --- 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 }, };