# 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 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 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