Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57f4d4f1 authored by Magnus Damm's avatar Magnus Damm Committed by Rafael J. Wysocki
Browse files

I2C: Rework i2c-pxa suspend_late()/resume_early()



This patch reworks platform driver power management code
for i2c-pxa from legacy late/early callbacks to dev_pm_ops.

The callbacks are converted for CONFIG_SUSPEND like this:
  suspend_late() -> suspend_noirq()
  resume_early() -> resume_noirq()

Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 4aebac2f
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -1134,35 +1134,44 @@ static int __exit i2c_pxa_remove(struct platform_device *dev)
}

#ifdef CONFIG_PM
static int i2c_pxa_suspend_late(struct platform_device *dev, pm_message_t state)
static int i2c_pxa_suspend_noirq(struct device *dev)
{
	struct pxa_i2c *i2c = platform_get_drvdata(dev);
	struct platform_device *pdev = to_platform_device(dev);
	struct pxa_i2c *i2c = platform_get_drvdata(pdev);

	clk_disable(i2c->clk);

	return 0;
}

static int i2c_pxa_resume_early(struct platform_device *dev)
static int i2c_pxa_resume_noirq(struct device *dev)
{
	struct pxa_i2c *i2c = platform_get_drvdata(dev);
	struct platform_device *pdev = to_platform_device(dev);
	struct pxa_i2c *i2c = platform_get_drvdata(pdev);

	clk_enable(i2c->clk);
	i2c_pxa_reset(i2c);

	return 0;
}

static struct dev_pm_ops i2c_pxa_dev_pm_ops = {
	.suspend_noirq = i2c_pxa_suspend_noirq,
	.resume_noirq = i2c_pxa_resume_noirq,
};

#define I2C_PXA_DEV_PM_OPS (&i2c_pxa_dev_pm_ops)
#else
#define i2c_pxa_suspend_late NULL
#define i2c_pxa_resume_early NULL
#define I2C_PXA_DEV_PM_OPS NULL
#endif

static struct platform_driver i2c_pxa_driver = {
	.probe		= i2c_pxa_probe,
	.remove		= __exit_p(i2c_pxa_remove),
	.suspend_late	= i2c_pxa_suspend_late,
	.resume_early	= i2c_pxa_resume_early,
	.driver		= {
		.name	= "pxa2xx-i2c",
		.owner	= THIS_MODULE,
		.pm	= I2C_PXA_DEV_PM_OPS,
	},
	.id_table	= i2c_pxa_id_table,
};