| # SPDX-License-Identifier: GPL-2.0 | |
| %YAML 1.2 | |
| --- | |
| $id: http://devicetree.org/schemas/input/touchscreen/touchscreen.yaml# | |
| $schema: http://devicetree.org/meta-schemas/core.yaml# | |
| title: Common touchscreen | |
| maintainers: | |
| - Dmitry Torokhov <dmitry.torokhov@gmail.com> | |
| properties: | |
| panel: | |
| description: If this touchscreen is integrally connected to a panel, this | |
| is a reference to that panel. The presence of this reference indicates | |
| that the touchscreen should be power sequenced together with the panel | |
| and that they may share power and/or reset signals. | |
| $ref: /schemas/types.yaml#/definitions/phandle | |
| touchscreen-min-x: | |
| description: minimum x coordinate reported | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| default: 0 | |
| touchscreen-min-y: | |
| description: minimum y coordinate reported | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| default: 0 | |
| touchscreen-size-x: | |
| description: horizontal resolution of touchscreen (maximum x coordinate reported + 1) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-size-y: | |
| description: vertical resolution of touchscreen (maximum y coordinate reported + 1) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-max-pressure: | |
| description: maximum reported pressure (arbitrary range dependent on the controller) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-min-pressure: | |
| description: minimum pressure on the touchscreen to be achieved in order | |
| for the touchscreen driver to report a touch event. | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-fuzz-x: | |
| description: horizontal noise value of the absolute input device (in pixels) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-fuzz-y: | |
| description: vertical noise value of the absolute input device (in pixels) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-fuzz-pressure: | |
| description: pressure noise value of the absolute input device (arbitrary | |
| range dependent on the controller) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-average-samples: | |
| description: Number of data samples which are averaged for each read (valid | |
| values dependent on the controller) | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| touchscreen-inverted-x: | |
| description: X axis is inverted | |
| type: boolean | |
| touchscreen-inverted-y: | |
| description: Y axis is inverted | |
| type: boolean | |
| touchscreen-swapped-x-y: | |
| description: X and Y axis are swapped | |
| Swapping is done after inverting the axis | |
| type: boolean | |
| touchscreen-x-mm: | |
| description: horizontal length in mm of the touchscreen | |
| touchscreen-y-mm: | |
| description: vertical length in mm of the touchscreen | |
| touchscreen-x-plate-ohms: | |
| description: Resistance of the X-plate in Ohms | |
| touchscreen-y-plate-ohms: | |
| description: Resistance of the Y-plate in Ohms | |
| touch-overlay: | |
| description: | | |
| List of nodes defining segments (touch areas) on the touchscreen. | |
| This object can be used to describe a series of segments to restrict | |
| the region within touch events are reported or buttons with a specific | |
| functionality. | |
| This is of special interest if the touchscreen is shipped with a physical | |
| overlay on top of it with a frame that hides some part of the original | |
| touchscreen area. Printed buttons on that overlay are also a typical | |
| use case. | |
| A new touchscreen area is defined as a sub-node without a key code. If a | |
| key code is defined in the sub-node, it will be interpreted as a button. | |
| The x-origin and y-origin properties of a touchscreen area define the | |
| offset of a new origin from where the touchscreen events are referenced. | |
| This offset is applied to the events accordingly. The x-size and y-size | |
| properties define the size of the touchscreen effective area. | |
| The following example shows a new touchscreen area with the new origin | |
| (0',0') for the touch events generated by the device. | |
| Touchscreen (full area) | |
| ┌────────────────────────────────────────┐ | |
| │ ┌───────────────────────────────┐ │ | |
| │ │ │ │ | |
| │ ├ y-size │ │ | |
| │ │ │ │ | |
| │ │ touchscreen area │ │ | |
| │ │ (no key code) │ │ | |
| │ │ │ │ | |
| │ │ x-size │ │ | |
| │ ┌└──────────────┴────────────────┘ │ | |
| │(0',0') │ | |
| ┌└────────────────────────────────────────┘ | |
| (0,0) | |
| where (0',0') = (0+x-origin,0+y-origin) | |
| Sub-nodes with key codes report the touch events on their surface as key | |
| events instead. | |
| The following example shows a touchscreen with a single button on it. | |
| Touchscreen (full area) | |
| ┌───────────────────────────────────┐ | |
| │ │ | |
| │ │ | |
| │ ┌─────────┐ │ | |
| │ │button 0 │ │ | |
| │ │KEY_POWER│ │ | |
| │ └─────────┘ │ | |
| │ │ | |
| │ │ | |
| ┌└───────────────────────────────────┘ | |
| (0,0) | |
| Segments defining buttons and clipped toushcreen areas can be combined | |
| as shown in the following example. | |
| In that case only the events within the touchscreen area are reported | |
| as touch events. Events within the button areas report their associated | |
| key code. Any events outside the defined areas are ignored. | |
| Touchscreen (full area) | |
| ┌─────────┬──────────────────────────────┐ | |
| │ │ │ | |
| │ │ ┌───────────────────────┐ │ | |
| │ button 0│ │ │ │ | |
| │KEY_POWER│ │ │ │ | |
| │ │ │ │ │ | |
| ├─────────┤ │ touchscreen area │ │ | |
| │ │ │ (no key code) │ │ | |
| │ │ │ │ │ | |
| │ button 1│ │ │ │ | |
| │ KEY_INFO│ ┌└───────────────────────┘ │ | |
| │ │(0',0') │ | |
| ┌└─────────┴──────────────────────────────┘ | |
| (0,0) | |
| type: object | |
| patternProperties: | |
| '^segment-': | |
| type: object | |
| description: | |
| Each segment is represented as a sub-node. | |
| properties: | |
| x-origin: | |
| description: horizontal origin of the node area | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| y-origin: | |
| description: vertical origin of the node area | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| x-size: | |
| description: horizontal resolution of the node area | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| y-size: | |
| description: vertical resolution of the node area | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| label: | |
| description: descriptive name of the segment | |
| $ref: /schemas/types.yaml#/definitions/string | |
| linux,code: true | |
| required: | |
| - x-origin | |
| - y-origin | |
| - x-size | |
| - y-size | |
| unevaluatedProperties: false | |
| debounce-delay-us: | |
| description: Minimum duration in microseconds a signal must remain stable | |
| to be considered valid. | |
| dependencies: | |
| touchscreen-size-x: [ touchscreen-size-y ] | |
| touchscreen-size-y: [ touchscreen-size-x ] | |
| touchscreen-x-mm: [ touchscreen-y-mm ] | |
| touchscreen-y-mm: [ touchscreen-x-mm ] | |
| additionalProperties: true |