From: Patrik Fimml <patrikf@chromium.org>
To: hadess@hadess.net
Cc: Dmitry Torokhov <dtor@google.com>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>,
Alan Stern <stern@rowland.harvard.edu>,
Patrik Fimml <patrikf@chromium.org>,
linux-pm@vger.kernel.org, Benson Leung <bleung@google.com>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: Power-managing devices that are not of interest at some point in time
Date: Mon, 28 Jul 2014 12:58:22 -0700 [thread overview]
Message-ID: <20140728195822.GA20708@google.com> (raw)
In-Reply-To: <00d187033b8082c2400a38175f7a4dd8@hadess.net>
(Note: Your email arrived here with lines wrapped in a hard-to-read way,
not sure where the problem lies.)
On Tue, Jul 22, 2014 at 01:23:14AM +0200, hadess@hadess.net wrote:
> On 2014-07-19 01:16, Dmitry Torokhov wrote:
> <snip>
> >I'd say no.
> >
> >Anyway, even though it is very tempting to declare inhibit a
> >"deeper" state of
> >runtime suspend maybe you are right and inhibit should really be
> >separate from
> >PM and drivers would have to sort out all the possible state
> >permutations.
> >
> >Considering input devices:
> >
> >input_open(): check if device is inhibited, if so do nothing.
> >Otherwise try
> >waking up itself and parent (via pm_runtime_get_sync() on itself),
> >this will
> >power up the device. Do additional configuration if needed.
> >
> >input_close(): check if device is inhibited, if not do
> >pm_runtime_put (_sync?
> >to make sure we power off properly and not leave device up and
> >running? or
> >should we power down manually not waiting for runtime PM)?
> >
> >inhibit(): check if device is opened, if opened do
> >pm_runtime_put_sync().
> >
> >uninhibit(): if device is opened do pm_runtime_get_sync(), let
> >runtime PM
> >bring up the device. Do additional config if needed -> very similar to
> >input_open(), different condition.
> >
> >runtime_suspend(): power down the device. If not inhibited enable
> >as wakeup
> >source.
> >
> >runtime_resume(): power up the device if device is opened and not
> >inhibited.
> >
> >system_suspend(): check if device is opened, not inhibited and not in
> >runtimesuspend already; power down.
> >
> >system_resume(): power up the device if it is opened and not
> >inhibited. I
> >guess it's OK to wake up device that shoudl be runtime-PM-idle
> >since it will
> >go to back sleep shortly.
> >
> >Ugh.. This is complicated...
>
> Seriously complicated. The compositor and/or X.org can handle most
> of that for
> input devices already. For the camera, you want the application to
> know that
> the device is present, but not usable, instead of making it vanish
> or rendering
> it unusable. And if you wanted to implement this in the kernel, even
> with the aid
> of a user-space daemon, you're still missing the most important
> part, the device
> tagging.
I agree that the behaviour for e.g. the camera is debatable. Our primary
concern is input devices for now, but we were trying to see whether such
a functionality might be desired for other device classes as well.
> Once you've tagged the devices which would need to be left alone
> when the lid is
> closed, or the laptop is in tablet mode, see if the problem can be
> solved within
> user-space alone. I'm fairly certain it wouldn't take too long to
> fix Xorg
> or a state-of-the-art compositor to behave properly.
This would not allow you to power down the touchscreen more than to a
"idle" state without further modifications to drivers.
We also want to make sure that the kernel ignores input from these
devices for S3 suspend, so that stray touch inputs do not abort a
suspend that is about to happen.
And also, I think Xorg is not necessarily the proper layer for this.
It's a bit theoretical, but: If there were other users of the input
device, they would also want to ignore the events.
> All I see right now is making it harder to write devices drivers
> with no real benefits.
I don't see this problem at all. Just like drivers don't have to
implement runtime PM, they wouldn't be required to implement inhibit()
and its counterpart. But if they do implement such functionality, we
give them a standard interface to expose it.
If we stick with the example of input devices, we can even have a simple
default implementation in the device class (skipping any generated
events) and bring the basic behaviour to unmodified drivers for free.
Even if you did not have the "inhibit" interface, if you wanted to power
down the touchscreen completely when it's not accessible, this would
require very similar driver modifications.
Regards,
Patrik
next prev parent reply other threads:[~2014-07-28 19:58 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-16 1:32 Power-managing devices that are not of interest at some point in time Patrik Fimml
2014-07-16 10:00 ` Bastien Nocera
2014-07-16 14:17 ` Alan Stern
2014-07-16 16:14 ` Dmitry Torokhov
2014-07-16 18:08 ` Alan Stern
2014-07-16 18:55 ` Kevin Cernekee
2014-07-16 21:36 ` Oliver Neukum
2014-07-16 17:12 ` Benson Leung
2014-07-16 23:11 ` Rafael J. Wysocki
2014-07-16 23:13 ` Bastien Nocera
2014-07-16 23:33 ` Rafael J. Wysocki
2014-07-16 23:23 ` Bastien Nocera
2014-07-16 23:31 ` Dmitry Torokhov
2014-07-17 14:39 ` Alan Stern
2014-07-17 16:59 ` Dmitry Torokhov
2014-07-18 0:43 ` Rafael J. Wysocki
2014-07-18 0:43 ` Dmitry Torokhov
2014-07-18 1:30 ` Rafael J. Wysocki
2014-07-18 1:35 ` Rafael J. Wysocki
2014-07-18 15:19 ` Alan Stern
2014-07-18 17:47 ` Patrik Fimml
2014-07-18 19:00 ` Alan Stern
2014-07-18 19:23 ` Patrik Fimml
2014-07-18 20:09 ` Alan Stern
2014-07-18 21:26 ` Dmitry Torokhov
2014-07-18 21:59 ` Rafael J. Wysocki
2014-07-18 21:45 ` Dmitry Torokhov
2014-07-18 22:19 ` Rafael J. Wysocki
2014-07-18 22:55 ` Rafael J. Wysocki
2014-07-18 23:16 ` Dmitry Torokhov
2014-07-18 23:47 ` Rafael J. Wysocki
2014-07-19 14:51 ` Alan Stern
2014-07-19 15:23 ` Benson Leung
2014-07-19 17:59 ` Alan Stern
2014-07-19 18:21 ` Dmitry Torokhov
2014-07-19 20:19 ` Rafael J. Wysocki
2014-07-21 23:23 ` hadess
2014-07-28 19:58 ` Patrik Fimml [this message]
2014-07-28 20:01 ` Patrik Fimml
2014-07-17 6:01 ` Oliver Neukum
2014-07-16 23:17 ` Patrik Fimml
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=20140728195822.GA20708@google.com \
--to=patrikf@chromium.org \
--cc=bleung@google.com \
--cc=dtor@google.com \
--cc=hadess@hadess.net \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=stern@rowland.harvard.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).