summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/input/imagis,isa1200.yaml
blob: 4bc8630edcdd0a80b3323f35afa0695f6b2ce71f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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>;
            };
        };
    };