Re: rtc: ds1307: call the platform's logic for handle IRQs.
From: Heiner Kallweit <hkallweit1@gmail.com>
Date: 2017-08-24 20:53:19
Am 24.08.2017 um 22:44 schrieb Heiner Kallweit:
Am 24.08.2017 um 22:13 schrieb Enric Balletbo i Serra:quoted
Hi Heiner On 24/08/17 21:16, Heiner Kallweit wrote:quoted
Am 24.08.2017 um 20:46 schrieb Heiner Kallweit:quoted
Hi Enric, I just saw your submitted patch on patchwork. As I haven't been subscribed to linux-rtc list yet, I can't reply to the original mail. Few remarks: I think the same can be achieved easier (apart from the fact that member irq was just removed from struct ds1307). The curent call to device_set_wakeup_capable has to be replaced with device_init_wakeup, in addition we have to call dev_pm_set_wake_irq to register the interrupt with the Linux wakeup core. Then the core takes care of everything.Oh I just saw your patches, thanks to advice me about them.quoted
After further checking not even this may be necessary. If flag I2C_CLIENT_WAKE is set for the i2c client then i2c_device_probe() enables the device as wakeup device and registers the interrupt with the wakeup core. If the i2c client is defined via DT, then of_i2c_register_device() sets this flag based on the "wakeup-source" property. Is your device configured via DT? If yes, did you check whether wakeup works w/o your patch with just setting property wakeup-source ?Yes, device is configured via DT and without my patch, just setting property wakeup-source didn't work, the reason is that code: http://elixir.free-electrons.com/linux/v4.13-rc6/source/drivers/rtc/rtc-ds1307.c#L1382This shouldn't be the reason because registering the interrupt with the wakeup core happens earlier in i2c_device_probe(). Can you check whether dev_pm_set_wake_irq() is actually called with the right irq number in i2c_device_probe()?
See also description of commit 4990d4fe327b9d9a7a "PM / Wakeirq: Add automated device wake IRQ handling" from 2015. It explains why the code you want to add shouldn't be needed any longer.
Would be interesting to see the DT config of your rtc.quoted
I didn't test on top of your patches so let me rebase/rethink my patch on top of yours.quoted
quoted
See also rtc-ds1343, although I think the calls to enable/disable_irq_wake are not needed there because the core takes care of this already (enable_irq_wake is called from dev_pm_arm_wake_irq). Rgds, HeinerThanks, Enric