GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / sound / qcom,q6dsp-lpass-ports.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: "http://devicetree.org/schemas/sound/qcom,q6dsp-lpass-ports.yaml#"
5 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7 title: Qualcomm DSP LPASS(Low Power Audio SubSystem) Audio Ports binding
8
9 maintainers:
10   - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11
12 description: |
13   This binding describes the Qualcomm DSP LPASS Audio ports
14
15 properties:
16   compatible:
17     enum:
18       - qcom,q6afe-dais
19       - qcom,q6apm-lpass-dais
20
21   '#sound-dai-cells':
22     const: 1
23
24   '#address-cells':
25     const: 1
26
27   '#size-cells':
28     const: 0
29
30 #Digital Audio Interfaces
31 patternProperties:
32   '^dai@[0-9]+$':
33     type: object
34     description:
35       Q6DSP Digital Audio Interfaces.
36
37     properties:
38       reg:
39         description:
40           Digital Audio Interface ID
41
42       qcom,sd-lines:
43         $ref: /schemas/types.yaml#/definitions/uint32-array
44         description:
45           List of serial data lines used by this dai.should be one or more of the 0-3 sd lines.
46         minItems: 1
47         maxItems: 4
48         uniqueItems: true
49         items:
50           minimum: 0
51           maximum: 3
52
53       qcom,tdm-sync-mode:
54         $ref: /schemas/types.yaml#/definitions/uint32
55         enum: [0, 1, 2]
56         description:
57           TDM Synchronization mode
58             0 = Short sync bit mode
59             1 = Long sync mode
60             2 = Short sync slot mode
61
62       qcom,tdm-sync-src:
63         $ref: /schemas/types.yaml#/definitions/uint32
64         enum: [0, 1]
65         description:
66           TDM Synchronization source
67             0 = External source
68             1 = Internal source
69
70       qcom,tdm-data-out:
71         $ref: /schemas/types.yaml#/definitions/uint32
72         enum: [0, 1]
73         description:
74           TDM Data out signal to drive with other masters
75             0 = Disable
76             1 = Enable
77
78       qcom,tdm-invert-sync:
79         $ref: /schemas/types.yaml#/definitions/uint32
80         enum: [0, 1]
81         description:
82           TDM Invert the sync
83             0 = Normal
84             1 = Invert
85
86       qcom,tdm-data-delay:
87         $ref: /schemas/types.yaml#/definitions/uint32
88         enum: [0, 1, 2]
89         description:
90           TDM Number of bit clock to delay data
91             0 = 0 bit clock cycle
92             1 = 1 bit clock cycle
93             2 = 2 bit clock cycle
94
95       qcom,tdm-data-align:
96         $ref: /schemas/types.yaml#/definitions/uint32
97         enum: [0, 1]
98         description:
99           Indicate how data is packed within the slot. For example, 32 slot
100           width in case of sample bit width is 24TDM Invert the sync.
101             0 = MSB
102             1 = LSB
103
104     required:
105       - reg
106
107     allOf:
108       - if:
109           properties:
110             reg:
111               contains:
112                 # TDM DAI ID range from PRIMARY_TDM_RX_0 - QUINARY_TDM_TX_7
113                 items:
114                   minimum: 24
115                   maximum: 103
116         then:
117           required:
118             - qcom,tdm-sync-mode
119             - qcom,tdm-sync-src
120             - qcom,tdm-data-out
121             - qcom,tdm-invert-sync
122             - qcom,tdm-data-delay
123             - qcom,tdm-data-align
124
125       - if:
126           properties:
127             reg:
128               contains:
129                 # MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX and
130                 # QUINARY_MI2S_RX - QUINARY_MI2S_TX
131                 items:
132                   oneOf:
133                     - minimum: 16
134                       maximum: 23
135                     - minimum: 127
136                       maximum: 128
137         then:
138           required:
139             - qcom,sd-lines
140
141     additionalProperties: false
142
143 required:
144   - compatible
145   - "#sound-dai-cells"
146   - "#address-cells"
147   - "#size-cells"
148
149 additionalProperties: false
150
151 examples:
152   - |
153     #include <dt-bindings/soc/qcom,apr.h>
154     #include <dt-bindings/sound/qcom,q6afe.h>
155     apr {
156         compatible = "qcom,apr-v2";
157         #address-cells = <1>;
158         #size-cells = <0>;
159         qcom,domain = <APR_DOMAIN_ADSP>;
160
161         service@4 {
162             compatible = "qcom,q6afe";
163             reg = <APR_SVC_AFE>;
164             qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
165
166             dais {
167                 compatible = "qcom,q6afe-dais";
168                 #address-cells = <1>;
169                 #size-cells = <0>;
170                 #sound-dai-cells = <1>;
171
172                 dai@22 {
173                     reg = <QUATERNARY_MI2S_RX>;
174                     qcom,sd-lines = <0 1 2 3>;
175                 };
176             };
177         };
178     };
179   - |
180     #include <dt-bindings/soc/qcom,gpr.h>
181     gpr {
182         compatible = "qcom,gpr";
183         #address-cells = <1>;
184         #size-cells = <0>;
185         qcom,domain = <GPR_DOMAIN_ID_ADSP>;
186
187         service@1 {
188             compatible = "qcom,q6apm";
189             reg = <GPR_APM_MODULE_IID>;
190
191             dais {
192                 compatible = "qcom,q6apm-lpass-dais";
193                 #address-cells = <1>;
194                 #size-cells = <0>;
195                 #sound-dai-cells = <1>;
196
197                 dai@22 {
198                     reg = <QUATERNARY_MI2S_RX>;
199                     qcom,sd-lines = <0 1 2 3>;
200                 };
201             };
202         };
203     };