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