Skip to content

Commit

Permalink
add gpio-key overlay (raspberrypi#2329)
Browse files Browse the repository at this point in the history
An overlay that allows a Linux key to be bound to a GPIO.
  • Loading branch information
shawaj authored and Tiejun Chen committed Feb 14, 2018
1 parent 4cadd12 commit faa2bf3
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
1 change: 1 addition & 0 deletions arch/arm/boot/dts/overlays/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
googlevoicehat-soundcard.dtbo \
gpio-ir.dtbo \
gpio-ir-tx.dtbo \
gpio-key.dtbo \
gpio-poweroff.dtbo \
gpio-shutdown.dtbo \
hifiberry-amp.dtbo \
Expand Down
21 changes: 21 additions & 0 deletions arch/arm/boot/dts/overlays/README
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,27 @@ Params: gpio_pin Output GPIO (default 18)
Default is "0" (active-high).


Name: gpio-key
Info: This is a generic overlay for activating GPIO keypresses using
the gpio-keys library and this dtoverlay. Multiple keys can be
set up using multiple calls to the overlay for configuring
additional buttons or joysticks. You can see available keycodes
at https://github.com/torvalds/linux/blob/v4.12/include/uapi/
linux/input-event-codes.h#L64
Load: dtoverlay=gpio-key,<param>=<val>
Params: gpio GPIO pin to trigger on (default 3)
active_low When this is 1 (active low), a falling
edge generates a key down event and a
rising edge generates a key up event.
When this is 0 (active high), this is
reversed. The default is 1 (active low)
gpio_pull Desired pull-up/down state (off, down, up)
Default is "up". Note that the default pin
(GPIO3) has an external pullup
label Set a label for the key
keycode Set the key code for the button


Name: gpio-poweroff
Info: Drives a GPIO high or low on poweroff (including halt). Enabling this
overlay will prevent the ability to boot by driving GPIO3 low.
Expand Down
48 changes: 48 additions & 0 deletions arch/arm/boot/dts/overlays/gpio-key-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Definitions for gpio-key module
/dts-v1/;
/plugin/;

/ {
compatible = "brcm,bcm2708";

fragment@0 {
// Configure the gpio pin controller
target = <&gpio>;
__overlay__ {
pin_state: button_pins@0 {
brcm,pins = <3>; // gpio number
brcm,function = <0>; // 0 = input, 1 = output
brcm,pull = <2>; // 0 = none, 1 = pull down, 2 = pull up
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
button: button@0 {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&pin_state>;
status = "okay";

key: key {
linux,code = <116>;
gpios = <&gpio 3 1>;
label = "KEY_POWER";
};
};
};
};

__overrides__ {
gpio = <&key>,"gpios:4",
<&button>,"reg:0",
<&pin_state>,"brcm,pins:0",
<&pin_state>,"reg:0";
label = <&key>,"label";
keycode = <&key>,"linux,code:0";
gpio_pull = <&pin_state>,"brcm,pull:0";
active_low = <&key>,"gpios:8";
};

};

0 comments on commit faa2bf3

Please sign in to comment.