From: petr.cvek@tul.cz (Petr Cvek)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2, RFC] RTC: PXA: Fix regression of interrupt before ioremap
Date: Thu, 05 Feb 2015 21:36:20 +0100 [thread overview]
Message-ID: <54D3D444.30008@tul.cz> (raw)
In-Reply-To: <87siemalt6.fsf@free.fr>
On 3.2.2015 19:31, Robert Jarzmik wrote:
> Petr Cvek <petr.cvek@tul.cz> writes:
>
>> On 2.2.2015 19:33, Robert Jarzmik wrote:
>>> Petr Cvek <petr.cvek@tul.cz> writes:
>> Actually only thing I want to know after reverting a44802f is how wakeup will
>> work. Because a44802f suggests rtc-pxa needs to have interrupt enabled for
>> waking up (and I cannot test it, because suspend subsystem on my machine needs
>> to be fixed first).
> Process X does :
> - open /dev/rtc0
> - call ioctl(fd, RTC_ALM_SET, &time_of_wakeup)
> - call ioctl(fd, RTC_AIE_ON, 0)
> - either read(fd, &data, sizeof(unsigned long))
> - or does write "mem" > /sys/power/state
>
> - ... platform sleeps ...
> - alarm time comes up, RTC IP raises the interrupt line
> - because in its pxa_rtc_probe(), the driver called device_init_wakeup(dev, 1),
> the register PWER was set to wakeup the platform if RTC interrupt is raised,
> the platform wakes up
>
I was thinking more about setting alarm, ending the OS (and all processes), powering down DRAM, SRAM etc. and then waiting for alarm (like x86 BIOS alarm) to restart.
>>> Moreover, if there are multiple rtc device, how on earth can it work, ie. how
>>> can an ioctl() be sent to a specific rtc device if there is no open() ???
>>
>> It confuses me too, so I tried to look it up and it seems rtc_dev_open() in
>> drivers/rtc/rtc-dev.c handles this by:
>>
>> err = ops->open ? ops->open(rtc->dev.parent) : 0;
>> if (err == 0) {
>> spin_lock_irq(&rtc->irq_lock);
>> rtc->irq_data = 0;
>> spin_unlock_irq(&rtc->irq_lock);
>>
>> return 0;
>> }
>>
>> , so without any .open() it just continues with success.
> Yes, true, yet how do you set on a specific RTC block the alarm if you have many
> of them on the system ?
I thought it should be possible with ioctl with appropriate /dev/rtcX opened or /sys/class/rtc/rtcX/wakealarm .
It seems driver still does not work properly (with reverted patch). For first run the /sys/class/rtc/rtcX/wakealarm file is not created, but it is created for next reload of rtc-pxa module. And it seems that it is caused by .can_wakeup somewhere.
P.S. Testing application from Documentation/rtc.txt seems to run OK.
next prev parent reply other threads:[~2015-02-05 20:36 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-29 11:51 [PATCH v2] RTC: PXA: Fix regression of interrupt before ioremap Petr Cvek
2015-01-29 19:42 ` Robert Jarzmik
2015-02-02 15:00 ` [PATCH v2, RFC] " Petr Cvek
2015-02-02 18:33 ` Robert Jarzmik
2015-02-03 13:42 ` Petr Cvek
2015-02-03 18:31 ` Robert Jarzmik
2015-02-05 20:36 ` Petr Cvek [this message]
2015-02-07 13:13 ` Robert Jarzmik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54D3D444.30008@tul.cz \
--to=petr.cvek@tul.cz \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.