Thread (5 messages) 5 messages, 3 authors, 2007-10-20

Re: Power button policy and mechanism

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2007-10-19 15:05:09
Also in: lkml

Hi Richard,

On Friday 19 October 2007, Richard Purdie wrote:
On Tue, 2007-10-16 at 10:34 -0400, Dmitry Torokhov wrote:
quoted
On 10/16/07, Kristoffer Ericson [off-list ref] wrote:
quoted
This is mainly an embedded issue, but I feel it's quite important. 
It should apply to other devices also like for example Zaurus
branches (those with keyboard and designated power button).
There was a long discussion thread about this a while back. There were a
lot of differing views but in the end no patch to fix up power.c to do
anything was accepted. The Zaurus was the reason I raised the issue.

It seems power.c was recently removed as it was dead code.
That's because nothing in mainline was using it.
quoted
quoted
So in short:
1. Does mainline policy allow static power button events inside kernel (power button == suspend/resume)?
       Why/Why Not?
Could it be that you may want to prevent suspend from happening? Or
delay it until system completes some important operation? Do something
else, like cleanly disconnect your network connections? With actual
handling done in userspace it's all possible. With suspend done
directly in kernel it is much harder and couples input subsystem with
power management too tightly.

However if you are dead-set on doin it in kernel you coudl register an
input_handler in your platform PM code and it will attach to your
keyboard. Look for power.c module in older kernels for example.
The proposed changes to power.c were to hook it into things like APM as
a "user" event so the power button triggered a suspend event but
anything in userspace needing to know about (or veto) it could do so.
quoted
quoted
2. Seeing as my knowledge about this area isn't the best I would 
appreciate all opinions on the subject from the gurus.
Richard Purdie I think might have some pointers.
Currently I still patch this functionality into the Zaurus kernels
(basically by resurrecting power.c with the patches I used to apply to
it added in):

http://www.rpsys.net/openzaurus/patches/input_power-r9.patch

This works for 2.6.23 but doesn't seem to work in 2.6.23-git9. I've not
looked into why yet.

In the current climate, this will never make mainline kernels so I will
be considering other options such as adding support into something like
OHM. As yet, I've not found the time to do that and since the above
patch works and is relatively easy to maintain...
I think power.c as it was is not a good idea. Generic code does not know
the best way of shutting down/suspending a certain box. However having an
arch- (or even board-) specific version of power.c that pligs directl
and poperly into appropriate PM mechanism makes more sense. If certain
platforms need it I don't see a reason to prevent them from doing so.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help