Re: [PATCH] dt-bindings: input: convert syna,rmi4 to DT schema

From: Rob Herring
Date: Mon Jul 24 2023 - 11:58:10 EST


On Thu, Jul 20, 2023 at 01:00:08PM +0200, Krzysztof Kozlowski wrote:
> 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: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
>
> ---
>
> Jason, Matthias, Vincent,
> I put your names as maintainers, because moderately recently you were
> changing the driver. Let me know if this is okay or you prefer not to
> maintain the hardware.
> ---
> .../bindings/input/rmi4/rmi_2d_sensor.txt | 56 ----
> .../bindings/input/rmi4/rmi_f01.txt | 39 ---
> .../bindings/input/rmi4/rmi_i2c.txt | 61 ----
> .../bindings/input/rmi4/rmi_spi.txt | 56 ----
> .../devicetree/bindings/input/syna,rmi4.yaml | 271 ++++++++++++++++++
> 5 files changed, 271 insertions(+), 212 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_2d_sensor.txt
> delete mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_f01.txt
> delete mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_i2c.txt
> delete mode 100644 Documentation/devicetree/bindings/input/rmi4/rmi_spi.txt
> create mode 100644 Documentation/devicetree/bindings/input/syna,rmi4.yaml


> diff --git a/Documentation/devicetree/bindings/input/syna,rmi4.yaml b/Documentation/devicetree/bindings/input/syna,rmi4.yaml
> new file mode 100644
> index 000000000000..286b4d52cea9
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/syna,rmi4.yaml
> @@ -0,0 +1,271 @@
> +# 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@xxxxxxxxx>
> + - Matthias Schiffer <matthias.schiffer@xxxxxxxxxxxxxxx
> + - Vincent Huang <vincent.huang@xxxxxxxxxxxxxxxx>
> +
> +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-z]+@[0-9a-z]+$":

a-f in both places.

> + 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>;
> + };
> + };
> + };
> --
> 2.34.1
>