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