162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/input/touchscreen/azoteq,iqs7211.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Azoteq IQS7210A/7211A/E Trackpad/Touchscreen Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Jeff LaBundy <jeff@labundy.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The Azoteq IQS7210A, IQS7211A and IQS7211E trackpad and touchscreen control-
1462306a36Sopenharmony_ci  lers employ projected-capacitance sensing and can track two contacts.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  Link to datasheets: https://www.azoteq.com/
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    enum:
2162306a36Sopenharmony_ci      - azoteq,iqs7210a
2262306a36Sopenharmony_ci      - azoteq,iqs7211a
2362306a36Sopenharmony_ci      - azoteq,iqs7211e
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  reg:
2662306a36Sopenharmony_ci    maxItems: 1
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  irq-gpios:
2962306a36Sopenharmony_ci    maxItems: 1
3062306a36Sopenharmony_ci    description:
3162306a36Sopenharmony_ci      Specifies the GPIO connected to the device's active-low RDY output. The
3262306a36Sopenharmony_ci      pin doubles as the IQS7211E's active-low MCLR input, in which case this
3362306a36Sopenharmony_ci      GPIO must be configured as open-drain.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  reset-gpios:
3662306a36Sopenharmony_ci    maxItems: 1
3762306a36Sopenharmony_ci    description:
3862306a36Sopenharmony_ci      Specifies the GPIO connected to the device's active-low MCLR input. The
3962306a36Sopenharmony_ci      device is temporarily held in hardware reset prior to initialization if
4062306a36Sopenharmony_ci      this property is present.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  azoteq,forced-comms:
4362306a36Sopenharmony_ci    type: boolean
4462306a36Sopenharmony_ci    description:
4562306a36Sopenharmony_ci      Enables forced communication; to be used with host adapters that cannot
4662306a36Sopenharmony_ci      tolerate clock stretching.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  azoteq,forced-comms-default:
4962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5062306a36Sopenharmony_ci    enum: [0, 1]
5162306a36Sopenharmony_ci    description:
5262306a36Sopenharmony_ci      Indicates if the device's OTP memory enables (1) or disables (0) forced
5362306a36Sopenharmony_ci      communication by default. Specifying this property can expedite startup
5462306a36Sopenharmony_ci      time if the default value is known.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci      If this property is not specified, communication is not initiated until
5762306a36Sopenharmony_ci      the device asserts its RDY pin shortly after exiting hardware reset. At
5862306a36Sopenharmony_ci      that point, forced communication is either enabled or disabled based on
5962306a36Sopenharmony_ci      the presence or absence of the 'azoteq,forced-comms' property.
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  azoteq,rate-active-ms:
6262306a36Sopenharmony_ci    minimum: 0
6362306a36Sopenharmony_ci    maximum: 65535
6462306a36Sopenharmony_ci    description: Specifies the report rate (in ms) during active mode.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  azoteq,rate-touch-ms:
6762306a36Sopenharmony_ci    minimum: 0
6862306a36Sopenharmony_ci    maximum: 65535
6962306a36Sopenharmony_ci    description: Specifies the report rate (in ms) during idle-touch mode.
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  azoteq,rate-idle-ms:
7262306a36Sopenharmony_ci    minimum: 0
7362306a36Sopenharmony_ci    maximum: 65535
7462306a36Sopenharmony_ci    description: Specifies the report rate (in ms) during idle mode.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  azoteq,rate-lp1-ms:
7762306a36Sopenharmony_ci    minimum: 0
7862306a36Sopenharmony_ci    maximum: 65535
7962306a36Sopenharmony_ci    description: Specifies the report rate (in ms) during low-power mode 1.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci  azoteq,rate-lp2-ms:
8262306a36Sopenharmony_ci    minimum: 0
8362306a36Sopenharmony_ci    maximum: 65535
8462306a36Sopenharmony_ci    description: Specifies the report rate (in ms) during low-power mode 2.
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  azoteq,timeout-active-ms:
8762306a36Sopenharmony_ci    multipleOf: 1000
8862306a36Sopenharmony_ci    minimum: 0
8962306a36Sopenharmony_ci    maximum: 65535000
9062306a36Sopenharmony_ci    description:
9162306a36Sopenharmony_ci      Specifies the length of time (in ms) to wait for an event before moving
9262306a36Sopenharmony_ci      from active mode to idle or idle-touch modes.
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  azoteq,timeout-touch-ms:
9562306a36Sopenharmony_ci    multipleOf: 1000
9662306a36Sopenharmony_ci    minimum: 0
9762306a36Sopenharmony_ci    maximum: 65535000
9862306a36Sopenharmony_ci    description:
9962306a36Sopenharmony_ci      Specifies the length of time (in ms) to wait for an event before moving
10062306a36Sopenharmony_ci      from idle-touch mode to idle mode.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci  azoteq,timeout-idle-ms:
10362306a36Sopenharmony_ci    multipleOf: 1000
10462306a36Sopenharmony_ci    minimum: 0
10562306a36Sopenharmony_ci    maximum: 65535000
10662306a36Sopenharmony_ci    description:
10762306a36Sopenharmony_ci      Specifies the length of time (in ms) to wait for an event before moving
10862306a36Sopenharmony_ci      from idle mode to low-power mode 1.
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci  azoteq,timeout-lp1-ms:
11162306a36Sopenharmony_ci    multipleOf: 1000
11262306a36Sopenharmony_ci    minimum: 0
11362306a36Sopenharmony_ci    maximum: 65535000
11462306a36Sopenharmony_ci    description:
11562306a36Sopenharmony_ci      Specifies the length of time (in ms) to wait for an event before moving
11662306a36Sopenharmony_ci      from low-power mode 1 to low-power mode 2.
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  azoteq,timeout-lp2-ms:
11962306a36Sopenharmony_ci    multipleOf: 1000
12062306a36Sopenharmony_ci    minimum: 0
12162306a36Sopenharmony_ci    maximum: 60000
12262306a36Sopenharmony_ci    description:
12362306a36Sopenharmony_ci      Specifies the rate (in ms) at which the trackpad reference values
12462306a36Sopenharmony_ci      are updated during low-power modes 1 and 2.
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci  azoteq,timeout-ati-ms:
12762306a36Sopenharmony_ci    multipleOf: 1000
12862306a36Sopenharmony_ci    minimum: 0
12962306a36Sopenharmony_ci    maximum: 60000
13062306a36Sopenharmony_ci    description:
13162306a36Sopenharmony_ci      Specifies the delay (in ms) before the automatic tuning implementation
13262306a36Sopenharmony_ci      (ATI) is retried in the event it fails to complete.
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci  azoteq,timeout-comms-ms:
13562306a36Sopenharmony_ci    minimum: 0
13662306a36Sopenharmony_ci    maximum: 65535
13762306a36Sopenharmony_ci    description:
13862306a36Sopenharmony_ci      Specifies the delay (in ms) before a communication window is closed.
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci  azoteq,timeout-press-ms:
14162306a36Sopenharmony_ci    multipleOf: 1000
14262306a36Sopenharmony_ci    minimum: 0
14362306a36Sopenharmony_ci    maximum: 60000
14462306a36Sopenharmony_ci    description:
14562306a36Sopenharmony_ci      Specifies the length of time (in ms) to wait before automatically
14662306a36Sopenharmony_ci      releasing a press event. Specify zero to allow the press state to
14762306a36Sopenharmony_ci      persist indefinitely.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci  azoteq,fosc-freq:
15062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
15162306a36Sopenharmony_ci    enum: [0, 1]
15262306a36Sopenharmony_ci    description: |
15362306a36Sopenharmony_ci      Specifies the device's core clock frequency as follows:
15462306a36Sopenharmony_ci      0: 14 MHz
15562306a36Sopenharmony_ci      1: 18 MHz
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci  azoteq,fosc-trim:
15862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
15962306a36Sopenharmony_ci    minimum: 0
16062306a36Sopenharmony_ci    maximum: 15
16162306a36Sopenharmony_ci    description: Specifies the device's core clock frequency trim.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci  azoteq,num-contacts:
16462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
16562306a36Sopenharmony_ci    minimum: 0
16662306a36Sopenharmony_ci    maximum: 2
16762306a36Sopenharmony_ci    default: 0
16862306a36Sopenharmony_ci    description: Specifies the number of contacts reported by the device.
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci  azoteq,contact-split:
17162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
17262306a36Sopenharmony_ci    minimum: 0
17362306a36Sopenharmony_ci    maximum: 255
17462306a36Sopenharmony_ci    description: Specifies the contact (finger) split factor.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci  azoteq,trim-x:
17762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
17862306a36Sopenharmony_ci    minimum: 0
17962306a36Sopenharmony_ci    maximum: 255
18062306a36Sopenharmony_ci    description: Specifies the horizontal trim width.
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci  azoteq,trim-y:
18362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
18462306a36Sopenharmony_ci    minimum: 0
18562306a36Sopenharmony_ci    maximum: 255
18662306a36Sopenharmony_ci    description: Specifies the vertical trim height.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci  trackpad:
18962306a36Sopenharmony_ci    type: object
19062306a36Sopenharmony_ci    description: Represents all channels associated with the trackpad.
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci    properties:
19362306a36Sopenharmony_ci      azoteq,rx-enable:
19462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
19562306a36Sopenharmony_ci        minItems: 1
19662306a36Sopenharmony_ci        maxItems: 8
19762306a36Sopenharmony_ci        items:
19862306a36Sopenharmony_ci          minimum: 0
19962306a36Sopenharmony_ci          maximum: 7
20062306a36Sopenharmony_ci        description:
20162306a36Sopenharmony_ci          Specifies the order of the CRx pin(s) associated with the trackpad.
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci      azoteq,tx-enable:
20462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
20562306a36Sopenharmony_ci        minItems: 1
20662306a36Sopenharmony_ci        maxItems: 12
20762306a36Sopenharmony_ci        items:
20862306a36Sopenharmony_ci          minimum: 0
20962306a36Sopenharmony_ci          maximum: 11
21062306a36Sopenharmony_ci        description:
21162306a36Sopenharmony_ci          Specifies the order of the CTx pin(s) associated with the trackpad.
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci      azoteq,channel-select:
21462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
21562306a36Sopenharmony_ci        minItems: 1
21662306a36Sopenharmony_ci        maxItems: 36
21762306a36Sopenharmony_ci        items:
21862306a36Sopenharmony_ci          minimum: 0
21962306a36Sopenharmony_ci          maximum: 255
22062306a36Sopenharmony_ci        description: |
22162306a36Sopenharmony_ci          Specifies the channels mapped to each cycle in the following order:
22262306a36Sopenharmony_ci          Cycle 0, slot 0
22362306a36Sopenharmony_ci          Cycle 0, slot 1
22462306a36Sopenharmony_ci          Cycle 1, slot 0
22562306a36Sopenharmony_ci          Cycle 1, slot 1
22662306a36Sopenharmony_ci          ...and so on. Specify 255 to disable a given slot.
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci      azoteq,ati-frac-div-fine:
22962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
23062306a36Sopenharmony_ci        minimum: 0
23162306a36Sopenharmony_ci        maximum: 31
23262306a36Sopenharmony_ci        description: Specifies the trackpad's ATI fine fractional divider.
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci      azoteq,ati-frac-mult-coarse:
23562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
23662306a36Sopenharmony_ci        minimum: 0
23762306a36Sopenharmony_ci        maximum: 15
23862306a36Sopenharmony_ci        description: Specifies the trackpad's ATI coarse fractional multiplier.
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci      azoteq,ati-frac-div-coarse:
24162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
24262306a36Sopenharmony_ci        minimum: 0
24362306a36Sopenharmony_ci        maximum: 31
24462306a36Sopenharmony_ci        description: Specifies the trackpad's ATI coarse fractional divider.
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ci      azoteq,ati-comp-div:
24762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
24862306a36Sopenharmony_ci        minimum: 0
24962306a36Sopenharmony_ci        maximum: 31
25062306a36Sopenharmony_ci        description: Specifies the trackpad's ATI compensation divider.
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci      azoteq,ati-target:
25362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
25462306a36Sopenharmony_ci        minimum: 0
25562306a36Sopenharmony_ci        maximum: 65535
25662306a36Sopenharmony_ci        description: Specifies the trackpad's ATI target.
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ci      azoteq,touch-enter:
25962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
26062306a36Sopenharmony_ci        minimum: 0
26162306a36Sopenharmony_ci        maximum: 255
26262306a36Sopenharmony_ci        description: Specifies the trackpad's touch entrance factor.
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ci      azoteq,touch-exit:
26562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
26662306a36Sopenharmony_ci        minimum: 0
26762306a36Sopenharmony_ci        maximum: 255
26862306a36Sopenharmony_ci        description: Specifies the trackpad's touch exit factor.
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci      azoteq,thresh:
27162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
27262306a36Sopenharmony_ci        minimum: 0
27362306a36Sopenharmony_ci        maximum: 255
27462306a36Sopenharmony_ci        description: Specifies the trackpad's stationary touch threshold.
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci      azoteq,conv-period:
27762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
27862306a36Sopenharmony_ci        minimum: 0
27962306a36Sopenharmony_ci        maximum: 255
28062306a36Sopenharmony_ci        description: Specifies the trackpad's conversion period.
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci      azoteq,conv-frac:
28362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
28462306a36Sopenharmony_ci        minimum: 0
28562306a36Sopenharmony_ci        maximum: 255
28662306a36Sopenharmony_ci        description: Specifies the trackpad's conversion frequency fraction.
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci    patternProperties:
28962306a36Sopenharmony_ci      "^event-(tap(-double|-triple)?|hold|palm|swipe-(x|y)-(pos|neg)(-hold)?)$":
29062306a36Sopenharmony_ci        type: object
29162306a36Sopenharmony_ci        $ref: ../input.yaml#
29262306a36Sopenharmony_ci        description:
29362306a36Sopenharmony_ci          Represents a gesture event reported by the trackpad. In the case of
29462306a36Sopenharmony_ci          axial gestures, the duration or distance specified in one direction
29562306a36Sopenharmony_ci          applies to both directions along the same axis.
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci        properties:
29862306a36Sopenharmony_ci          linux,code: true
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ci          azoteq,gesture-max-ms:
30162306a36Sopenharmony_ci            minimum: 0
30262306a36Sopenharmony_ci            maximum: 65535
30362306a36Sopenharmony_ci            description: Specifies the maximum duration of tap/swipe gestures.
30462306a36Sopenharmony_ci
30562306a36Sopenharmony_ci          azoteq,gesture-mid-ms:
30662306a36Sopenharmony_ci            minimum: 0
30762306a36Sopenharmony_ci            maximum: 65535
30862306a36Sopenharmony_ci            description:
30962306a36Sopenharmony_ci              Specifies the maximum duration between subsequent tap gestures
31062306a36Sopenharmony_ci              (IQS7211E only).
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ci          azoteq,gesture-min-ms:
31362306a36Sopenharmony_ci            minimum: 0
31462306a36Sopenharmony_ci            maximum: 65535
31562306a36Sopenharmony_ci            description: Specifies the minimum duration of hold gestures.
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci          azoteq,gesture-dist:
31862306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
31962306a36Sopenharmony_ci            minimum: 0
32062306a36Sopenharmony_ci            maximum: 65535
32162306a36Sopenharmony_ci            description:
32262306a36Sopenharmony_ci              Specifies the minimum (swipe) or maximum (tap and hold) distance
32362306a36Sopenharmony_ci              a finger may travel to be considered a gesture.
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci          azoteq,gesture-dist-rep:
32662306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
32762306a36Sopenharmony_ci            minimum: 0
32862306a36Sopenharmony_ci            maximum: 65535
32962306a36Sopenharmony_ci            description:
33062306a36Sopenharmony_ci              Specifies the minimum distance a finger must travel to elicit a
33162306a36Sopenharmony_ci              repeated swipe gesture (IQS7211E only).
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_ci          azoteq,gesture-angle:
33462306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
33562306a36Sopenharmony_ci            minimum: 0
33662306a36Sopenharmony_ci            maximum: 75
33762306a36Sopenharmony_ci            description:
33862306a36Sopenharmony_ci              Specifies the maximum angle (in degrees) a finger may travel to
33962306a36Sopenharmony_ci              be considered a swipe gesture.
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci          azoteq,thresh:
34262306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
34362306a36Sopenharmony_ci            minimum: 0
34462306a36Sopenharmony_ci            maximum: 42
34562306a36Sopenharmony_ci            description: Specifies the palm gesture threshold (IQS7211E only).
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ci        additionalProperties: false
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci    dependencies:
35062306a36Sopenharmony_ci      azoteq,rx-enable: ["azoteq,tx-enable"]
35162306a36Sopenharmony_ci      azoteq,tx-enable: ["azoteq,rx-enable"]
35262306a36Sopenharmony_ci      azoteq,channel-select: ["azoteq,rx-enable"]
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci    additionalProperties: false
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci  alp:
35762306a36Sopenharmony_ci    type: object
35862306a36Sopenharmony_ci    $ref: ../input.yaml#
35962306a36Sopenharmony_ci    description: Represents the alternate low-power channel (ALP).
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci    properties:
36262306a36Sopenharmony_ci      azoteq,rx-enable:
36362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
36462306a36Sopenharmony_ci        minItems: 1
36562306a36Sopenharmony_ci        maxItems: 8
36662306a36Sopenharmony_ci        items:
36762306a36Sopenharmony_ci          minimum: 0
36862306a36Sopenharmony_ci          maximum: 7
36962306a36Sopenharmony_ci        description:
37062306a36Sopenharmony_ci          Specifies the CRx pin(s) associated with the ALP in no particular
37162306a36Sopenharmony_ci          order.
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ci      azoteq,tx-enable:
37462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
37562306a36Sopenharmony_ci        minItems: 1
37662306a36Sopenharmony_ci        maxItems: 12
37762306a36Sopenharmony_ci        items:
37862306a36Sopenharmony_ci          minimum: 0
37962306a36Sopenharmony_ci          maximum: 11
38062306a36Sopenharmony_ci        description:
38162306a36Sopenharmony_ci          Specifies the CTx pin(s) associated with the ALP in no particular
38262306a36Sopenharmony_ci          order.
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_ci      azoteq,ati-frac-div-fine:
38562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
38662306a36Sopenharmony_ci        minimum: 0
38762306a36Sopenharmony_ci        maximum: 31
38862306a36Sopenharmony_ci        description: Specifies the ALP's ATI fine fractional divider.
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci      azoteq,ati-frac-mult-coarse:
39162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
39262306a36Sopenharmony_ci        minimum: 0
39362306a36Sopenharmony_ci        maximum: 15
39462306a36Sopenharmony_ci        description: Specifies the ALP's ATI coarse fractional multiplier.
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci      azoteq,ati-frac-div-coarse:
39762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
39862306a36Sopenharmony_ci        minimum: 0
39962306a36Sopenharmony_ci        maximum: 31
40062306a36Sopenharmony_ci        description: Specifies the ALP's ATI coarse fractional divider.
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ci      azoteq,ati-comp-div:
40362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
40462306a36Sopenharmony_ci        minimum: 0
40562306a36Sopenharmony_ci        maximum: 31
40662306a36Sopenharmony_ci        description: Specifies the ALP's ATI compensation divider.
40762306a36Sopenharmony_ci
40862306a36Sopenharmony_ci      azoteq,ati-target:
40962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
41062306a36Sopenharmony_ci        minimum: 0
41162306a36Sopenharmony_ci        maximum: 65535
41262306a36Sopenharmony_ci        description: Specifies the ALP's ATI target.
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci      azoteq,ati-base:
41562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
41662306a36Sopenharmony_ci        multipleOf: 8
41762306a36Sopenharmony_ci        minimum: 0
41862306a36Sopenharmony_ci        maximum: 255
41962306a36Sopenharmony_ci        description: Specifies the ALP's ATI base.
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci      azoteq,ati-mode:
42262306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
42362306a36Sopenharmony_ci        enum: [0, 1]
42462306a36Sopenharmony_ci        description: |
42562306a36Sopenharmony_ci          Specifies the ALP's ATI mode as follows:
42662306a36Sopenharmony_ci          0: Partial
42762306a36Sopenharmony_ci          1: Full
42862306a36Sopenharmony_ci
42962306a36Sopenharmony_ci      azoteq,sense-mode:
43062306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
43162306a36Sopenharmony_ci        enum: [0, 1]
43262306a36Sopenharmony_ci        description: |
43362306a36Sopenharmony_ci          Specifies the ALP's sensing mode as follows:
43462306a36Sopenharmony_ci          0: Self capacitive
43562306a36Sopenharmony_ci          1: Mutual capacitive
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ci      azoteq,debounce-enter:
43862306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
43962306a36Sopenharmony_ci        minimum: 0
44062306a36Sopenharmony_ci        maximum: 255
44162306a36Sopenharmony_ci        description: Specifies the ALP's debounce entrance factor.
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci      azoteq,debounce-exit:
44462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
44562306a36Sopenharmony_ci        minimum: 0
44662306a36Sopenharmony_ci        maximum: 255
44762306a36Sopenharmony_ci        description: Specifies the ALP's debounce exit factor.
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci      azoteq,thresh:
45062306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
45162306a36Sopenharmony_ci        minimum: 0
45262306a36Sopenharmony_ci        maximum: 65535
45362306a36Sopenharmony_ci        description: Specifies the ALP's proximity or touch threshold.
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ci      azoteq,conv-period:
45662306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
45762306a36Sopenharmony_ci        minimum: 0
45862306a36Sopenharmony_ci        maximum: 255
45962306a36Sopenharmony_ci        description: Specifies the ALP's conversion period.
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ci      azoteq,conv-frac:
46262306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
46362306a36Sopenharmony_ci        minimum: 0
46462306a36Sopenharmony_ci        maximum: 255
46562306a36Sopenharmony_ci        description: Specifies the ALP's conversion frequency fraction.
46662306a36Sopenharmony_ci
46762306a36Sopenharmony_ci      linux,code: true
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_ci    additionalProperties: false
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci  button:
47262306a36Sopenharmony_ci    type: object
47362306a36Sopenharmony_ci    description: Represents the inductive or capacitive button.
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ci    properties:
47662306a36Sopenharmony_ci      azoteq,ati-frac-div-fine:
47762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
47862306a36Sopenharmony_ci        minimum: 0
47962306a36Sopenharmony_ci        maximum: 31
48062306a36Sopenharmony_ci        description: Specifies the button's ATI fine fractional divider.
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci      azoteq,ati-frac-mult-coarse:
48362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
48462306a36Sopenharmony_ci        minimum: 0
48562306a36Sopenharmony_ci        maximum: 15
48662306a36Sopenharmony_ci        description: Specifies the button's ATI coarse fractional multiplier.
48762306a36Sopenharmony_ci
48862306a36Sopenharmony_ci      azoteq,ati-frac-div-coarse:
48962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
49062306a36Sopenharmony_ci        minimum: 0
49162306a36Sopenharmony_ci        maximum: 31
49262306a36Sopenharmony_ci        description: Specifies the button's ATI coarse fractional divider.
49362306a36Sopenharmony_ci
49462306a36Sopenharmony_ci      azoteq,ati-comp-div:
49562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
49662306a36Sopenharmony_ci        minimum: 0
49762306a36Sopenharmony_ci        maximum: 31
49862306a36Sopenharmony_ci        description: Specifies the button's ATI compensation divider.
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ci      azoteq,ati-target:
50162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
50262306a36Sopenharmony_ci        minimum: 0
50362306a36Sopenharmony_ci        maximum: 65535
50462306a36Sopenharmony_ci        description: Specifies the button's ATI target.
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci      azoteq,ati-base:
50762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
50862306a36Sopenharmony_ci        multipleOf: 8
50962306a36Sopenharmony_ci        minimum: 0
51062306a36Sopenharmony_ci        maximum: 255
51162306a36Sopenharmony_ci        description: Specifies the button's ATI base.
51262306a36Sopenharmony_ci
51362306a36Sopenharmony_ci      azoteq,ati-mode:
51462306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
51562306a36Sopenharmony_ci        enum: [0, 1]
51662306a36Sopenharmony_ci        description: |
51762306a36Sopenharmony_ci          Specifies the button's ATI mode as follows:
51862306a36Sopenharmony_ci          0: Partial
51962306a36Sopenharmony_ci          1: Full
52062306a36Sopenharmony_ci
52162306a36Sopenharmony_ci      azoteq,sense-mode:
52262306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
52362306a36Sopenharmony_ci        enum: [0, 1, 2]
52462306a36Sopenharmony_ci        description: |
52562306a36Sopenharmony_ci          Specifies the button's sensing mode as follows:
52662306a36Sopenharmony_ci          0: Self capacitive
52762306a36Sopenharmony_ci          1: Mutual capacitive
52862306a36Sopenharmony_ci          2: Inductive
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_ci      azoteq,touch-enter:
53162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
53262306a36Sopenharmony_ci        minimum: 0
53362306a36Sopenharmony_ci        maximum: 255
53462306a36Sopenharmony_ci        description: Specifies the button's touch entrance factor.
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci      azoteq,touch-exit:
53762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
53862306a36Sopenharmony_ci        minimum: 0
53962306a36Sopenharmony_ci        maximum: 255
54062306a36Sopenharmony_ci        description: Specifies the button's touch exit factor.
54162306a36Sopenharmony_ci
54262306a36Sopenharmony_ci      azoteq,debounce-enter:
54362306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
54462306a36Sopenharmony_ci        minimum: 0
54562306a36Sopenharmony_ci        maximum: 255
54662306a36Sopenharmony_ci        description: Specifies the button's debounce entrance factor.
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ci      azoteq,debounce-exit:
54962306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
55062306a36Sopenharmony_ci        minimum: 0
55162306a36Sopenharmony_ci        maximum: 255
55262306a36Sopenharmony_ci        description: Specifies the button's debounce exit factor.
55362306a36Sopenharmony_ci
55462306a36Sopenharmony_ci      azoteq,thresh:
55562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
55662306a36Sopenharmony_ci        minimum: 0
55762306a36Sopenharmony_ci        maximum: 65535
55862306a36Sopenharmony_ci        description: Specifies the button's proximity threshold.
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_ci      azoteq,conv-period:
56162306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
56262306a36Sopenharmony_ci        minimum: 0
56362306a36Sopenharmony_ci        maximum: 255
56462306a36Sopenharmony_ci        description: Specifies the button's conversion period.
56562306a36Sopenharmony_ci
56662306a36Sopenharmony_ci      azoteq,conv-frac:
56762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
56862306a36Sopenharmony_ci        minimum: 0
56962306a36Sopenharmony_ci        maximum: 255
57062306a36Sopenharmony_ci        description: Specifies the button's conversion frequency fraction.
57162306a36Sopenharmony_ci
57262306a36Sopenharmony_ci    patternProperties:
57362306a36Sopenharmony_ci      "^event-(prox|touch)$":
57462306a36Sopenharmony_ci        type: object
57562306a36Sopenharmony_ci        $ref: ../input.yaml#
57662306a36Sopenharmony_ci        description:
57762306a36Sopenharmony_ci          Represents a proximity or touch event reported by the button.
57862306a36Sopenharmony_ci
57962306a36Sopenharmony_ci        properties:
58062306a36Sopenharmony_ci          linux,code: true
58162306a36Sopenharmony_ci
58262306a36Sopenharmony_ci        additionalProperties: false
58362306a36Sopenharmony_ci
58462306a36Sopenharmony_ci    additionalProperties: false
58562306a36Sopenharmony_ci
58662306a36Sopenharmony_ci  wakeup-source: true
58762306a36Sopenharmony_ci
58862306a36Sopenharmony_ci  touchscreen-size-x: true
58962306a36Sopenharmony_ci  touchscreen-size-y: true
59062306a36Sopenharmony_ci  touchscreen-inverted-x: true
59162306a36Sopenharmony_ci  touchscreen-inverted-y: true
59262306a36Sopenharmony_ci  touchscreen-swapped-x-y: true
59362306a36Sopenharmony_ci
59462306a36Sopenharmony_cidependencies:
59562306a36Sopenharmony_ci  touchscreen-size-x: ["azoteq,num-contacts"]
59662306a36Sopenharmony_ci  touchscreen-size-y: ["azoteq,num-contacts"]
59762306a36Sopenharmony_ci  touchscreen-inverted-x: ["azoteq,num-contacts"]
59862306a36Sopenharmony_ci  touchscreen-inverted-y: ["azoteq,num-contacts"]
59962306a36Sopenharmony_ci  touchscreen-swapped-x-y: ["azoteq,num-contacts"]
60062306a36Sopenharmony_ci
60162306a36Sopenharmony_cirequired:
60262306a36Sopenharmony_ci  - compatible
60362306a36Sopenharmony_ci  - reg
60462306a36Sopenharmony_ci  - irq-gpios
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_ciadditionalProperties: false
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ciallOf:
60962306a36Sopenharmony_ci  - $ref: touchscreen.yaml#
61062306a36Sopenharmony_ci
61162306a36Sopenharmony_ci  - if:
61262306a36Sopenharmony_ci      properties:
61362306a36Sopenharmony_ci        compatible:
61462306a36Sopenharmony_ci          contains:
61562306a36Sopenharmony_ci            const: azoteq,iqs7210a
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_ci    then:
61862306a36Sopenharmony_ci      properties:
61962306a36Sopenharmony_ci        alp:
62062306a36Sopenharmony_ci          properties:
62162306a36Sopenharmony_ci            azoteq,rx-enable:
62262306a36Sopenharmony_ci              maxItems: 4
62362306a36Sopenharmony_ci              items:
62462306a36Sopenharmony_ci                minimum: 4
62562306a36Sopenharmony_ci
62662306a36Sopenharmony_ci    else:
62762306a36Sopenharmony_ci      properties:
62862306a36Sopenharmony_ci        azoteq,timeout-press-ms: false
62962306a36Sopenharmony_ci
63062306a36Sopenharmony_ci        alp:
63162306a36Sopenharmony_ci          properties:
63262306a36Sopenharmony_ci            azoteq,ati-mode: false
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci        button: false
63562306a36Sopenharmony_ci
63662306a36Sopenharmony_ci  - if:
63762306a36Sopenharmony_ci      properties:
63862306a36Sopenharmony_ci        compatible:
63962306a36Sopenharmony_ci          contains:
64062306a36Sopenharmony_ci            const: azoteq,iqs7211e
64162306a36Sopenharmony_ci
64262306a36Sopenharmony_ci    then:
64362306a36Sopenharmony_ci      properties:
64462306a36Sopenharmony_ci        reset-gpios: false
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ci        trackpad:
64762306a36Sopenharmony_ci          properties:
64862306a36Sopenharmony_ci            azoteq,tx-enable:
64962306a36Sopenharmony_ci              maxItems: 13
65062306a36Sopenharmony_ci              items:
65162306a36Sopenharmony_ci                maximum: 12
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ci        alp:
65462306a36Sopenharmony_ci          properties:
65562306a36Sopenharmony_ci            azoteq,tx-enable:
65662306a36Sopenharmony_ci              maxItems: 13
65762306a36Sopenharmony_ci              items:
65862306a36Sopenharmony_ci                maximum: 12
65962306a36Sopenharmony_ci
66062306a36Sopenharmony_ciexamples:
66162306a36Sopenharmony_ci  - |
66262306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
66362306a36Sopenharmony_ci    #include <dt-bindings/input/input.h>
66462306a36Sopenharmony_ci
66562306a36Sopenharmony_ci    i2c {
66662306a36Sopenharmony_ci            #address-cells = <1>;
66762306a36Sopenharmony_ci            #size-cells = <0>;
66862306a36Sopenharmony_ci
66962306a36Sopenharmony_ci            touch@56 {
67062306a36Sopenharmony_ci                    compatible = "azoteq,iqs7210a";
67162306a36Sopenharmony_ci                    reg = <0x56>;
67262306a36Sopenharmony_ci                    irq-gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
67362306a36Sopenharmony_ci                    reset-gpios = <&gpio 17 (GPIO_ACTIVE_LOW |
67462306a36Sopenharmony_ci                                             GPIO_PUSH_PULL)>;
67562306a36Sopenharmony_ci                    azoteq,num-contacts = <2>;
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_ci                    trackpad {
67862306a36Sopenharmony_ci                            azoteq,rx-enable = <6>, <5>, <4>, <3>, <2>;
67962306a36Sopenharmony_ci                            azoteq,tx-enable = <1>, <7>, <8>, <9>, <10>;
68062306a36Sopenharmony_ci                    };
68162306a36Sopenharmony_ci
68262306a36Sopenharmony_ci                    button {
68362306a36Sopenharmony_ci                            azoteq,sense-mode = <2>;
68462306a36Sopenharmony_ci                            azoteq,touch-enter = <40>;
68562306a36Sopenharmony_ci                            azoteq,touch-exit = <36>;
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci                            event-touch {
68862306a36Sopenharmony_ci                                    linux,code = <KEY_HOME>;
68962306a36Sopenharmony_ci                            };
69062306a36Sopenharmony_ci                    };
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ci                    alp {
69362306a36Sopenharmony_ci                            azoteq,sense-mode = <1>;
69462306a36Sopenharmony_ci                            linux,code = <KEY_POWER>;
69562306a36Sopenharmony_ci                    };
69662306a36Sopenharmony_ci            };
69762306a36Sopenharmony_ci    };
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_ci  - |
70062306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
70162306a36Sopenharmony_ci    #include <dt-bindings/input/input.h>
70262306a36Sopenharmony_ci
70362306a36Sopenharmony_ci    i2c {
70462306a36Sopenharmony_ci            #address-cells = <1>;
70562306a36Sopenharmony_ci            #size-cells = <0>;
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ci            touch@56 {
70862306a36Sopenharmony_ci                    compatible = "azoteq,iqs7211e";
70962306a36Sopenharmony_ci                    reg = <0x56>;
71062306a36Sopenharmony_ci                    irq-gpios = <&gpio 4 (GPIO_ACTIVE_LOW |
71162306a36Sopenharmony_ci                                          GPIO_OPEN_DRAIN)>;
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ci                    trackpad {
71462306a36Sopenharmony_ci                            event-tap {
71562306a36Sopenharmony_ci                                    linux,code = <KEY_PLAYPAUSE>;
71662306a36Sopenharmony_ci                            };
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ci                            event-tap-double {
71962306a36Sopenharmony_ci                                    linux,code = <KEY_SHUFFLE>;
72062306a36Sopenharmony_ci                            };
72162306a36Sopenharmony_ci
72262306a36Sopenharmony_ci                            event-tap-triple {
72362306a36Sopenharmony_ci                                    linux,code = <KEY_AGAIN>;
72462306a36Sopenharmony_ci                            };
72562306a36Sopenharmony_ci
72662306a36Sopenharmony_ci                            event-hold {
72762306a36Sopenharmony_ci                                    linux,code = <KEY_STOP>;
72862306a36Sopenharmony_ci                            };
72962306a36Sopenharmony_ci
73062306a36Sopenharmony_ci                            event-palm {
73162306a36Sopenharmony_ci                                    linux,code = <KEY_EXIT>;
73262306a36Sopenharmony_ci                            };
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_ci                            event-swipe-x-pos {
73562306a36Sopenharmony_ci                                    linux,code = <KEY_REWIND>;
73662306a36Sopenharmony_ci                            };
73762306a36Sopenharmony_ci
73862306a36Sopenharmony_ci                            event-swipe-x-pos-hold {
73962306a36Sopenharmony_ci                                    linux,code = <KEY_PREVIOUS>;
74062306a36Sopenharmony_ci                            };
74162306a36Sopenharmony_ci
74262306a36Sopenharmony_ci                            event-swipe-x-neg {
74362306a36Sopenharmony_ci                                    linux,code = <KEY_FASTFORWARD>;
74462306a36Sopenharmony_ci                            };
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_ci                            event-swipe-x-neg-hold {
74762306a36Sopenharmony_ci                                    linux,code = <KEY_NEXT>;
74862306a36Sopenharmony_ci                            };
74962306a36Sopenharmony_ci
75062306a36Sopenharmony_ci                            event-swipe-y-pos {
75162306a36Sopenharmony_ci                                    linux,code = <KEY_VOLUMEUP>;
75262306a36Sopenharmony_ci                            };
75362306a36Sopenharmony_ci
75462306a36Sopenharmony_ci                            event-swipe-y-pos-hold {
75562306a36Sopenharmony_ci                                    linux,code = <KEY_MUTE>;
75662306a36Sopenharmony_ci                            };
75762306a36Sopenharmony_ci
75862306a36Sopenharmony_ci                            event-swipe-y-neg {
75962306a36Sopenharmony_ci                                    linux,code = <KEY_VOLUMEDOWN>;
76062306a36Sopenharmony_ci                            };
76162306a36Sopenharmony_ci
76262306a36Sopenharmony_ci                            event-swipe-y-neg-hold {
76362306a36Sopenharmony_ci                                    linux,code = <KEY_MUTE>;
76462306a36Sopenharmony_ci                            };
76562306a36Sopenharmony_ci                    };
76662306a36Sopenharmony_ci            };
76762306a36Sopenharmony_ci    };
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_ci...
770