summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/input/iqs62x-keys.yaml
blob: 0aa951f0ab9242b5173a298e4064a45c0c4f8b08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/iqs62x-keys.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Azoteq IQS620A/621/622/624/625 Keys and Switches

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

allOf:
  - $ref: input.yaml#

description: |
  The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors
  feature a variety of self-capacitive, mutual-inductive and Hall-effect sens-
  ing capabilities that can facilitate a variety of contactless key and switch
  applications.

  These functions are collectively represented by a "keys" child node from the
  parent MFD driver. See Documentation/devicetree/bindings/mfd/iqs62x.yaml for
  further details and examples. Sensor hardware configuration (self-capacitive
  vs. mutual-inductive, etc.) is selected based on the device's firmware.

properties:
  compatible:
    enum:
      - azoteq,iqs620a-keys
      - azoteq,iqs621-keys
      - azoteq,iqs622-keys
      - azoteq,iqs624-keys
      - azoteq,iqs625-keys

  linux,keycodes:
    minItems: 1
    maxItems: 16
    description: |
      Specifies the numeric keycodes associated with each available touch or
      proximity event according to the following table. An 'x' indicates the
      event is supported for a given device. Specify 0 for unused events.

      -------------------------------------------------------------------------
      | #  | Event              | IQS620A | IQS621 | IQS622 | IQS624 | IQS625 |
      -------------------------------------------------------------------------
      | 0  | CH0 Touch          |    x    |    x   |    x   |    x   |    x   |
      |    | Antenna 1 Touch*   |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 1  | CH0 Proximity      |    x    |    x   |    x   |    x   |    x   |
      |    | Antenna 1 Prox.*   |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 2  | CH1 Touch          |    x    |    x   |    x   |    x   |    x   |
      |    | Ant. 1 Deep Touch* |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 3  | CH1 Proximity      |    x    |    x   |    x   |    x   |    x   |
      -------------------------------------------------------------------------
      | 4  | CH2 Touch          |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 5  | CH2 Proximity      |    x    |        |        |        |        |
      |    | Antenna 2 Prox.*   |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 6  | Metal (+) Touch**  |    x    |    x   |        |        |        |
      |    | Ant. 2 Deep Touch* |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 7  | Metal (+) Prox.**  |    x    |    x   |        |        |        |
      |    | Antenna 2 Touch*   |    x    |        |        |        |        |
      -------------------------------------------------------------------------
      | 8  | Metal (-) Touch**  |    x    |    x   |        |        |        |
      -------------------------------------------------------------------------
      | 9  | Metal (-) Prox.**  |    x    |    x   |        |        |        |
      -------------------------------------------------------------------------
      | 10 | SAR Active***      |    x    |        |    x   |        |        |
      -------------------------------------------------------------------------
      | 11 | SAR Quick Rel.***  |    x    |        |    x   |        |        |
      -------------------------------------------------------------------------
      | 12 | SAR Movement***    |    x    |        |    x   |        |        |
      -------------------------------------------------------------------------
      | 13 | SAR Filter Halt*** |    x    |        |    x   |        |        |
      -------------------------------------------------------------------------
      | 14 | Wheel Up           |         |        |        |    x   |        |
      -------------------------------------------------------------------------
      | 15 | Wheel Down         |         |        |        |    x   |        |
      -------------------------------------------------------------------------
      *   Two-channel SAR. Replaces CH0-2 plus metal touch and proximity events
          if enabled via firmware.
      **  "+" and "-" refer to the polarity of a channel's delta (LTA - counts),
          where "LTA" is defined as the channel's long-term average.
      *** One-channel SAR. Replaces CH0-2 touch and proximity events if enabled
          via firmware.

patternProperties:
  "^hall-switch-(north|south)$":
    type: object
    $ref: input.yaml#
    description:
      Represents north/south-field Hall-effect sensor touch or proximity
      events. Note that north/south-field orientation is reversed on the
      IQS620AXzCSR device due to its flip-chip package.

    properties:
      linux,code: true

      azoteq,use-prox:
        $ref: /schemas/types.yaml#/definitions/flag
        description:
          If present, specifies that Hall-effect sensor reporting should
          use the device's wide-range proximity threshold instead of its
          close-range touch threshold (default).

    required:
      - linux,code

    additionalProperties: false

if:
  properties:
    compatible:
      contains:
        enum:
          - azoteq,iqs624-keys
          - azoteq,iqs625-keys
then:
  patternProperties:
    "^hall-switch-(north|south)$": false

required:
  - compatible
  - linux,keycodes

additionalProperties: false

...