xref: /freebsd/sys/contrib/device-tree/Bindings/sound/cirrus,cs48l32.yaml (revision ae5de77ed78ae54d86cead5604869212e8008e6b)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/cirrus,cs48l32.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Cirrus Logic CS48L32 audio DSP.
8
9maintainers:
10  - patches@opensource.cirrus.com
11
12description: |
13  The CS48L32 is a high-performance low-power audio DSP for smartphones and
14  other portable audio devices. The CS48L32 combines a programmable Halo Core
15  DSP with a variety of power-efficient fixed-function audio processors.
16
17  See also the binding headers:
18
19    include/dt-bindings/sound/cs48l32.yaml
20
21allOf:
22  - $ref: /schemas/spi/spi-peripheral-props.yaml#
23  - $ref: dai-common.yaml#
24
25properties:
26  compatible:
27    enum:
28      - cirrus,cs48l32
29
30  reg:
31    description: SPI chip-select number.
32    maxItems: 1
33
34  spi-max-frequency:
35    maximum: 25000000
36
37  vdd-a-supply:
38    description: Regulator supplying VDD_A
39
40  vdd-d-supply:
41    description: Regulator supplying VDD_D
42
43  vdd-io-supply:
44    description: Regulator supplying VDD_IO
45
46  vdd-cp-supply:
47    description: Regulator supplying VDD_CP
48
49  reset-gpios:
50    description:
51      One entry specifying the GPIO controlling /RESET. Although optional,
52      it is strongly recommended to use a hardware reset.
53    maxItems: 1
54
55  interrupts:
56    maxItems: 1
57
58  clocks:
59    items:
60      - description: The clock supplied on MCLK1
61
62  clock-names:
63    const: mclk1
64
65  '#sound-dai-cells':
66    const: 1
67
68  cirrus,in-type:
69    description: |
70      A list of input type settings for each ADC input.
71      Inputs are one of these types:
72        CS48L32_IN_TYPE_DIFF : analog differential (default)
73        CS48L32_IN_TYPE_SE :   analog single-ended
74
75      The type of the left (L) and right (R) channel on each input is
76      independently configured, as are the two groups of pins muxable to
77      the input (referred to in the datasheet as "1" and "2").
78
79    $ref: /schemas/types.yaml#/definitions/uint32-array
80    items:
81      - description:
82          IN1L_1 analog input type. One of the CS48L32_IN_TYPE_xxx.
83        minimum: 0
84        maximum: 1
85        default: 0
86      - description:
87          IN1R_1 analog input type. One of the CS48L32_IN_TYPE_xxx.
88        minimum: 0
89        maximum: 1
90        default: 0
91      - description:
92          IN1L_2 analog input type. One of the CS48L32_IN_TYPE_xxx.
93        minimum: 0
94        maximum: 1
95        default: 0
96      - description:
97          IN1R_2 analog input type. One of the CS48L32_IN_TYPE_xxx.
98        minimum: 0
99        maximum: 1
100        default: 0
101
102  cirrus,pdm-sup:
103    description: |
104      Indicate which MICBIAS output supplies bias to the microphone.
105      There is one cell per input (IN1, IN2, ...).
106
107      One of the CS48L32_MICBIAS_xxx values.
108        CS48L32_PDM_SUP_VOUT_MIC : mic biased from VOUT_MIC
109        CS48L32_PDM_SUP_MICBIAS1 : mic biased from MICBIAS1
110
111      Also see the INn_PDM_SUP field in the datasheet.
112    $ref: /schemas/types.yaml#/definitions/uint32-array
113    items:
114      - description: IN1 PDM supply source
115        minimum: 0
116        maximum: 1
117        default: 0
118      - description: IN2 PDM supply source
119        minimum: 0
120        maximum: 1
121        default: 0
122
123required:
124  - compatible
125  - reg
126  - vdd-a-supply
127  - vdd-d-supply
128  - vdd-io-supply
129  - vdd-cp-supply
130
131additionalProperties: false
132
133examples:
134  - |
135    #include <dt-bindings/sound/cs48l32.h>
136
137    spi@e0006000 {
138        #address-cells = <1>;
139        #size-cells = <0>;
140        reg = <0xe0006000 0x1000>;
141
142        codec@1 {
143            compatible = "cirrus,cs48l32";
144
145            reg = <0x1>;
146            spi-max-frequency = <2500000>;
147
148            vdd-a-supply = <&regulator_1v8>;
149            vdd-d-supply = <&regulator_1v2>;
150            vdd-io-supply = <&regulator_1v8>;
151            vdd-cp-supply = <&regulator_1v8>;
152
153            reset-gpios = <&gpio 0 0>;
154
155            clocks = <&clks 0>;
156            clock-names = "mclk1";
157
158            interrupt-parent = <&gpio0>;
159            interrupts = <56 8>;
160
161            #sound-dai-cells = <1>;
162
163            cirrus,in-type = <
164                CS48L32_IN_TYPE_DIFF CS48L32_IN_TYPE_DIFF
165                CS48L32_IN_TYPE_SE   CS48L32_IN_TYPE_SE
166            >;
167
168            cirrus,pdm-sup = <
169              CS48L32_PDM_SUP_MICBIAS1 CS48L32_PDM_SUP_MICBIAS1
170            >;
171        };
172    };
173
174#
175# Minimal config
176#
177  - |
178    #include <dt-bindings/sound/cs48l32.h>
179
180    spi@e0006000 {
181        #address-cells = <1>;
182        #size-cells = <0>;
183        reg = <0xe0006000 0x1000>;
184
185        codec@1 {
186            compatible = "cirrus,cs48l32";
187
188            reg = <0x1>;
189
190            vdd-a-supply = <&regulator_1v8>;
191            vdd-d-supply = <&regulator_1v2>;
192            vdd-io-supply = <&regulator_1v8>;
193            vdd-cp-supply = <&regulator_1v8>;
194        };
195    };
196