File Index
Files and directories
Sign in
FILE

maxim,max7360.yaml

File preview with syntax highlighting.

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