1*aee81445SMathieu Dubois-Briand# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*aee81445SMathieu Dubois-Briand%YAML 1.2 3*aee81445SMathieu Dubois-Briand--- 4*aee81445SMathieu Dubois-Briand$id: http://devicetree.org/schemas/mfd/maxim,max7360.yaml# 5*aee81445SMathieu Dubois-Briand$schema: http://devicetree.org/meta-schemas/core.yaml# 6*aee81445SMathieu Dubois-Briand 7*aee81445SMathieu Dubois-Briandtitle: Maxim MAX7360 Keypad, Rotary encoder, PWM and GPIO controller 8*aee81445SMathieu Dubois-Briand 9*aee81445SMathieu Dubois-Briandmaintainers: 10*aee81445SMathieu Dubois-Briand - Kamel Bouhara <kamel.bouhara@bootlin.com> 11*aee81445SMathieu Dubois-Briand - Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> 12*aee81445SMathieu Dubois-Briand 13*aee81445SMathieu Dubois-Brianddescription: | 14*aee81445SMathieu Dubois-Briand Maxim MAX7360 device, with following functions: 15*aee81445SMathieu Dubois-Briand - keypad controller 16*aee81445SMathieu Dubois-Briand - rotary controller 17*aee81445SMathieu Dubois-Briand - GPIO and GPO controller 18*aee81445SMathieu Dubois-Briand - PWM controller 19*aee81445SMathieu Dubois-Briand 20*aee81445SMathieu Dubois-Briand https://www.analog.com/en/products/max7360.html 21*aee81445SMathieu Dubois-Briand 22*aee81445SMathieu Dubois-BriandallOf: 23*aee81445SMathieu Dubois-Briand - $ref: /schemas/input/matrix-keymap.yaml# 24*aee81445SMathieu Dubois-Briand - $ref: /schemas/input/input.yaml# 25*aee81445SMathieu Dubois-Briand 26*aee81445SMathieu Dubois-Briandproperties: 27*aee81445SMathieu Dubois-Briand compatible: 28*aee81445SMathieu Dubois-Briand enum: 29*aee81445SMathieu Dubois-Briand - maxim,max7360 30*aee81445SMathieu Dubois-Briand 31*aee81445SMathieu Dubois-Briand reg: 32*aee81445SMathieu Dubois-Briand maxItems: 1 33*aee81445SMathieu Dubois-Briand 34*aee81445SMathieu Dubois-Briand interrupts: 35*aee81445SMathieu Dubois-Briand maxItems: 2 36*aee81445SMathieu Dubois-Briand 37*aee81445SMathieu Dubois-Briand interrupt-names: 38*aee81445SMathieu Dubois-Briand items: 39*aee81445SMathieu Dubois-Briand - const: inti 40*aee81445SMathieu Dubois-Briand - const: intk 41*aee81445SMathieu Dubois-Briand 42*aee81445SMathieu Dubois-Briand keypad-debounce-delay-ms: 43*aee81445SMathieu Dubois-Briand description: Keypad debounce delay in ms 44*aee81445SMathieu Dubois-Briand minimum: 9 45*aee81445SMathieu Dubois-Briand maximum: 40 46*aee81445SMathieu Dubois-Briand default: 9 47*aee81445SMathieu Dubois-Briand 48*aee81445SMathieu Dubois-Briand rotary-debounce-delay-ms: 49*aee81445SMathieu Dubois-Briand description: Rotary encoder debounce delay in ms 50*aee81445SMathieu Dubois-Briand minimum: 0 51*aee81445SMathieu Dubois-Briand maximum: 15 52*aee81445SMathieu Dubois-Briand default: 0 53*aee81445SMathieu Dubois-Briand 54*aee81445SMathieu Dubois-Briand linux,axis: 55*aee81445SMathieu Dubois-Briand $ref: /schemas/input/rotary-encoder.yaml#/properties/linux,axis 56*aee81445SMathieu Dubois-Briand 57*aee81445SMathieu Dubois-Briand rotary-encoder,relative-axis: 58*aee81445SMathieu Dubois-Briand $ref: /schemas/types.yaml#/definitions/flag 59*aee81445SMathieu Dubois-Briand description: 60*aee81445SMathieu Dubois-Briand Register a relative axis rather than an absolute one. 61*aee81445SMathieu Dubois-Briand 62*aee81445SMathieu Dubois-Briand rotary-encoder,steps: 63*aee81445SMathieu Dubois-Briand $ref: /schemas/types.yaml#/definitions/uint32 64*aee81445SMathieu Dubois-Briand default: 24 65*aee81445SMathieu Dubois-Briand description: 66*aee81445SMathieu Dubois-Briand Number of steps in a full turnaround of the 67*aee81445SMathieu Dubois-Briand encoder. Only relevant for absolute axis. Defaults to 24 which is a 68*aee81445SMathieu Dubois-Briand typical value for such devices. 69*aee81445SMathieu Dubois-Briand 70*aee81445SMathieu Dubois-Briand rotary-encoder,rollover: 71*aee81445SMathieu Dubois-Briand $ref: /schemas/types.yaml#/definitions/flag 72*aee81445SMathieu Dubois-Briand description: 73*aee81445SMathieu Dubois-Briand Automatic rollover when the rotary value becomes 74*aee81445SMathieu Dubois-Briand greater than the specified steps or smaller than 0. For absolute axis only. 75*aee81445SMathieu Dubois-Briand 76*aee81445SMathieu Dubois-Briand "#pwm-cells": 77*aee81445SMathieu Dubois-Briand const: 3 78*aee81445SMathieu Dubois-Briand 79*aee81445SMathieu Dubois-Briand gpio: 80*aee81445SMathieu Dubois-Briand $ref: /schemas/gpio/maxim,max7360-gpio.yaml# 81*aee81445SMathieu Dubois-Briand description: 82*aee81445SMathieu Dubois-Briand PORT0 to PORT7 general purpose input/output pins configuration. 83*aee81445SMathieu Dubois-Briand 84*aee81445SMathieu Dubois-Briand gpo: 85*aee81445SMathieu Dubois-Briand $ref: /schemas/gpio/maxim,max7360-gpio.yaml# 86*aee81445SMathieu Dubois-Briand description: > 87*aee81445SMathieu Dubois-Briand COL2 to COL7 general purpose output pins configuration. Allows to use 88*aee81445SMathieu Dubois-Briand unused keypad columns as outputs. 89*aee81445SMathieu Dubois-Briand 90*aee81445SMathieu Dubois-Briand The MAX7360 has 8 column lines and 6 of them can be used as GPOs. GPIOs 91*aee81445SMathieu Dubois-Briand numbers used for this gpio-controller node do correspond to the column 92*aee81445SMathieu Dubois-Briand numbers: values 0 and 1 are never valid, values from 2 to 7 might be valid 93*aee81445SMathieu Dubois-Briand depending on the value of the keypad,num-column property. 94*aee81445SMathieu Dubois-Briand 95*aee81445SMathieu Dubois-BriandpatternProperties: 96*aee81445SMathieu Dubois-Briand '-pins$': 97*aee81445SMathieu Dubois-Briand type: object 98*aee81445SMathieu Dubois-Briand description: 99*aee81445SMathieu Dubois-Briand Pinctrl node's client devices use subnodes for desired pin configuration. 100*aee81445SMathieu Dubois-Briand Client device subnodes use below standard properties. 101*aee81445SMathieu Dubois-Briand $ref: /schemas/pinctrl/pincfg-node.yaml 102*aee81445SMathieu Dubois-Briand 103*aee81445SMathieu Dubois-Briand properties: 104*aee81445SMathieu Dubois-Briand pins: 105*aee81445SMathieu Dubois-Briand description: 106*aee81445SMathieu Dubois-Briand List of gpio pins affected by the properties specified in this 107*aee81445SMathieu Dubois-Briand subnode. 108*aee81445SMathieu Dubois-Briand items: 109*aee81445SMathieu Dubois-Briand pattern: '^(PORT[0-7]|ROTARY)$' 110*aee81445SMathieu Dubois-Briand minItems: 1 111*aee81445SMathieu Dubois-Briand maxItems: 8 112*aee81445SMathieu Dubois-Briand 113*aee81445SMathieu Dubois-Briand function: 114*aee81445SMathieu Dubois-Briand description: 115*aee81445SMathieu Dubois-Briand Specify the alternative function to be configured for the specified 116*aee81445SMathieu Dubois-Briand pins. 117*aee81445SMathieu Dubois-Briand enum: [gpio, pwm, rotary] 118*aee81445SMathieu Dubois-Briand 119*aee81445SMathieu Dubois-Briand additionalProperties: false 120*aee81445SMathieu Dubois-Briand 121*aee81445SMathieu Dubois-Briandrequired: 122*aee81445SMathieu Dubois-Briand - compatible 123*aee81445SMathieu Dubois-Briand - reg 124*aee81445SMathieu Dubois-Briand - interrupts 125*aee81445SMathieu Dubois-Briand - interrupt-names 126*aee81445SMathieu Dubois-Briand - linux,keymap 127*aee81445SMathieu Dubois-Briand - linux,axis 128*aee81445SMathieu Dubois-Briand - "#pwm-cells" 129*aee81445SMathieu Dubois-Briand - gpio 130*aee81445SMathieu Dubois-Briand - gpo 131*aee81445SMathieu Dubois-Briand 132*aee81445SMathieu Dubois-BriandunevaluatedProperties: false 133*aee81445SMathieu Dubois-Briand 134*aee81445SMathieu Dubois-Briandexamples: 135*aee81445SMathieu Dubois-Briand - | 136*aee81445SMathieu Dubois-Briand #include <dt-bindings/input/input.h> 137*aee81445SMathieu Dubois-Briand #include <dt-bindings/interrupt-controller/arm-gic.h> 138*aee81445SMathieu Dubois-Briand 139*aee81445SMathieu Dubois-Briand i2c { 140*aee81445SMathieu Dubois-Briand #address-cells = <1>; 141*aee81445SMathieu Dubois-Briand #size-cells = <0>; 142*aee81445SMathieu Dubois-Briand 143*aee81445SMathieu Dubois-Briand io-expander@38 { 144*aee81445SMathieu Dubois-Briand compatible = "maxim,max7360"; 145*aee81445SMathieu Dubois-Briand reg = <0x38>; 146*aee81445SMathieu Dubois-Briand 147*aee81445SMathieu Dubois-Briand interrupt-parent = <&gpio1>; 148*aee81445SMathieu Dubois-Briand interrupts = <23 IRQ_TYPE_LEVEL_LOW>, 149*aee81445SMathieu Dubois-Briand <24 IRQ_TYPE_LEVEL_LOW>; 150*aee81445SMathieu Dubois-Briand interrupt-names = "inti", "intk"; 151*aee81445SMathieu Dubois-Briand 152*aee81445SMathieu Dubois-Briand keypad,num-rows = <8>; 153*aee81445SMathieu Dubois-Briand keypad,num-columns = <4>; 154*aee81445SMathieu Dubois-Briand linux,keymap = < 155*aee81445SMathieu Dubois-Briand MATRIX_KEY(0x00, 0x00, KEY_F5) 156*aee81445SMathieu Dubois-Briand MATRIX_KEY(0x01, 0x00, KEY_F4) 157*aee81445SMathieu Dubois-Briand MATRIX_KEY(0x02, 0x01, KEY_F6) 158*aee81445SMathieu Dubois-Briand >; 159*aee81445SMathieu Dubois-Briand keypad-debounce-delay-ms = <10>; 160*aee81445SMathieu Dubois-Briand autorepeat; 161*aee81445SMathieu Dubois-Briand 162*aee81445SMathieu Dubois-Briand rotary-debounce-delay-ms = <2>; 163*aee81445SMathieu Dubois-Briand linux,axis = <0>; /* REL_X */ 164*aee81445SMathieu Dubois-Briand rotary-encoder,relative-axis; 165*aee81445SMathieu Dubois-Briand 166*aee81445SMathieu Dubois-Briand #pwm-cells = <3>; 167*aee81445SMathieu Dubois-Briand 168*aee81445SMathieu Dubois-Briand max7360_gpio: gpio { 169*aee81445SMathieu Dubois-Briand compatible = "maxim,max7360-gpio"; 170*aee81445SMathieu Dubois-Briand 171*aee81445SMathieu Dubois-Briand gpio-controller; 172*aee81445SMathieu Dubois-Briand #gpio-cells = <2>; 173*aee81445SMathieu Dubois-Briand maxim,constant-current-disable = <0x06>; 174*aee81445SMathieu Dubois-Briand 175*aee81445SMathieu Dubois-Briand interrupt-controller; 176*aee81445SMathieu Dubois-Briand #interrupt-cells = <0x2>; 177*aee81445SMathieu Dubois-Briand }; 178*aee81445SMathieu Dubois-Briand 179*aee81445SMathieu Dubois-Briand max7360_gpo: gpo { 180*aee81445SMathieu Dubois-Briand compatible = "maxim,max7360-gpo"; 181*aee81445SMathieu Dubois-Briand 182*aee81445SMathieu Dubois-Briand gpio-controller; 183*aee81445SMathieu Dubois-Briand #gpio-cells = <2>; 184*aee81445SMathieu Dubois-Briand }; 185*aee81445SMathieu Dubois-Briand 186*aee81445SMathieu Dubois-Briand backlight_pins: backlight-pins { 187*aee81445SMathieu Dubois-Briand pins = "PORT2"; 188*aee81445SMathieu Dubois-Briand function = "pwm"; 189*aee81445SMathieu Dubois-Briand }; 190*aee81445SMathieu Dubois-Briand }; 191*aee81445SMathieu Dubois-Briand }; 192