1aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2aa1a8ff2SEmmanuel Vadot%YAML 1.2 3aa1a8ff2SEmmanuel Vadot--- 4aa1a8ff2SEmmanuel Vadot$id: http://devicetree.org/schemas/input/syna,rmi4.yaml# 5aa1a8ff2SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6aa1a8ff2SEmmanuel Vadot 7aa1a8ff2SEmmanuel Vadottitle: Synaptics RMI4 compliant devices 8aa1a8ff2SEmmanuel Vadot 9aa1a8ff2SEmmanuel Vadotmaintainers: 10aa1a8ff2SEmmanuel Vadot - Jason A. Donenfeld <Jason@zx2c4.com> 11aa1a8ff2SEmmanuel Vadot - Matthias Schiffer <matthias.schiffer@ew.tq-group.com 12aa1a8ff2SEmmanuel Vadot - Vincent Huang <vincent.huang@tw.synaptics.com> 13aa1a8ff2SEmmanuel Vadot 14aa1a8ff2SEmmanuel Vadotdescription: | 15aa1a8ff2SEmmanuel Vadot The Synaptics RMI4 (Register Mapped Interface 4) core is able to support RMI4 16aa1a8ff2SEmmanuel Vadot devices using different transports (I2C, SPI) and different functions (e.g. 17aa1a8ff2SEmmanuel Vadot Function 1, 2D sensors using Function 11 or 12). 18aa1a8ff2SEmmanuel Vadot 19aa1a8ff2SEmmanuel Vadotproperties: 20aa1a8ff2SEmmanuel Vadot compatible: 21aa1a8ff2SEmmanuel Vadot enum: 22aa1a8ff2SEmmanuel Vadot - syna,rmi4-i2c 23aa1a8ff2SEmmanuel Vadot - syna,rmi4-spi 24aa1a8ff2SEmmanuel Vadot 25aa1a8ff2SEmmanuel Vadot reg: 26aa1a8ff2SEmmanuel Vadot maxItems: 1 27aa1a8ff2SEmmanuel Vadot 28aa1a8ff2SEmmanuel Vadot '#address-cells': 29aa1a8ff2SEmmanuel Vadot const: 1 30aa1a8ff2SEmmanuel Vadot 31aa1a8ff2SEmmanuel Vadot '#size-cells': 32aa1a8ff2SEmmanuel Vadot const: 0 33aa1a8ff2SEmmanuel Vadot 34aa1a8ff2SEmmanuel Vadot interrupts: 35aa1a8ff2SEmmanuel Vadot maxItems: 1 36aa1a8ff2SEmmanuel Vadot 37aa1a8ff2SEmmanuel Vadot reset-gpios: 38aa1a8ff2SEmmanuel Vadot maxItems: 1 39aa1a8ff2SEmmanuel Vadot description: Active low signal 40aa1a8ff2SEmmanuel Vadot 41aa1a8ff2SEmmanuel Vadot spi-cpha: true 42aa1a8ff2SEmmanuel Vadot spi-cpol: true 43aa1a8ff2SEmmanuel Vadot 44aa1a8ff2SEmmanuel Vadot syna,reset-delay-ms: 45aa1a8ff2SEmmanuel Vadot description: 46aa1a8ff2SEmmanuel Vadot Delay to wait after resetting the device. 47aa1a8ff2SEmmanuel Vadot 48aa1a8ff2SEmmanuel Vadot syna,startup-delay-ms: 49aa1a8ff2SEmmanuel Vadot description: 50aa1a8ff2SEmmanuel Vadot Delay to wait after powering on the device. 51aa1a8ff2SEmmanuel Vadot 52aa1a8ff2SEmmanuel Vadot vdd-supply: true 53aa1a8ff2SEmmanuel Vadot vio-supply: true 54aa1a8ff2SEmmanuel Vadot 55aa1a8ff2SEmmanuel Vadot rmi4-f01@1: 56aa1a8ff2SEmmanuel Vadot type: object 57aa1a8ff2SEmmanuel Vadot additionalProperties: false 58aa1a8ff2SEmmanuel Vadot description: 59aa1a8ff2SEmmanuel Vadot Function 1 60aa1a8ff2SEmmanuel Vadot 61aa1a8ff2SEmmanuel Vadot properties: 62aa1a8ff2SEmmanuel Vadot reg: 63aa1a8ff2SEmmanuel Vadot maxItems: 1 64aa1a8ff2SEmmanuel Vadot 65aa1a8ff2SEmmanuel Vadot syna,nosleep-mode: 66aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 67aa1a8ff2SEmmanuel Vadot enum: [0, 1, 2] 68aa1a8ff2SEmmanuel Vadot description: 69aa1a8ff2SEmmanuel Vadot If set the device will run at full power without sleeping. nosleep 70aa1a8ff2SEmmanuel Vadot has 3 modes, 0 will not change the default setting, 1 will disable 71aa1a8ff2SEmmanuel Vadot nosleep (allow sleeping), and 2 will enable nosleep (disabling 72aa1a8ff2SEmmanuel Vadot sleep). 73aa1a8ff2SEmmanuel Vadot 74aa1a8ff2SEmmanuel Vadot syna,wakeup-threshold: 75aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 76aa1a8ff2SEmmanuel Vadot description: 77aa1a8ff2SEmmanuel Vadot Defines the amplitude of the disturbance to the background 78aa1a8ff2SEmmanuel Vadot capacitance that will cause the device to wake from dozing. 79aa1a8ff2SEmmanuel Vadot 80aa1a8ff2SEmmanuel Vadot syna,doze-holdoff-ms: 81aa1a8ff2SEmmanuel Vadot description: 82aa1a8ff2SEmmanuel Vadot The delay to wait after the last finger lift and the first doze 83aa1a8ff2SEmmanuel Vadot cycle. 84aa1a8ff2SEmmanuel Vadot 85aa1a8ff2SEmmanuel Vadot syna,doze-interval-ms: 86aa1a8ff2SEmmanuel Vadot description: 87aa1a8ff2SEmmanuel Vadot The time period that the device sleeps between finger activity. 88aa1a8ff2SEmmanuel Vadot 89aa1a8ff2SEmmanuel Vadot required: 90aa1a8ff2SEmmanuel Vadot - reg 91aa1a8ff2SEmmanuel Vadot 92*833e5d42SEmmanuel Vadot rmi4-f1a@1a: 93*833e5d42SEmmanuel Vadot type: object 94*833e5d42SEmmanuel Vadot additionalProperties: false 95*833e5d42SEmmanuel Vadot $ref: input.yaml# 96*833e5d42SEmmanuel Vadot description: 97*833e5d42SEmmanuel Vadot RMI4 Function 1A is for capacitive keys. 98*833e5d42SEmmanuel Vadot 99*833e5d42SEmmanuel Vadot properties: 100*833e5d42SEmmanuel Vadot reg: 101*833e5d42SEmmanuel Vadot maxItems: 1 102*833e5d42SEmmanuel Vadot 103*833e5d42SEmmanuel Vadot linux,keycodes: 104*833e5d42SEmmanuel Vadot minItems: 1 105*833e5d42SEmmanuel Vadot maxItems: 4 106*833e5d42SEmmanuel Vadot 107*833e5d42SEmmanuel Vadot required: 108*833e5d42SEmmanuel Vadot - reg 109*833e5d42SEmmanuel Vadot 110aa1a8ff2SEmmanuel VadotpatternProperties: 111aa1a8ff2SEmmanuel Vadot "^rmi4-f1[12]@1[12]$": 112aa1a8ff2SEmmanuel Vadot type: object 113aa1a8ff2SEmmanuel Vadot unevaluatedProperties: false 114aa1a8ff2SEmmanuel Vadot $ref: /schemas/input/touchscreen/touchscreen.yaml# 115aa1a8ff2SEmmanuel Vadot description: 116aa1a8ff2SEmmanuel Vadot RMI4 Function 11 and Function 12 are for 2D touch position sensing. 117aa1a8ff2SEmmanuel Vadot 118aa1a8ff2SEmmanuel Vadot properties: 119aa1a8ff2SEmmanuel Vadot reg: 120aa1a8ff2SEmmanuel Vadot maxItems: 1 121aa1a8ff2SEmmanuel Vadot 122aa1a8ff2SEmmanuel Vadot syna,clip-x-low: 123aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 124aa1a8ff2SEmmanuel Vadot description: 125aa1a8ff2SEmmanuel Vadot Minimum value for X. 126aa1a8ff2SEmmanuel Vadot 127aa1a8ff2SEmmanuel Vadot syna,clip-y-low: 128aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 129aa1a8ff2SEmmanuel Vadot description: 130aa1a8ff2SEmmanuel Vadot Minimum value for Y. 131aa1a8ff2SEmmanuel Vadot 132aa1a8ff2SEmmanuel Vadot syna,clip-x-high: 133aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 134aa1a8ff2SEmmanuel Vadot description: 135aa1a8ff2SEmmanuel Vadot Maximum value for X. 136aa1a8ff2SEmmanuel Vadot 137aa1a8ff2SEmmanuel Vadot syna,clip-y-high: 138aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 139aa1a8ff2SEmmanuel Vadot description: 140aa1a8ff2SEmmanuel Vadot Maximum value for Y. 141aa1a8ff2SEmmanuel Vadot 142aa1a8ff2SEmmanuel Vadot syna,offset-x: 143aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 144aa1a8ff2SEmmanuel Vadot description: 145aa1a8ff2SEmmanuel Vadot Add an offset to X. 146aa1a8ff2SEmmanuel Vadot 147aa1a8ff2SEmmanuel Vadot syna,offset-y: 148aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 149aa1a8ff2SEmmanuel Vadot description: 150aa1a8ff2SEmmanuel Vadot Add an offset to Y. 151aa1a8ff2SEmmanuel Vadot 152aa1a8ff2SEmmanuel Vadot syna,delta-x-threshold: 153aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 154aa1a8ff2SEmmanuel Vadot description: 155aa1a8ff2SEmmanuel Vadot Minimum distance on the X axis required to generate an interrupt in 156aa1a8ff2SEmmanuel Vadot reduced reporting mode. 157aa1a8ff2SEmmanuel Vadot 158aa1a8ff2SEmmanuel Vadot syna,delta-y-threshold: 159aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 160aa1a8ff2SEmmanuel Vadot description: 161aa1a8ff2SEmmanuel Vadot Minimum distance on the Y axis required to generate an interrupt in 162aa1a8ff2SEmmanuel Vadot reduced reporting mode. 163aa1a8ff2SEmmanuel Vadot 164aa1a8ff2SEmmanuel Vadot syna,sensor-type: 165aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 166aa1a8ff2SEmmanuel Vadot enum: [1, 2] 167aa1a8ff2SEmmanuel Vadot description: | 168aa1a8ff2SEmmanuel Vadot Sensor type: 1 for touchscreen 2 for touchpad. 169aa1a8ff2SEmmanuel Vadot 170aa1a8ff2SEmmanuel Vadot syna,disable-report-mask: 171aa1a8ff2SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 172aa1a8ff2SEmmanuel Vadot description: 173aa1a8ff2SEmmanuel Vadot Mask for disabling posiiton reporting. Used to disable reporing 174aa1a8ff2SEmmanuel Vadot absolute position data. 175aa1a8ff2SEmmanuel Vadot 176aa1a8ff2SEmmanuel Vadot syna,rezero-wait-ms: 177aa1a8ff2SEmmanuel Vadot description: 178aa1a8ff2SEmmanuel Vadot Time to wait after issuing a rezero command. 179aa1a8ff2SEmmanuel Vadot 180aa1a8ff2SEmmanuel Vadot required: 181aa1a8ff2SEmmanuel Vadot - reg 182aa1a8ff2SEmmanuel Vadot 183aa1a8ff2SEmmanuel Vadot "^rmi4-f[0-9a-f]+@[0-9a-f]+$": 184aa1a8ff2SEmmanuel Vadot type: object 18584943d6fSEmmanuel Vadot additionalProperties: true 18684943d6fSEmmanuel Vadot 187aa1a8ff2SEmmanuel Vadot description: 188aa1a8ff2SEmmanuel Vadot Other functions, not documented yet. 189aa1a8ff2SEmmanuel Vadot 190aa1a8ff2SEmmanuel Vadot properties: 191aa1a8ff2SEmmanuel Vadot reg: 192aa1a8ff2SEmmanuel Vadot maxItems: 1 193aa1a8ff2SEmmanuel Vadot 194aa1a8ff2SEmmanuel Vadot required: 195aa1a8ff2SEmmanuel Vadot - reg 196aa1a8ff2SEmmanuel Vadot 197aa1a8ff2SEmmanuel Vadotrequired: 198aa1a8ff2SEmmanuel Vadot - compatible 199aa1a8ff2SEmmanuel Vadot - reg 200aa1a8ff2SEmmanuel Vadot 201aa1a8ff2SEmmanuel VadotunevaluatedProperties: false 202aa1a8ff2SEmmanuel Vadot 203aa1a8ff2SEmmanuel VadotallOf: 204aa1a8ff2SEmmanuel Vadot - $ref: /schemas/spi/spi-peripheral-props.yaml# 205aa1a8ff2SEmmanuel Vadot 206aa1a8ff2SEmmanuel Vadot - if: 207aa1a8ff2SEmmanuel Vadot properties: 208aa1a8ff2SEmmanuel Vadot compatible: 209aa1a8ff2SEmmanuel Vadot contains: 210aa1a8ff2SEmmanuel Vadot const: syna,rmi4-i2c 211aa1a8ff2SEmmanuel Vadot then: 212aa1a8ff2SEmmanuel Vadot properties: 213aa1a8ff2SEmmanuel Vadot spi-rx-delay-us: false 214aa1a8ff2SEmmanuel Vadot spi-tx-delay-us: false 215aa1a8ff2SEmmanuel Vadot else: 216aa1a8ff2SEmmanuel Vadot properties: 217aa1a8ff2SEmmanuel Vadot syna,reset-delay-ms: false 218aa1a8ff2SEmmanuel Vadot syna,startup-delay-ms: false 219aa1a8ff2SEmmanuel Vadot 220aa1a8ff2SEmmanuel Vadotexamples: 221aa1a8ff2SEmmanuel Vadot - | 222*833e5d42SEmmanuel Vadot #include <dt-bindings/input/linux-event-codes.h> 223aa1a8ff2SEmmanuel Vadot #include <dt-bindings/interrupt-controller/irq.h> 224aa1a8ff2SEmmanuel Vadot 225aa1a8ff2SEmmanuel Vadot i2c { 226aa1a8ff2SEmmanuel Vadot #address-cells = <1>; 227aa1a8ff2SEmmanuel Vadot #size-cells = <0>; 228aa1a8ff2SEmmanuel Vadot 229aa1a8ff2SEmmanuel Vadot touchscreen@20 { 230aa1a8ff2SEmmanuel Vadot compatible = "syna,rmi4-i2c"; 231aa1a8ff2SEmmanuel Vadot reg = <0x20>; 232aa1a8ff2SEmmanuel Vadot interrupt-parent = <&gpx1>; 233aa1a8ff2SEmmanuel Vadot interrupts = <6 IRQ_TYPE_EDGE_FALLING>; 234aa1a8ff2SEmmanuel Vadot 235aa1a8ff2SEmmanuel Vadot syna,startup-delay-ms = <100>; 236aa1a8ff2SEmmanuel Vadot vdd-supply = <&tsp_vdd>; 237aa1a8ff2SEmmanuel Vadot vio-supply = <&ldo32_reg>; 238aa1a8ff2SEmmanuel Vadot 239aa1a8ff2SEmmanuel Vadot pinctrl-0 = <&touch_irq>; 240aa1a8ff2SEmmanuel Vadot pinctrl-names = "default"; 241aa1a8ff2SEmmanuel Vadot #address-cells = <1>; 242aa1a8ff2SEmmanuel Vadot #size-cells = <0>; 243aa1a8ff2SEmmanuel Vadot 244aa1a8ff2SEmmanuel Vadot rmi4-f01@1 { 245aa1a8ff2SEmmanuel Vadot reg = <0x1>; 246aa1a8ff2SEmmanuel Vadot syna,nosleep-mode = <1>; 247aa1a8ff2SEmmanuel Vadot }; 248aa1a8ff2SEmmanuel Vadot 249aa1a8ff2SEmmanuel Vadot rmi4-f12@12 { 250aa1a8ff2SEmmanuel Vadot reg = <0x12>; 251aa1a8ff2SEmmanuel Vadot syna,sensor-type = <1>; 252aa1a8ff2SEmmanuel Vadot }; 253aa1a8ff2SEmmanuel Vadot 254aa1a8ff2SEmmanuel Vadot rmi4-f1a@1a { 255aa1a8ff2SEmmanuel Vadot reg = <0x1a>; 256*833e5d42SEmmanuel Vadot linux,keycodes = <KEY_BACK KEY_HOME KEY_MENU>; 257aa1a8ff2SEmmanuel Vadot }; 258aa1a8ff2SEmmanuel Vadot }; 259aa1a8ff2SEmmanuel Vadot }; 260aa1a8ff2SEmmanuel Vadot 261aa1a8ff2SEmmanuel Vadot - | 262aa1a8ff2SEmmanuel Vadot #include <dt-bindings/interrupt-controller/irq.h> 263aa1a8ff2SEmmanuel Vadot 264aa1a8ff2SEmmanuel Vadot spi { 265aa1a8ff2SEmmanuel Vadot #address-cells = <1>; 266aa1a8ff2SEmmanuel Vadot #size-cells = <0>; 267aa1a8ff2SEmmanuel Vadot 268aa1a8ff2SEmmanuel Vadot touchscreen@0 { 269aa1a8ff2SEmmanuel Vadot compatible = "syna,rmi4-spi"; 270aa1a8ff2SEmmanuel Vadot reg = <0x0>; 271aa1a8ff2SEmmanuel Vadot interrupt-parent = <&gpx1>; 272aa1a8ff2SEmmanuel Vadot interrupts = <6 IRQ_TYPE_EDGE_FALLING>; 273aa1a8ff2SEmmanuel Vadot 274aa1a8ff2SEmmanuel Vadot spi-max-frequency = <4000000>; 275aa1a8ff2SEmmanuel Vadot spi-rx-delay-us = <30>; 276aa1a8ff2SEmmanuel Vadot spi-cpha; 277aa1a8ff2SEmmanuel Vadot spi-cpol; 278aa1a8ff2SEmmanuel Vadot 279aa1a8ff2SEmmanuel Vadot #address-cells = <1>; 280aa1a8ff2SEmmanuel Vadot #size-cells = <0>; 281aa1a8ff2SEmmanuel Vadot 282aa1a8ff2SEmmanuel Vadot rmi4-f01@1 { 283aa1a8ff2SEmmanuel Vadot reg = <0x1>; 284aa1a8ff2SEmmanuel Vadot syna,nosleep-mode = <1>; 285aa1a8ff2SEmmanuel Vadot }; 286aa1a8ff2SEmmanuel Vadot 287aa1a8ff2SEmmanuel Vadot rmi4-f11@11 { 288aa1a8ff2SEmmanuel Vadot reg = <0x11>; 289aa1a8ff2SEmmanuel Vadot touchscreen-inverted-y; 290aa1a8ff2SEmmanuel Vadot syna,sensor-type = <2>; 291aa1a8ff2SEmmanuel Vadot }; 292aa1a8ff2SEmmanuel Vadot }; 293aa1a8ff2SEmmanuel Vadot }; 294