# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/input/adi,adp5588.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Analog Devices ADP5588 Keypad Controller maintainers: - Nuno Sá description: | Analog Devices Mobile I/O Expander and QWERTY Keypad Controller https://www.analog.com/media/en/technical-documentation/data-sheets/ADP5588.pdf allOf: - $ref: matrix-keymap.yaml# - $ref: input.yaml# properties: compatible: enum: - adi,adp5587 - adi,adp5588 reg: maxItems: 1 vcc-supply: description: Supply Voltage Input reset-gpios: description: If specified, it will be asserted during driver probe. As the line is active low, it should be marked GPIO_ACTIVE_LOW. maxItems: 1 interrupts: maxItems: 1 gpio-controller: description: This property applies if either keypad,num-rows lower than 8 or keypad,num-columns lower than 10. '#gpio-cells': const: 2 interrupt-controller: description: This property applies if either keypad,num-rows lower than 8 or keypad,num-columns lower than 10. This property is optional if keypad,num-rows or keypad,num-columns are not specified as the device is then configured to be used purely for gpio during which interrupts may or may not be utilized. '#interrupt-cells': const: 2 adi,unlock-keys: description: Specifies a maximum of 2 keys that can be used to unlock the keypad. If this property is set, the keyboard will be locked and only unlocked after these keys are pressed. If only one key is set, a double click is needed to unlock the keypad. The value of this property cannot be bigger or equal than keypad,num-rows * keypad,num-columns. $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 2 dependencies: keypad,num-rows: - linux,keymap - keypad,num-columns keypad,num-columns: - linux,keymap - keypad,num-rows linux,keymap: - keypad,num-rows - keypad,num-columns - interrupts interrupt-controller: - interrupts required: - compatible - reg unevaluatedProperties: false examples: - | #include #include #include i2c { #address-cells = <1>; #size-cells = <0>; keys@34 { compatible = "adi,adp5588"; reg = <0x34>; vcc-supply = <&vcc>; interrupts = <21 IRQ_TYPE_EDGE_FALLING>; interrupt-parent = <&gpio>; reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>; keypad,num-rows = <1>; keypad,num-columns = <9>; linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_1) MATRIX_KEY(0x00, 0x01, KEY_2) MATRIX_KEY(0x00, 0x02, KEY_3) MATRIX_KEY(0x00, 0x03, KEY_4) MATRIX_KEY(0x00, 0x04, KEY_5) MATRIX_KEY(0x00, 0x05, KEY_6) MATRIX_KEY(0x00, 0x06, KEY_7) MATRIX_KEY(0x00, 0x07, KEY_8) MATRIX_KEY(0x00, 0x08, KEY_9) >; }; }; - | #include i2c { #address-cells = <1>; #size-cells = <0>; gpio@34 { compatible = "adi,adp5588"; reg = <0x34>; #gpio-cells = <2>; gpio-controller; }; }; ...