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        description:
421          Represents a proximity or touch event reported by the channel.
422
423        properties:
424          azoteq,gpio-select:
425            $ref: /schemas/types.yaml#/definitions/uint32-array
426            minItems: 1
427            maxItems: 3
428            items:
429              minimum: 0
430              maximum: 2
431            description: |
432              Specifies one or more GPIO mapped to the event as follows:
433              0: GPIO0
434              1: GPIO3 (IQS7222C only)
435              2: GPIO4 (IQS7222C only)
436
437              Note that although multiple events can be mapped to a single
438              GPIO, they must all be of the same type (proximity, touch or
439              slider gesture).
440
441          azoteq,thresh:
442            $ref: /schemas/types.yaml#/definitions/uint32
443            description:
444              Specifies the threshold for the event. Valid entries range from
445              0-127 and 0-255 for proximity and touch events, respectively.
446
447          azoteq,hyst:
448            $ref: /schemas/types.yaml#/definitions/uint32
449            minimum: 0
450            maximum: 255
451            description:
452              Specifies the hysteresis for the event (touch events only).
453
454          azoteq,timeout-press-ms:
455            multipleOf: 500
456            minimum: 0
457            maximum: 127500
458            description:
459              Specifies the length of time (in ms) to wait before automatically
460              releasing a press event. Specify zero to allow the press state to
461              persist indefinitely.
462
463              The IQS7222B does not feature channel-specific timeouts; the time-
464              out specified for any one channel applies to all channels.
465
466          linux,code:
467            $ref: /schemas/types.yaml#/definitions/uint32
468            description:
469              Numeric key or switch code associated with the event. Specify
470              KEY_RESERVED (0) to opt out of event reporting.
471
472          linux,input-type:
473            $ref: /schemas/types.yaml#/definitions/uint32
474            enum: [1, 5]
475            default: 1
476            description:
477              Specifies whether the event is to be interpreted as a key (1)
478              or a switch (5).
479
480        required:
481          - linux,code
482
483        additionalProperties: false
484
485    dependencies:
486      azoteq,ref-weight: ["azoteq,ref-select"]
487      azoteq,use-prox: ["azoteq,ref-select"]
488
489    additionalProperties: false
490
491  "^slider-[0-1]$":
492    type: object
493    description: Represents a slider comprising three or four channels.
494
495    properties:
496      azoteq,channel-select:
497        $ref: /schemas/types.yaml#/definitions/uint32-array
498        minItems: 3
499        maxItems: 4
500        items:
501          minimum: 0
502          maximum: 9
503        description:
504          Specifies the order of the channels that participate in the slider.
505
506      azoteq,slider-size:
507        $ref: /schemas/types.yaml#/definitions/uint32
508        minimum: 0
509        maximum: 65535
510        description:
511          Specifies the slider's one-dimensional resolution, equal to the
512          maximum coordinate plus one.
513
514      azoteq,lower-cal:
515        $ref: /schemas/types.yaml#/definitions/uint32
516        minimum: 0
517        maximum: 255
518        description: Specifies the slider's lower starting point.
519
520      azoteq,upper-cal:
521        $ref: /schemas/types.yaml#/definitions/uint32
522        minimum: 0
523        maximum: 255
524        description: Specifies the slider's upper starting point.
525
526      azoteq,top-speed:
527        $ref: /schemas/types.yaml#/definitions/uint32
528        minimum: 0
529        maximum: 65535
530        description:
531          Specifies the speed of movement after which coordinate filtering is
532          no longer applied.
533
534      azoteq,bottom-speed:
535        $ref: /schemas/types.yaml#/definitions/uint32
536        minimum: 0
537        maximum: 255
538        description:
539          Specifies the speed of movement after which coordinate filtering is
540          linearly reduced.
541
542      azoteq,bottom-beta:
543        $ref: /schemas/types.yaml#/definitions/uint32
544        minimum: 0
545        maximum: 7
546        description:
547          Specifies the coordinate filter damping factor to be applied
548          while the speed of movement is below that which is specified
549          by azoteq,bottom-speed.
550
551      azoteq,static-beta:
552        type: boolean
553        description:
554          Applies the coordinate filter damping factor specified by
555          azoteq,bottom-beta regardless of the speed of movement.
556
557      azoteq,use-prox:
558        type: boolean
559        description:
560          Directs the slider to respond to the proximity states of the selected
561          channels instead of their corresponding touch states. Note the slider
562          cannot report granular coordinates during a state of proximity.
563
564      linux,axis:
565        $ref: /schemas/types.yaml#/definitions/uint32
566        description:
567          Specifies the absolute axis to which coordinates are mapped. Specify
568          ABS_WHEEL to operate the slider as a wheel (IQS7222C only).
569
570    patternProperties:
571      "^event-(press|tap|(swipe|flick)-(pos|neg))$":
572        type: object
573        description:
574          Represents a press or gesture (IQS7222A only) event reported by
575          the slider.
576
577        properties:
578          linux,code:
579            $ref: /schemas/types.yaml#/definitions/uint32
580            description: Numeric key code associated with the event.
581
582          azoteq,gesture-max-ms:
583            multipleOf: 4
584            minimum: 0
585            maximum: 1020
586            description:
587              Specifies the length of time (in ms) within which a tap, swipe
588              or flick gesture must be completed in order to be acknowledged
589              by the device. The number specified for any one swipe or flick
590              gesture applies to all remaining swipe or flick gestures.
591
592          azoteq,gesture-min-ms:
593            multipleOf: 4
594            minimum: 0
595            maximum: 124
596            description:
597              Specifies the length of time (in ms) for which a tap gesture must
598              be held in order to be acknowledged by the device.
599
600          azoteq,gesture-dist:
601            $ref: /schemas/types.yaml#/definitions/uint32
602            multipleOf: 16
603            minimum: 0
604            maximum: 4080
605            description:
606              Specifies the distance across which a swipe or flick gesture must
607              travel in order to be acknowledged by the device. The number spec-
608              ified for any one swipe or flick gesture applies to all remaining
609              swipe or flick gestures.
610
611          azoteq,gpio-select:
612            $ref: /schemas/types.yaml#/definitions/uint32-array
613            minItems: 1
614            maxItems: 3
615            items:
616              minimum: 0
617              maximum: 2
618            description: |
619              Specifies one or more GPIO mapped to the event as follows:
620              0: GPIO0
621              1: GPIO3 (IQS7222C only)
622              2: GPIO4 (IQS7222C only)
623
624              Note that although multiple events can be mapped to a single
625              GPIO, they must all be of the same type (proximity, touch or
626              slider gesture).
627
628        required:
629          - linux,code
630
631        additionalProperties: false
632
633    required:
634      - azoteq,channel-select
635
636    additionalProperties: false
637
638  "^gpio-[0-2]$":
639    type: object
640    description: |
641      Represents a GPIO mapped to one or more events as follows:
642      gpio-0: GPIO0
643      gpio-1: GPIO3 (IQS7222C only)
644      gpio-2: GPIO4 (IQS7222C only)
645
646    allOf:
647      - $ref: ../pinctrl/pincfg-node.yaml#
648
649    properties:
650      drive-open-drain: true
651
652    additionalProperties: false
653
654allOf:
655  - if:
656      properties:
657        compatible:
658          contains:
659            const: azoteq,iqs7222b
660
661    then:
662      patternProperties:
663        "^cycle-[0-9]$":
664          properties:
665            azoteq,iref-enable: false
666
667        "^channel-([0-9]|1[0-9])$":
668          properties:
669            azoteq,ref-select: false
670
671          patternProperties:
672            "^event-(prox|touch)$":
673              properties:
674                azoteq,gpio-select: false
675
676        "^slider-[0-1]$": false
677
678        "^gpio-[0-2]$": false
679
680  - if:
681      properties:
682        compatible:
683          contains:
684            const: azoteq,iqs7222a
685
686    then:
687      patternProperties:
688        "^channel-([0-9]|1[0-9])$":
689          patternProperties:
690            "^event-(prox|touch)$":
691              properties:
692                azoteq,gpio-select:
693                  maxItems: 1
694                  items:
695                    maximum: 0
696
697        "^slider-[0-1]$":
698          properties:
699            azoteq,slider-size:
700              multipleOf: 16
701              maximum: 4080
702
703            azoteq,top-speed:
704              multipleOf: 4
705              maximum: 1020
706
707          patternProperties:
708            "^event-(press|tap|(swipe|flick)-(pos|neg))$":
709              properties:
710                azoteq,gpio-select:
711                  maxItems: 1
712                  items:
713                    maximum: 0
714
715    else:
716      patternProperties:
717        "^channel-([0-9]|1[0-9])$":
718          properties:
719            azoteq,ulp-allow: false
720
721        "^slider-[0-1]$":
722          patternProperties:
723            "^event-(press|tap|(swipe|flick)-(pos|neg))$":
724              properties:
725                azoteq,gesture-max-ms: false
726
727                azoteq,gesture-min-ms: false
728
729                azoteq,gesture-dist: false
730
731required:
732  - compatible
733  - reg
734  - irq-gpios
735
736additionalProperties: false
737
738examples:
739  - |
740    #include <dt-bindings/gpio/gpio.h>
741    #include <dt-bindings/input/input.h>
742
743    i2c {
744            #address-cells = <1>;
745            #size-cells = <0>;
746
747            iqs7222a@44 {
748                    compatible = "azoteq,iqs7222a";
749                    reg = <0x44>;
750                    irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
751                    azoteq,lta-beta-lp = <7>;
752                    azoteq,lta-beta-np = <8>;
753                    azoteq,counts-beta-lp = <2>;
754                    azoteq,counts-beta-np = <3>;
755                    azoteq,lta-fast-beta-lp = <3>;
756                    azoteq,lta-fast-beta-np = <4>;
757
758                    cycle-0 {
759                            azoteq,conv-period = <5>;
760                            azoteq,conv-frac = <127>;
761                            azoteq,tx-enable = <1>, <2>, <4>, <5>;
762                            azoteq,dead-time-enable;
763                            azoteq,sense-mode = <2>;
764                    };
765
766                    cycle-1 {
767                            azoteq,conv-period = <5>;
768                            azoteq,conv-frac = <127>;
769                            azoteq,tx-enable = <5>;
770                            azoteq,dead-time-enable;
771                            azoteq,sense-mode = <2>;
772                    };
773
774                    cycle-2 {
775                            azoteq,conv-period = <5>;
776                            azoteq,conv-frac = <127>;
777                            azoteq,tx-enable = <4>;
778                            azoteq,dead-time-enable;
779                            azoteq,sense-mode = <2>;
780                    };
781
782                    cycle-3 {
783                            azoteq,conv-period = <5>;
784                            azoteq,conv-frac = <127>;
785                            azoteq,tx-enable = <2>;
786                            azoteq,dead-time-enable;
787                            azoteq,sense-mode = <2>;
788                    };
789
790                    cycle-4 {
791                            azoteq,conv-period = <5>;
792                            azoteq,conv-frac = <127>;
793                            azoteq,tx-enable = <1>;
794                            azoteq,dead-time-enable;
795                            azoteq,sense-mode = <2>;
796                    };
797
798                    cycle-5 {
799                            azoteq,conv-period = <2>;
800                            azoteq,conv-frac = <0>;
801                    };
802
803                    cycle-6 {
804                            azoteq,conv-period = <2>;
805                            azoteq,conv-frac = <0>;
806                    };
807
808                    channel-0 {
809                            azoteq,ulp-allow;
810                            azoteq,global-halt;
811                            azoteq,invert-enable;
812                            azoteq,rx-enable = <3>;
813                            azoteq,ati-target = <800>;
814                            azoteq,ati-base = <208>;
815                            azoteq,ati-mode = <5>;
816                    };
817
818                    channel-1 {
819                            azoteq,global-halt;
820                            azoteq,invert-enable;
821                            azoteq,rx-enable = <3>;
822                            azoteq,ati-target = <496>;
823                            azoteq,ati-base = <208>;
824                            azoteq,ati-mode = <5>;
825                    };
826
827                    channel-2 {
828                            azoteq,global-halt;
829                            azoteq,invert-enable;
830                            azoteq,rx-enable = <3>;
831                            azoteq,ati-target = <496>;
832                            azoteq,ati-base = <208>;
833                            azoteq,ati-mode = <5>;
834                    };
835
836                    channel-3 {
837                            azoteq,global-halt;
838                            azoteq,invert-enable;
839                            azoteq,rx-enable = <3>;
840                            azoteq,ati-target = <496>;
841                            azoteq,ati-base = <208>;
842                            azoteq,ati-mode = <5>;
843                    };
844
845                    channel-4 {
846                            azoteq,global-halt;
847                            azoteq,invert-enable;
848                            azoteq,rx-enable = <3>;
849                            azoteq,ati-target = <496>;
850                            azoteq,ati-base = <208>;
851                            azoteq,ati-mode = <5>;
852                    };
853
854                    channel-5 {
855                            azoteq,ulp-allow;
856                            azoteq,global-halt;
857                            azoteq,invert-enable;
858                            azoteq,rx-enable = <6>;
859                            azoteq,ati-target = <800>;
860                            azoteq,ati-base = <144>;
861                            azoteq,ati-mode = <5>;
862                    };
863
864                    channel-6 {
865                            azoteq,global-halt;
866                            azoteq,invert-enable;
867                            azoteq,rx-enable = <6>;
868                            azoteq,ati-target = <496>;
869                            azoteq,ati-base = <160>;
870                            azoteq,ati-mode = <5>;
871
872                            event-touch {
873                                    linux,code = <KEY_MUTE>;
874                            };
875                    };
876
877                    channel-7 {
878                            azoteq,global-halt;
879                            azoteq,invert-enable;
880                            azoteq,rx-enable = <6>;
881                            azoteq,ati-target = <496>;
882                            azoteq,ati-base = <160>;
883                            azoteq,ati-mode = <5>;
884
885                            event-touch {
886                                    linux,code = <KEY_VOLUMEDOWN>;
887                            };
888                    };
889
890                    channel-8 {
891                            azoteq,global-halt;
892                            azoteq,invert-enable;
893                            azoteq,rx-enable = <6>;
894                            azoteq,ati-target = <496>;
895                            azoteq,ati-base = <160>;
896                            azoteq,ati-mode = <5>;
897
898                            event-touch {
899                                    linux,code = <KEY_VOLUMEUP>;
900                            };
901                    };
902
903                    channel-9 {
904                            azoteq,global-halt;
905                            azoteq,invert-enable;
906                            azoteq,rx-enable = <6>;
907                            azoteq,ati-target = <496>;
908                            azoteq,ati-base = <160>;
909                            azoteq,ati-mode = <5>;
910
911                            event-touch {
912                                    linux,code = <KEY_POWER>;
913                            };
914                    };
915
916                    channel-10 {
917                            azoteq,ulp-allow;
918                            azoteq,ati-target = <496>;
919                            azoteq,ati-base = <112>;
920
921                            event-touch {
922                                    linux,code = <SW_LID>;
923                                    linux,input-type = <EV_SW>;
924                            };
925                    };
926
927                    channel-11 {
928                            azoteq,ati-target = <496>;
929                            azoteq,ati-base = <112>;
930                    };
931
932                    slider-0 {
933                            azoteq,channel-select = <1>, <2>, <3>, <4>;
934                            azoteq,slider-size = <4080>;
935                            azoteq,upper-cal = <50>;
936                            azoteq,lower-cal = <30>;
937                            azoteq,top-speed = <200>;
938                            azoteq,bottom-speed = <1>;
939                            azoteq,bottom-beta = <3>;
940
941                            event-tap {
942                                    linux,code = <KEY_PLAYPAUSE>;
943                                    azoteq,gesture-max-ms = <600>;
944                                    azoteq,gesture-min-ms = <24>;
945                            };
946
947                            event-flick-pos {
948                                    linux,code = <KEY_NEXTSONG>;
949                                    azoteq,gesture-max-ms = <600>;
950                                    azoteq,gesture-dist = <816>;
951                            };
952
953                            event-flick-neg {
954                                    linux,code = <KEY_PREVIOUSSONG>;
955                            };
956                    };
957            };
958    };
959
960...
961