xref: /linux/Documentation/devicetree/bindings/mfd/iqs62x.yaml (revision 50b7e7082a3dde5bdba14a4e40a2e2279fd08a7b)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/iqs62x.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Azoteq IQS620A/621/622/624/625 Multi-Function Sensors
8
9maintainers:
10  - Jeff LaBundy <jeff@labundy.com>
11
12description: |
13  The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors
14  integrate multiple sensing technologies in a single package.
15
16  Link to datasheets: https://www.azoteq.com/
17
18properties:
19  compatible:
20    enum:
21      - azoteq,iqs620a
22      - azoteq,iqs621
23      - azoteq,iqs622
24      - azoteq,iqs624
25      - azoteq,iqs625
26
27  reg:
28    maxItems: 1
29
30  interrupts:
31    maxItems: 1
32
33  firmware-name:
34    maxItems: 1
35    description:
36      Specifies the name of the calibration and configuration file selected by
37      the driver. If this property is omitted, the name is chosen based on the
38      device name with ".bin" as the extension (e.g. iqs620a.bin for IQS620A).
39
40  keys:
41    $ref: /schemas/input/iqs62x-keys.yaml
42
43  pwm:
44    $ref: /schemas/pwm/iqs620a-pwm.yaml
45
46required:
47  - compatible
48  - reg
49  - interrupts
50
51additionalProperties: false
52
53examples:
54  - |
55    /*
56     * Dual capacitive buttons with proximity-activated function, unipolar lid
57     * switch and panel-mounted LED.
58     */
59    #include <dt-bindings/input/input.h>
60    #include <dt-bindings/interrupt-controller/irq.h>
61
62    i2c {
63        #address-cells = <1>;
64        #size-cells = <0>;
65
66        iqs620a@44 {
67            compatible = "azoteq,iqs620a";
68            reg = <0x44>;
69            interrupt-parent = <&gpio>;
70            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
71
72            keys {
73                compatible = "azoteq,iqs620a-keys";
74
75                linux,keycodes = <KEY_SELECT>,
76                                 <KEY_MENU>,
77                                 <KEY_OK>,
78                                 <KEY_MENU>;
79
80                hall-switch-south {
81                    linux,code = <SW_LID>;
82                    azoteq,use-prox;
83                };
84            };
85
86            iqs620a_pwm: pwm {
87                compatible = "azoteq,iqs620a-pwm";
88                #pwm-cells = <2>;
89            };
90        };
91    };
92
93  - |
94    /* Single inductive button with bipolar dock/tablet-mode switch. */
95    #include <dt-bindings/input/input.h>
96    #include <dt-bindings/interrupt-controller/irq.h>
97
98    i2c {
99        #address-cells = <1>;
100        #size-cells = <0>;
101
102        iqs620a@44 {
103            compatible = "azoteq,iqs620a";
104            reg = <0x44>;
105            interrupt-parent = <&gpio>;
106            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
107
108            firmware-name = "iqs620a_coil.bin";
109
110            keys {
111                compatible = "azoteq,iqs620a-keys";
112
113                linux,keycodes = <0>,
114                                 <0>,
115                                 <0>,
116                                 <0>,
117                                 <0>,
118                                 <0>,
119                                 <KEY_MUTE>;
120
121                hall-switch-north {
122                    linux,code = <SW_DOCK>;
123                };
124
125                hall-switch-south {
126                    linux,code = <SW_TABLET_MODE>;
127                };
128            };
129        };
130    };
131
132  - |
133    /* Dual capacitive buttons with volume knob. */
134    #include <dt-bindings/input/input.h>
135    #include <dt-bindings/interrupt-controller/irq.h>
136
137    i2c {
138        #address-cells = <1>;
139        #size-cells = <0>;
140
141        iqs624@44 {
142            compatible = "azoteq,iqs624";
143            reg = <0x44>;
144            interrupt-parent = <&gpio>;
145            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
146
147            keys {
148                compatible = "azoteq,iqs624-keys";
149
150                linux,keycodes = <BTN_0>,
151                                 <0>,
152                                 <BTN_1>,
153                                 <0>,
154                                 <0>,
155                                 <0>,
156                                 <0>,
157                                 <0>,
158                                 <0>,
159                                 <0>,
160                                 <0>,
161                                 <0>,
162                                 <0>,
163                                 <0>,
164                                 <KEY_VOLUMEUP>,
165                                 <KEY_VOLUMEDOWN>;
166            };
167        };
168    };
169
170...
171