From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40D3136EAAE for ; Fri, 24 Apr 2026 07:13:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777014821; cv=none; b=CYsRC7CTS+WRz5ltTWpT12DkTG+SXtZLbH3bkwCH1QJ34I5cSqPVEuu0I98JYQmn34RrG1hRL0VoVfUM3DFQ9l07pbp1ZFoiNYGKOzufE/1ruBx9XcWMqf4TQwkGCCXtrGvUtnNDEbQDFouX+MhC5fXIOZOpFLuyLXPOQjZvjk4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777014821; c=relaxed/simple; bh=tnLPRL9A9azacxq4NLt+IId8izuY1ScptZDT7gzu40c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F1ol2YvJrVQC+QQyMtyfpdp61uVWuNDfv5y4yyS5OqJLZcYFx5OEHjZ9cCVioNqc8ObavM50H17+nThjIuq+MsfZ4CZNM65N4EhFGn17rkv3Xttt+abf2eKI/ofvcWOaWlrTm4ijSL8zJxWEx5sWIOot+mm7XdmHMF9xn4nXQ4o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JY4AFANb; arc=none smtp.client-ip=209.85.167.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JY4AFANb" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-5a2b636b944so9791049e87.1 for ; Fri, 24 Apr 2026 00:13:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777014814; x=1777619614; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RBE1o78vN0SIWnrb8j+CXJa2K5r2M8CfhkLvD2G7oEc=; b=JY4AFANbEnAu7Sm0MHnDuPYu5DcBcphUo8zr8wbxxIxCIMX1QWhV37CB2N3tJcHl31 MGJ7Oqaq/fvZCBtCFoJX0WK4vwNaCXoy5AY39WxlAyft8e9I8sDSAHUl9jB4+lMbBAgx hh4+eZoBk6eZVJ//ykx+gKR51D5rx5mNTo4cXUrBHZvfZe7otyL7obuzYUXqztsmKH0I 9qpm8OJHq+KyKz9WBYvDUbF2yMG431YAM6MCWl8njp7LD2we2A/CdTw8ZkXNx5Ji3txM nhZCGagNS/UoxBCFjNB9mIWNL16X9XOtCA8xXiNRH4HDSaO738FF4+SiMkkoGGa/I4JB iTYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777014814; x=1777619614; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RBE1o78vN0SIWnrb8j+CXJa2K5r2M8CfhkLvD2G7oEc=; b=pvqKGEkbkw8tf6ZYFY3Ig1HKQX2pDBNQ3v0oQABS3LAVQnpIZM0HvftlWr+CICkHXF TNqdvC1DpwKqqfkyyk6/n25gCWgWPcCRxTAfdX7DXy4GUtVkvdxxkgz9vJ1EQAz5TmWf lcSnddOG44vsrULeM9f/txQRTiOBwfXxP9ueU2oKknrhp1ZTFs3cSerdpU58Ee/W4TX9 gRLYdGlhZrTjNFEuRKbGv1ZM9+6aAWy8cowZrQyesd25aGr7HJ2+wdDykNGZhRoGL9Is cUXWIxVY8z/9963/mxkIf2wsvMR4nWGVTxIObuqmnNzm7Z9t0iN7Q7kXMTawv0TrpVv5 4cVw== X-Forwarded-Encrypted: i=1; AFNElJ9ypLOHQuXvoQEwKQI3JF94GM2VDA39Q5yrphXYVQXcCbERTgRJMwERBtm6eo7Wj4fTGU1spDuVLzL1wI8=@vger.kernel.org X-Gm-Message-State: AOJu0YzJ8brwdUmNfvyWx6aI7y1vfGwloXrAe9qUqGJcGispNgYW/lND ImlXNX6vKK8Ozr2wcnLmhPb8b1Yb05HpcUsU79+fk0uVHRGCDZrcSTN4 X-Gm-Gg: AeBDieujV4uplJ9dchWHYTIKP7ougut4JIMa2aLmo9wyeIigIggBo8m0YjZ9xHcZvbI XZDcTvP7fvBZ13JgviP0wMnwJWN5+Nj4A0+h9n3co7j+GMrT95G1NkRjRKRse1Cs/wnxkrVEdDv PZC2aoTlD1N+rJMm+7mIgi73+0Rplgh7rLnNFr1jQ0eH3y0JwKQUCMliEhOVv/GZ7QY2RklOInS b2ae35EhjUX7hPdxSMTsN3ak//6poSHhT6oR4KEztjSfT34KhW9NZDufSLWhBkYD+fM3FckquR6 Owk5vnnckSuc0SWzAZvcD+6K3GERClFjnOBox/r1reK+Y3fNBBe6peo1/T9s/pSEMaW7hy2IeAl K47lexgxmjA184wBTB1Xo5yoFr/dR6yi19yayIiJVczplMISGNylYfwVVzG5tuuTLA/nM/hMQcZ Niu1Q4pqBtjh6E0kjhr4Xc5n8= X-Received: by 2002:a05:6512:3b14:b0:5a3:d381:2a7c with SMTP id 2adb3069b0e04-5a4172e2d60mr12562766e87.31.1777014814198; Fri, 24 Apr 2026 00:13:34 -0700 (PDT) Received: from xeon ([188.163.112.56]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38ecb290095sm43760131fa.0.2026.04.24.00.13.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 00:13:33 -0700 (PDT) From: Svyatoslav Ryhel To: Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Linus Walleij , Svyatoslav Ryhel Cc: linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 1/2] dt-bindings: input: Document Imagis ISA1200 haptic motor driver Date: Fri, 24 Apr 2026 10:13:04 +0300 Message-ID: <20260424071305.89503-2-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260424071305.89503-1-clamor95@gmail.com> References: <20260424071305.89503-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 --- .../bindings/input/imagis,isa1200.yaml | 145 ++++++++++++++++++ include/dt-bindings/input/isa1200.h | 16 ++ 2 files changed, 161 insertions(+) create mode 100644 Documentation/devicetree/bindings/input/imagis,isa1200.yaml create mode 100644 include/dt-bindings/input/isa1200.h diff --git a/Documentation/devicetree/bindings/input/imagis,isa1200.yaml b/Documentation/devicetree/bindings/input/imagis,isa1200.yaml new file mode 100644 index 000000000000..51767fd8189d --- /dev/null +++ b/Documentation/devicetree/bindings/input/imagis,isa1200.yaml @@ -0,0 +1,145 @@ +# 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 + + enable-gpios: + description: + One or two GPIOs flagged as active high linked to HEN and LEN pins + 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 + 0 - 128 + 1 - 256 + 2 - 512 + 3 - 1024 + enum: [0, 1, 2, 3] + default: 0 + + 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: 128 + maximum: 254 + + 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 + +anyOf: + - required: + - clocks + - imagis,period-ns + - required: + - pwms + +additionalProperties: false + +examples: + - | + #include + #include + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + haptic-engine@49 { + compatible = "imagis,isa1200"; + reg = <0x49>; + + clocks = <&isa1200_refclk>; + + enable-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>, + <&gpio 23 GPIO_ACTIVE_HIGH>; + + vdd-supply = <&vdd_3v3_vbat>; + vddp-supply = <&vdd_2v8_vvib>; + + imagis,clk-div = ; + imagis,pll-div = <2>; + + imagis,mode = ; + + imagis,period-ns = <134>; + imagis,duty-cycle-ns = <100>; + + ldo { + regulator-name = "vdd_vib"; + regulator-min-microvolt = <2300000>; + regulator-max-microvolt = <2300000>; + }; + }; + }; diff --git a/include/dt-bindings/input/isa1200.h b/include/dt-bindings/input/isa1200.h new file mode 100644 index 000000000000..cbae47ccf99b --- /dev/null +++ b/include/dt-bindings/input/isa1200.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */ + +#ifndef _DT_BINDINGS_ISA1200_H +#define _DT_BINDINGS_ISA1200_H + +/* Linked actuator type */ +#define ISA1200_LRA_MODE 0 +#define ISA1200_ERM_MODE 1 + +/* External clock divider */ +#define ISA1200_CKLDIV_128 0 +#define ISA1200_CKLDIV_256 1 +#define ISA1200_CKLDIV_512 2 +#define ISA1200_CKLDIV_1024 3 + +#endif -- 2.51.0