mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-05 20:16:52 +00:00

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>
216 lines
8.6 KiB
YAML
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
|