/* * bbb-gpio-keypad - simple navigation keypad for the BeagleBone Black * * Copyright (C) 2018 Antonio Ospite * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /dts-v1/; /plugin/; #include #include #include / { compatible = "ti,beaglebone", "ti,beaglebone-black"; // Identification. part-number = "bbb-gpio-keypad"; version = "00A0"; // Resources this cape uses, see also https://ao2.it/137 exclusive-use = "P8.07", "P8.08", "P8.09", "P8.10", "P8.26", "P9.15"; // Free up the pins from the pinmux helper fragment@0 { target = <&ocp>; __overlay__ { P8_07_pinmux { status = "disabled"; }; P8_08_pinmux { status = "disabled"; }; P8_09_pinmux { status = "disabled"; }; P8_10_pinmux { status = "disabled"; }; P8_26_pinmux { status = "disabled"; }; P9_15_pinmux { status = "disabled"; }; }; }; fragment@1 { target = <&am33xx_pinmux>; __overlay__ { keypad_pins: pinmux_gpio_pins { pinctrl-single,pins = < BONE_P8_07 (PIN_INPUT_PULLUP | MUX_MODE7) BONE_P8_08 (PIN_INPUT_PULLUP | MUX_MODE7) BONE_P8_09 (PIN_INPUT_PULLUP | MUX_MODE7) BONE_P8_10 (PIN_INPUT_PULLUP | MUX_MODE7) BONE_P8_26 (PIN_INPUT_PULLUP | MUX_MODE7) BONE_P9_15 (PIN_INPUT_PULLUP | MUX_MODE7) >; }; }; }; fragment@2 { target-path = "/"; __overlay__ { gpio_keys { compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&keypad_pins>; up { label = "GPIO Key UP"; linux,code = <103>; gpios = <&gpio2 2 GPIO_ACTIVE_LOW>; debounce_interval = <50>; }; left { label = "GPIO Key LEFT"; linux,code = <105>; gpios = <&gpio2 3 GPIO_ACTIVE_LOW>; debounce_interval = <50>; }; right { label = "GPIO Key RIGHT"; linux,code = <106>; gpios = <&gpio2 5 GPIO_ACTIVE_LOW>; debounce_interval = <50>; }; down { label = "GPIO Key DOWN"; linux,code = <108>; gpios = <&gpio2 4 GPIO_ACTIVE_LOW>; debounce_interval = <50>; }; enter { label = "GPIO Key ENTER"; linux,code = <28>; gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; debounce_interval = <50>; }; esc { label = "GPIO Key ESC"; linux,code = <1>; gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; debounce_interval = <50>; }; }; }; }; };