185004Sdfr# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
285004Sdfr%YAML 1.2
385004Sdfr---
485004Sdfr$id: http://devicetree.org/schemas/input/touchscreen/azoteq,iqs7211.yaml#
585004Sdfr$schema: http://devicetree.org/meta-schemas/core.yaml#
685004Sdfr
785004Sdfrtitle: Azoteq IQS7210A/7211A/E Trackpad/Touchscreen Controller
885004Sdfr
985004Sdfrmaintainers:
1085004Sdfr  - Jeff LaBundy <jeff@labundy.com>
1185004Sdfr
1285004Sdfrdescription: |
1385004Sdfr  The Azoteq IQS7210A, IQS7211A and IQS7211E trackpad and touchscreen control-
1485004Sdfr  lers employ projected-capacitance sensing and can track two contacts.
1585004Sdfr
1685004Sdfr  Link to datasheets: https://www.azoteq.com/
1785004Sdfr
1885004Sdfrproperties:
1985004Sdfr  compatible:
2085004Sdfr    enum:
2185004Sdfr      - azoteq,iqs7210a
2285004Sdfr      - azoteq,iqs7211a
2385004Sdfr      - azoteq,iqs7211e
2485004Sdfr
2585004Sdfr  reg:
2685004Sdfr    maxItems: 1
2785004Sdfr
2885004Sdfr  irq-gpios:
2985004Sdfr    maxItems: 1
3085004Sdfr    description:
3185004Sdfr      Specifies the GPIO connected to the device's active-low RDY output. The
3285004Sdfr      pin doubles as the IQS7211E's active-low MCLR input, in which case this
3385004Sdfr      GPIO must be configured as open-drain.
3485004Sdfr
3585004Sdfr  reset-gpios:
3697026Smarcel    maxItems: 1
3785004Sdfr    description:
3885004Sdfr      Specifies the GPIO connected to the device's active-low MCLR input. The
3985004Sdfr      device is temporarily held in hardware reset prior to initialization if
4085004Sdfr      this property is present.
4185004Sdfr
4285004Sdfr  azoteq,forced-comms:
4385004Sdfr    type: boolean
4485004Sdfr    description:
4585004Sdfr      Enables forced communication; to be used with host adapters that cannot
4685004Sdfr      tolerate clock stretching.
4785004Sdfr
4885004Sdfr  azoteq,forced-comms-default:
4985004Sdfr    $ref: /schemas/types.yaml#/definitions/uint32
5085004Sdfr    enum: [0, 1]
5185004Sdfr    description:
5285004Sdfr      Indicates if the device's OTP memory enables (1) or disables (0) forced
5385004Sdfr      communication by default. Specifying this property can expedite startup
5485004Sdfr      time if the default value is known.
5585004Sdfr
5685004Sdfr      If this property is not specified, communication is not initiated until
5785004Sdfr      the device asserts its RDY pin shortly after exiting hardware reset. At
5885004Sdfr      that point, forced communication is either enabled or disabled based on
5985004Sdfr      the presence or absence of the 'azoteq,forced-comms' property.
6085004Sdfr
6185004Sdfr  azoteq,rate-active-ms:
6285004Sdfr    minimum: 0
6385004Sdfr    maximum: 65535
6485004Sdfr    description: Specifies the report rate (in ms) during active mode.
6585004Sdfr
6685004Sdfr  azoteq,rate-touch-ms:
6785004Sdfr    minimum: 0
6885004Sdfr    maximum: 65535
6985004Sdfr    description: Specifies the report rate (in ms) during idle-touch mode.
7085004Sdfr
7185004Sdfr  azoteq,rate-idle-ms:
7285004Sdfr    minimum: 0
7385004Sdfr    maximum: 65535
7485004Sdfr    description: Specifies the report rate (in ms) during idle mode.
7585004Sdfr
7685004Sdfr  azoteq,rate-lp1-ms:
7785004Sdfr    minimum: 0
7885004Sdfr    maximum: 65535
7985004Sdfr    description: Specifies the report rate (in ms) during low-power mode 1.
8085004Sdfr
8185004Sdfr  azoteq,rate-lp2-ms:
8285004Sdfr    minimum: 0
8385004Sdfr    maximum: 65535
8485004Sdfr    description: Specifies the report rate (in ms) during low-power mode 2.
8585004Sdfr
8685004Sdfr  azoteq,timeout-active-ms:
8785004Sdfr    multipleOf: 1000
8885004Sdfr    minimum: 0
8985004Sdfr    maximum: 65535000
9085004Sdfr    description:
9185004Sdfr      Specifies the length of time (in ms) to wait for an event before moving
9285004Sdfr      from active mode to idle or idle-touch modes.
9385004Sdfr
9485004Sdfr  azoteq,timeout-touch-ms:
9585004Sdfr    multipleOf: 1000
9685004Sdfr    minimum: 0
9785004Sdfr    maximum: 65535000
9885004Sdfr    description:
9985004Sdfr      Specifies the length of time (in ms) to wait for an event before moving
10085004Sdfr      from idle-touch mode to idle mode.
101112419Sarun
102112419Sarun  azoteq,timeout-idle-ms:
103112419Sarun    multipleOf: 1000
104112419Sarun    minimum: 0
105112419Sarun    maximum: 65535000
106112419Sarun    description:
107112419Sarun      Specifies the length of time (in ms) to wait for an event before moving
108112419Sarun      from idle mode to low-power mode 1.
109112419Sarun
110112419Sarun  azoteq,timeout-lp1-ms:
111112419Sarun    multipleOf: 1000
112112419Sarun    minimum: 0
113112419Sarun    maximum: 65535000
114112419Sarun    description:
115112419Sarun      Specifies the length of time (in ms) to wait for an event before moving
116112419Sarun      from low-power mode 1 to low-power mode 2.
117112419Sarun
118112419Sarun  azoteq,timeout-lp2-ms:
119112419Sarun    multipleOf: 1000
120112419Sarun    minimum: 0
121112419Sarun    maximum: 60000
122112419Sarun    description:
123112419Sarun      Specifies the rate (in ms) at which the trackpad reference values
124112419Sarun      are updated during low-power modes 1 and 2.
125115396Skan
126115396Skan  azoteq,timeout-ati-ms:
127112419Sarun    multipleOf: 1000
128112419Sarun    minimum: 0
129112419Sarun    maximum: 60000
130112419Sarun    description:
131112419Sarun      Specifies the delay (in ms) before the automatic tuning implementation
132112419Sarun      (ATI) is retried in the event it fails to complete.
133112419Sarun
134112419Sarun  azoteq,timeout-comms-ms:
135112419Sarun    minimum: 0
136112419Sarun    maximum: 65535
137112419Sarun    description:
138112419Sarun      Specifies the delay (in ms) before a communication window is closed.
139115396Skan
140112419Sarun  azoteq,timeout-press-ms:
141112419Sarun    multipleOf: 1000
142112419Sarun    minimum: 0
143112419Sarun    maximum: 60000
144115396Skan    description:
145112419Sarun      Specifies the length of time (in ms) to wait before automatically
146112419Sarun      releasing a press event. Specify zero to allow the press state to
147112419Sarun      persist indefinitely.
148112419Sarun
149112419Sarun  azoteq,fosc-freq:
150112419Sarun    $ref: /schemas/types.yaml#/definitions/uint32
15185004Sdfr    enum: [0, 1]
15285004Sdfr    description: |
15385004Sdfr      Specifies the device's core clock frequency as follows:
154112419Sarun      0: 14 MHz
15585004Sdfr      1: 18 MHz
156112419Sarun
15785004Sdfr  azoteq,fosc-trim:
15885004Sdfr    $ref: /schemas/types.yaml#/definitions/uint32
15985004Sdfr    minimum: 0
160154491Smarcel    maximum: 15
16185004Sdfr    description: Specifies the device's core clock frequency trim.
16285004Sdfr
16385004Sdfr  azoteq,num-contacts:
16485004Sdfr    $ref: /schemas/types.yaml#/definitions/uint32
16585004Sdfr    minimum: 0
16685004Sdfr    maximum: 2
16785004Sdfr    default: 0
16885004Sdfr    description: Specifies the number of contacts reported by the device.
169154491Smarcel
17085004Sdfr  azoteq,contact-split:
17185004Sdfr    $ref: /schemas/types.yaml#/definitions/uint32
17285004Sdfr    minimum: 0
17385004Sdfr    maximum: 255
17485004Sdfr    description: Specifies the contact (finger) split factor.
17585004Sdfr
17685004Sdfr  azoteq,trim-x:
17785004Sdfr    $ref: /schemas/types.yaml#/definitions/uint32
17895544Smarcel    minimum: 0
17995544Smarcel    maximum: 255
18095544Smarcel    description: Specifies the horizontal trim width.
18185004Sdfr
18285004Sdfr  azoteq,trim-y:
18385004Sdfr    $ref: /schemas/types.yaml#/definitions/uint32
18485004Sdfr    minimum: 0
185154491Smarcel    maximum: 255
18685004Sdfr    description: Specifies the vertical trim height.
18785004Sdfr
18885004Sdfr  trackpad:
189115396Skan    type: object
19085004Sdfr    description: Represents all channels associated with the trackpad.
19195544Smarcel
19285004Sdfr    properties:
19385004Sdfr      azoteq,rx-enable:
19485004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32-array
195112419Sarun        minItems: 1
19685004Sdfr        maxItems: 8
19785004Sdfr        items:
19885004Sdfr          minimum: 0
19995540Smarcel          maximum: 7
20095540Smarcel        description:
20195540Smarcel          Specifies the order of the CRx pin(s) associated with the trackpad.
20295544Smarcel
20395544Smarcel      azoteq,tx-enable:
20495544Smarcel        $ref: /schemas/types.yaml#/definitions/uint32-array
20585004Sdfr        minItems: 1
206112419Sarun        maxItems: 12
207112419Sarun        items:
208112419Sarun          minimum: 0
209112419Sarun          maximum: 11
210112419Sarun        description:
211112419Sarun          Specifies the order of the CTx pin(s) associated with the trackpad.
212112419Sarun
213112419Sarun      azoteq,channel-select:
214112419Sarun        $ref: /schemas/types.yaml#/definitions/uint32-array
21595544Smarcel        minItems: 1
21695544Smarcel        maxItems: 36
21795544Smarcel        items:
21885004Sdfr          minimum: 0
219112419Sarun          maximum: 255
22095544Smarcel        description: |
22195544Smarcel          Specifies the channels mapped to each cycle in the following order:
22295544Smarcel          Cycle 0, slot 0
223112419Sarun          Cycle 0, slot 1
22495544Smarcel          Cycle 1, slot 0
22595544Smarcel          Cycle 1, slot 1
22695544Smarcel          ...and so on. Specify 255 to disable a given slot.
22795544Smarcel
22895544Smarcel      azoteq,ati-frac-div-fine:
22985004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
23085004Sdfr        minimum: 0
23185004Sdfr        maximum: 31
232154491Smarcel        description: Specifies the trackpad's ATI fine fractional divider.
233102155Smarcel
234102155Smarcel      azoteq,ati-frac-mult-coarse:
235102155Smarcel        $ref: /schemas/types.yaml#/definitions/uint32
236102155Smarcel        minimum: 0
237102155Smarcel        maximum: 15
238102155Smarcel        description: Specifies the trackpad's ATI coarse fractional multiplier.
239102155Smarcel
240102155Smarcel      azoteq,ati-frac-div-coarse:
241102155Smarcel        $ref: /schemas/types.yaml#/definitions/uint32
242102155Smarcel        minimum: 0
243102155Smarcel        maximum: 31
244102155Smarcel        description: Specifies the trackpad's ATI coarse fractional divider.
245102155Smarcel
246102155Smarcel      azoteq,ati-comp-div:
247102155Smarcel        $ref: /schemas/types.yaml#/definitions/uint32
248102155Smarcel        minimum: 0
249102155Smarcel        maximum: 31
250102155Smarcel        description: Specifies the trackpad's ATI compensation divider.
251102155Smarcel
252102155Smarcel      azoteq,ati-target:
253102155Smarcel        $ref: /schemas/types.yaml#/definitions/uint32
254102155Smarcel        minimum: 0
255102155Smarcel        maximum: 65535
256102155Smarcel        description: Specifies the trackpad's ATI target.
257102155Smarcel
258102155Smarcel      azoteq,touch-enter:
259102155Smarcel        $ref: /schemas/types.yaml#/definitions/uint32
260102155Smarcel        minimum: 0
261102155Smarcel        maximum: 255
262154491Smarcel        description: Specifies the trackpad's touch entrance factor.
263133063Sdfr
264133063Sdfr      azoteq,touch-exit:
265133063Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
266133063Sdfr        minimum: 0
267133063Sdfr        maximum: 255
268133063Sdfr        description: Specifies the trackpad's touch exit factor.
269133063Sdfr
270133063Sdfr      azoteq,thresh:
271133063Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
272133063Sdfr        minimum: 0
273133063Sdfr        maximum: 255
274133063Sdfr        description: Specifies the trackpad's stationary touch threshold.
275154491Smarcel
276133063Sdfr      azoteq,conv-period:
277133063Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
278133063Sdfr        minimum: 0
279133063Sdfr        maximum: 255
280133063Sdfr        description: Specifies the trackpad's conversion period.
281133063Sdfr
282133063Sdfr      azoteq,conv-frac:
283133063Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
284133063Sdfr        minimum: 0
285133063Sdfr        maximum: 255
286133063Sdfr        description: Specifies the trackpad's conversion frequency fraction.
287133063Sdfr
288154491Smarcel    patternProperties:
289133063Sdfr      "^event-(tap(-double|-triple)?|hold|palm|swipe-(x|y)-(pos|neg)(-hold)?)$":
290133063Sdfr        type: object
291133063Sdfr        $ref: ../input.yaml#
292133063Sdfr        description:
293133063Sdfr          Represents a gesture event reported by the trackpad. In the case of
294133063Sdfr          axial gestures, the duration or distance specified in one direction
295133063Sdfr          applies to both directions along the same axis.
296133063Sdfr
297133063Sdfr        properties:
298133063Sdfr          linux,code: true
299133063Sdfr
300133063Sdfr          azoteq,gesture-max-ms:
301133063Sdfr            minimum: 0
302133063Sdfr            maximum: 65535
303133063Sdfr            description: Specifies the maximum duration of tap/swipe gestures.
304133063Sdfr
305133063Sdfr          azoteq,gesture-mid-ms:
306133063Sdfr            minimum: 0
307133063Sdfr            maximum: 65535
308133063Sdfr            description:
309133063Sdfr              Specifies the maximum duration between subsequent tap gestures
310133063Sdfr              (IQS7211E only).
311133063Sdfr
312133063Sdfr          azoteq,gesture-min-ms:
313133063Sdfr            minimum: 0
314133063Sdfr            maximum: 65535
315133063Sdfr            description: Specifies the minimum duration of hold gestures.
316133063Sdfr
317154491Smarcel          azoteq,gesture-dist:
318115940Smarcel            $ref: /schemas/types.yaml#/definitions/uint32
319115940Smarcel            minimum: 0
32085004Sdfr            maximum: 65535
321153503Smarcel            description:
32285004Sdfr              Specifies the minimum (swipe) or maximum (tap and hold) distance
323153503Smarcel              a finger may travel to be considered a gesture.
32485004Sdfr
32585004Sdfr          azoteq,gesture-dist-rep:
32685004Sdfr            $ref: /schemas/types.yaml#/definitions/uint32
32785004Sdfr            minimum: 0
32885004Sdfr            maximum: 65535
32985004Sdfr            description:
33085004Sdfr              Specifies the minimum distance a finger must travel to elicit a
33185004Sdfr              repeated swipe gesture (IQS7211E only).
33285004Sdfr
33385004Sdfr          azoteq,gesture-angle:
33485004Sdfr            $ref: /schemas/types.yaml#/definitions/uint32
33585004Sdfr            minimum: 0
33685004Sdfr            maximum: 75
33785004Sdfr            description:
33885004Sdfr              Specifies the maximum angle (in degrees) a finger may travel to
33998629Sdillon              be considered a swipe gesture.
34098629Sdillon
34185004Sdfr          azoteq,thresh:
34298629Sdillon            $ref: /schemas/types.yaml#/definitions/uint32
34398629Sdillon            minimum: 0
34498629Sdillon            maximum: 42
34598629Sdillon            description: Specifies the palm gesture threshold (IQS7211E only).
34698629Sdillon
34798629Sdillon        additionalProperties: false
34898629Sdillon
34985004Sdfr    dependencies:
35085004Sdfr      azoteq,rx-enable: ["azoteq,tx-enable"]
35185004Sdfr      azoteq,tx-enable: ["azoteq,rx-enable"]
35285004Sdfr      azoteq,channel-select: ["azoteq,rx-enable"]
35385004Sdfr
35485004Sdfr    additionalProperties: false
35585004Sdfr
35685004Sdfr  alp:
35785004Sdfr    type: object
358112419Sarun    $ref: ../input.yaml#
35998629Sdillon    description: Represents the alternate low-power channel (ALP).
36085004Sdfr
36185004Sdfr    properties:
36285004Sdfr      azoteq,rx-enable:
36385004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32-array
36485004Sdfr        minItems: 1
365112419Sarun        maxItems: 8
36698629Sdillon        items:
36785004Sdfr          minimum: 0
36885004Sdfr          maximum: 7
36998629Sdillon        description:
37098629Sdillon          Specifies the CRx pin(s) associated with the ALP in no particular
37198629Sdillon          order.
37298629Sdillon
373112419Sarun      azoteq,tx-enable:
374115396Skan        $ref: /schemas/types.yaml#/definitions/uint32-array
375115396Skan        minItems: 1
376112419Sarun        maxItems: 12
377112419Sarun        items:
378112419Sarun          minimum: 0
379112419Sarun          maximum: 11
380112419Sarun        description:
381112419Sarun          Specifies the CTx pin(s) associated with the ALP in no particular
38298629Sdillon          order.
38385004Sdfr
38485004Sdfr      azoteq,ati-frac-div-fine:
38585004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
38685004Sdfr        minimum: 0
38785004Sdfr        maximum: 31
38885004Sdfr        description: Specifies the ALP's ATI fine fractional divider.
38985004Sdfr
39085004Sdfr      azoteq,ati-frac-mult-coarse:
39185004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
39285004Sdfr        minimum: 0
39385004Sdfr        maximum: 15
39485004Sdfr        description: Specifies the ALP's ATI coarse fractional multiplier.
39585004Sdfr
39685004Sdfr      azoteq,ati-frac-div-coarse:
39785004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
39885004Sdfr        minimum: 0
399154491Smarcel        maximum: 31
40085004Sdfr        description: Specifies the ALP's ATI coarse fractional divider.
40185004Sdfr
40285004Sdfr      azoteq,ati-comp-div:
40385004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
40485004Sdfr        minimum: 0
40585004Sdfr        maximum: 31
40685004Sdfr        description: Specifies the ALP's ATI compensation divider.
40785004Sdfr
40885004Sdfr      azoteq,ati-target:
40985004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
41085004Sdfr        minimum: 0
41185004Sdfr        maximum: 65535
41285004Sdfr        description: Specifies the ALP's ATI target.
41385004Sdfr
414154491Smarcel      azoteq,ati-base:
41585004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
41685004Sdfr        multipleOf: 8
41785004Sdfr        minimum: 0
41885004Sdfr        maximum: 255
41985004Sdfr        description: Specifies the ALP's ATI base.
42085004Sdfr
42185004Sdfr      azoteq,ati-mode:
42285004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
42385004Sdfr        enum: [0, 1]
42485004Sdfr        description: |
42585004Sdfr          Specifies the ALP's ATI mode as follows:
42685004Sdfr          0: Partial
42785004Sdfr          1: Full
42885004Sdfr
42985004Sdfr      azoteq,sense-mode:
43085004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
43185004Sdfr        enum: [0, 1]
43285004Sdfr        description: |
43385004Sdfr          Specifies the ALP's sensing mode as follows:
43485004Sdfr          0: Self capacitive
43585004Sdfr          1: Mutual capacitive
43685004Sdfr
43785004Sdfr      azoteq,debounce-enter:
43885004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
43985004Sdfr        minimum: 0
44085004Sdfr        maximum: 255
44185004Sdfr        description: Specifies the ALP's debounce entrance factor.
442154491Smarcel
44385004Sdfr      azoteq,debounce-exit:
44485004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
44585004Sdfr        minimum: 0
44685004Sdfr        maximum: 255
44785004Sdfr        description: Specifies the ALP's debounce exit factor.
44885004Sdfr
44985004Sdfr      azoteq,thresh:
45085004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
451107071Stmm        minimum: 0
45285004Sdfr        maximum: 65535
45385004Sdfr        description: Specifies the ALP's proximity or touch threshold.
45485004Sdfr
45585004Sdfr      azoteq,conv-period:
45685004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
45785004Sdfr        minimum: 0
45885004Sdfr        maximum: 255
45985004Sdfr        description: Specifies the ALP's conversion period.
46085004Sdfr
46185004Sdfr      azoteq,conv-frac:
46285004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
46385004Sdfr        minimum: 0
46485004Sdfr        maximum: 255
46585004Sdfr        description: Specifies the ALP's conversion frequency fraction.
46685004Sdfr
46785004Sdfr      linux,code: true
46885004Sdfr
46985004Sdfr    additionalProperties: false
47085004Sdfr
47185004Sdfr  button:
472107071Stmm    type: object
47385004Sdfr    description: Represents the inductive or capacitive button.
47485004Sdfr
47585004Sdfr    properties:
47685004Sdfr      azoteq,ati-frac-div-fine:
47785004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
47885004Sdfr        minimum: 0
47985004Sdfr        maximum: 31
48085004Sdfr        description: Specifies the button's ATI fine fractional divider.
481107071Stmm
482107071Stmm      azoteq,ati-frac-mult-coarse:
48385004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
48485004Sdfr        minimum: 0
48585004Sdfr        maximum: 15
48685004Sdfr        description: Specifies the button's ATI coarse fractional multiplier.
48785004Sdfr
48885004Sdfr      azoteq,ati-frac-div-coarse:
48985004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
49085004Sdfr        minimum: 0
49185004Sdfr        maximum: 31
49285004Sdfr        description: Specifies the button's ATI coarse fractional divider.
49385004Sdfr
49485004Sdfr      azoteq,ati-comp-div:
49585004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
49685004Sdfr        minimum: 0
49785004Sdfr        maximum: 31
49885004Sdfr        description: Specifies the button's ATI compensation divider.
49985004Sdfr
50085004Sdfr      azoteq,ati-target:
50185004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
50285004Sdfr        minimum: 0
50385004Sdfr        maximum: 65535
50485004Sdfr        description: Specifies the button's ATI target.
50585004Sdfr
50685004Sdfr      azoteq,ati-base:
50785004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
50885004Sdfr        multipleOf: 8
50985004Sdfr        minimum: 0
51085004Sdfr        maximum: 255
51185004Sdfr        description: Specifies the button's ATI base.
51285004Sdfr
51385004Sdfr      azoteq,ati-mode:
51485004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
51585004Sdfr        enum: [0, 1]
51685004Sdfr        description: |
51785004Sdfr          Specifies the button's ATI mode as follows:
51885004Sdfr          0: Partial
51985004Sdfr          1: Full
52085004Sdfr
52185004Sdfr      azoteq,sense-mode:
52285004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
52385004Sdfr        enum: [0, 1, 2]
52485004Sdfr        description: |
52585004Sdfr          Specifies the button's sensing mode as follows:
52685004Sdfr          0: Self capacitive
52785004Sdfr          1: Mutual capacitive
52885004Sdfr          2: Inductive
52985004Sdfr
53085004Sdfr      azoteq,touch-enter:
53185004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
53285004Sdfr        minimum: 0
53385004Sdfr        maximum: 255
53485004Sdfr        description: Specifies the button's touch entrance factor.
53585004Sdfr
536112419Sarun      azoteq,touch-exit:
53785004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
53885004Sdfr        minimum: 0
53985004Sdfr        maximum: 255
54085004Sdfr        description: Specifies the button's touch exit factor.
54185004Sdfr
54285004Sdfr      azoteq,debounce-enter:
54385004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
54485004Sdfr        minimum: 0
54585004Sdfr        maximum: 255
54685004Sdfr        description: Specifies the button's debounce entrance factor.
54785677Speter
54885677Speter      azoteq,debounce-exit:
54985677Speter        $ref: /schemas/types.yaml#/definitions/uint32
55085677Speter        minimum: 0
55185677Speter        maximum: 255
55285677Speter        description: Specifies the button's debounce exit factor.
55385677Speter
55485677Speter      azoteq,thresh:
55585677Speter        $ref: /schemas/types.yaml#/definitions/uint32
55685677Speter        minimum: 0
55785677Speter        maximum: 65535
55885677Speter        description: Specifies the button's proximity threshold.
55985004Sdfr
56085004Sdfr      azoteq,conv-period:
56185004Sdfr        $ref: /schemas/types.yaml#/definitions/uint32
56285004Sdfr        minimum: 0
56385004Sdfr        maximum: 255
56485004Sdfr        description: Specifies the button's conversion period.
56585004Sdfr
56685004Sdfr      azoteq,conv-frac:
567154958Smarcel        $ref: /schemas/types.yaml#/definitions/uint32
568102249Smarcel        minimum: 0
569102249Smarcel        maximum: 255
570102249Smarcel        description: Specifies the button's conversion frequency fraction.
571102249Smarcel
572102249Smarcel    patternProperties:
573102249Smarcel      "^event-(prox|touch)$":
574102249Smarcel        type: object
57585004Sdfr        $ref: ../input.yaml#
57685004Sdfr        description:
57785004Sdfr          Represents a proximity or touch event reported by the button.
578154958Smarcel
57985004Sdfr        properties:
58085004Sdfr          linux,code: true
58185004Sdfr
58285004Sdfr        additionalProperties: false
583154958Smarcel
58485004Sdfr    additionalProperties: false
58585004Sdfr
58685004Sdfr  wakeup-source: true
58785004Sdfr
58885004Sdfr  touchscreen-size-x: true
58985004Sdfr  touchscreen-size-y: true
59085004Sdfr  touchscreen-inverted-x: true
59185004Sdfr  touchscreen-inverted-y: true
59285004Sdfr  touchscreen-swapped-x-y: true
593133063Sdfr
594133063Sdfrdependencies:
595133063Sdfr  touchscreen-size-x: ["azoteq,num-contacts"]
596133063Sdfr  touchscreen-size-y: ["azoteq,num-contacts"]
597161728Smarcel  touchscreen-inverted-x: ["azoteq,num-contacts"]
598133063Sdfr  touchscreen-inverted-y: ["azoteq,num-contacts"]
599133063Sdfr  touchscreen-swapped-x-y: ["azoteq,num-contacts"]
600133063Sdfr
601133063Sdfrrequired:
602133063Sdfr  - compatible
603133063Sdfr  - reg
604133063Sdfr  - irq-gpios
605133063Sdfr
606161798SmarceladditionalProperties: false
607161728Smarcel
608133063SdfrallOf:
609133063Sdfr  - $ref: touchscreen.yaml#
610133063Sdfr
611133063Sdfr  - if:
612133063Sdfr      properties:
613133063Sdfr        compatible:
614133063Sdfr          contains:
615133063Sdfr            const: azoteq,iqs7210a
616
617    then:
618      properties:
619        alp:
620          properties:
621            azoteq,rx-enable:
622              maxItems: 4
623              items:
624                minimum: 4
625
626    else:
627      properties:
628        azoteq,timeout-press-ms: false
629
630        alp:
631          properties:
632            azoteq,ati-mode: false
633
634        button: false
635
636  - if:
637      properties:
638        compatible:
639          contains:
640            const: azoteq,iqs7211e
641
642    then:
643      properties:
644        reset-gpios: false
645
646        trackpad:
647          properties:
648            azoteq,tx-enable:
649              maxItems: 13
650              items:
651                maximum: 12
652
653        alp:
654          properties:
655            azoteq,tx-enable:
656              maxItems: 13
657              items:
658                maximum: 12
659
660examples:
661  - |
662    #include <dt-bindings/gpio/gpio.h>
663    #include <dt-bindings/input/input.h>
664
665    i2c {
666            #address-cells = <1>;
667            #size-cells = <0>;
668
669            touch@56 {
670                    compatible = "azoteq,iqs7210a";
671                    reg = <0x56>;
672                    irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
673                    reset-gpios = <&gpio 17 (GPIO_ACTIVE_LOW |
674                                             GPIO_PUSH_PULL)>;
675                    azoteq,num-contacts = <2>;
676
677                    trackpad {
678                            azoteq,rx-enable = <6>, <5>, <4>, <3>, <2>;
679                            azoteq,tx-enable = <1>, <7>, <8>, <9>, <10>;
680                    };
681
682                    button {
683                            azoteq,sense-mode = <2>;
684                            azoteq,touch-enter = <40>;
685                            azoteq,touch-exit = <36>;
686
687                            event-touch {
688                                    linux,code = <KEY_HOME>;
689                            };
690                    };
691
692                    alp {
693                            azoteq,sense-mode = <1>;
694                            linux,code = <KEY_POWER>;
695                    };
696            };
697    };
698
699  - |
700    #include <dt-bindings/gpio/gpio.h>
701    #include <dt-bindings/input/input.h>
702
703    i2c {
704            #address-cells = <1>;
705            #size-cells = <0>;
706
707            touch@56 {
708                    compatible = "azoteq,iqs7211e";
709                    reg = <0x56>;
710                    irq-gpios = <&gpio 4 (GPIO_ACTIVE_LOW |
711                                          GPIO_OPEN_DRAIN)>;
712
713                    trackpad {
714                            event-tap {
715                                    linux,code = <KEY_PLAYPAUSE>;
716                            };
717
718                            event-tap-double {
719                                    linux,code = <KEY_SHUFFLE>;
720                            };
721
722                            event-tap-triple {
723                                    linux,code = <KEY_AGAIN>;
724                            };
725
726                            event-hold {
727                                    linux,code = <KEY_STOP>;
728                            };
729
730                            event-palm {
731                                    linux,code = <KEY_EXIT>;
732                            };
733
734                            event-swipe-x-pos {
735                                    linux,code = <KEY_REWIND>;
736                            };
737
738                            event-swipe-x-pos-hold {
739                                    linux,code = <KEY_PREVIOUS>;
740                            };
741
742                            event-swipe-x-neg {
743                                    linux,code = <KEY_FASTFORWARD>;
744                            };
745
746                            event-swipe-x-neg-hold {
747                                    linux,code = <KEY_NEXT>;
748                            };
749
750                            event-swipe-y-pos {
751                                    linux,code = <KEY_VOLUMEUP>;
752                            };
753
754                            event-swipe-y-pos-hold {
755                                    linux,code = <KEY_MUTE>;
756                            };
757
758                            event-swipe-y-neg {
759                                    linux,code = <KEY_VOLUMEDOWN>;
760                            };
761
762                            event-swipe-y-neg-hold {
763                                    linux,code = <KEY_MUTE>;
764                            };
765                    };
766            };
767    };
768
769...
770