1 * Broadcom Keypad Controller device tree bindi 1 * Broadcom Keypad Controller device tree bindings 2 2 3 Broadcom Keypad controller is used to interfac 3 Broadcom Keypad controller is used to interface a SoC with a matrix-type 4 keypad device. The keypad controller supports 4 keypad device. The keypad controller supports multiple row and column lines. 5 A key can be placed at each intersection of a 5 A key can be placed at each intersection of a unique row and a unique column. 6 The keypad controller can sense a key-press an 6 The keypad controller can sense a key-press and key-release and report the 7 event using a interrupt to the cpu. 7 event using a interrupt to the cpu. 8 8 9 This binding is based on the matrix-keymap bin 9 This binding is based on the matrix-keymap binding with the following 10 changes: 10 changes: 11 11 12 keypad,num-rows and keypad,num-columns are req 12 keypad,num-rows and keypad,num-columns are required. 13 13 14 Required SoC Specific Properties: 14 Required SoC Specific Properties: 15 - compatible: should be "brcm,bcm-keypad" 15 - compatible: should be "brcm,bcm-keypad" 16 16 17 - reg: physical base address of the controller 17 - reg: physical base address of the controller and length of memory mapped 18 region. 18 region. 19 19 20 - interrupts: The interrupt number to the cpu. 20 - interrupts: The interrupt number to the cpu. 21 21 22 Board Specific Properties: 22 Board Specific Properties: 23 - keypad,num-rows: Number of row lines connect 23 - keypad,num-rows: Number of row lines connected to the keypad 24 controller. 24 controller. 25 25 26 - keypad,num-columns: Number of column lines c 26 - keypad,num-columns: Number of column lines connected to the 27 keypad controller. 27 keypad controller. 28 28 29 - col-debounce-filter-period: The debounce per 29 - col-debounce-filter-period: The debounce period for the Column filter. 30 30 31 KEYPAD_DEBOUNCE_1_ms = 0 31 KEYPAD_DEBOUNCE_1_ms = 0 32 KEYPAD_DEBOUNCE_2_ms = 1 32 KEYPAD_DEBOUNCE_2_ms = 1 33 KEYPAD_DEBOUNCE_4_ms = 2 33 KEYPAD_DEBOUNCE_4_ms = 2 34 KEYPAD_DEBOUNCE_8_ms = 3 34 KEYPAD_DEBOUNCE_8_ms = 3 35 KEYPAD_DEBOUNCE_16_ms = 4 35 KEYPAD_DEBOUNCE_16_ms = 4 36 KEYPAD_DEBOUNCE_32_ms = 5 36 KEYPAD_DEBOUNCE_32_ms = 5 37 KEYPAD_DEBOUNCE_64_ms = 6 37 KEYPAD_DEBOUNCE_64_ms = 6 38 KEYPAD_DEBOUNCE_128_ms = 7 38 KEYPAD_DEBOUNCE_128_ms = 7 39 39 40 - status-debounce-filter-period: The debounce 40 - status-debounce-filter-period: The debounce period for the Status filter. 41 41 42 KEYPAD_DEBOUNCE_1_ms = 0 42 KEYPAD_DEBOUNCE_1_ms = 0 43 KEYPAD_DEBOUNCE_2_ms = 1 43 KEYPAD_DEBOUNCE_2_ms = 1 44 KEYPAD_DEBOUNCE_4_ms = 2 44 KEYPAD_DEBOUNCE_4_ms = 2 45 KEYPAD_DEBOUNCE_8_ms = 3 45 KEYPAD_DEBOUNCE_8_ms = 3 46 KEYPAD_DEBOUNCE_16_ms = 4 46 KEYPAD_DEBOUNCE_16_ms = 4 47 KEYPAD_DEBOUNCE_32_ms = 5 47 KEYPAD_DEBOUNCE_32_ms = 5 48 KEYPAD_DEBOUNCE_64_ms = 6 48 KEYPAD_DEBOUNCE_64_ms = 6 49 KEYPAD_DEBOUNCE_128_ms = 7 49 KEYPAD_DEBOUNCE_128_ms = 7 50 50 51 - row-output-enabled: An optional property ind 51 - row-output-enabled: An optional property indicating whether the row or 52 column is being used as output. If specified 52 column is being used as output. If specified the row is being used 53 as the output. Else defaults to column. 53 as the output. Else defaults to column. 54 54 55 - pull-up-enabled: An optional property indica 55 - pull-up-enabled: An optional property indicating the Keypad scan mode. 56 If specified implies the keypad scan pull-up 56 If specified implies the keypad scan pull-up has been enabled. 57 57 58 - autorepeat: Boolean, Enable auto repeat feat 58 - autorepeat: Boolean, Enable auto repeat feature of Linux input 59 subsystem (optional). 59 subsystem (optional). 60 60 61 - linux,keymap: The keymap for keys as describ 61 - linux,keymap: The keymap for keys as described in the binding document 62 devicetree/bindings/input/matrix-keymap.txt. 62 devicetree/bindings/input/matrix-keymap.txt. 63 63 64 Example: 64 Example: 65 #include "dt-bindings/input/input.h" 65 #include "dt-bindings/input/input.h" 66 66 67 / { 67 / { 68 keypad: keypad@180ac000 { 68 keypad: keypad@180ac000 { 69 /* Required SoC specific prope 69 /* Required SoC specific properties */ 70 compatible = "brcm,bcm-keypad" 70 compatible = "brcm,bcm-keypad"; 71 71 72 /* Required Board specific pro 72 /* Required Board specific properties */ 73 keypad,num-rows = <5>; 73 keypad,num-rows = <5>; 74 keypad,num-columns = <5>; 74 keypad,num-columns = <5>; 75 75 76 linux,keymap = <MATRIX_KEY(0x0 76 linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_F) /* key_forward */ 77 MATRIX_KEY(0x00, 0x03, KEY_HOM 77 MATRIX_KEY(0x00, 0x03, KEY_HOME) /* key_home */ 78 MATRIX_KEY(0x00, 0x04, KEY_M) 78 MATRIX_KEY(0x00, 0x04, KEY_M) /* key_message */ 79 MATRIX_KEY(0x01, 0x00, KEY_A) 79 MATRIX_KEY(0x01, 0x00, KEY_A) /* key_contacts */ 80 MATRIX_KEY(0x01, 0x01, KEY_1) 80 MATRIX_KEY(0x01, 0x01, KEY_1) /* key_1 */ 81 MATRIX_KEY(0x01, 0x02, KEY_2) 81 MATRIX_KEY(0x01, 0x02, KEY_2) /* key_2 */ 82 MATRIX_KEY(0x01, 0x03, KEY_3) 82 MATRIX_KEY(0x01, 0x03, KEY_3) /* key_3 */ 83 MATRIX_KEY(0x01, 0x04, KEY_S) 83 MATRIX_KEY(0x01, 0x04, KEY_S) /* key_speaker */ 84 MATRIX_KEY(0x02, 0x00, KEY_P) 84 MATRIX_KEY(0x02, 0x00, KEY_P) /* key_phone */ 85 MATRIX_KEY(0x02, 0x01, KEY_4) 85 MATRIX_KEY(0x02, 0x01, KEY_4) /* key_4 */ 86 MATRIX_KEY(0x02, 0x02, KEY_5) 86 MATRIX_KEY(0x02, 0x02, KEY_5) /* key_5 */ 87 MATRIX_KEY(0x02, 0x03, KEY_6) 87 MATRIX_KEY(0x02, 0x03, KEY_6) /* key_6 */ 88 MATRIX_KEY(0x02, 0x04, KEY_VOL 88 MATRIX_KEY(0x02, 0x04, KEY_VOLUMEUP) /* key_vol_up */ 89 MATRIX_KEY(0x03, 0x00, KEY_C) 89 MATRIX_KEY(0x03, 0x00, KEY_C) /* key_call_log */ 90 MATRIX_KEY(0x03, 0x01, KEY_7) 90 MATRIX_KEY(0x03, 0x01, KEY_7) /* key_7 */ 91 MATRIX_KEY(0x03, 0x02, KEY_8) 91 MATRIX_KEY(0x03, 0x02, KEY_8) /* key_8 */ 92 MATRIX_KEY(0x03, 0x03, KEY_9) 92 MATRIX_KEY(0x03, 0x03, KEY_9) /* key_9 */ 93 MATRIX_KEY(0x03, 0x04, KEY_VOL 93 MATRIX_KEY(0x03, 0x04, KEY_VOLUMEDOWN) /* key_vol_down */ 94 MATRIX_KEY(0x04, 0x00, KEY_H) 94 MATRIX_KEY(0x04, 0x00, KEY_H) /* key_headset */ 95 MATRIX_KEY(0x04, 0x01, KEY_KPA 95 MATRIX_KEY(0x04, 0x01, KEY_KPASTERISK) /* key_* */ 96 MATRIX_KEY(0x04, 0x02, KEY_0) 96 MATRIX_KEY(0x04, 0x02, KEY_0) /* key_0 */ 97 MATRIX_KEY(0x04, 0x03, KEY_GRA 97 MATRIX_KEY(0x04, 0x03, KEY_GRAVE) /* key_# */ 98 MATRIX_KEY(0x04, 0x04, KEY_MUT 98 MATRIX_KEY(0x04, 0x04, KEY_MUTE) /* key_mute */ 99 >; 99 >; 100 100 101 /* Optional board specific pro 101 /* Optional board specific properties */ 102 col-debounce-filter-period = < 102 col-debounce-filter-period = <5>; 103 row-output-enabled; 103 row-output-enabled; 104 pull-up-enabled; 104 pull-up-enabled; 105 105 106 }; 106 }; 107 }; 107 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.