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