mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 06:39:05 +00:00

In some configurations the touch controller can support touch keys. Document the linux,keycodes property that enables those keys and specifies the keycodes that should be used to report the key events. Signed-off-by: André Apitzsch <git@apitzsch.eu> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Link: https://lore.kernel.org/r/20250707-rmi4_f1a-v1-1-838d83c72e7f@apitzsch.eu Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
294 lines
6.8 KiB
YAML
294 lines
6.8 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/input/syna,rmi4.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Synaptics RMI4 compliant devices
|
|
|
|
maintainers:
|
|
- Jason A. Donenfeld <Jason@zx2c4.com>
|
|
- Matthias Schiffer <matthias.schiffer@ew.tq-group.com
|
|
- Vincent Huang <vincent.huang@tw.synaptics.com>
|
|
|
|
description: |
|
|
The Synaptics RMI4 (Register Mapped Interface 4) core is able to support RMI4
|
|
devices using different transports (I2C, SPI) and different functions (e.g.
|
|
Function 1, 2D sensors using Function 11 or 12).
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- syna,rmi4-i2c
|
|
- syna,rmi4-spi
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
'#address-cells':
|
|
const: 1
|
|
|
|
'#size-cells':
|
|
const: 0
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
|
|
reset-gpios:
|
|
maxItems: 1
|
|
description: Active low signal
|
|
|
|
spi-cpha: true
|
|
spi-cpol: true
|
|
|
|
syna,reset-delay-ms:
|
|
description:
|
|
Delay to wait after resetting the device.
|
|
|
|
syna,startup-delay-ms:
|
|
description:
|
|
Delay to wait after powering on the device.
|
|
|
|
vdd-supply: true
|
|
vio-supply: true
|
|
|
|
rmi4-f01@1:
|
|
type: object
|
|
additionalProperties: false
|
|
description:
|
|
Function 1
|
|
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
|
|
syna,nosleep-mode:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
enum: [0, 1, 2]
|
|
description:
|
|
If set the device will run at full power without sleeping. nosleep
|
|
has 3 modes, 0 will not change the default setting, 1 will disable
|
|
nosleep (allow sleeping), and 2 will enable nosleep (disabling
|
|
sleep).
|
|
|
|
syna,wakeup-threshold:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Defines the amplitude of the disturbance to the background
|
|
capacitance that will cause the device to wake from dozing.
|
|
|
|
syna,doze-holdoff-ms:
|
|
description:
|
|
The delay to wait after the last finger lift and the first doze
|
|
cycle.
|
|
|
|
syna,doze-interval-ms:
|
|
description:
|
|
The time period that the device sleeps between finger activity.
|
|
|
|
required:
|
|
- reg
|
|
|
|
rmi4-f1a@1a:
|
|
type: object
|
|
additionalProperties: false
|
|
$ref: input.yaml#
|
|
description:
|
|
RMI4 Function 1A is for capacitive keys.
|
|
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
|
|
linux,keycodes:
|
|
minItems: 1
|
|
maxItems: 4
|
|
|
|
required:
|
|
- reg
|
|
|
|
patternProperties:
|
|
"^rmi4-f1[12]@1[12]$":
|
|
type: object
|
|
unevaluatedProperties: false
|
|
$ref: /schemas/input/touchscreen/touchscreen.yaml#
|
|
description:
|
|
RMI4 Function 11 and Function 12 are for 2D touch position sensing.
|
|
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
|
|
syna,clip-x-low:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Minimum value for X.
|
|
|
|
syna,clip-y-low:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Minimum value for Y.
|
|
|
|
syna,clip-x-high:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Maximum value for X.
|
|
|
|
syna,clip-y-high:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Maximum value for Y.
|
|
|
|
syna,offset-x:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Add an offset to X.
|
|
|
|
syna,offset-y:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Add an offset to Y.
|
|
|
|
syna,delta-x-threshold:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Minimum distance on the X axis required to generate an interrupt in
|
|
reduced reporting mode.
|
|
|
|
syna,delta-y-threshold:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Minimum distance on the Y axis required to generate an interrupt in
|
|
reduced reporting mode.
|
|
|
|
syna,sensor-type:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
enum: [1, 2]
|
|
description: |
|
|
Sensor type: 1 for touchscreen 2 for touchpad.
|
|
|
|
syna,disable-report-mask:
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
description:
|
|
Mask for disabling posiiton reporting. Used to disable reporing
|
|
absolute position data.
|
|
|
|
syna,rezero-wait-ms:
|
|
description:
|
|
Time to wait after issuing a rezero command.
|
|
|
|
required:
|
|
- reg
|
|
|
|
"^rmi4-f[0-9a-f]+@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: true
|
|
|
|
description:
|
|
Other functions, not documented yet.
|
|
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
|
|
required:
|
|
- reg
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
|
|
unevaluatedProperties: false
|
|
|
|
allOf:
|
|
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: syna,rmi4-i2c
|
|
then:
|
|
properties:
|
|
spi-rx-delay-us: false
|
|
spi-tx-delay-us: false
|
|
else:
|
|
properties:
|
|
syna,reset-delay-ms: false
|
|
syna,startup-delay-ms: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/input/linux-event-codes.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
|
|
i2c {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
touchscreen@20 {
|
|
compatible = "syna,rmi4-i2c";
|
|
reg = <0x20>;
|
|
interrupt-parent = <&gpx1>;
|
|
interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
|
|
|
|
syna,startup-delay-ms = <100>;
|
|
vdd-supply = <&tsp_vdd>;
|
|
vio-supply = <&ldo32_reg>;
|
|
|
|
pinctrl-0 = <&touch_irq>;
|
|
pinctrl-names = "default";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
rmi4-f01@1 {
|
|
reg = <0x1>;
|
|
syna,nosleep-mode = <1>;
|
|
};
|
|
|
|
rmi4-f12@12 {
|
|
reg = <0x12>;
|
|
syna,sensor-type = <1>;
|
|
};
|
|
|
|
rmi4-f1a@1a {
|
|
reg = <0x1a>;
|
|
linux,keycodes = <KEY_BACK KEY_HOME KEY_MENU>;
|
|
};
|
|
};
|
|
};
|
|
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
|
|
spi {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
touchscreen@0 {
|
|
compatible = "syna,rmi4-spi";
|
|
reg = <0x0>;
|
|
interrupt-parent = <&gpx1>;
|
|
interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
|
|
|
|
spi-max-frequency = <4000000>;
|
|
spi-rx-delay-us = <30>;
|
|
spi-cpha;
|
|
spi-cpol;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
rmi4-f01@1 {
|
|
reg = <0x1>;
|
|
syna,nosleep-mode = <1>;
|
|
};
|
|
|
|
rmi4-f11@11 {
|
|
reg = <0x11>;
|
|
touchscreen-inverted-y;
|
|
syna,sensor-type = <2>;
|
|
};
|
|
};
|
|
};
|