192 lines
4.7 KiB
YAML
192 lines
4.7 KiB
YAML
# 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";
|
|
};
|
|
};
|
|
};
|