[PATCH v2, RFC] RTC: PXA: Fix regression of interrupt before ioremap
Robert Jarzmik
robert.jarzmik at free.fr
Tue Feb 3 10:31:49 PST 2015
Petr Cvek <petr.cvek at tul.cz> writes:
> On 2.2.2015 19:33, Robert Jarzmik wrote:
>> Petr Cvek <petr.cvek at 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
>> 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 ?
Cheers.
--
Robert
More information about the linux-arm-kernel
mailing list