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    $ref: /schemas/types.yaml#/definitions/string
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: ../input/iqs62x-keys.yaml
42
43  pwm:
44    $ref: ../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    pwmleds {
94            compatible = "pwm-leds";
95
96            panel {
97                    pwms = <&iqs620a_pwm 0 1000000>;
98                    max-brightness = <255>;
99            };
100    };
101
102  - |
103    /* Single inductive button with bipolar dock/tablet-mode switch. */
104    #include <dt-bindings/input/input.h>
105    #include <dt-bindings/interrupt-controller/irq.h>
106
107    i2c {
108            #address-cells = <1>;
109            #size-cells = <0>;
110
111            iqs620a@44 {
112                    compatible = "azoteq,iqs620a";
113                    reg = <0x44>;
114                    interrupt-parent = <&gpio>;
115                    interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
116
117                    firmware-name = "iqs620a_coil.bin";
118
119                    keys {
120                            compatible = "azoteq,iqs620a-keys";
121
122                            linux,keycodes = <0>,
123                                             <0>,
124                                             <0>,
125                                             <0>,
126                                             <0>,
127                                             <0>,
128                                             <KEY_MUTE>;
129
130                            hall-switch-north {
131                                    linux,code = <SW_DOCK>;
132                            };
133
134                            hall-switch-south {
135                                    linux,code = <SW_TABLET_MODE>;
136                            };
137                    };
138            };
139    };
140
141  - |
142    /* Dual capacitive buttons with volume knob. */
143    #include <dt-bindings/input/input.h>
144    #include <dt-bindings/interrupt-controller/irq.h>
145
146    i2c {
147            #address-cells = <1>;
148            #size-cells = <0>;
149
150            iqs624@44 {
151                    compatible = "azoteq,iqs624";
152                    reg = <0x44>;
153                    interrupt-parent = <&gpio>;
154                    interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
155
156                    keys {
157                            compatible = "azoteq,iqs624-keys";
158
159                            linux,keycodes = <BTN_0>,
160                                             <0>,
161                                             <BTN_1>,
162                                             <0>,
163                                             <0>,
164                                             <0>,
165                                             <0>,
166                                             <0>,
167                                             <0>,
168                                             <0>,
169                                             <0>,
170                                             <0>,
171                                             <0>,
172                                             <0>,
173                                             <KEY_VOLUMEUP>,
174                                             <KEY_VOLUMEDOWN>;
175                    };
176            };
177    };
178
179...
180