# 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 - Mathieu Dubois-Briand 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 #include 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"; }; }; };