# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/input/imagis,isa1200.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Imagis ISA1200 haptic motor driver maintainers: - Svyatoslav Ryhel - Linus Walleij description: The ISA1200 is a high-performance enhanced haptic motor driver designed for mobile hand-held devices. It supports various voltages for both ERM (Eccentric Rotating Mass) and LRA (Linear Resonant Actuator) type actuators. Thanks to an embedded LDO, battery power can be used directly in handheld applications. properties: compatible: const: imagis,isa1200 reg: maxItems: 1 control-gpios: description: One or two GPIOs flagged as active high linked to HEN and LEN pins minItems: 1 maxItems: 2 clocks: maxItems: 1 pwms: maxItems: 1 vdd-supply: description: Regulator for 2.4V - 5.5V power supply vddp-supply: description: Regulator for 2.4V - 3.6V IO power supply imagis,clk-div: $ref: /schemas/types.yaml#/definitions/uint32 description: Divider for the external input clock/PWM enum: [128, 256, 512, 1024] default: 128 imagis,pll-div: $ref: /schemas/types.yaml#/definitions/uint32 description: Divider for the internal PLL clock minimum: 1 maximum: 15 default: 1 imagis,mode: $ref: /schemas/types.yaml#/definitions/uint32 description: | Defines the motor type isa1200 drives 0 - LRA (Linear Resonant Actuator) 1 - ERM (Eccentric Rotating Mass) enum: [0, 1] default: 0 imagis,period-ns: description: Period of the internal PWM channel in nanoseconds. minimum: 10000 maximum: 30000 imagis,duty-cycle-ns: description: Duty cycle of the external/internal PWM channel in nanoseconds, defaults to 50% of the channel's period ldo: $ref: /schemas/regulator/regulator.yaml# type: object description: Embedded LDO regulator with voltage range 2.3V - 3.8V unevaluatedProperties: false required: - regulator-min-microvolt - regulator-max-microvolt required: - compatible - reg - ldo oneOf: - required: - clocks - imagis,period-ns - required: - pwms additionalProperties: false examples: - | #include i2c { #address-cells = <1>; #size-cells = <0>; haptic-engine@49 { compatible = "imagis,isa1200"; reg = <0x49>; clocks = <&isa1200_refclk>; control-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>, <&gpio 23 GPIO_ACTIVE_HIGH>; vdd-supply = <&vdd_3v3_vbat>; vddp-supply = <&vdd_2v8_vvib>; imagis,clk-div = <256>; imagis,pll-div = <2>; imagis,mode = <0>; /* LRA_MODE */ imagis,period-ns = <13400>; imagis,duty-cycle-ns = <100>; ldo { regulator-name = "vdd_vib"; regulator-min-microvolt = <2300000>; regulator-max-microvolt = <2300000>; }; }; };