Device-Tree bindings for input/gpio_keys.c keyboard driver Required properties: - compatible = "gpio-keys"; Optional properties: - input-name: input name of the device - autorepeat: Boolean, Enable auto repeat feature of Linux input subsystem. - pinctrl-names : This should be defined if a target uses pinctrl framework. See "pinctrl" in Documentation/devicetree/bindings/pinctrl/msm-pinctrl.txt. It should specify the names of the configs that pinctrl can install in drive Following are the pinctrl configs that can be installed: "gpio_ts_active" : Active configuration of pins, this should specify active config defined in pin groups of interrupt and reset gpio. "gpio_ts_suspend" : Disabled configuration of pins, this should specify sleep config defined in pin groups of interrupt and reset gpio. - name : input device name. - use-syscore : use syscore functionality for driver. Each button (key) is represented as a sub-node of "gpio-keys": Subnode properties: - gpios: OF device-tree gpio specification. - label: Descriptive name of the key. - linux,code: Keycode to emit. Optional subnode-properties: - linux,input-type: Specify event type this button/key generates. If not specified defaults to <1> == EV_KEY. - debounce-interval: Debouncing interval time in milliseconds. If not specified defaults to 5. - gpio-key,wakeup: Boolean, button can wake-up the system. Example nodes: gpio_keys { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; autorepeat; input-name = "gpio-keys"; pinctrl-names = "tlmm_gpio_key_active","tlmm_gpio_key_suspend"; pinctrl-0 = <&gpio_key_active>; pinctrl-1 = <&gpio_key_suspend>; use-syscore; button@21 { label = "GPIO Key UP"; linux,code = <103>; gpios = <&gpio1 0 1>; };