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