Message ID | 1368368706-21261-1-git-send-email-digetx@gmail.com |
---|---|
State | Superseded |
Headers | show |
On Sun, 12 May 2013 18:25:06 +0400 Dmitry Osipenko <digetx@gmail.com> wrote: > Use device_init_wakeup() instead of device_set_wakeup_capable() and move it > before rtc dev registering. This fixes issue with alarmtimer that checks wakeup > capability with device_may_wakeup() on device add. Well OK, but what is this "issue"? (form letter: When writing a changelog, please describe the end-user-visible effects of the bug, so that others can more easily decide which kernel version(s) should be fixed, and so that downstream kernel maintainers can more easily work out whether this patch will fix a problem which they or their customers are observing.)
23.05.2013 02:22, Andrew Morton пишет: > On Sun, 12 May 2013 18:25:06 +0400 Dmitry Osipenko <digetx@gmail.com> wrote: > >> Use device_init_wakeup() instead of device_set_wakeup_capable() and move it >> before rtc dev registering. This fixes issue with alarmtimer that checks wakeup >> capability with device_may_wakeup() on device add. > > Well OK, but what is this "issue"? > > (form letter: When writing a changelog, please describe the > end-user-visible effects of the bug, so that others can more easily > decide which kernel version(s) should be fixed, and so that downstream > kernel maintainers can more easily work out whether this patch will fix > a problem which they or their customers are observing.) > Hi, Andrew. Thanks for comment. "Issue" is that alarmtimer won't be registered if tps6586x is the only wakeup compatible rtc in the system. from kernel/time/alarmtimer.c: static int alarmtimer_rtc_add_device(struct device *dev, struct class_interface *class_intf) { ... if (!device_may_wakeup(rtc->dev.parent)) // dev.parent = tps6586x rtc return -1; I've sent V2 with changed description.
diff --git a/drivers/rtc/rtc-tps6586x.c b/drivers/rtc/rtc-tps6586x.c index 459c2ff..426901c 100644 --- a/drivers/rtc/rtc-tps6586x.c +++ b/drivers/rtc/rtc-tps6586x.c @@ -273,6 +273,8 @@ static int tps6586x_rtc_probe(struct platform_device *pdev) return ret; } + device_init_wakeup(&pdev->dev, 1); + platform_set_drvdata(pdev, rtc); rtc->rtc = devm_rtc_device_register(&pdev->dev, dev_name(&pdev->dev), &tps6586x_rtc_ops, THIS_MODULE); @@ -292,7 +294,6 @@ static int tps6586x_rtc_probe(struct platform_device *pdev) goto fail_rtc_register; } disable_irq(rtc->irq); - device_set_wakeup_capable(&pdev->dev, 1); return 0; fail_rtc_register:
Use device_init_wakeup() instead of device_set_wakeup_capable() and move it before rtc dev registering. This fixes issue with alarmtimer that checks wakeup capability with device_may_wakeup() on device add. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/rtc/rtc-tps6586x.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)