Patchwork rtc: tps6586x: device wakeup flags correction

login
register
mail settings
Submitter Dmitry Osipenko
Date May 12, 2013, 2:25 p.m.
Message ID <1368368706-21261-1-git-send-email-digetx@gmail.com>
Download mbox | patch
Permalink /patch/243185/
State New
Headers show

Comments

Dmitry Osipenko - May 12, 2013, 2:25 p.m.
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(-)
Andrew Morton - May 22, 2013, 10:22 p.m.
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.)
Dmitry Osipenko - May 22, 2013, 11:30 p.m.
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.

Patch

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: