| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mfd/maxim,max7360.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Maxim MAX7360 Keypad, Rotary encoder, PWM and GPIO controller |
| |
| maintainers: |
| - Kamel Bouhara <kamel.bouhara@bootlin.com> |
| - Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> |
| |
| description: | |
| Maxim MAX7360 device, with following functions: |
| - keypad controller |
| - rotary controller |
| - GPIO and GPO controller |
| - PWM controller |
| |
| https://www.analog.com/en/products/max7360.html |
| |
| allOf: |
| - $ref: /schemas/input/matrix-keymap.yaml# |
| - $ref: /schemas/input/input.yaml# |
| |
| properties: |
| compatible: |
| enum: |
| - maxim,max7360 |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| maxItems: 2 |
| |
| interrupt-names: |
| items: |
| - const: inti |
| - const: intk |
| |
| keypad-debounce-delay-ms: |
| description: Keypad debounce delay in ms |
| minimum: 9 |
| maximum: 40 |
| default: 9 |
| |
| rotary-debounce-delay-ms: |
| description: Rotary encoder debounce delay in ms |
| minimum: 0 |
| maximum: 15 |
| default: 0 |
| |
| linux,axis: |
| $ref: /schemas/input/rotary-encoder.yaml#/properties/linux,axis |
| |
| rotary-encoder,relative-axis: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| Register a relative axis rather than an absolute one. |
| |
| rotary-encoder,steps: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| default: 24 |
| description: |
| Number of steps in a full turnaround of the |
| encoder. Only relevant for absolute axis. Defaults to 24 which is a |
| typical value for such devices. |
| |
| rotary-encoder,rollover: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| Automatic rollover when the rotary value becomes |
| greater than the specified steps or smaller than 0. For absolute axis only. |
| |
| "#pwm-cells": |
| const: 3 |
| |
| gpio: |
| $ref: /schemas/gpio/maxim,max7360-gpio.yaml# |
| description: |
| PORT0 to PORT7 general purpose input/output pins configuration. |
| |
| gpo: |
| $ref: /schemas/gpio/maxim,max7360-gpio.yaml# |
| description: > |
| COL2 to COL7 general purpose output pins configuration. Allows to use |
| unused keypad columns as outputs. |
| |
| The MAX7360 has 8 column lines and 6 of them can be used as GPOs. GPIOs |
| numbers used for this gpio-controller node do correspond to the column |
| numbers: values 0 and 1 are never valid, values from 2 to 7 might be valid |
| depending on the value of the keypad,num-column property. |
| |
| patternProperties: |
| '-pins$': |
| type: object |
| description: |
| Pinctrl node's client devices use subnodes for desired pin configuration. |
| Client device subnodes use below standard properties. |
| $ref: /schemas/pinctrl/pincfg-node.yaml |
| |
| properties: |
| pins: |
| description: |
| List of gpio pins affected by the properties specified in this |
| subnode. |
| items: |
| pattern: '^(PORT[0-7]|ROTARY)$' |
| minItems: 1 |
| maxItems: 8 |
| |
| function: |
| description: |
| Specify the alternative function to be configured for the specified |
| pins. |
| enum: [gpio, pwm, rotary] |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| - interrupt-names |
| - linux,keymap |
| - linux,axis |
| - "#pwm-cells" |
| - gpio |
| - gpo |
| |
| unevaluatedProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/input/input.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| io-expander@38 { |
| compatible = "maxim,max7360"; |
| reg = <0x38>; |
| |
| interrupt-parent = <&gpio1>; |
| interrupts = <23 IRQ_TYPE_LEVEL_LOW>, |
| <24 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-names = "inti", "intk"; |
| |
| keypad,num-rows = <8>; |
| keypad,num-columns = <4>; |
| linux,keymap = < |
| MATRIX_KEY(0x00, 0x00, KEY_F5) |
| MATRIX_KEY(0x01, 0x00, KEY_F4) |
| MATRIX_KEY(0x02, 0x01, KEY_F6) |
| >; |
| keypad-debounce-delay-ms = <10>; |
| autorepeat; |
| |
| rotary-debounce-delay-ms = <2>; |
| linux,axis = <0>; /* REL_X */ |
| rotary-encoder,relative-axis; |
| |
| #pwm-cells = <3>; |
| |
| max7360_gpio: gpio { |
| compatible = "maxim,max7360-gpio"; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| maxim,constant-current-disable = <0x06>; |
| |
| interrupt-controller; |
| #interrupt-cells = <0x2>; |
| }; |
| |
| max7360_gpo: gpo { |
| compatible = "maxim,max7360-gpo"; |
| |
| gpio-controller; |
| #gpio-cells = <2>; |
| }; |
| |
| backlight_pins: backlight-pins { |
| pins = "PORT2"; |
| function = "pwm"; |
| }; |
| }; |
| }; |