AnsweredAssumed Answered

Power key press sends up+down events simultaneously

Question asked by Gary Steimle on Apr 12, 2019
Latest reply on Jul 17, 2019 by Gary Steimle

Hello.

We have Android 7.1.2 (Nougat) running on a device with imx6. When we press the Power key on the device, we see the following getevent output that shows shows both DOWN and UP events being sent. When the Power key is released, no event is seen:

[     726.515409] /dev/input/event2: EV_KEY       KEY_POWER            DOWN
[     726.515409] /dev/input/event2: EV_SYN       SYN_REPORT           00000000
[     726.530056] /dev/input/event2: EV_KEY       KEY_POWER            UP
[     726.530056] /dev/input/event2: EV_SYN       SYN_REPORT           00000000

 

With the same hardware running Android JellyBean, we see the expected behavior, where the DOWN event is seen on the key press, and the UP event is seen on the key release. Can you help us to produce the expected behavior on Nougat?

Here is the related device tree entry:

    gpio_keys: gpio-keys {
        compatible = "gpio-keys";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio_keys>;
        
        volume-back {
            label = "Volume Back";
            interrupts-extended = <&gpio7 12 IRQ_TYPE_EDGE_FALLING>;
            wakeup-source;
            linux,code = <KEY_BACK>;
            debounce-interval = <5>;
        };

 

        power {
            label = "Power Button";
            interrupts-extended = <&gpio1 5 IRQ_TYPE_EDGE_FALLING>;
            wakeup-source;
            linux,code = <KEY_POWER>;
            debounce-interval = <5>;
        };
    };

 

Further details might be seen from the "getevent -li" output:

add device 1: /dev/input/event0
  bus:      0019
  vendor    0001
  product   0001
  version   0100
  name:     "gpio-keys-polled"
  location: "gpio-keys-polled/input0"
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): KEY_WAKEUP
  input props:
    <none>
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 2: /dev/input/event1
  bus:      0018
  vendor    0000
  product   0000
  version   0000
  name:     "EP0980M09"
  location: ""
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): BTN_TOUCH
    ABS (0003): ABS_X                 : value 298, min 0, max 479, fuzz 0, flat 0, resolution 0
                ABS_Y                 : value 185, min 0, max 271, fuzz 0, flat 0, resolution 0
                ABS_MT_SLOT           : value 0, min 0, max 4, fuzz 0, flat 0, resolution 0
                ABS_MT_POSITION_X     : value 0, min 0, max 479, fuzz 0, flat 0, resolution 0
                ABS_MT_POSITION_Y     : value 0, min 0, max 271, fuzz 0, flat 0, resolution 0
                ABS_MT_TRACKING_ID    : value 0, min 0, max 65535, fuzz 0, flat 0, resolution 0
  input props:
    INPUT_PROP_DIRECT
add device 3: /dev/input/event2
  bus:      0019
  vendor    0001
  product   0001
  version   0100
  name:     "gpio-keys"
  location: "gpio-keys/input0"
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): KEY_POWER             KEY_BACK
  input props:
    <none>
could not get driver version for /dev/input/mice, Not a typewriter

Outcomes