| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | |
| %YAML 1.2 | |
| --- | |
| $id: http://devicetree.org/schemas/input/dlg,da7280.yaml# | |
| $schema: http://devicetree.org/meta-schemas/core.yaml# | |
| title: Dialog Semiconductor DA7280 Low Power High-Definition Haptic Driver | |
| maintainers: | |
| - Roy Im <roy.im.opensource@diasemi.com> | |
| properties: | |
| compatible: | |
| const: dlg,da7280 | |
| reg: | |
| maxItems: 1 | |
| description: I2C address of the device. | |
| interrupts: | |
| maxItems: 1 | |
| dlg,actuator-type: | |
| enum: | |
| - LRA # Linear Resonance Actuator type | |
| - ERM-bar # Bar type Eccentric Rotating Mass | |
| - ERM-coin # Coin type Eccentric Rotating Mass | |
| dlg,const-op-mode: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| enum: | |
| - 1 # Direct register override (DRO) mode triggered by i2c (default) | |
| - 2 # PWM data source mode controlled by PWM duty | |
| description: | |
| Haptic operation mode for FF_CONSTANT | |
| dlg,periodic-op-mode: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| enum: | |
| - 1 # Register triggered waveform memory(RTWM) mode, the pattern | |
| # assigned to the PS_SEQ_ID played as much times as PS_SEQ_LOOP | |
| - 2 # Edge triggered waveform memory(ETWM) mode, external GPI(N) | |
| # control are required to enable/disable and it needs to keep | |
| # device enabled by sending magnitude (X > 0), | |
| # the pattern is assigned to the GPI(N)_SEQUENCE_ID below | |
| default: 1 | |
| description: | |
| Haptic operation mode for FF_PERIODIC. | |
| The default value is 1 for both of the operation modes. | |
| For more details, please see the datasheet | |
| dlg,nom-microvolt: | |
| minimum: 0 | |
| maximum: 6000000 | |
| description: | |
| Nominal actuator voltage rating | |
| dlg,abs-max-microvolt: | |
| minimum: 0 | |
| maximum: 6000000 | |
| description: | |
| Absolute actuator maximum voltage rating | |
| dlg,imax-microamp: | |
| minimum: 0 | |
| maximum: 252000 | |
| default: 130000 | |
| description: | |
| Actuator max current rating | |
| dlg,impd-micro-ohms: | |
| minimum: 0 | |
| maximum: 1500000000 | |
| description: | |
| Impedance of the actuator | |
| pwms: | |
| maxItems: 1 | |
| dlg,ps-seq-id: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| minimum: 0 | |
| maximum: 15 | |
| description: | |
| The PS_SEQ_ID(pattern ID in waveform memory inside chip) | |
| to play back when RTWM-MODE is enabled | |
| dlg,ps-seq-loop: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| minimum: 0 | |
| maximum: 15 | |
| description: | |
| The PS_SEQ_LOOP, Number of times the pre-stored sequence pointed to by | |
| PS_SEQ_ID or GPI(N)_SEQUENCE_ID is repeated | |
| dlg,gpi0-seq-id: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| minimum: 0 | |
| maximum: 15 | |
| description: | |
| the GPI0_SEQUENCE_ID, pattern to play when gpi0 is triggered | |
| dlg,gpi1-seq-id: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| minimum: 0 | |
| maximum: 15 | |
| description: | |
| the GPI1_SEQUENCE_ID, pattern to play when gpi1 is triggered | |
| dlg,gpi2-seq-id: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| minimum: 0 | |
| maximum: 15 | |
| description: | |
| the GPI2_SEQUENCE_ID, pattern to play when gpi2 is triggered | |
| dlg,gpi0-mode: | |
| enum: | |
| - Single-pattern | |
| - Multi-pattern | |
| description: | |
| Pattern mode for gpi0 | |
| dlg,gpi1-mode: | |
| enum: | |
| - Single-pattern | |
| - Multi-pattern | |
| description: | |
| Pattern mode for gpi1 | |
| dlg,gpi2-mode: | |
| enum: | |
| - Single-pattern | |
| - Multi-pattern | |
| description: | |
| Pattern mode for gpi2 | |
| dlg,gpi0-polarity: | |
| enum: | |
| - Rising-edge | |
| - Falling-edge | |
| - Both-edge | |
| description: | |
| gpi0 polarity, Haptic will work by this edge option in case of ETWM mode | |
| dlg,gpi1-polarity: | |
| enum: | |
| - Rising-edge | |
| - Falling-edge | |
| - Both-edge | |
| description: | |
| gpi1 polarity, Haptic will work by this edge option in case of ETWM mode | |
| dlg,gpi2-polarity: | |
| enum: | |
| - Rising-edge | |
| - Falling-edge | |
| - Both-edge | |
| description: | |
| gpi2 polarity, Haptic will work by this edge option in case of ETWM mode | |
| dlg,resonant-freq-hz: | |
| minimum: 50 | |
| maximum: 300 | |
| default: 205 | |
| dlg,bemf-sens-enable: | |
| $ref: /schemas/types.yaml#/definitions/flag | |
| description: | |
| Enable for internal loop computations | |
| dlg,freq-track-enable: | |
| $ref: /schemas/types.yaml#/definitions/flag | |
| description: | |
| Enable for resonant frequency tracking | |
| dlg,acc-enable: | |
| $ref: /schemas/types.yaml#/definitions/flag | |
| description: | |
| Enable for active acceleration | |
| dlg,rapid-stop-enable: | |
| $ref: /schemas/types.yaml#/definitions/flag | |
| description: | |
| Enable for rapid stop | |
| dlg,amp-pid-enable: | |
| $ref: /schemas/types.yaml#/definitions/flag | |
| description: | |
| Enable for the amplitude PID | |
| dlg,mem-array: | |
| $ref: /schemas/types.yaml#/definitions/uint32-array | |
| minItems: 100 | |
| description: | |
| Customized waveform memory (patterns) data downloaded to the device during initialization. | |
| Each entry value must be included between 0 and 255. | |
| required: | |
| - compatible | |
| - reg | |
| - interrupts | |
| - dlg,actuator-type | |
| - dlg,const-op-mode | |
| - dlg,periodic-op-mode | |
| - dlg,nom-microvolt | |
| - dlg,abs-max-microvolt | |
| - dlg,imax-microamp | |
| - dlg,impd-micro-ohms | |
| additionalProperties: false | |
| examples: | |
| - | | |
| #include <dt-bindings/gpio/gpio.h> | |
| #include <dt-bindings/interrupt-controller/irq.h> | |
| i2c { | |
| #address-cells = <1>; | |
| #size-cells = <0>; | |
| haptics@4a { | |
| compatible = "dlg,da7280"; | |
| reg = <0x4a>; | |
| interrupt-parent = <&gpio6>; | |
| interrupts = <11 IRQ_TYPE_LEVEL_LOW>; | |
| dlg,actuator-type = "LRA"; | |
| dlg,const-op-mode = <1>; | |
| dlg,periodic-op-mode = <1>; | |
| dlg,nom-microvolt = <2000000>; | |
| dlg,abs-max-microvolt = <2000000>; | |
| dlg,imax-microamp = <170000>; | |
| dlg,resonant-freq-hz = <180>; | |
| dlg,impd-micro-ohms = <10500000>; | |
| dlg,freq-track-enable; | |
| dlg,rapid-stop-enable; | |
| dlg,mem-array = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 | |
| 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; | |
| }; | |
| }; |