From: MyungJoo Ham <myungjoo.ham@samsung.com>
To: Rajagopal Venkat <rajagopal.venkat@linaro.org>,
"Rafael J. Wysocki" <rjw@sisk.pl>
Cc: "mturquette@linaro.org" <mturquette@linaro.org>,
박경민 <kyungmin.park@samsung.com>,
"patches@linaro.org" <patches@linaro.org>,
"linaro-dev@lists.linaro.org" <linaro-dev@lists.linaro.org>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: Re: [PATCH v4 2/3] devfreq: Add suspend and resume apis
Date: Mon, 08 Oct 2012 10:48:27 +0000 (GMT) [thread overview]
Message-ID: <5414519.716731349693303781.JavaMail.weblogic@epml02> (raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=euc-kr, Size: 6064 bytes --]
> On 8 October 2012 03:31, Rafael J. Wysocki <rjw@sisk.pl> wrote:
> > On Thursday 04 of October 2012 14:58:33 Rajagopal Venkat wrote:
> >> Add devfreq suspend/resume apis for devfreq users. This patch
> >> supports suspend and resume of devfreq load monitoring, required
> >> for devices which can idle.
> >>
> >> Signed-off-by: Rajagopal Venkat <rajagopal.venkat@linaro.org>
> >> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
> >
> > Well, I wonder if this may be tied in to the runtime PM framework, so that,
> > for example, pm_runtime_suspend() will automatically suspend devfreq on
> > success (and the runtime resume of the device will resume devfreq)?
>
> That's a good idea. If you agree, we can handle this as separate patch on
> top this patchset.
I guess implementing the idea may be not so obvious; thus, seperating
the patchset would be appropriate.
When we implement the idea, we may need to implement at the
pm_runtime core. Because devfreq->dev is a child of the target dev, not
a parent, runtime-pm event of the target dev does not automatically
invoke a cascaded action on the devfreq->dev.
Maybe either
1) capability to allow a child to monitor the power state of a parent
(I remember Inki Dae once suggested to add notifiers at runtime-pm, but
it seems to be not merged)
or
2) letting runtime-pm be aware of devfreq
(doesn't feel alright with this??)
is required?
>
> >
> > Rafael
> >
> >
> >> ---
> >> drivers/devfreq/devfreq.c | 28 ++++++++++++++++++++++++++++
> >> drivers/devfreq/governor.h | 2 ++
> >> drivers/devfreq/governor_simpleondemand.c | 9 +++++++++
> >> include/linux/devfreq.h | 12 ++++++++++++
> >> 4 files changed, 51 insertions(+)
> >>
> >> diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
> >> index 41a4099..63e075e 100644
> >> --- a/drivers/devfreq/devfreq.c
> >> +++ b/drivers/devfreq/devfreq.c
> >> @@ -428,6 +428,34 @@ int devfreq_remove_device(struct devfreq *devfreq)
> >> }
> >> EXPORT_SYMBOL(devfreq_remove_device);
> >>
> >> +/**
> >> + * devfreq_suspend_device() - Suspend devfreq of a device.
> >> + * @devfreq the devfreq instance to be suspended
> >> + */
> >> +int devfreq_suspend_device(struct devfreq *devfreq)
> >> +{
> >> + if (!devfreq)
> >> + return -EINVAL;
> >> +
> >> + return devfreq->governor->event_handler(devfreq,
> >> + DEVFREQ_GOV_SUSPEND, NULL);
> >> +}
> >> +EXPORT_SYMBOL(devfreq_suspend_device);
> >> +
> >> +/**
> >> + * devfreq_resume_device() - Resume devfreq of a device.
> >> + * @devfreq the devfreq instance to be resumed
> >> + */
> >> +int devfreq_resume_device(struct devfreq *devfreq)
> >> +{
> >> + if (!devfreq)
> >> + return -EINVAL;
> >> +
> >> + return devfreq->governor->event_handler(devfreq,
> >> + DEVFREQ_GOV_RESUME, NULL);
> >> +}
> >> +EXPORT_SYMBOL(devfreq_resume_device);
> >> +
> >> static ssize_t show_governor(struct device *dev,
> >> struct device_attribute *attr, char *buf)
> >> {
> >> diff --git a/drivers/devfreq/governor.h b/drivers/devfreq/governor.h
> >> index bb3aff3..26432ac 100644
> >> --- a/drivers/devfreq/governor.h
> >> +++ b/drivers/devfreq/governor.h
> >> @@ -22,6 +22,8 @@
> >> #define DEVFREQ_GOV_START 0x1
> >> #define DEVFREQ_GOV_STOP 0x2
> >> #define DEVFREQ_GOV_INTERVAL 0x3
> >> +#define DEVFREQ_GOV_SUSPEND 0x4
> >> +#define DEVFREQ_GOV_RESUME 0x5
> >>
> >> /* Caution: devfreq->lock must be locked before calling update_devfreq */
> >> extern int update_devfreq(struct devfreq *devfreq);
> >> diff --git a/drivers/devfreq/governor_simpleondemand.c b/drivers/devfreq/governor_simpleondemand.c
> >> index cf94218..a8ba78c 100644
> >> --- a/drivers/devfreq/governor_simpleondemand.c
> >> +++ b/drivers/devfreq/governor_simpleondemand.c
> >> @@ -104,6 +104,15 @@ int devfreq_simple_ondemand_handler(struct devfreq *devfreq,
> >> case DEVFREQ_GOV_INTERVAL:
> >> devfreq_interval_update(devfreq, (unsigned int *)data);
> >> break;
> >> +
> >> + case DEVFREQ_GOV_SUSPEND:
> >> + devfreq_monitor_suspend(devfreq);
> >> + break;
> >> +
> >> + case DEVFREQ_GOV_RESUME:
> >> + devfreq_monitor_resume(devfreq);
> >> + break;
> >> +
> >> default:
> >> break;
> >> }
> >> diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
> >> index 9cdffde..ee243a3 100644
> >> --- a/include/linux/devfreq.h
> >> +++ b/include/linux/devfreq.h
> >> @@ -158,6 +158,8 @@ extern struct devfreq *devfreq_add_device(struct device *dev,
> >> const struct devfreq_governor *governor,
> >> void *data);
> >> extern int devfreq_remove_device(struct devfreq *devfreq);
> >> +extern int devfreq_suspend_device(struct devfreq *devfreq);
> >> +extern int devfreq_resume_device(struct devfreq *devfreq);
> >>
> >> /* Helper functions for devfreq user device driver with OPP. */
> >> extern struct opp *devfreq_recommended_opp(struct device *dev,
> >> @@ -211,6 +213,16 @@ static int devfreq_remove_device(struct devfreq *devfreq)
> >> return 0;
> >> }
> >>
> >> +static int devfreq_suspend_device(struct devfreq *devfreq)
> >> +{
> >> + return 0;
> >> +}
> >> +
> >> +static int devfreq_resume_device(struct devfreq *devfreq)
> >> +{
> >> + return 0;
> >> +}
> >> +
> >> static struct opp *devfreq_recommended_opp(struct device *dev,
> >> unsigned long *freq, u32 flags)
> >> {
> >>
> > --
> > I speak only for myself.
> > Rafael J. Wysocki, Intel Open Source Technology Center.
>
>
>
> --
> Regards,
> Rajagopal
>
>
>
>
>
>
>
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
next reply other threads:[~2012-10-08 10:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-08 10:48 MyungJoo Ham [this message]
2012-10-15 20:43 ` [PATCH v4 2/3] devfreq: Add suspend and resume apis Rafael J. Wysocki
-- strict thread matches above, loose matches on Subject: below --
2012-10-16 6:40 MyungJoo Ham
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=5414519.716731349693303781.JavaMail.weblogic@epml02 \
--to=myungjoo.ham@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=linaro-dev@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=patches@linaro.org \
--cc=rajagopal.venkat@linaro.org \
--cc=rjw@sisk.pl \
/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.