Commit 823b28c5 authored by Jeff LaBundy's avatar Jeff LaBundy Committed by Dmitry Torokhov
Browse files

dt-bindings: input: iqs7222: Add properties for Azoteq IQS7222D



Extend the common binding to include a new variant of the silicon,
which effectively replaces a pair of slider nodes with a trackpad
node comprising the same or similar properties.

As part of this change, the if/then/else schema have been updated
to identify properties that are not supported by the new device.

Signed-off-by: default avatarJeff LaBundy <jeff@labundy.com>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/ZKrpOdp+rM8gDekw@nixie71


Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 92b46a7b
Loading
Loading
Loading
Loading
+215 −17
Original line number Diff line number Diff line
@@ -4,14 +4,14 @@
$id: http://devicetree.org/schemas/input/azoteq,iqs7222.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Azoteq IQS7222A/B/C Capacitive Touch Controller
title: Azoteq IQS7222A/B/C/D Capacitive Touch Controller

maintainers:
  - Jeff LaBundy <jeff@labundy.com>

description: |
  The Azoteq IQS7222A, IQS7222B and IQS7222C are multichannel capacitive touch
  controllers that feature additional sensing capabilities.
  The Azoteq IQS7222A, IQS7222B, IQS7222C and IQS7222D are multichannel
  capacitive touch controllers that feature additional sensing capabilities.

  Link to datasheets: https://www.azoteq.com/

@@ -21,6 +21,7 @@ properties:
      - azoteq,iqs7222a
      - azoteq,iqs7222b
      - azoteq,iqs7222c
      - azoteq,iqs7222d

  reg:
    maxItems: 1
@@ -173,6 +174,152 @@ properties:
    maximum: 3000
    description: Specifies the report rate (in ms) during ultra-low-power mode.

  touchscreen-size-x: true
  touchscreen-size-y: true
  touchscreen-inverted-x: true
  touchscreen-inverted-y: true
  touchscreen-swapped-x-y: true

  trackpad:
    type: object
    description: Represents all channels associated with the trackpad.

    properties:
      azoteq,channel-select:
        $ref: /schemas/types.yaml#/definitions/uint32-array
        minItems: 1
        maxItems: 12
        items:
          minimum: 0
          maximum: 13
        description:
          Specifies the order of the channels that participate in the trackpad.
          Specify 255 to omit a given channel for the purpose of mapping a non-
          rectangular trackpad.

      azoteq,num-rows:
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 1
        maximum: 12
        description: Specifies the number of rows that comprise the trackpad.

      azoteq,num-cols:
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 1
        maximum: 12
        description: Specifies the number of columns that comprise the trackpad.

      azoteq,top-speed:
        $ref: /schemas/types.yaml#/definitions/uint32
        multipleOf: 4
        minimum: 0
        maximum: 1020
        description:
          Specifies the speed (in coordinates traveled per conversion) after
          which coordinate filtering is no longer applied.

      azoteq,bottom-speed:
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 255
        description:
          Specifies the speed (in coordinates traveled per conversion) after
          which coordinate filtering is linearly reduced.

      azoteq,use-prox:
        type: boolean
        description:
          Directs the trackpad to respond to the proximity states of the
          selected channels instead of their corresponding touch states.
          Note the trackpad cannot report granular coordinates during a
          state of proximity.

    patternProperties:
      "^azoteq,lower-cal-(x|y)$":
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 255
        description: Specifies the trackpad's lower starting points.

      "^azoteq,upper-cal-(x|y)$":
        $ref: /schemas/types.yaml#/definitions/uint32
        minimum: 0
        maximum: 255
        description: Specifies the trackpad's upper starting points.

      "^event-(press|tap|(swipe|flick)-(x|y)-(pos|neg))$":
        type: object
        $ref: input.yaml#
        description:
          Represents a press or gesture event reported by the trackpad. Specify
          'linux,code' under the press event to report absolute coordinates.

        properties:
          linux,code: true

          azoteq,gesture-angle-tighten:
            type: boolean
            description:
              Limits the tangent of the gesture angle to 0.5 (axial gestures
              only). If specified in one direction, the effect is applied in
              either direction.

          azoteq,gesture-max-ms:
            multipleOf: 16
            minimum: 0
            maximum: 4080
            description:
              Specifies the length of time (in ms) within which a tap, swipe
              or flick gesture must be completed in order to be acknowledged
              by the device. The number specified for any one swipe or flick
              gesture applies to all other swipe or flick gestures.

          azoteq,gesture-min-ms:
            multipleOf: 16
            minimum: 0
            maximum: 4080
            description:
              Specifies the length of time (in ms) for which a tap gesture must
              be held in order to be acknowledged by the device.

          azoteq,gesture-dist:
            $ref: /schemas/types.yaml#/definitions/uint32
            minimum: 0
            maximum: 65535
            description:
              Specifies the distance (in coordinates) across which a swipe or
              flick gesture must travel in order to be acknowledged by the
              device. The number specified for any one swipe or flick gesture
              applies to all remaining swipe or flick gestures.

              For tap gestures, this property specifies the distance from the
              original point of contact across which the contact is permitted
              to travel before the gesture is rejected by the device.

          azoteq,gpio-select:
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 1
            maxItems: 3
            items:
              minimum: 0
              maximum: 2
            description: |
              Specifies one or more GPIO mapped to the event as follows:
              0: GPIO0
              1: GPIO3
              2: GPIO4

              Note that although multiple events can be mapped to a single
              GPIO, they must all be of the same type (proximity, touch or
              trackpad gesture).

        additionalProperties: false

    required:
      - azoteq,channel-select

    additionalProperties: false

patternProperties:
  "^cycle-[0-9]$":
    type: object
@@ -288,6 +435,10 @@ patternProperties:
          Activates the reference channel in response to proximity events
          instead of touch events.

      azoteq,counts-filt-enable:
        type: boolean
        description: Applies counts filtering to the channel.

      azoteq,ati-band:
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [0, 1, 2, 3]
@@ -432,12 +583,12 @@ patternProperties:
            description: |
              Specifies one or more GPIO mapped to the event as follows:
              0: GPIO0
              1: GPIO3 (IQS7222C only)
              2: GPIO4 (IQS7222C only)
              1: GPIO3
              2: GPIO4

              Note that although multiple events can be mapped to a single
              GPIO, they must all be of the same type (proximity, touch or
              slider gesture).
              slider/trackpad gesture).

          azoteq,thresh:
            $ref: /schemas/types.yaml#/definitions/uint32
@@ -610,8 +761,8 @@ patternProperties:
            description: |
              Specifies one or more GPIO mapped to the event as follows:
              0: GPIO0
              1: GPIO3 (IQS7222C only)
              2: GPIO4 (IQS7222C only)
              1: GPIO3
              2: GPIO4

              Note that although multiple events can be mapped to a single
              GPIO, they must all be of the same type (proximity, touch or
@@ -629,8 +780,8 @@ patternProperties:
    description: |
      Represents a GPIO mapped to one or more events as follows:
      gpio-0: GPIO0
      gpio-1: GPIO3 (IQS7222C only)
      gpio-2: GPIO4 (IQS7222C only)
      gpio-1: GPIO3
      gpio-2: GPIO4

    allOf:
      - $ref: ../pinctrl/pincfg-node.yaml#
@@ -641,11 +792,53 @@ patternProperties:
    additionalProperties: false

allOf:
  - $ref: touchscreen/touchscreen.yaml#

  - if:
      properties:
        compatible:
          contains:
            const: azoteq,iqs7222b
            enum:
              - azoteq,iqs7222a
              - azoteq,iqs7222b
              - azoteq,iqs7222c

    then:
      properties:
        touchscreen-size-x: false
        touchscreen-size-y: false
        touchscreen-inverted-x: false
        touchscreen-inverted-y: false
        touchscreen-swapped-x-y: false

        trackpad: false

      patternProperties:
        "^channel-([0-9]|1[0-9])$":
          properties:
            azoteq,counts-filt-enable: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - azoteq,iqs7222b
              - azoteq,iqs7222c

    then:
      patternProperties:
        "^channel-([0-9]|1[0-9])$":
          properties:
            azoteq,ulp-allow: false

  - if:
      properties:
        compatible:
          contains:
            enum:
              - azoteq,iqs7222b
              - azoteq,iqs7222d

    then:
      patternProperties:
@@ -657,13 +850,22 @@ allOf:
          properties:
            azoteq,ref-select: false

        "^slider-[0-1]$": false

  - if:
      properties:
        compatible:
          contains:
            const: azoteq,iqs7222b

    then:
      patternProperties:
        "^channel-([0-9]|1[0-9])$":
          patternProperties:
            "^event-(prox|touch)$":
              properties:
                azoteq,gpio-select: false

        "^slider-[0-1]$": false

        "^gpio-[0-2]$": false

  - if:
@@ -704,10 +906,6 @@ allOf:

    else:
      patternProperties:
        "^channel-([0-9]|1[0-9])$":
          properties:
            azoteq,ulp-allow: false

        "^slider-[0-1]$":
          patternProperties:
            "^event-(press|tap|(swipe|flick)-(pos|neg))$":