All of lore.kernel.org
 help / color / mirror / Atom feed
From: marek.vasut@gmail.com (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] PXA: Fix wakealarm capability for pxa-rtc
Date: Sun, 1 Aug 2010 02:53:28 +0200	[thread overview]
Message-ID: <201008010253.28319.marek.vasut@gmail.com> (raw)
In-Reply-To: <87iq3vyx7d.fsf@free.fr>

Dne Ne 1. srpna 2010 02:48:38 Robert Jarzmik napsal(a):
> Marek Vasut <marek.vasut@gmail.com> writes:
> > Dne So 31. ?ervence 2010 23:07:06 Robert Jarzmik napsal(a):
> >> Marek Vasut <marek.vasut@gmail.com> writes:
> >> > Dne So 31. ?ervence 2010 17:38:06 Robert Jarzmik napsal(a):
> >> >> Marek Vasut <marek.vasut@gmail.com> writes:
> >> >> > The wakealarm capability was incorrectly set after the RTC was
> >> >> > registered, which resulted into the sysfs node not being created.
> >> >> 
> >> >> On my platform, without this patch:
> >> >> > cat /sys/devices/platform/pxa-rtc/power/wakeup
> >> >> > enabled
> >> >> 
> >> >> The sysfs node is created. What's the issue you're having ?
> >> > 
> >> > It's not created for me without this patch (and if you read the code,
> >> > it is impossible to be created without this patch).
> 
> Are we talking about the same /sys/devices/platform/pxa-rtc/power/wakeup ?
> Aren't you looking for /sys/class/rtc/rtc0/power/wakeup ?

I'm looking for /sys/class/rtc/rtc0/wakealarm

> 
> Because the code you're showing seems to be related to the class sysfs
> entries, not the driver's unless I'm mistaken.
> 
> I'll join Alessandro to the discussion, he might have some insight for [1].
> 
> Cheers.
> 
> --
> Robert
> 
> >> I read the code, and I see:
> >> rtc_device_register()
> >> 
> >>   -> device_register()
> >>   
> >>     -> device_initialize()
> >>     
> >>       -> device_init_wakeup(dev, 0)
> >> 
> >> So with or without your patch, device_init_wakeup() is called. The
> >> difference is that with your patch, we end up with a disabled wakeup
> >> capability. I showed the code sequence, your turn to show your "if you
> >> read the code".
> > 
> > drivers/rtc/rtc-sysfs.c
> > 
> > 217 static inline int rtc_does_wakealarm(struct rtc_device *rtc)
> > 218 {
> > 219         if (!device_can_wakeup(rtc->dev.parent))
> > 220                 return 0;
> > 221         return rtc->ops->set_alarm != NULL;
> > 222 }
> > 223
> > 224
> > 225 void rtc_sysfs_add_device(struct rtc_device *rtc)
> > 226 {
> > 227         int err;
> > 228
> > 229         /* not all RTCs support both alarms and wakeup */
> > 230         if (!rtc_does_wakealarm(rtc))
> > 231                 return;
> > 232
> > 233         err = device_create_file(&rtc->dev, &dev_attr_wakealarm);
> > 234         if (err)
> > 235                 dev_err(rtc->dev.parent,
> > 236                         "failed to create alarm attribute, %d\n",
> > err); 237 }
> > 
> > For me, it leaves the function on rtc_does_wakealarm(); That's because
> > device_can_wakeup on line 219 returns 0;
> > 
> > include/linux/pm_wakeup.h
> > 45 static inline bool device_can_wakeup(struct device *dev)
> > 46 {
> > 47         return dev->power.can_wakeup;
> > 48 }
> > 
> > This dev->power.can_wakeup is set by:
> > 
> > include/linux/pm_wakeup.h
> > 35 static inline void device_init_wakeup(struct device *dev, bool val)
> > 36 {
> > 37         dev->power.can_wakeup = dev->power.should_wakeup = val;
> > 38 }
> > 
> > But, the rtc_sysfs_add_device is called by:
> > 
> > drivers/rtc/class.c
> > 114 struct rtc_device *rtc_device_register(const char *name, struct
> > device *dev, 115                                         const struct
> > rtc_class_ops *ops, 116                                         struct
> > module *owner) 117 {
> > 
> > So the dev->power.can_wakeup must be set before registering the device.
> > 
> >> Moreover, my platform without your patch prooves that the sysfs entry is
> >> created.
> > 
> > My platform (sharp akita) without this patch doesn't even show the
> > wakealarm sysfs node. So something is certainly wrong in this driver,
> > explain what it is please.
> > 
> >> So unless you prove me wrong, I will reject the patch.
> > 
> > Ok, then I'd like to see you come up with better patch that actually
> > fixes my platform.
> > 
> >> Cheers.
> > 
> > Cheers

  reply	other threads:[~2010-08-01  0:53 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-31  4:22 [PATCH] PXA: Fix wakealarm capability for pxa-rtc Marek Vasut
2010-07-31 15:38 ` Robert Jarzmik
2010-07-31 20:15   ` Marek Vasut
2010-07-31 21:07     ` Robert Jarzmik
2010-08-01  0:13       ` Marek Vasut
2010-08-01  0:48         ` Robert Jarzmik
2010-08-01  0:53           ` Marek Vasut [this message]
2010-08-01 11:15             ` Robert Jarzmik
2010-08-01 15:38               ` Marek Vasut
2010-08-01 19:32                 ` Robert Jarzmik
2010-08-03  0:03                 ` Alessandro Zummo
2010-08-03  3:10                   ` Marek Vasut
2010-08-06 19:59                     ` Alessandro Zummo
2010-08-06 21:39                       ` Marek Vasut
2010-08-07  9:43                       ` Robert Jarzmik
2010-08-18  4:08                         ` Eric Miao
2010-08-18  5:04                           ` Marek Vasut
2010-08-18  6:15                             ` Eric Miao
2010-08-01  8:42 ` Igor Grinberg

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=201008010253.28319.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --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.