162306a36Sopenharmony_ci* Broadcom Keypad Controller device tree bindings
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciBroadcom Keypad controller is used to interface a SoC with a matrix-type
462306a36Sopenharmony_cikeypad device. The keypad controller supports multiple row and column lines.
562306a36Sopenharmony_ciA key can be placed at each intersection of a unique row and a unique column.
662306a36Sopenharmony_ciThe keypad controller can sense a key-press and key-release and report the
762306a36Sopenharmony_cievent using a interrupt to the cpu.
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciThis binding is based on the matrix-keymap binding with the following
1062306a36Sopenharmony_cichanges:
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cikeypad,num-rows and keypad,num-columns are required.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciRequired SoC Specific Properties:
1562306a36Sopenharmony_ci- compatible: should be "brcm,bcm-keypad"
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci- reg: physical base address of the controller and length of memory mapped
1862306a36Sopenharmony_ci  region.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci- interrupts: The interrupt number to the cpu.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciBoard Specific Properties:
2362306a36Sopenharmony_ci- keypad,num-rows: Number of row lines connected to the keypad
2462306a36Sopenharmony_ci  controller.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci- keypad,num-columns: Number of column lines connected to the
2762306a36Sopenharmony_ci  keypad controller.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci- col-debounce-filter-period: The debounce period for the Column filter.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_1_ms	=	0
3262306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_2_ms	=	1
3362306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_4_ms	=	2
3462306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_8_ms	=	3
3562306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_16_ms	=	4
3662306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_32_ms	=	5
3762306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_64_ms	=	6
3862306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_128_ms	=	7
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci- status-debounce-filter-period: The debounce period for the Status filter.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_1_ms	=	0
4362306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_2_ms	=	1
4462306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_4_ms	=	2
4562306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_8_ms	=	3
4662306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_16_ms	=	4
4762306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_32_ms	=	5
4862306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_64_ms	=	6
4962306a36Sopenharmony_ci	KEYPAD_DEBOUNCE_128_ms	=	7
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci- row-output-enabled: An optional property indicating whether the row or
5262306a36Sopenharmony_ci  column is being used as output. If specified the row is being used
5362306a36Sopenharmony_ci  as the output. Else defaults to column.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci- pull-up-enabled: An optional property indicating the Keypad scan mode.
5662306a36Sopenharmony_ci  If specified implies the keypad scan pull-up has been enabled.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci- autorepeat: Boolean, Enable auto repeat feature of Linux input
5962306a36Sopenharmony_ci	  subsystem (optional).
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci- linux,keymap: The keymap for keys as described in the binding document
6262306a36Sopenharmony_ci  devicetree/bindings/input/matrix-keymap.txt.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciExample:
6562306a36Sopenharmony_ci#include "dt-bindings/input/input.h"
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci/ {
6862306a36Sopenharmony_ci	keypad: keypad@180ac000 {
6962306a36Sopenharmony_ci		/* Required SoC specific properties */
7062306a36Sopenharmony_ci		compatible = "brcm,bcm-keypad";
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci		/* Required Board specific properties */
7362306a36Sopenharmony_ci		keypad,num-rows = <5>;
7462306a36Sopenharmony_ci		keypad,num-columns = <5>;
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci		linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_F) /* key_forward */
7762306a36Sopenharmony_ci		MATRIX_KEY(0x00, 0x03, KEY_HOME) /* key_home */
7862306a36Sopenharmony_ci		MATRIX_KEY(0x00, 0x04, KEY_M) /* key_message */
7962306a36Sopenharmony_ci		MATRIX_KEY(0x01, 0x00, KEY_A) /* key_contacts */
8062306a36Sopenharmony_ci		MATRIX_KEY(0x01, 0x01, KEY_1) /* key_1 */
8162306a36Sopenharmony_ci		MATRIX_KEY(0x01, 0x02, KEY_2) /* key_2 */
8262306a36Sopenharmony_ci		MATRIX_KEY(0x01, 0x03, KEY_3) /* key_3 */
8362306a36Sopenharmony_ci		MATRIX_KEY(0x01, 0x04, KEY_S) /* key_speaker */
8462306a36Sopenharmony_ci		MATRIX_KEY(0x02, 0x00, KEY_P) /* key_phone */
8562306a36Sopenharmony_ci		MATRIX_KEY(0x02, 0x01, KEY_4) /* key_4 */
8662306a36Sopenharmony_ci		MATRIX_KEY(0x02, 0x02, KEY_5) /* key_5 */
8762306a36Sopenharmony_ci		MATRIX_KEY(0x02, 0x03, KEY_6) /* key_6 */
8862306a36Sopenharmony_ci		MATRIX_KEY(0x02, 0x04, KEY_VOLUMEUP) /* key_vol_up */
8962306a36Sopenharmony_ci		MATRIX_KEY(0x03, 0x00, KEY_C) /* key_call_log */
9062306a36Sopenharmony_ci		MATRIX_KEY(0x03, 0x01, KEY_7) /* key_7 */
9162306a36Sopenharmony_ci		MATRIX_KEY(0x03, 0x02, KEY_8) /* key_8 */
9262306a36Sopenharmony_ci		MATRIX_KEY(0x03, 0x03, KEY_9) /* key_9 */
9362306a36Sopenharmony_ci		MATRIX_KEY(0x03, 0x04, KEY_VOLUMEDOWN) /* key_vol_down */
9462306a36Sopenharmony_ci		MATRIX_KEY(0x04, 0x00, KEY_H) /* key_headset */
9562306a36Sopenharmony_ci		MATRIX_KEY(0x04, 0x01, KEY_KPASTERISK) /* key_* */
9662306a36Sopenharmony_ci		MATRIX_KEY(0x04, 0x02, KEY_0) /* key_0 */
9762306a36Sopenharmony_ci		MATRIX_KEY(0x04, 0x03, KEY_GRAVE) /* key_# */
9862306a36Sopenharmony_ci		MATRIX_KEY(0x04, 0x04, KEY_MUTE) /* key_mute */
9962306a36Sopenharmony_ci		>;
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci		/* Optional board specific properties */
10262306a36Sopenharmony_ci		col-debounce-filter-period = <5>;
10362306a36Sopenharmony_ci		row-output-enabled;
10462306a36Sopenharmony_ci		pull-up-enabled;
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	};
10762306a36Sopenharmony_ci};
108