dt-bindings: input: Document Imagis ISA1200 haptic motor driver

Document the Imagis ISA1200 haptic motor driver, used primarily in mobile
handheld devices and capable of supporting up to two motors.

The exact datasheet for the ISA1200 is not available; all data was modeled
based on available downstream kernel sources for various devices and
fragments of information scattered across the internet.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20260617070528.35006-2-clamor95@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
Svyatoslav Ryhel 2026-06-17 10:05:26 +03:00 committed by Dmitry Torokhov
parent 7890fd28fd
commit 66788475a4

View File

@ -0,0 +1,141 @@
# 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 <clamor95@gmail.com>
- Linus Walleij <linusw@kernel.org>
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 <dt-bindings/gpio/gpio.h>
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>;
};
};
};