All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Wood <scottwood@freescale.com>
To: Kumar Gala <galak@kernel.crashing.org>
Cc: Wood Scott-B07421 <b07421@freescale.com>,
	linux-pm@vger.kernel.org,
	Wang Dongsheng <dongsheng.wds@gmail.com>,
	Wang Dongsheng <dongsheng.wang@freescale.com>,
	"linuxppc-dev@lists.ozlabs.org list"
	<linuxppc-dev@lists.ozlabs.org>
Subject: Re: [RFC PATCH] powerpc/fsl: add timer wakeup source
Date: Wed, 3 Oct 2012 17:20:07 -0500	[thread overview]
Message-ID: <1349302807.31013.20@snotra> (raw)
In-Reply-To: <6170650E-9D3C-4686-BF13-6C41DBFFB79D@kernel.crashing.org> (from galak@kernel.crashing.org on Wed Oct  3 08:35:58 2012)

On 10/03/2012 08:35:58 AM, Kumar Gala wrote:
>=20
> On Oct 3, 2012, at 5:42 AM, Wang Dongsheng wrote:
>=20
> > This is only for freescale powerpc platform. The driver provides a =20
> way
> > to wake up system. Proc =20
> interface(/proc/powerpc/wakeup_timer_seconds).
> >
> > eg: "echo 5 > /proc/powerpc/wakeup_timer_seconds", 5 seconds
> > after the system will be woken up. echo another time into proc =20
> interface
> > to update the time.
> >
> > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > ---
> > arch/powerpc/platforms/Kconfig            |   23 +++
> > arch/powerpc/platforms/Makefile           |    1 +
> > arch/powerpc/platforms/fsl_timer_wakeup.c |  217 =20
> +++++++++++++++++++++++++++++
> > 3 files changed, 241 insertions(+)
> > create mode 100644 arch/powerpc/platforms/fsl_timer_wakeup.c
>=20
> Adding the Linux PM list to see if there is some existing support for =20
> this on other arch's in kernel.
>=20
> I'm pretty sure /proc/ is NOT where we want this exposed.

Should probably go under the sysfs directory of the mpic device.  Or =20
better, make a generic interface for timer-based suspend wakeup (if =20
there isn't one already).  This current approach sits in an unpleasant =20
middle ground between generic and device-specific.

> > diff --git a/arch/powerpc/platforms/Kconfig =20
> b/arch/powerpc/platforms/Kconfig
> > index b190a6e..7b9232a 100644
> > --- a/arch/powerpc/platforms/Kconfig
> > +++ b/arch/powerpc/platforms/Kconfig
> > @@ -99,6 +99,29 @@ config MPIC_TIMER
> > 	  only tested on fsl chip, but it can potentially support
> > 	  other global timers complying to Open-PIC standard.
> >
> > +menuconfig FSL_WAKEUP_SOURCE
> > +	bool "Freescale wakeup source"
> > +	depends on FSL_SOC && SUSPEND
> > +	default n
> > +	help
> > +	  This option enables wakeup source for wake up system
> > +	  features. This is only for freescale powerpc platform.
> > +
> > +if FSL_WAKEUP_SOURCE
> > +
> > +config FSL_TIMER_WAKEUP
> > +	tristate "Freescale mpic global timer wakeup event"
> > +	default n
> > +	help
> > +	  This is only for freescale powerpc platform. The driver
> > +	  provides a way to wake up system.
> > +	  Proc interface(/proc/powerpc/wakeup_timer_seconds).
> > +	  eg: "echo 5 > /proc/powerpc/wakeup_timer_seconds",
> > +	  5 seconds after the system will be woken up. echo another
> > +	  time into proc interface to update the time.
> > +
> > +endif

Use depends rather than if/else.  Why do you need FSL_WAKEUP_SOURCE?

These names are overly broad -- this is only for FSL MPIC, not for =20
other FSL chips (e.g. mpc83xx has a different global timer =20
implementation, and there's FSL ARM chips, etc).

> > +static ssize_t timer_wakeup_write(struct file *file, const char =20
> __user *buf,
> > +		size_t count, loff_t *off)
> > +{
> > +	struct fsl_timer_wakeup *priv;
> > +	struct inode *inode =3D file->f_path.dentry->d_inode;
> > +	struct proc_dir_entry *dp;
> > +	struct timeval time;
> > +	char *kbuf;
> > +
> > +	dp =3D PDE(inode);
> > +	priv =3D dp->data;
> > +
> > +	kbuf =3D kzalloc(count + 1, GFP_KERNEL);
> > +	if (!kbuf)
> > +		return -ENOMEM;
> > +
> > +	if (copy_from_user(kbuf, buf, count)) {
> > +		kfree(kbuf);
> > +		return -EFAULT;
> > +	}
> > +
> > +	kbuf[count] =3D '\0';
> > +
> > +	if (kstrtol(kbuf, 0, &time.tv_sec)) {
> > +		kfree(kbuf);
> > +		return -EINVAL;
> > +	}
> > +
> > +	kfree(kbuf);
> > +
> > +	time.tv_usec =3D 0;
> > +
> > +	mutex_lock(&priv->mutex);
> > +
> > +	if (!time.tv_sec) {
> > +		if (priv->timer) {
> > +			mpic_free_timer(priv->timer);
> > +			priv->timer =3D NULL;
> > +		}
> > +		mutex_unlock(&priv->mutex);
> > +
> > +		return count;
> > +	}
> > +
> > +	if (priv->timer) {
> > +		mpic_free_timer(priv->timer);
> > +		priv->timer =3D NULL;
> > +	}
> > +
> > +	priv->timer =3D mpic_request_timer(timer_event_interrupt, priv, =20
> &time);

If the new time is zero, consider that a cancellation of the timer and =20
don't request a new one or return -EINVAL.

-Scott=

  reply	other threads:[~2012-10-03 22:20 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-03 10:42 [RFC PATCH] powerpc/fsl: add timer wakeup source Wang Dongsheng
2012-10-03 13:35 ` Kumar Gala
2012-10-03 22:20   ` Scott Wood [this message]
2012-10-08  7:13     ` Wang Dongsheng-B40534
2012-10-08 20:55       ` Scott Wood
2012-10-09 13:56         ` 答复: " Wang Dongsheng-B40534
2012-10-09 18:18           ` Scott Wood
2012-12-13 15:51 ` Tabi Timur-B04825

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=1349302807.31013.20@snotra \
    --to=scottwood@freescale.com \
    --cc=b07421@freescale.com \
    --cc=dongsheng.wang@freescale.com \
    --cc=dongsheng.wds@gmail.com \
    --cc=galak@kernel.crashing.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.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.