linux-loongson/Documentation/devicetree/bindings/input/touchscreen/touchscreen.yaml
Javier Carrasco 19875ccec0 dt-bindings: touchscreen: add touch-overlay property
The touch-overlay encompasses a number of touch areas that define a
clipped touchscreen area and/or buttons with a specific functionality.

A clipped touchscreen area avoids getting events from regions that are
physically hidden by overlay frames.

For touchscreens with printed overlay buttons, sub-nodes with a suitable
key code can be defined to report key events instead of the original
touch events.

Reviewed-by: Jeff LaBundy <jeff@labundy.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Javier Carrasco <javier.carrasco@wolfvision.net>
Link: https://lore.kernel.org/r/20241016-feature-ts_virtobj_patch-v11-1-b292a1bbb0a1@wolfvision.net
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2025-07-27 01:41:20 -07:00

216 lines
8.6 KiB
YAML

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