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