Re: [PATCH v5 02/11] i2c: omap: wakeup the controller during suspend() callback

From: Thomas Richard
Date: Mon Apr 22 2024 - 05:40:42 EST


On 4/19/24 10:47, Andi Shyti wrote:
> Hi Thomas,
>
>> +static int omap_i2c_suspend(struct device *dev)
>> +{
>> + /*
>> + * If the controller is autosuspended, there is no way to wakeup it once
>> + * runtime pm is disabled (in suspend_late()).
>> + * But a device may need the controller up during suspend_noirq() or
>> + * resume_noirq().
>> + * Wakeup the controller while runtime pm is enabled, so it is available
>> + * until its suspend_noirq(), and from resume_noirq().
>> + */
>> + return pm_runtime_resume_and_get(dev);
>> +}
>> +
>> +static int omap_i2c_resume(struct device *dev)
>> +{
>> + pm_runtime_mark_last_busy(dev);
>> + pm_runtime_put_autosuspend(dev);
>> +
>> + return 0;
>> +}
>> +
>> static const struct dev_pm_ops omap_i2c_pm_ops = {
>> SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
>> pm_runtime_force_resume)
>> + SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
>
> If you don't have CONFIG_PM_SLEEP, though, this doesn't compile.

Hello Andi,

Yes indeed, the __maybe_unused attribute is missing for
omap_i2c_suspend() and omap_i2c_resume().

--
Thomas Richard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com