^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) * GPIO driven matrix keypad device tree bindings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) The matrix keypad supports multiple row and column lines, a key can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) placed at each intersection of a unique row and a unique column. The matrix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) keypad can sense a key-press and key-release by means of GPIO lines and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) report the event using GPIO interrupts to the cpu.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Required Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - compatible: Should be "gpio-matrix-keypad"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) - row-gpios: List of gpios used as row lines. The gpio specifier
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) for this property depends on the gpio controller to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) which these row lines are connected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) - col-gpios: List of gpios used as column lines. The gpio specifier
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) for this property depends on the gpio controller to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) which these column lines are connected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) - linux,keymap: The definition can be found at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) bindings/input/matrix-keymap.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Optional Properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) - linux,no-autorepeat: do no enable autorepeat feature.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - wakeup-source: use any event on keypad as wakeup event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) (Legacy property supported: "linux,wakeup")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - debounce-delay-ms: debounce interval in milliseconds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - col-scan-delay-us: delay, measured in microseconds, that is needed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) before we can scan keypad after activating column gpio
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) - drive-inactive-cols: drive inactive columns during scan,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) default is to turn inactive columns into inputs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) matrix-keypad {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) compatible = "gpio-matrix-keypad";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) debounce-delay-ms = <5>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) col-scan-delay-us = <2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) row-gpios = <&gpio2 25 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) &gpio2 26 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) &gpio2 27 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) col-gpios = <&gpio2 21 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) &gpio2 22 0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) linux,keymap = <0x0000008B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 0x0100009E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 0x02000069
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 0x0001006A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 0x0101001C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 0x0201006C>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };