rtc: tps6586x: device wakeup flags correction

Submitted by Dmitry Osipenko on May 12, 2013, 2:25 p.m.

Details

Message ID 1368368706-21261-1-git-send-email-digetx@gmail.com
State Superseded
Headers show

Commit Message

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(-)

Comments

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 hide | download patch | download mbox

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: