1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/qcom,lpass-tx-macro.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: LPASS(Low Power Audio Subsystem) TX Macro audio codec
8
9maintainers:
10  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11
12properties:
13  compatible:
14    oneOf:
15      - enum:
16          - qcom,sc7280-lpass-tx-macro
17          - qcom,sm6115-lpass-tx-macro
18          - qcom,sm8250-lpass-tx-macro
19          - qcom,sm8450-lpass-tx-macro
20          - qcom,sm8550-lpass-tx-macro
21          - qcom,sc8280xp-lpass-tx-macro
22      - items:
23          - enum:
24              - qcom,sm8650-lpass-tx-macro
25              - qcom,x1e80100-lpass-tx-macro
26          - const: qcom,sm8550-lpass-tx-macro
27
28  reg:
29    maxItems: 1
30
31  "#sound-dai-cells":
32    const: 1
33
34  '#clock-cells':
35    const: 0
36
37  clocks:
38    minItems: 3
39    maxItems: 5
40
41  clock-names:
42    minItems: 3
43    maxItems: 5
44
45  clock-output-names:
46    maxItems: 1
47
48  power-domains:
49    maxItems: 2
50
51  power-domain-names:
52    items:
53      - const: macro
54      - const: dcodec
55
56  qcom,dmic-sample-rate:
57    description: dmic sample rate
58    $ref: /schemas/types.yaml#/definitions/uint32
59
60required:
61  - compatible
62  - reg
63  - "#sound-dai-cells"
64
65allOf:
66  - $ref: dai-common.yaml#
67  - if:
68      properties:
69        compatible:
70          enum:
71            - qcom,sc7280-lpass-tx-macro
72    then:
73      properties:
74        clock-names:
75          oneOf:
76            - items:   # for ADSP based platforms
77                - const: mclk
78                - const: npl
79                - const: macro
80                - const: dcodec
81                - const: fsgen
82            - items:   # for ADSP bypass based platforms
83                - const: mclk
84                - const: npl
85                - const: fsgen
86
87  - if:
88      properties:
89        compatible:
90          enum:
91            - qcom,sc8280xp-lpass-tx-macro
92            - qcom,sm8250-lpass-tx-macro
93            - qcom,sm8450-lpass-tx-macro
94    then:
95      properties:
96        clocks:
97          minItems: 5
98          maxItems: 5
99        clock-names:
100          items:
101            - const: mclk
102            - const: npl
103            - const: macro
104            - const: dcodec
105            - const: fsgen
106
107  - if:
108      properties:
109        compatible:
110          enum:
111            - qcom,sm6115-lpass-tx-macro
112    then:
113      properties:
114        clocks:
115          minItems: 4
116          maxItems: 4
117        clock-names:
118          items:
119            - const: mclk
120            - const: npl
121            - const: dcodec
122            - const: fsgen
123
124  - if:
125      properties:
126        compatible:
127          contains:
128            enum:
129              - qcom,sm8550-lpass-tx-macro
130    then:
131      properties:
132        clocks:
133          minItems: 4
134          maxItems: 4
135        clock-names:
136          items:
137            - const: mclk
138            - const: macro
139            - const: dcodec
140            - const: fsgen
141
142unevaluatedProperties: false
143
144examples:
145  - |
146    #include <dt-bindings/sound/qcom,q6afe.h>
147    codec@3220000 {
148      compatible = "qcom,sm8250-lpass-tx-macro";
149      reg = <0x3220000 0x1000>;
150      #sound-dai-cells = <1>;
151      #clock-cells = <0>;
152      clocks = <&aoncc 0>,
153               <&aoncc 1>,
154               <&q6afecc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
155               <&q6afecc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
156               <&vamacro>;
157      clock-names = "mclk", "npl", "macro", "dcodec", "fsgen";
158      clock-output-names = "mclk";
159      qcom,dmic-sample-rate = <600000>;
160    };
161