xref: /linux/Documentation/devicetree/bindings/input/imagis,isa1200.yaml (revision 67f8bc848ee31831336bd478e57d2f993551902e)
1*66788475SSvyatoslav Ryhel# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*66788475SSvyatoslav Ryhel%YAML 1.2
3*66788475SSvyatoslav Ryhel---
4*66788475SSvyatoslav Ryhel$id: http://devicetree.org/schemas/input/imagis,isa1200.yaml#
5*66788475SSvyatoslav Ryhel$schema: http://devicetree.org/meta-schemas/core.yaml#
6*66788475SSvyatoslav Ryhel
7*66788475SSvyatoslav Ryheltitle: Imagis ISA1200 haptic motor driver
8*66788475SSvyatoslav Ryhel
9*66788475SSvyatoslav Ryhelmaintainers:
10*66788475SSvyatoslav Ryhel  - Svyatoslav Ryhel <clamor95@gmail.com>
11*66788475SSvyatoslav Ryhel  - Linus Walleij <linusw@kernel.org>
12*66788475SSvyatoslav Ryhel
13*66788475SSvyatoslav Ryheldescription:
14*66788475SSvyatoslav Ryhel  The ISA1200 is a high-performance enhanced haptic motor driver designed
15*66788475SSvyatoslav Ryhel  for mobile hand-held devices. It supports various voltages for both ERM
16*66788475SSvyatoslav Ryhel  (Eccentric Rotating Mass) and LRA (Linear Resonant Actuator) type
17*66788475SSvyatoslav Ryhel  actuators. Thanks to an embedded LDO, battery power can be used directly
18*66788475SSvyatoslav Ryhel  in handheld applications.
19*66788475SSvyatoslav Ryhel
20*66788475SSvyatoslav Ryhelproperties:
21*66788475SSvyatoslav Ryhel  compatible:
22*66788475SSvyatoslav Ryhel    const: imagis,isa1200
23*66788475SSvyatoslav Ryhel
24*66788475SSvyatoslav Ryhel  reg:
25*66788475SSvyatoslav Ryhel    maxItems: 1
26*66788475SSvyatoslav Ryhel
27*66788475SSvyatoslav Ryhel  control-gpios:
28*66788475SSvyatoslav Ryhel    description:
29*66788475SSvyatoslav Ryhel      One or two GPIOs flagged as active high linked to HEN and LEN pins
30*66788475SSvyatoslav Ryhel    minItems: 1
31*66788475SSvyatoslav Ryhel    maxItems: 2
32*66788475SSvyatoslav Ryhel
33*66788475SSvyatoslav Ryhel  clocks:
34*66788475SSvyatoslav Ryhel    maxItems: 1
35*66788475SSvyatoslav Ryhel
36*66788475SSvyatoslav Ryhel  pwms:
37*66788475SSvyatoslav Ryhel    maxItems: 1
38*66788475SSvyatoslav Ryhel
39*66788475SSvyatoslav Ryhel  vdd-supply:
40*66788475SSvyatoslav Ryhel    description:
41*66788475SSvyatoslav Ryhel      Regulator for 2.4V - 5.5V power supply
42*66788475SSvyatoslav Ryhel
43*66788475SSvyatoslav Ryhel  vddp-supply:
44*66788475SSvyatoslav Ryhel    description:
45*66788475SSvyatoslav Ryhel      Regulator for 2.4V - 3.6V IO power supply
46*66788475SSvyatoslav Ryhel
47*66788475SSvyatoslav Ryhel  imagis,clk-div:
48*66788475SSvyatoslav Ryhel    $ref: /schemas/types.yaml#/definitions/uint32
49*66788475SSvyatoslav Ryhel    description:
50*66788475SSvyatoslav Ryhel      Divider for the external input clock/PWM
51*66788475SSvyatoslav Ryhel    enum: [128, 256, 512, 1024]
52*66788475SSvyatoslav Ryhel    default: 128
53*66788475SSvyatoslav Ryhel
54*66788475SSvyatoslav Ryhel  imagis,pll-div:
55*66788475SSvyatoslav Ryhel    $ref: /schemas/types.yaml#/definitions/uint32
56*66788475SSvyatoslav Ryhel    description:
57*66788475SSvyatoslav Ryhel      Divider for the internal PLL clock
58*66788475SSvyatoslav Ryhel    minimum: 1
59*66788475SSvyatoslav Ryhel    maximum: 15
60*66788475SSvyatoslav Ryhel    default: 1
61*66788475SSvyatoslav Ryhel
62*66788475SSvyatoslav Ryhel  imagis,mode:
63*66788475SSvyatoslav Ryhel    $ref: /schemas/types.yaml#/definitions/uint32
64*66788475SSvyatoslav Ryhel    description: |
65*66788475SSvyatoslav Ryhel      Defines the motor type isa1200 drives
66*66788475SSvyatoslav Ryhel      0 - LRA (Linear Resonant Actuator)
67*66788475SSvyatoslav Ryhel      1 - ERM (Eccentric Rotating Mass)
68*66788475SSvyatoslav Ryhel    enum: [0, 1]
69*66788475SSvyatoslav Ryhel    default: 0
70*66788475SSvyatoslav Ryhel
71*66788475SSvyatoslav Ryhel  imagis,period-ns:
72*66788475SSvyatoslav Ryhel    description:
73*66788475SSvyatoslav Ryhel      Period of the internal PWM channel in nanoseconds.
74*66788475SSvyatoslav Ryhel    minimum: 10000
75*66788475SSvyatoslav Ryhel    maximum: 30000
76*66788475SSvyatoslav Ryhel
77*66788475SSvyatoslav Ryhel  imagis,duty-cycle-ns:
78*66788475SSvyatoslav Ryhel    description:
79*66788475SSvyatoslav Ryhel      Duty cycle of the external/internal PWM channel in nanoseconds,
80*66788475SSvyatoslav Ryhel      defaults to 50% of the channel's period
81*66788475SSvyatoslav Ryhel
82*66788475SSvyatoslav Ryhel  ldo:
83*66788475SSvyatoslav Ryhel    $ref: /schemas/regulator/regulator.yaml#
84*66788475SSvyatoslav Ryhel    type: object
85*66788475SSvyatoslav Ryhel    description:
86*66788475SSvyatoslav Ryhel      Embedded LDO regulator with voltage range 2.3V - 3.8V
87*66788475SSvyatoslav Ryhel    unevaluatedProperties: false
88*66788475SSvyatoslav Ryhel
89*66788475SSvyatoslav Ryhel    required:
90*66788475SSvyatoslav Ryhel      - regulator-min-microvolt
91*66788475SSvyatoslav Ryhel      - regulator-max-microvolt
92*66788475SSvyatoslav Ryhel
93*66788475SSvyatoslav Ryhelrequired:
94*66788475SSvyatoslav Ryhel  - compatible
95*66788475SSvyatoslav Ryhel  - reg
96*66788475SSvyatoslav Ryhel  - ldo
97*66788475SSvyatoslav Ryhel
98*66788475SSvyatoslav RyheloneOf:
99*66788475SSvyatoslav Ryhel  - required:
100*66788475SSvyatoslav Ryhel      - clocks
101*66788475SSvyatoslav Ryhel      - imagis,period-ns
102*66788475SSvyatoslav Ryhel  - required:
103*66788475SSvyatoslav Ryhel      - pwms
104*66788475SSvyatoslav Ryhel
105*66788475SSvyatoslav RyheladditionalProperties: false
106*66788475SSvyatoslav Ryhel
107*66788475SSvyatoslav Ryhelexamples:
108*66788475SSvyatoslav Ryhel  - |
109*66788475SSvyatoslav Ryhel    #include <dt-bindings/gpio/gpio.h>
110*66788475SSvyatoslav Ryhel
111*66788475SSvyatoslav Ryhel    i2c {
112*66788475SSvyatoslav Ryhel        #address-cells = <1>;
113*66788475SSvyatoslav Ryhel        #size-cells = <0>;
114*66788475SSvyatoslav Ryhel
115*66788475SSvyatoslav Ryhel        haptic-engine@49 {
116*66788475SSvyatoslav Ryhel            compatible = "imagis,isa1200";
117*66788475SSvyatoslav Ryhel            reg = <0x49>;
118*66788475SSvyatoslav Ryhel
119*66788475SSvyatoslav Ryhel            clocks = <&isa1200_refclk>;
120*66788475SSvyatoslav Ryhel
121*66788475SSvyatoslav Ryhel            control-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>,
122*66788475SSvyatoslav Ryhel                            <&gpio 23 GPIO_ACTIVE_HIGH>;
123*66788475SSvyatoslav Ryhel
124*66788475SSvyatoslav Ryhel            vdd-supply = <&vdd_3v3_vbat>;
125*66788475SSvyatoslav Ryhel            vddp-supply = <&vdd_2v8_vvib>;
126*66788475SSvyatoslav Ryhel
127*66788475SSvyatoslav Ryhel            imagis,clk-div = <256>;
128*66788475SSvyatoslav Ryhel            imagis,pll-div = <2>;
129*66788475SSvyatoslav Ryhel
130*66788475SSvyatoslav Ryhel            imagis,mode = <0>; /* LRA_MODE */
131*66788475SSvyatoslav Ryhel
132*66788475SSvyatoslav Ryhel            imagis,period-ns = <13400>;
133*66788475SSvyatoslav Ryhel            imagis,duty-cycle-ns = <100>;
134*66788475SSvyatoslav Ryhel
135*66788475SSvyatoslav Ryhel            ldo {
136*66788475SSvyatoslav Ryhel                regulator-name = "vdd_vib";
137*66788475SSvyatoslav Ryhel                regulator-min-microvolt = <2300000>;
138*66788475SSvyatoslav Ryhel                regulator-max-microvolt = <2300000>;
139*66788475SSvyatoslav Ryhel            };
140*66788475SSvyatoslav Ryhel        };
141*66788475SSvyatoslav Ryhel    };
142