mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-13 05:00:15 -04:00
Add support for glitch delay configuration. A detected signal is valid only if it remains stable longer than the configured delay; otherwise, it is considered a glitch. This property was introduced for the i.MX6UL touchscreen controller (TSC), which provides a hardware deglitch filter with four thresholds depending on the IPG clock frequency. In this use case, the IPG clock rate is 66 MHz, resulting in thresholds of 124 µs, 62 µs, 31 µs, and 15 µs, which requires a property with microsecond-level resolution. Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20250923143746.2857292-4-dario.binacchi@amarulasolutions.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
220 lines
8.7 KiB
YAML
220 lines
8.7 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
|
|
|
|
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
|