| # 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á <nuno.sa@analog.com> |
| |
| 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 <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/input/input.h> |
| #include <dt-bindings/gpio/gpio.h> |
| 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 <dt-bindings/gpio/gpio.h> |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| gpio@34 { |
| compatible = "adi,adp5588"; |
| reg = <0x34>; |
| |
| #gpio-cells = <2>; |
| gpio-controller; |
| }; |
| }; |
| |
| ... |