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

Thomas Richard thomas.richard at bootlin.com
Mon Apr 22 02:40:02 PDT 2024


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




More information about the linux-arm-kernel mailing list