[Discussion] how to implement external power down for ARM
Shannon Zhao
zhaoshenglong at huawei.com
Tue May 5 23:56:58 PDT 2015
On 2015/5/5 19:13, Shannon Zhao wrote:
>
>
> On 2015/5/5 18:55, Arnd Bergmann wrote:
>> On Tuesday 05 May 2015 12:51:57 Christoffer Dall wrote:
>>> On Tue, May 5, 2015 at 11:53 AM, Arnd Bergmann <arnd at arndb.de> wrote:
>>>> On Tuesday 05 May 2015 12:27:54 Joel Stanley wrote:
>>>>
>>> Do ARM distributions (Fedora, Ubuntu, Debian, ...) support the
>>> necessary userspace handling so that things work with the input
>>> subsystem?
>>
>> I think the latest releases all use systemd, so it should work in theory,
>> but I have not tried it, and I don't know if they have something else
>> on older versions.
>>
>
> Thanks, will try to use gpio-keys and check whether systemd works.
>
I've added a PL061 GPIO controller and gpio-keys node in QEMU like
following format:
pl061 at 9030000 {
phandle = <0x8002>;
clock-names = "apb_pclk";
clocks = <0x8000>;
interrupts = <0x0 0x7 0x4>;
gpio-controller;
#gpio-cells = <0x2>;
compatible = "arm,pl061";
reg = <0x0 0x9030000 0x0 0x1000>;
};
gpio-keys {
autorepeat;
#address-cells = <0x1>;
#size-cells = <0x0>;
compatible = "gpio-keys";
poweroff {
gpios = <0x8002 0x3 0x0>;
linux,code = <0x74>;
label = "GPIO Key Poweroff";
};
};
Configure kernel to select GPIO Buttons and Polled GPIO buttons. Use a
Redhat filesystem "Red Hat Enterprise Linux Server for ARM Development
Preview release 1.5" which has systemd and systemd-logind. Start VM and
when it starts well type "system_powerdown" on QEMU monitor, the guest
goes to poweroff. So this way works.
Note: we must check the /lib/udev/rules.d/70-power-switch.rules in the
fs and add one following line in it if it doesn't exist.
SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="platform",
ATTRS{keys}=="116", TAG+="power-switch"
Then when execute journalctl -u systemd-logind in guest, we can see
something like below:
Jan 01 00:01:02 localhost systemd[1]: Starting Login Service...
Jan 01 00:01:07 localhost systemd[1]: Started Login Service.
Jan 01 00:01:07 localhost systemd-logind[927]: Watching system buttons
on /dev/input/event0 (gpio-keys)
Jan 01 00:01:07 localhost systemd-logind[927]: New seat seat0.
Jan 01 00:01:25 localhost systemd-logind[927]: New session c1 of user root.
Visit https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1347776 for
details.
--
Shannon
More information about the linux-arm-kernel
mailing list