| # 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 |
| 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/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>; |
| }; |
| }; |
| }; |