Commit 3b44738e authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Rob Herring

dt-bindings: input: convert syna,rmi4 to DT schema

Convert the bindings for Synaptics RMI4 bus and devices to DT schema.
Changes during conversion:
1. Add reset-gpios already used in DTS and mentioned by RMI4
   specification.
2. Do not require address/size cells, because without functions
   (children) they aren't really needed.
Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20230728165054.88678-1-krzysztof.kozlowski@linaro.orgSigned-off-by: default avatarRob Herring <robh@kernel.org>
parent e6e214b7
Synaptics RMI4 2D Sensor Device Binding
The Synaptics RMI4 core is able to support RMI4 devices using different
transports and different functions. This file describes the device tree
bindings for devices which contain 2D sensors using Function 11 or
Function 12. Complete documentation for transports and other functions
can be found in:
Documentation/devicetree/bindings/input/rmi4.
RMI4 Function 11 and Function 12 are for 2D touch position sensing.
Additional documentation for F11 can be found at:
http://www.synaptics.com/sites/default/files/511-000136-01-Rev-E-RMI4-Interfacing-Guide.pdf
Optional Touch Properties:
Description in Documentation/devicetree/bindings/input/touchscreen
- touchscreen-inverted-x
- touchscreen-inverted-y
- touchscreen-swapped-x-y
- touchscreen-x-mm
- touchscreen-y-mm
Optional Properties:
- syna,clip-x-low: Sets a minimum value for X.
- syna,clip-y-low: Sets a minimum value for Y.
- syna,clip-x-high: Sets a maximum value for X.
- syna,clip-y-high: Sets a maximum value for Y.
- syna,offset-x: Add an offset to X.
- syna,offset-y: Add an offset to Y.
- syna,delta-x-threshold: Set the minimum distance on the X axis required
to generate an interrupt in reduced reporting
mode.
- syna,delta-y-threshold: Set the minimum distance on the Y axis required
to generate an interrupt in reduced reporting
mode.
- syna,sensor-type: Set the sensor type. 1 for touchscreen 2 for touchpad.
- syna,disable-report-mask: Mask for disabling posiiton reporting. Used to
disable reporting absolute position data.
- syna,rezero-wait-ms: Time in milliseconds to wait after issuing a rezero
command.
Example of a RMI4 I2C device with F11:
Example:
&i2c1 {
rmi4-i2c-dev@2c {
compatible = "syna,rmi4-i2c";
...
rmi4-f11@11 {
reg = <0x11>;
touchscreen-inverted-y;
syna,sensor-type = <2>;
};
};
};
Synaptics RMI4 F01 Device Binding
The Synaptics RMI4 core is able to support RMI4 devices using different
transports and different functions. This file describes the device tree
bindings for devices which contain Function 1. Complete documentation
for transports and other functions can be found in:
Documentation/devicetree/bindings/input/rmi4.
Additional documentation for F01 can be found at:
http://www.synaptics.com/sites/default/files/511-000136-01-Rev-E-RMI4-Interfacing-Guide.pdf
Optional Properties:
- syna,nosleep-mode: 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: Defines the amplitude of the disturbance to the
background capacitance that will cause the
device to wake from dozing.
- syna,doze-holdoff-ms: The delay to wait after the last finger lift and the
first doze cycle.
- syna,doze-interval-ms: The time period that the device sleeps between finger
activity.
Example of a RMI4 I2C device with F01:
Example:
&i2c1 {
rmi4-i2c-dev@2c {
compatible = "syna,rmi4-i2c";
...
rmi4-f01@1 {
reg = <0x1>;
syna,nosleep-mode = <1>;
};
};
};
Synaptics RMI4 I2C Device Binding
The Synaptics RMI4 core is able to support RMI4 devices using different
transports and different functions. This file describes the device tree
bindings for devices using the I2C transport driver. Complete documentation
for other transports and functions can be found in
Documentation/devicetree/bindings/input/rmi4.
Required Properties:
- compatible: syna,rmi4-i2c
- reg: I2C address
- #address-cells: Set to 1 to indicate that the function child nodes
consist of only on uint32 value.
- #size-cells: Set to 0 to indicate that the function child nodes do not
have a size property.
Optional Properties:
- interrupts: interrupt which the rmi device is connected to.
See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
- syna,reset-delay-ms: The number of milliseconds to wait after resetting the
device.
- syna,startup-delay-ms: The number of milliseconds to wait after powering on
the device.
- vdd-supply: VDD power supply.
See ../regulator/regulator.txt
- vio-supply: VIO power supply
See ../regulator/regulator.txt
Function Parameters:
Parameters specific to RMI functions are contained in child nodes of the rmi device
node. Documentation for the parameters of each function can be found in:
Documentation/devicetree/bindings/input/rmi4/rmi_f*.txt.
Example:
&i2c1 {
rmi4-i2c-dev@2c {
compatible = "syna,rmi4-i2c";
reg = <0x2c>;
#address-cells = <1>;
#size-cells = <0>;
interrupt-parent = <&gpio>;
interrupts = <4 2>;
rmi4-f01@1 {
reg = <0x1>;
syna,nosleep-mode = <1>;
};
rmi4-f11@11 {
reg = <0x11>;
touchscreen-inverted-y;
syna,sensor-type = <2>;
};
};
};
Synaptics RMI4 SPI Device Binding
The Synaptics RMI4 core is able to support RMI4 devices using different
transports and different functions. This file describes the device tree
bindings for devices using the SPI transport driver. Complete documentation
for other transports and functions can be found in
Documentation/devicetree/bindings/input/rmi4.
Required Properties:
- compatible: syna,rmi4-spi
- reg: Chip select address for the device
- #address-cells: Set to 1 to indicate that the function child nodes
consist of only on uint32 value.
- #size-cells: Set to 0 to indicate that the function child nodes do not
have a size property.
Optional Properties:
- interrupts: interrupt which the rmi device is connected to.
See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
- spi-rx-delay-us: microsecond delay after a read transfer.
- spi-tx-delay-us: microsecond delay after a write transfer.
Function Parameters:
Parameters specific to RMI functions are contained in child nodes of the rmi device
node. Documentation for the parameters of each function can be found in:
Documentation/devicetree/bindings/input/rmi4/rmi_f*.txt.
Example:
spi@7000d800 {
rmi4-spi-dev@0 {
compatible = "syna,rmi4-spi";
reg = <0x0>;
#address-cells = <1>;
#size-cells = <0>;
spi-max-frequency = <4000000>;
spi-cpha;
spi-cpol;
interrupt-parent = <&gpio>;
interrupts = <TEGRA_GPIO(K, 2) 0x2>;
spi-rx-delay-us = <30>;
rmi4-f01@1 {
reg = <0x1>;
syna,nosleep-mode = <1>;
};
rmi4-f11@11 {
reg = <0x11>;
touchscreen-inverted-y;
syna,sensor-type = <2>;
};
};
};
# 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
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
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/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>;
};
};
};
- |
#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>;
};
};
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment