| 1 | |
| 2 | %YAML 1.2
|
| 3 | ---
|
| 4 | $id: http://devicetree.org/schemas/input/touchscreen/touchscreen.yaml#
|
| 5 | $schema: http://devicetree.org/meta-schemas/core.yaml#
|
| 6 |
|
| 7 | title: Common touchscreen
|
| 8 |
|
| 9 | maintainers:
|
| 10 | - Dmitry Torokhov <[email protected]>
|
| 11 |
|
| 12 | properties:
|
| 13 | panel:
|
| 14 | description: If this touchscreen is integrally connected to a panel, this
|
| 15 | is a reference to that panel. The presence of this reference indicates
|
| 16 | that the touchscreen should be power sequenced together with the panel
|
| 17 | and that they may share power and/or reset signals.
|
| 18 | $ref: /schemas/types.yaml#/definitions/phandle
|
| 19 |
|
| 20 | touchscreen-min-x:
|
| 21 | description: minimum x coordinate reported
|
| 22 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 23 | default: 0
|
| 24 |
|
| 25 | touchscreen-min-y:
|
| 26 | description: minimum y coordinate reported
|
| 27 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 28 | default: 0
|
| 29 |
|
| 30 | touchscreen-size-x:
|
| 31 | description: horizontal resolution of touchscreen (maximum x coordinate reported + 1)
|
| 32 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 33 |
|
| 34 | touchscreen-size-y:
|
| 35 | description: vertical resolution of touchscreen (maximum y coordinate reported + 1)
|
| 36 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 37 |
|
| 38 | touchscreen-max-pressure:
|
| 39 | description: maximum reported pressure (arbitrary range dependent on the controller)
|
| 40 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 41 |
|
| 42 | touchscreen-min-pressure:
|
| 43 | description: minimum pressure on the touchscreen to be achieved in order
|
| 44 | for the touchscreen driver to report a touch event.
|
| 45 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 46 |
|
| 47 | touchscreen-fuzz-x:
|
| 48 | description: horizontal noise value of the absolute input device (in pixels)
|
| 49 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 50 |
|
| 51 | touchscreen-fuzz-y:
|
| 52 | description: vertical noise value of the absolute input device (in pixels)
|
| 53 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 54 |
|
| 55 | touchscreen-fuzz-pressure:
|
| 56 | description: pressure noise value of the absolute input device (arbitrary
|
| 57 | range dependent on the controller)
|
| 58 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 59 |
|
| 60 | touchscreen-average-samples:
|
| 61 | description: Number of data samples which are averaged for each read (valid
|
| 62 | values dependent on the controller)
|
| 63 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 64 |
|
| 65 | touchscreen-inverted-x:
|
| 66 | description: X axis is inverted
|
| 67 | type: boolean
|
| 68 |
|
| 69 | touchscreen-inverted-y:
|
| 70 | description: Y axis is inverted
|
| 71 | type: boolean
|
| 72 |
|
| 73 | touchscreen-swapped-x-y:
|
| 74 | description: X and Y axis are swapped
|
| 75 | Swapping is done after inverting the axis
|
| 76 | type: boolean
|
| 77 |
|
| 78 | touchscreen-x-mm:
|
| 79 | description: horizontal length in mm of the touchscreen
|
| 80 |
|
| 81 | touchscreen-y-mm:
|
| 82 | description: vertical length in mm of the touchscreen
|
| 83 |
|
| 84 | touchscreen-x-plate-ohms:
|
| 85 | description: Resistance of the X-plate in Ohms
|
| 86 |
|
| 87 | touchscreen-y-plate-ohms:
|
| 88 | description: Resistance of the Y-plate in Ohms
|
| 89 |
|
| 90 | touch-overlay:
|
| 91 | description: |
|
| 92 | List of nodes defining segments (touch areas) on the touchscreen.
|
| 93 |
|
| 94 | This object can be used to describe a series of segments to restrict
|
| 95 | the region within touch events are reported or buttons with a specific
|
| 96 | functionality.
|
| 97 |
|
| 98 | This is of special interest if the touchscreen is shipped with a physical
|
| 99 | overlay on top of it with a frame that hides some part of the original
|
| 100 | touchscreen area. Printed buttons on that overlay are also a typical
|
| 101 | use case.
|
| 102 |
|
| 103 | A new touchscreen area is defined as a sub-node without a key code. If a
|
| 104 | key code is defined in the sub-node, it will be interpreted as a button.
|
| 105 |
|
| 106 | The x-origin and y-origin properties of a touchscreen area define the
|
| 107 | offset of a new origin from where the touchscreen events are referenced.
|
| 108 | This offset is applied to the events accordingly. The x-size and y-size
|
| 109 | properties define the size of the touchscreen effective area.
|
| 110 |
|
| 111 | The following example shows a new touchscreen area with the new origin
|
| 112 | (0',0') for the touch events generated by the device.
|
| 113 |
|
| 114 | Touchscreen (full area)
|
| 115 | ┌────────────────────────────────────────┐
|
| 116 | │ ┌───────────────────────────────┐ │
|
| 117 | │ │ │ │
|
| 118 | │ ├ y-size │ │
|
| 119 | │ │ │ │
|
| 120 | │ │ touchscreen area │ │
|
| 121 | │ │ (no key code) │ │
|
| 122 | │ │ │ │
|
| 123 | │ │ x-size │ │
|
| 124 | │ ┌└──────────────┴────────────────┘ │
|
| 125 | │(0',0') │
|
| 126 | ┌└────────────────────────────────────────┘
|
| 127 | (0,0)
|
| 128 |
|
| 129 | where (0',0') = (0+x-origin,0+y-origin)
|
| 130 |
|
| 131 | Sub-nodes with key codes report the touch events on their surface as key
|
| 132 | events instead.
|
| 133 |
|
| 134 | The following example shows a touchscreen with a single button on it.
|
| 135 |
|
| 136 | Touchscreen (full area)
|
| 137 | ┌───────────────────────────────────┐
|
| 138 | │ │
|
| 139 | │ │
|
| 140 | │ ┌─────────┐ │
|
| 141 | │ │button 0 │ │
|
| 142 | │ │KEY_POWER│ │
|
| 143 | │ └─────────┘ │
|
| 144 | │ │
|
| 145 | │ │
|
| 146 | ┌└───────────────────────────────────┘
|
| 147 | (0,0)
|
| 148 |
|
| 149 | Segments defining buttons and clipped toushcreen areas can be combined
|
| 150 | as shown in the following example.
|
| 151 | In that case only the events within the touchscreen area are reported
|
| 152 | as touch events. Events within the button areas report their associated
|
| 153 | key code. Any events outside the defined areas are ignored.
|
| 154 |
|
| 155 | Touchscreen (full area)
|
| 156 | ┌─────────┬──────────────────────────────┐
|
| 157 | │ │ │
|
| 158 | │ │ ┌───────────────────────┐ │
|
| 159 | │ button 0│ │ │ │
|
| 160 | │KEY_POWER│ │ │ │
|
| 161 | │ │ │ │ │
|
| 162 | ├─────────┤ │ touchscreen area │ │
|
| 163 | │ │ │ (no key code) │ │
|
| 164 | │ │ │ │ │
|
| 165 | │ button 1│ │ │ │
|
| 166 | │ KEY_INFO│ ┌└───────────────────────┘ │
|
| 167 | │ │(0',0') │
|
| 168 | ┌└─────────┴──────────────────────────────┘
|
| 169 | (0,0)
|
| 170 |
|
| 171 | type: object
|
| 172 |
|
| 173 | patternProperties:
|
| 174 | '^segment-':
|
| 175 | type: object
|
| 176 | description:
|
| 177 | Each segment is represented as a sub-node.
|
| 178 | properties:
|
| 179 | x-origin:
|
| 180 | description: horizontal origin of the node area
|
| 181 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 182 |
|
| 183 | y-origin:
|
| 184 | description: vertical origin of the node area
|
| 185 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 186 |
|
| 187 | x-size:
|
| 188 | description: horizontal resolution of the node area
|
| 189 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 190 |
|
| 191 | y-size:
|
| 192 | description: vertical resolution of the node area
|
| 193 | $ref: /schemas/types.yaml#/definitions/uint32
|
| 194 |
|
| 195 | label:
|
| 196 | description: descriptive name of the segment
|
| 197 | $ref: /schemas/types.yaml#/definitions/string
|
| 198 |
|
| 199 | linux,code: true
|
| 200 |
|
| 201 | required:
|
| 202 | - x-origin
|
| 203 | - y-origin
|
| 204 | - x-size
|
| 205 | - y-size
|
| 206 |
|
| 207 | unevaluatedProperties: false
|
| 208 |
|
| 209 | debounce-delay-us:
|
| 210 | description: Minimum duration in microseconds a signal must remain stable
|
| 211 | to be considered valid.
|
| 212 |
|
| 213 | dependencies:
|
| 214 | touchscreen-size-x: [ touchscreen-size-y ]
|
| 215 | touchscreen-size-y: [ touchscreen-size-x ]
|
| 216 | touchscreen-x-mm: [ touchscreen-y-mm ]
|
| 217 | touchscreen-y-mm: [ touchscreen-x-mm ]
|
| 218 |
|
| 219 | additionalProperties: true
|