summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml
blob: 5efcd79b527c3c5ff8ce1bdf62600425397af4a4 (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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/ti,twl6040.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments TWL6040 family audio codec

maintainers:
  - Eduard Bostina <egbostina@gmail.com>

description:
  The TWL6040s are 8-channel high quality low-power audio codecs providing
  audio, vibra and GPO functionality on OMAP4+ platforms. They are connected
  to the host processor via i2c for commands, McPDM for audio data and
  commands.

properties:
  compatible:
    enum:
      - ti,twl6040
      - ti,twl6041

  reg:
    const: 0x4b

  interrupts:
    maxItems: 1

  gpio-controller: true

  "#gpio-cells":
    const: 1

  "#clock-cells":
    const: 0

  ti,audpwron-gpio:
    maxItems: 1
    description: Power on GPIO line for the twl6040

  vio-supply:
    description: Regulator for the twl6040 VIO supply

  v2v1-supply:
    description: Regulator for the twl6040 V2V1 supply

  enable-active-high:
    type: boolean
    description: To power on the twl6040 during boot.

  clocks:
    minItems: 1
    maxItems: 2

  clock-names:
    minItems: 1
    maxItems: 2
    items:
      enum:
        - clk32k
        - mclk

  vddvibl-supply:
    description: Regulator for the left vibra motor

  vddvibr-supply:
    description: Regulator for the right vibra motor

  vibra:
    type: object
    additionalProperties: false
    properties:
      ti,vibldrv-res:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: Resistance parameter for left driver

      ti,vibrdrv-res:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: Resistance parameter for right driver

      ti,viblmotor-res:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: Resistance parameter for left motor

      ti,vibrmotor-res:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: Resistance parameter for right motor

      ti,vddvibl-uV:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: vddvibl default voltage if it needs to be changed

      ti,vddvibr-uV:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: vddvibr default voltage if it needs to be changed

    required:
      - ti,vibldrv-res
      - ti,vibrdrv-res
      - ti,viblmotor-res
      - ti,vibrmotor-res

required:
  - compatible
  - reg
  - interrupts
  - "#clock-cells"
  - vio-supply
  - v2v1-supply

allOf:
  - if:
      required:
        - vibra
    then:
      required:
        - vddvibl-supply
        - vddvibr-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        audio-codec@4b {
            compatible = "ti,twl6040";
            reg = <0x4b>;
            interrupts = <0 119 IRQ_TYPE_LEVEL_HIGH>;
            interrupt-parent = <&gic>;
            gpio-controller;
            #gpio-cells = <1>;
            #clock-cells = <0>;
            ti,audpwron-gpio = <&gpio4 31 0>;

            vio-supply = <&v1v8>;
            v2v1-supply = <&v2v1>;
            enable-active-high;

            /* regulators for vibra motor */
            vddvibl-supply = <&vbat>;
            vddvibr-supply = <&vbat>;

            vibra {
                ti,vibldrv-res = <8>;
                ti,vibrdrv-res = <3>;
                ti,viblmotor-res = <10>;
                ti,vibrmotor-res = <10>;
            };
        };
    };