1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/google,sc7280-herobrine.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Google SC7280-Herobrine ASoC sound card driver
8
9maintainers:
10  - Srinivasa Rao Mandadapu <srivasam@codeaurora.org>
11  - Judy Hsiao <judyhsiao@chromium.org>
12
13description:
14  This binding describes the SC7280 sound card which uses LPASS for audio.
15
16properties:
17  compatible:
18    enum:
19      - google,sc7280-herobrine
20
21  audio-routing:
22    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
23    description:
24      A list of the connections between audio components. Each entry is a
25      pair of strings, the first being the connection's sink, the second
26      being the connection's source.
27
28  model:
29    $ref: /schemas/types.yaml#/definitions/string
30    description: User specified audio sound card name
31
32  "#address-cells":
33    const: 1
34
35  "#size-cells":
36    const: 0
37
38patternProperties:
39  "^dai-link@[0-9a-f]$":
40    description:
41      Each subnode represents a dai link. Subnodes of each dai links would be
42      cpu/codec dais.
43
44    type: object
45
46    properties:
47      link-name:
48        description: Indicates dai-link name and PCM stream name.
49        $ref: /schemas/types.yaml#/definitions/string
50        maxItems: 1
51
52      reg:
53        maxItems: 1
54        description: dai link address.
55
56      cpu:
57        description: Holds subnode which indicates cpu dai.
58        type: object
59        properties:
60          sound-dai: true
61
62        required:
63          - sound-dai
64
65        additionalProperties: false
66
67      codec:
68        description: Holds subnode which indicates codec dai.
69        type: object
70        properties:
71          sound-dai: true
72
73        required:
74          - sound-dai
75
76        additionalProperties: false
77
78      platform:
79        description: Holds subnode which includes the phandle of q6apm platform device.
80        type: object
81        properties:
82          sound-dai:
83            maxItems: 1
84
85        required:
86          - sound-dai
87
88        additionalProperties: false
89
90    required:
91      - link-name
92      - cpu
93      - codec
94      - reg
95
96    additionalProperties: false
97
98required:
99  - compatible
100  - model
101  - "#address-cells"
102  - "#size-cells"
103
104additionalProperties: false
105
106examples:
107
108  - |
109    #include <dt-bindings/sound/qcom,lpass.h>
110    sound {
111        compatible = "google,sc7280-herobrine";
112        model = "sc7280-wcd938x-max98360a-4dmic";
113
114        audio-routing =
115            "IN1_HPHL", "HPHL_OUT",
116            "IN2_HPHR", "HPHR_OUT",
117            "AMIC1", "MIC BIAS1",
118            "AMIC2", "MIC BIAS2",
119            "VA DMIC0", "MIC BIAS3",
120            "VA DMIC1", "MIC BIAS3",
121            "VA DMIC2", "MIC BIAS4",
122            "VA DMIC3", "MIC BIAS4",
123            "TX SWR_ADC0", "ADC1_OUTPUT",
124            "TX SWR_ADC1", "ADC2_OUTPUT",
125            "TX SWR_ADC2", "ADC3_OUTPUT",
126            "TX SWR_DMIC0", "DMIC1_OUTPUT",
127            "TX SWR_DMIC1", "DMIC2_OUTPUT",
128            "TX SWR_DMIC2", "DMIC3_OUTPUT",
129            "TX SWR_DMIC3", "DMIC4_OUTPUT";
130
131        #address-cells = <1>;
132        #size-cells = <0>;
133
134        dai-link@0 {
135            link-name = "WCD Playback";
136            reg = <LPASS_CDC_DMA_RX0>;
137            cpu {
138                sound-dai = <&lpass_cpu LPASS_CDC_DMA_RX0>;
139            };
140
141            codec {
142                sound-dai = <&wcd938x 0>, <&swr0 0>, <&rxmacro 0>;
143            };
144        };
145        dai-link@1 {
146            link-name = "WCD Capture";
147            reg = <LPASS_CDC_DMA_TX3>;
148            cpu {
149                sound-dai = <&lpass_cpu LPASS_CDC_DMA_TX3>;
150            };
151
152            codec {
153                sound-dai = <&wcd938x 1>, <&swr1 0>, <&txmacro 0>;
154            };
155        };
156
157        dai-link@2 {
158            link-name = "MI2S Playback";
159            reg = <MI2S_SECONDARY>;
160            cpu {
161                sound-dai = <&lpass_cpu MI2S_SECONDARY>;
162            };
163
164            codec {
165                sound-dai = <&max98360a>;
166            };
167        };
168
169        dai-link@3 {
170            link-name = "DMIC Capture";
171            reg = <LPASS_CDC_DMA_VA_TX0>;
172            cpu {
173                sound-dai = <&lpass_cpu LPASS_CDC_DMA_VA_TX0>;
174            };
175
176            codec {
177                sound-dai = <&vamacro 0>;
178            };
179        };
180
181        dai-link@5 {
182            link-name = "DP Playback";
183            reg = <LPASS_DP_RX>;
184            cpu {
185                sound-dai = <&lpass_cpu LPASS_DP_RX>;
186            };
187
188            codec {
189                sound-dai = <&mdss_dp>;
190            };
191        };
192    };
193