1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/input/azoteq,iqs7222.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Azoteq IQS7222A/B/C Capacitive Touch Controller
8
9maintainers:
10  - Jeff LaBundy <jeff@labundy.com>
11
12description: |
13  The Azoteq IQS7222A, IQS7222B and IQS7222C are multichannel capacitive touch
14  controllers that feature additional sensing capabilities.
15
16  Link to datasheets: https://www.azoteq.com/
17
18properties:
19  compatible:
20    enum:
21      - azoteq,iqs7222a
22      - azoteq,iqs7222b
23      - azoteq,iqs7222c
24
25  reg:
26    maxItems: 1
27
28  irq-gpios:
29    maxItems: 1
30    description:
31      Specifies the GPIO connected to the device's active-low RDY output.
32
33  reset-gpios:
34    maxItems: 1
35    description:
36      Specifies the GPIO connected to the device's active-low MCLR input. The
37      device is temporarily held in hardware reset prior to initialization if
38      this property is present.
39
40  azoteq,max-counts:
41    $ref: /schemas/types.yaml#/definitions/uint32
42    enum: [0, 1, 2, 3]
43    description: |
44      Specifies the maximum number of conversion periods (counts) that can be
45      reported as follows:
46      0: 1023
47      1: 2047
48      2: 4095
49      3: 16384
50
51  azoteq,auto-mode:
52    $ref: /schemas/types.yaml#/definitions/uint32
53    enum: [0, 1, 2, 3]
54    description: |
55      Specifies the number of conversions to occur before an interrupt is
56      generated as follows:
57      0: 4
58      1: 8
59      2: 16
60      3: 32
61
62  azoteq,ati-frac-div-fine:
63    $ref: /schemas/types.yaml#/definitions/uint32
64    minimum: 0
65    maximum: 31
66    description: Specifies the preloaded ATI fine fractional divider.
67
68  azoteq,ati-frac-div-coarse:
69    $ref: /schemas/types.yaml#/definitions/uint32
70    minimum: 0
71    maximum: 31
72    description: Specifies the preloaded ATI coarse fractional divider.
73
74  azoteq,ati-comp-select:
75    $ref: /schemas/types.yaml#/definitions/uint32
76    minimum: 0
77    maximum: 1023
78    description: Specifies the preloaded ATI compensation selection.
79
80  azoteq,lta-beta-lp:
81    $ref: /schemas/types.yaml#/definitions/uint32
82    minimum: 0
83    maximum: 15
84    description:
85      Specifies the long-term average filter damping factor to be applied during
86      low-power mode.
87
88  azoteq,lta-beta-np:
89    $ref: /schemas/types.yaml#/definitions/uint32
90    minimum: 0
91    maximum: 15
92    description:
93      Specifies the long-term average filter damping factor to be applied during
94      normal-power mode.
95
96  azoteq,counts-beta-lp:
97    $ref: /schemas/types.yaml#/definitions/uint32
98    minimum: 0
99    maximum: 15
100    description:
101      Specifies the counts filter damping factor to be applied during low-power
102      mode.
103
104  azoteq,counts-beta-np:
105    $ref: /schemas/types.yaml#/definitions/uint32
106    minimum: 0
107    maximum: 15
108    description:
109      Specifies the counts filter damping factor to be applied during normal-
110      power mode.
111
112  azoteq,lta-fast-beta-lp:
113    $ref: /schemas/types.yaml#/definitions/uint32
114    minimum: 0
115    maximum: 15
116    description:
117      Specifies the long-term average filter fast damping factor to be applied
118      during low-power mode.
119
120  azoteq,lta-fast-beta-np:
121    $ref: /schemas/types.yaml#/definitions/uint32
122    minimum: 0
123    maximum: 15
124    description:
125      Specifies the long-term average filter fast damping factor to be applied
126      during normal-power mode.
127
128  azoteq,timeout-ati-ms:
129    multipleOf: 500
130    minimum: 0
131    maximum: 32767500
132    description:
133      Specifies the delay (in ms) before ATI is retried following an ATI error.
134
135  azoteq,rate-ati-ms:
136    minimum: 0
137    maximum: 65535
138    description: Specifies the rate (in ms) at which ATI status is evaluated.
139
140  azoteq,timeout-np-ms:
141    minimum: 0
142    maximum: 65535
143    description:
144      Specifies the length of time (in ms) to wait for an event before moving
145      from normal-power mode to low-power mode.
146
147  azoteq,rate-np-ms:
148    minimum: 0
149    maximum: 3000
150    description: Specifies the report rate (in ms) during normal-power mode.
151
152  azoteq,timeout-lp-ms:
153    minimum: 0
154    maximum: 65535
155    description:
156      Specifies the length of time (in ms) to wait for an event before moving
157      from low-power mode to ultra-low-power mode.
158
159  azoteq,rate-lp-ms:
160    minimum: 0
161    maximum: 3000
162    description: Specifies the report rate (in ms) during low-power mode.
163
164  azoteq,timeout-ulp-ms:
165    minimum: 0
166    maximum: 65535
167    description:
168      Specifies the rate (in ms) at which channels not regularly sampled during
169      ultra-low-power mode are updated.
170
171  azoteq,rate-ulp-ms:
172    minimum: 0
173    maximum: 3000
174    description: Specifies the report rate (in ms) during ultra-low-power mode.
175
176patternProperties:
177  "^cycle-[0-9]$":
178    type: object
179    description: Represents a conversion cycle serving two sensing channels.
180
181    properties:
182      azoteq,conv-period:
183        $ref: /schemas/types.yaml#/definitions/uint32
184        minimum: 0
185        maximum: 255
186        description: Specifies the cycle's conversion period.
187
188      azoteq,conv-frac:
189        $ref: /schemas/types.yaml#/definitions/uint32
190        minimum: 0
191        maximum: 255
192        description: Specifies the cycle's conversion frequency fraction.
193
194      azoteq,tx-enable:
195        $ref: /schemas/types.yaml#/definitions/uint32-array
196        minItems: 1
197        maxItems: 9
198        items:
199          minimum: 0
200          maximum: 8
201        description: Specifies the CTx pin(s) associated with the cycle.
202
203      azoteq,rx-float-inactive:
204        type: boolean
205        description: Floats any inactive CRx pins instead of grounding them.
206
207      azoteq,dead-time-enable:
208        type: boolean
209        description:
210          Increases the denominator of the conversion frequency formula by one.
211
212      azoteq,tx-freq-fosc:
213        type: boolean
214        description:
215          Fixes the conversion frequency to that of the device's core clock.
216
217      azoteq,vbias-enable:
218        type: boolean
219        description: Enables the bias voltage for use during inductive sensing.
220
221      azoteq,sense-mode:
222        $ref: /schemas/types.yaml#/definitions/uint32
223        enum: [0, 1, 2, 3]
224        description: |
225          Specifies the cycle's sensing mode as follows:
226          0: None
227          1: Self capacitive
228          2: Mutual capacitive
229          3: Inductive
230
231          Note that in the case of IQS7222A, cycles 5 and 6 are restricted to
232          Hall-effect sensing.
233
234      azoteq,iref-enable:
235        type: boolean
236        description:
237          Enables the current reference for use during various sensing modes.
238
239      azoteq,iref-level:
240        $ref: /schemas/types.yaml#/definitions/uint32
241        minimum: 0
242        maximum: 15
243        description: Specifies the cycle's current reference level.
244
245      azoteq,iref-trim:
246        $ref: /schemas/types.yaml#/definitions/uint32
247        minimum: 0
248        maximum: 15
249        description: Specifies the cycle's current reference trim.
250
251    dependencies:
252      azoteq,iref-level: ["azoteq,iref-enable"]
253      azoteq,iref-trim: ["azoteq,iref-enable"]
254
255    additionalProperties: false
256
257  "^channel-([0-9]|1[0-9])$":
258    type: object
259    description:
260      Represents a single sensing channel. A channel is active if defined and
261      inactive otherwise.
262
263      Note that in the case of IQS7222A, channels 10 and 11 are restricted to
264      Hall-effect sensing with events reported on channel 10 only.
265
266    properties:
267      azoteq,ulp-allow:
268        type: boolean
269        description:
270          Permits the device to enter ultra-low-power mode while the channel
271          lies in a state of touch or proximity.
272
273      azoteq,ref-select:
274        $ref: /schemas/types.yaml#/definitions/uint32
275        minimum: 0
276        maximum: 9
277        description: Specifies a separate reference channel to be followed.
278
279      azoteq,ref-weight:
280        $ref: /schemas/types.yaml#/definitions/uint32
281        minimum: 0
282        maximum: 65535
283        description: Specifies the relative weight of the reference channel.
284
285      azoteq,use-prox:
286        type: boolean
287        description:
288          Activates the reference channel in response to proximity events
289          instead of touch events.
290
291      azoteq,ati-band:
292        $ref: /schemas/types.yaml#/definitions/uint32
293        enum: [0, 1, 2, 3]
294        description: |
295          Specifies the channel's ATI band as a fraction of its ATI target as
296          follows:
297          0: 1/16
298          1: 1/8
299          2: 1/4
300          3: 1/2
301
302      azoteq,global-halt:
303        type: boolean
304        description:
305          Specifies that the channel's long-term average is to freeze if any
306          other participating channel lies in a proximity or touch state.
307
308      azoteq,invert-enable:
309        type: boolean
310        description:
311          Inverts the polarity of the states reported for proximity and touch
312          events relative to their respective thresholds.
313
314      azoteq,dual-direction:
315        type: boolean
316        description:
317          Specifies that the channel's long-term average is to freeze in the
318          presence of either increasing or decreasing counts, thereby permit-
319          ting events to be reported in either direction.
320
321      azoteq,rx-enable:
322        $ref: /schemas/types.yaml#/definitions/uint32-array
323        minItems: 1
324        maxItems: 4
325        items:
326          minimum: 0
327          maximum: 7
328        description: Specifies the CRx pin(s) associated with the channel.
329
330      azoteq,samp-cap-double:
331        type: boolean
332        description: Doubles the sampling capacitance from 40 pF to 80 pF.
333
334      azoteq,vref-half:
335        type: boolean
336        description: Halves the discharge threshold from 1.0 V to 0.5 V.
337
338      azoteq,proj-bias:
339        $ref: /schemas/types.yaml#/definitions/uint32
340        enum: [0, 1, 2, 3]
341        description: |
342          Specifies the bias current applied during mutual (projected)
343          capacitive sensing as follows:
344          0: 2 uA
345          1: 5 uA
346          2: 7 uA
347          3: 10 uA
348
349      azoteq,ati-target:
350        $ref: /schemas/types.yaml#/definitions/uint32
351        multipleOf: 8
352        minimum: 0
353        maximum: 2040
354        description: Specifies the channel's ATI target.
355
356      azoteq,ati-base:
357        $ref: /schemas/types.yaml#/definitions/uint32
358        multipleOf: 16
359        minimum: 0
360        maximum: 496
361        description: Specifies the channel's ATI base.
362
363      azoteq,ati-mode:
364        $ref: /schemas/types.yaml#/definitions/uint32
365        enum: [0, 1, 2, 3, 4, 5]
366        description: |
367          Specifies the channel's ATI mode as follows:
368          0: Disabled
369          1: Compensation
370          2: Compensation divider
371          3: Fine fractional divider
372          4: Coarse fractional divider
373          5: Full
374
375      azoteq,ati-frac-div-fine:
376        $ref: /schemas/types.yaml#/definitions/uint32
377        minimum: 0
378        maximum: 31
379        description: Specifies the channel's ATI fine fractional divider.
380
381      azoteq,ati-frac-mult-coarse:
382        $ref: /schemas/types.yaml#/definitions/uint32
383        minimum: 0
384        maximum: 15
385        description: Specifies the channel's ATI coarse fractional multiplier.
386
387      azoteq,ati-frac-div-coarse:
388        $ref: /schemas/types.yaml#/definitions/uint32
389        minimum: 0
390        maximum: 31
391        description: Specifies the channel's ATI coarse fractional divider.
392
393      azoteq,ati-comp-div:
394        $ref: /schemas/types.yaml#/definitions/uint32
395        minimum: 0
396        maximum: 31
397        description: Specifies the channel's ATI compensation divider.
398
399      azoteq,ati-comp-select:
400        $ref: /schemas/types.yaml#/definitions/uint32
401        minimum: 0
402        maximum: 1023
403        description: Specifies the channel's ATI compensation selection.
404
405      azoteq,debounce-enter:
406        $ref: /schemas/types.yaml#/definitions/uint32
407        minimum: 0
408        maximum: 15
409        description: Specifies the channel's debounce entrance factor.
410
411      azoteq,debounce-exit:
412        $ref: /schemas/types.yaml#/definitions/uint32
413        minimum: 0
414        maximum: 15
415        description: Specifies the channel's debounce exit factor.
416
417    patternProperties:
418      "^event-(prox|touch)$":
419        type: object
420        $ref: input.yaml#
421        description:
422          Represents a proximity or touch event reported by the channel.
423
424        properties:
425          azoteq,gpio-select:
426            $ref: /schemas/types.yaml#/definitions/uint32-array
427            minItems: 1
428            maxItems: 3
429            items:
430              minimum: 0
431              maximum: 2
432            description: |
433              Specifies one or more GPIO mapped to the event as follows:
434              0: GPIO0
435              1: GPIO3 (IQS7222C only)
436              2: GPIO4 (IQS7222C only)
437
438              Note that although multiple events can be mapped to a single
439              GPIO, they must all be of the same type (proximity, touch or
440              slider gesture).
441
442          azoteq,thresh:
443            $ref: /schemas/types.yaml#/definitions/uint32
444            description:
445              Specifies the threshold for the event. Valid entries range from
446              0-127 and 0-255 for proximity and touch events, respectively.
447
448          azoteq,hyst:
449            $ref: /schemas/types.yaml#/definitions/uint32
450            minimum: 0
451            maximum: 255
452            description:
453              Specifies the hysteresis for the event (touch events only).
454
455          azoteq,timeout-press-ms:
456            multipleOf: 500
457            minimum: 0
458            maximum: 127500
459            description:
460              Specifies the length of time (in ms) to wait before automatically
461              releasing a press event. Specify zero to allow the press state to
462              persist indefinitely.
463
464              The IQS7222B does not feature channel-specific timeouts; the time-
465              out specified for any one channel applies to all channels.
466
467          linux,code: true
468
469          linux,input-type:
470            enum: [1, 5]
471            default: 1
472            description:
473              Specifies whether the event is to be interpreted as a key (1)
474              or a switch (5).
475
476        required:
477          - linux,code
478
479        additionalProperties: false
480
481    dependencies:
482      azoteq,ref-weight: ["azoteq,ref-select"]
483      azoteq,use-prox: ["azoteq,ref-select"]
484
485    additionalProperties: false
486
487  "^slider-[0-1]$":
488    type: object
489    description: Represents a slider comprising three or four channels.
490
491    properties:
492      azoteq,channel-select:
493        $ref: /schemas/types.yaml#/definitions/uint32-array
494        minItems: 3
495        maxItems: 4
496        items:
497          minimum: 0
498          maximum: 9
499        description:
500          Specifies the order of the channels that participate in the slider.
501
502      azoteq,slider-size:
503        $ref: /schemas/types.yaml#/definitions/uint32
504        minimum: 0
505        maximum: 65535
506        description:
507          Specifies the slider's one-dimensional resolution, equal to the
508          maximum coordinate plus one.
509
510      azoteq,lower-cal:
511        $ref: /schemas/types.yaml#/definitions/uint32
512        minimum: 0
513        maximum: 255
514        description: Specifies the slider's lower starting point.
515
516      azoteq,upper-cal:
517        $ref: /schemas/types.yaml#/definitions/uint32
518        minimum: 0
519        maximum: 255
520        description: Specifies the slider's upper starting point.
521
522      azoteq,top-speed:
523        $ref: /schemas/types.yaml#/definitions/uint32
524        minimum: 0
525        maximum: 65535
526        description:
527          Specifies the speed of movement after which coordinate filtering is
528          no longer applied.
529
530      azoteq,bottom-speed:
531        $ref: /schemas/types.yaml#/definitions/uint32
532        minimum: 0
533        maximum: 255
534        description:
535          Specifies the speed of movement after which coordinate filtering is
536          linearly reduced.
537
538      azoteq,bottom-beta:
539        $ref: /schemas/types.yaml#/definitions/uint32
540        minimum: 0
541        maximum: 7
542        description:
543          Specifies the coordinate filter damping factor to be applied
544          while the speed of movement is below that which is specified
545          by azoteq,bottom-speed.
546
547      azoteq,static-beta:
548        type: boolean
549        description:
550          Applies the coordinate filter damping factor specified by
551          azoteq,bottom-beta regardless of the speed of movement.
552
553      azoteq,use-prox:
554        type: boolean
555        description:
556          Directs the slider to respond to the proximity states of the selected
557          channels instead of their corresponding touch states. Note the slider
558          cannot report granular coordinates during a state of proximity.
559
560      linux,axis:
561        $ref: /schemas/types.yaml#/definitions/uint32
562        description:
563          Specifies the absolute axis to which coordinates are mapped. Specify
564          ABS_WHEEL to operate the slider as a wheel (IQS7222C only).
565
566    patternProperties:
567      "^event-(press|tap|(swipe|flick)-(pos|neg))$":
568        type: object
569        $ref: input.yaml#
570        description:
571          Represents a press or gesture (IQS7222A only) event reported by
572          the slider.
573
574        properties:
575          linux,code: true
576
577          azoteq,gesture-max-ms:
578            multipleOf: 4
579            minimum: 0
580            maximum: 1020
581            description:
582              Specifies the length of time (in ms) within which a tap, swipe
583              or flick gesture must be completed in order to be acknowledged
584              by the device. The number specified for any one swipe or flick
585              gesture applies to all remaining swipe or flick gestures.
586
587          azoteq,gesture-min-ms:
588            multipleOf: 4
589            minimum: 0
590            maximum: 124
591            description:
592              Specifies the length of time (in ms) for which a tap gesture must
593              be held in order to be acknowledged by the device.
594
595          azoteq,gesture-dist:
596            $ref: /schemas/types.yaml#/definitions/uint32
597            multipleOf: 16
598            minimum: 0
599            maximum: 4080
600            description:
601              Specifies the distance across which a swipe or flick gesture must
602              travel in order to be acknowledged by the device. The number spec-
603              ified for any one swipe or flick gesture applies to all remaining
604              swipe or flick gestures.
605
606          azoteq,gpio-select:
607            $ref: /schemas/types.yaml#/definitions/uint32-array
608            minItems: 1
609            maxItems: 3
610            items:
611              minimum: 0
612              maximum: 2
613            description: |
614              Specifies one or more GPIO mapped to the event as follows:
615              0: GPIO0
616              1: GPIO3 (IQS7222C only)
617              2: GPIO4 (IQS7222C only)
618
619              Note that although multiple events can be mapped to a single
620              GPIO, they must all be of the same type (proximity, touch or
621              slider gesture).
622
623        required:
624          - linux,code
625
626        additionalProperties: false
627
628    required:
629      - azoteq,channel-select
630
631    additionalProperties: false
632
633  "^gpio-[0-2]$":
634    type: object
635    description: |
636      Represents a GPIO mapped to one or more events as follows:
637      gpio-0: GPIO0
638      gpio-1: GPIO3 (IQS7222C only)
639      gpio-2: GPIO4 (IQS7222C only)
640
641    allOf:
642      - $ref: ../pinctrl/pincfg-node.yaml#
643
644    properties:
645      drive-open-drain: true
646
647    additionalProperties: false
648
649allOf:
650  - if:
651      properties:
652        compatible:
653          contains:
654            const: azoteq,iqs7222b
655
656    then:
657      patternProperties:
658        "^cycle-[0-9]$":
659          properties:
660            azoteq,iref-enable: false
661
662        "^channel-([0-9]|1[0-9])$":
663          properties:
664            azoteq,ref-select: false
665
666          patternProperties:
667            "^event-(prox|touch)$":
668              properties:
669                azoteq,gpio-select: false
670
671        "^slider-[0-1]$": false
672
673        "^gpio-[0-2]$": false
674
675  - if:
676      properties:
677        compatible:
678          contains:
679            const: azoteq,iqs7222a
680
681    then:
682      patternProperties:
683        "^channel-([0-9]|1[0-9])$":
684          patternProperties:
685            "^event-(prox|touch)$":
686              properties:
687                azoteq,gpio-select:
688                  maxItems: 1
689                  items:
690                    maximum: 0
691
692        "^slider-[0-1]$":
693          properties:
694            azoteq,slider-size:
695              multipleOf: 16
696              maximum: 4080
697
698            azoteq,top-speed:
699              multipleOf: 4
700              maximum: 1020
701
702          patternProperties:
703            "^event-(press|tap|(swipe|flick)-(pos|neg))$":
704              properties:
705                azoteq,gpio-select:
706                  maxItems: 1
707                  items:
708                    maximum: 0
709
710    else:
711      patternProperties:
712        "^channel-([0-9]|1[0-9])$":
713          properties:
714            azoteq,ulp-allow: false
715
716        "^slider-[0-1]$":
717          patternProperties:
718            "^event-(press|tap|(swipe|flick)-(pos|neg))$":
719              properties:
720                azoteq,gesture-max-ms: false
721
722                azoteq,gesture-min-ms: false
723
724                azoteq,gesture-dist: false
725
726required:
727  - compatible
728  - reg
729  - irq-gpios
730
731additionalProperties: false
732
733examples:
734  - |
735    #include <dt-bindings/gpio/gpio.h>
736    #include <dt-bindings/input/input.h>
737
738    i2c {
739            #address-cells = <1>;
740            #size-cells = <0>;
741
742            iqs7222a@44 {
743                    compatible = "azoteq,iqs7222a";
744                    reg = <0x44>;
745                    irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
746                    azoteq,lta-beta-lp = <7>;
747                    azoteq,lta-beta-np = <8>;
748                    azoteq,counts-beta-lp = <2>;
749                    azoteq,counts-beta-np = <3>;
750                    azoteq,lta-fast-beta-lp = <3>;
751                    azoteq,lta-fast-beta-np = <4>;
752
753                    cycle-0 {
754                            azoteq,conv-period = <5>;
755                            azoteq,conv-frac = <127>;
756                            azoteq,tx-enable = <1>, <2>, <4>, <5>;
757                            azoteq,dead-time-enable;
758                            azoteq,sense-mode = <2>;
759                    };
760
761                    cycle-1 {
762                            azoteq,conv-period = <5>;
763                            azoteq,conv-frac = <127>;
764                            azoteq,tx-enable = <5>;
765                            azoteq,dead-time-enable;
766                            azoteq,sense-mode = <2>;
767                    };
768
769                    cycle-2 {
770                            azoteq,conv-period = <5>;
771                            azoteq,conv-frac = <127>;
772                            azoteq,tx-enable = <4>;
773                            azoteq,dead-time-enable;
774                            azoteq,sense-mode = <2>;
775                    };
776
777                    cycle-3 {
778                            azoteq,conv-period = <5>;
779                            azoteq,conv-frac = <127>;
780                            azoteq,tx-enable = <2>;
781                            azoteq,dead-time-enable;
782                            azoteq,sense-mode = <2>;
783                    };
784
785                    cycle-4 {
786                            azoteq,conv-period = <5>;
787                            azoteq,conv-frac = <127>;
788                            azoteq,tx-enable = <1>;
789                            azoteq,dead-time-enable;
790                            azoteq,sense-mode = <2>;
791                    };
792
793                    cycle-5 {
794                            azoteq,conv-period = <2>;
795                            azoteq,conv-frac = <0>;
796                    };
797
798                    cycle-6 {
799                            azoteq,conv-period = <2>;
800                            azoteq,conv-frac = <0>;
801                    };
802
803                    channel-0 {
804                            azoteq,ulp-allow;
805                            azoteq,global-halt;
806                            azoteq,invert-enable;
807                            azoteq,rx-enable = <3>;
808                            azoteq,ati-target = <800>;
809                            azoteq,ati-base = <208>;
810                            azoteq,ati-mode = <5>;
811                    };
812
813                    channel-1 {
814                            azoteq,global-halt;
815                            azoteq,invert-enable;
816                            azoteq,rx-enable = <3>;
817                            azoteq,ati-target = <496>;
818                            azoteq,ati-base = <208>;
819                            azoteq,ati-mode = <5>;
820                    };
821
822                    channel-2 {
823                            azoteq,global-halt;
824                            azoteq,invert-enable;
825                            azoteq,rx-enable = <3>;
826                            azoteq,ati-target = <496>;
827                            azoteq,ati-base = <208>;
828                            azoteq,ati-mode = <5>;
829                    };
830
831                    channel-3 {
832                            azoteq,global-halt;
833                            azoteq,invert-enable;
834                            azoteq,rx-enable = <3>;
835                            azoteq,ati-target = <496>;
836                            azoteq,ati-base = <208>;
837                            azoteq,ati-mode = <5>;
838                    };
839
840                    channel-4 {
841                            azoteq,global-halt;
842                            azoteq,invert-enable;
843                            azoteq,rx-enable = <3>;
844                            azoteq,ati-target = <496>;
845                            azoteq,ati-base = <208>;
846                            azoteq,ati-mode = <5>;
847                    };
848
849                    channel-5 {
850                            azoteq,ulp-allow;
851                            azoteq,global-halt;
852                            azoteq,invert-enable;
853                            azoteq,rx-enable = <6>;
854                            azoteq,ati-target = <800>;
855                            azoteq,ati-base = <144>;
856                            azoteq,ati-mode = <5>;
857                    };
858
859                    channel-6 {
860                            azoteq,global-halt;
861                            azoteq,invert-enable;
862                            azoteq,rx-enable = <6>;
863                            azoteq,ati-target = <496>;
864                            azoteq,ati-base = <160>;
865                            azoteq,ati-mode = <5>;
866
867                            event-touch {
868                                    linux,code = <KEY_MUTE>;
869                            };
870                    };
871
872                    channel-7 {
873                            azoteq,global-halt;
874                            azoteq,invert-enable;
875                            azoteq,rx-enable = <6>;
876                            azoteq,ati-target = <496>;
877                            azoteq,ati-base = <160>;
878                            azoteq,ati-mode = <5>;
879
880                            event-touch {
881                                    linux,code = <KEY_VOLUMEDOWN>;
882                            };
883                    };
884
885                    channel-8 {
886                            azoteq,global-halt;
887                            azoteq,invert-enable;
888                            azoteq,rx-enable = <6>;
889                            azoteq,ati-target = <496>;
890                            azoteq,ati-base = <160>;
891                            azoteq,ati-mode = <5>;
892
893                            event-touch {
894                                    linux,code = <KEY_VOLUMEUP>;
895                            };
896                    };
897
898                    channel-9 {
899                            azoteq,global-halt;
900                            azoteq,invert-enable;
901                            azoteq,rx-enable = <6>;
902                            azoteq,ati-target = <496>;
903                            azoteq,ati-base = <160>;
904                            azoteq,ati-mode = <5>;
905
906                            event-touch {
907                                    linux,code = <KEY_POWER>;
908                            };
909                    };
910
911                    channel-10 {
912                            azoteq,ulp-allow;
913                            azoteq,ati-target = <496>;
914                            azoteq,ati-base = <112>;
915
916                            event-touch {
917                                    linux,code = <SW_LID>;
918                                    linux,input-type = <EV_SW>;
919                            };
920                    };
921
922                    channel-11 {
923                            azoteq,ati-target = <496>;
924                            azoteq,ati-base = <112>;
925                    };
926
927                    slider-0 {
928                            azoteq,channel-select = <1>, <2>, <3>, <4>;
929                            azoteq,slider-size = <4080>;
930                            azoteq,upper-cal = <50>;
931                            azoteq,lower-cal = <30>;
932                            azoteq,top-speed = <200>;
933                            azoteq,bottom-speed = <1>;
934                            azoteq,bottom-beta = <3>;
935
936                            event-tap {
937                                    linux,code = <KEY_PLAYPAUSE>;
938                                    azoteq,gesture-max-ms = <600>;
939                                    azoteq,gesture-min-ms = <24>;
940                            };
941
942                            event-flick-pos {
943                                    linux,code = <KEY_NEXTSONG>;
944                                    azoteq,gesture-max-ms = <600>;
945                                    azoteq,gesture-dist = <816>;
946                            };
947
948                            event-flick-neg {
949                                    linux,code = <KEY_PREVIOUSSONG>;
950                            };
951                    };
952            };
953    };
954
955...
956