18c2ecf20Sopenharmony_ci* Broadcom Keypad Controller device tree bindings
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciBroadcom Keypad controller is used to interface a SoC with a matrix-type
48c2ecf20Sopenharmony_cikeypad device. The keypad controller supports multiple row and column lines.
58c2ecf20Sopenharmony_ciA key can be placed at each intersection of a unique row and a unique column.
68c2ecf20Sopenharmony_ciThe keypad controller can sense a key-press and key-release and report the
78c2ecf20Sopenharmony_cievent using a interrupt to the cpu.
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ciThis binding is based on the matrix-keymap binding with the following
108c2ecf20Sopenharmony_cichanges:
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cikeypad,num-rows and keypad,num-columns are required.
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciRequired SoC Specific Properties:
158c2ecf20Sopenharmony_ci- compatible: should be "brcm,bcm-keypad"
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci- reg: physical base address of the controller and length of memory mapped
188c2ecf20Sopenharmony_ci  region.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci- interrupts: The interrupt number to the cpu.
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ciBoard Specific Properties:
238c2ecf20Sopenharmony_ci- keypad,num-rows: Number of row lines connected to the keypad
248c2ecf20Sopenharmony_ci  controller.
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci- keypad,num-columns: Number of column lines connected to the
278c2ecf20Sopenharmony_ci  keypad controller.
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci- col-debounce-filter-period: The debounce period for the Column filter.
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_1_ms	=	0
328c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_2_ms	=	1
338c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_4_ms	=	2
348c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_8_ms	=	3
358c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_16_ms	=	4
368c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_32_ms	=	5
378c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_64_ms	=	6
388c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_128_ms	=	7
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci- status-debounce-filter-period: The debounce period for the Status filter.
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_1_ms	=	0
438c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_2_ms	=	1
448c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_4_ms	=	2
458c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_8_ms	=	3
468c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_16_ms	=	4
478c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_32_ms	=	5
488c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_64_ms	=	6
498c2ecf20Sopenharmony_ci	KEYPAD_DEBOUNCE_128_ms	=	7
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci- row-output-enabled: An optional property indicating whether the row or
528c2ecf20Sopenharmony_ci  column is being used as output. If specified the row is being used
538c2ecf20Sopenharmony_ci  as the output. Else defaults to column.
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci- pull-up-enabled: An optional property indicating the Keypad scan mode.
568c2ecf20Sopenharmony_ci  If specified implies the keypad scan pull-up has been enabled.
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci- autorepeat: Boolean, Enable auto repeat feature of Linux input
598c2ecf20Sopenharmony_ci	  subsystem (optional).
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci- linux,keymap: The keymap for keys as described in the binding document
628c2ecf20Sopenharmony_ci  devicetree/bindings/input/matrix-keymap.txt.
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ciExample:
658c2ecf20Sopenharmony_ci#include "dt-bindings/input/input.h"
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci/ {
688c2ecf20Sopenharmony_ci	keypad: keypad@180ac000 {
698c2ecf20Sopenharmony_ci		/* Required SoC specific properties */
708c2ecf20Sopenharmony_ci		compatible = "brcm,bcm-keypad";
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci		/* Required Board specific properties */
738c2ecf20Sopenharmony_ci		keypad,num-rows = <5>;
748c2ecf20Sopenharmony_ci		keypad,num-columns = <5>;
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci		linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_F) /* key_forward */
778c2ecf20Sopenharmony_ci		MATRIX_KEY(0x00, 0x03, KEY_HOME) /* key_home */
788c2ecf20Sopenharmony_ci		MATRIX_KEY(0x00, 0x04, KEY_M) /* key_message */
798c2ecf20Sopenharmony_ci		MATRIX_KEY(0x01, 0x00, KEY_A) /* key_contacts */
808c2ecf20Sopenharmony_ci		MATRIX_KEY(0x01, 0x01, KEY_1) /* key_1 */
818c2ecf20Sopenharmony_ci		MATRIX_KEY(0x01, 0x02, KEY_2) /* key_2 */
828c2ecf20Sopenharmony_ci		MATRIX_KEY(0x01, 0x03, KEY_3) /* key_3 */
838c2ecf20Sopenharmony_ci		MATRIX_KEY(0x01, 0x04, KEY_S) /* key_speaker */
848c2ecf20Sopenharmony_ci		MATRIX_KEY(0x02, 0x00, KEY_P) /* key_phone */
858c2ecf20Sopenharmony_ci		MATRIX_KEY(0x02, 0x01, KEY_4) /* key_4 */
868c2ecf20Sopenharmony_ci		MATRIX_KEY(0x02, 0x02, KEY_5) /* key_5 */
878c2ecf20Sopenharmony_ci		MATRIX_KEY(0x02, 0x03, KEY_6) /* key_6 */
888c2ecf20Sopenharmony_ci		MATRIX_KEY(0x02, 0x04, KEY_VOLUMEUP) /* key_vol_up */
898c2ecf20Sopenharmony_ci		MATRIX_KEY(0x03, 0x00, KEY_C) /* key_call_log */
908c2ecf20Sopenharmony_ci		MATRIX_KEY(0x03, 0x01, KEY_7) /* key_7 */
918c2ecf20Sopenharmony_ci		MATRIX_KEY(0x03, 0x02, KEY_8) /* key_8 */
928c2ecf20Sopenharmony_ci		MATRIX_KEY(0x03, 0x03, KEY_9) /* key_9 */
938c2ecf20Sopenharmony_ci		MATRIX_KEY(0x03, 0x04, KEY_VOLUMEDOWN) /* key_vol_down */
948c2ecf20Sopenharmony_ci		MATRIX_KEY(0x04, 0x00, KEY_H) /* key_headset */
958c2ecf20Sopenharmony_ci		MATRIX_KEY(0x04, 0x01, KEY_KPASTERISK) /* key_* */
968c2ecf20Sopenharmony_ci		MATRIX_KEY(0x04, 0x02, KEY_0) /* key_0 */
978c2ecf20Sopenharmony_ci		MATRIX_KEY(0x04, 0x03, KEY_GRAVE) /* key_# */
988c2ecf20Sopenharmony_ci		MATRIX_KEY(0x04, 0x04, KEY_MUTE) /* key_mute */
998c2ecf20Sopenharmony_ci		>;
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci		/* Optional board specific properties */
1028c2ecf20Sopenharmony_ci		col-debounce-filter-period = <5>;
1038c2ecf20Sopenharmony_ci		row-output-enabled;
1048c2ecf20Sopenharmony_ci		pull-up-enabled;
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci	};
1078c2ecf20Sopenharmony_ci};
108