Merge commit '81fd23e2b3ccf71c807e671444e8accaba98ca53' of https://git.pengutronix...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / sound / qcom,q6afe.txt
1 Qualcomm Audio Front End (Q6AFE) binding
2
3 AFE is one of the APR audio service on Q6DSP
4 Please refer to qcom,apr.txt for details of the common apr service bindings
5 used by all apr services. Must contain the following properties.
6
7 - compatible:
8         Usage: required
9         Value type: <stringlist>
10         Definition: must be "qcom,q6afe-v<MAJOR-NUMBER>.<MINOR-NUMBER>"
11                   Or "qcom,q6afe" where the version number can be queried
12                   from DSP.
13                   example "qcom,q6afe"
14
15 = AFE DAIs (Digial Audio Interface)
16 "dais" subnode of the AFE node. It represents afe dais, each afe dai is a
17 subnode of "dais" representing board specific dai setup.
18 "dais" node should have following properties followed by dai children.
19
20 - compatible:
21         Usage: required
22         Value type: <stringlist>
23         Definition: must be "qcom,q6afe-dais"
24
25 - #sound-dai-cells
26         Usage: required
27         Value type: <u32>
28         Definition: Must be 1
29
30 - #address-cells
31         Usage: required
32         Value type: <u32>
33         Definition: Must be 1
34
35 - #size-cells
36         Usage: required
37         Value type: <u32>
38         Definition: Must be 0
39
40 == AFE DAI is subnode of "dais" and represent a dai, it includes board specific
41 configuration of each dai. Must contain the following properties.
42
43 - reg
44         Usage: required
45         Value type: <u32>
46         Definition: Must be dai id
47
48 - qcom,sd-lines
49         Usage: required for mi2s interface
50         Value type: <prop-encoded-array>
51         Definition: Must be list of serial data lines used by this dai.
52         should be one or more of the 0-3 sd lines.
53
54  - qcom,tdm-sync-mode:
55         Usage: required for tdm interface
56         Value type: <prop-encoded-array>
57         Definition: 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         Usage: required for tdm interface
64         Value type: <prop-encoded-array>
65         Definition: Synchronization source.
66                 0 - External source
67                 1 - Internal source
68
69  - qcom,tdm-data-out:
70         Usage: required for tdm interface
71         Value type: <prop-encoded-array>
72         Definition: Data out signal to drive with other masters.
73                 0 - Disable
74                 1 - Enable
75
76  - qcom,tdm-invert-sync:
77         Usage: required for tdm interface
78         Value type: <prop-encoded-array>
79         Definition: Invert the sync.
80                 0 - Normal
81                 1 - Invert
82
83  - qcom,tdm-data-delay:
84         Usage: required for tdm interface
85         Value type: <prop-encoded-array>
86         Definition: Number of bit clock to delay data
87                 with respect to sync edge.
88                 0 - 0 bit clock cycle
89                 1 - 1 bit clock cycle
90                 2 - 2 bit clock cycle
91
92  - qcom,tdm-data-align:
93         Usage: required for tdm interface
94         Value type: <prop-encoded-array>
95         Definition: Indicate how data is packed
96                 within the slot. For example, 32 slot width in case of
97                 sample bit width is 24.
98                 0 - MSB
99                 1 - LSB
100
101 = AFE CLOCKSS
102 "clocks" subnode of the AFE node. It represents q6afe clocks
103 "clocks" node should have following properties.
104 - compatible:
105         Usage: required
106         Value type: <stringlist>
107         Definition: must be "qcom,q6afe-clocks"
108
109 - #clock-cells:
110         Usage: required
111         Value type: <u32>
112         Definition: Must be 2. Clock Id followed by
113                 below valid clock coupling attributes.
114                 1 - for no coupled clock
115                 2 - for dividend of the coupled clock
116                 3 - for divisor of the coupled clock
117                 4 - for inverted and no couple clock
118
119 = EXAMPLE
120
121 apr-service@4 {
122         compatible = "qcom,q6afe";
123         reg = <APR_SVC_AFE>;
124
125         dais {
126                 compatible = "qcom,q6afe-dais";
127                 #sound-dai-cells = <1>;
128                 #address-cells = <1>;
129                 #size-cells = <0>;
130
131                 dai@1 {
132                         reg = <HDMI_RX>;
133                 };
134
135                 dai@24 {
136                         reg = <PRIMARY_TDM_RX_0>;
137                         qcom,tdm-sync-mode = <1>:
138                         qcom,tdm-sync-src = <1>;
139                         qcom,tdm-data-out = <0>;
140                         qcom,tdm-invert-sync = <1>;
141                         qcom,tdm-data-delay = <1>;
142                         qcom,tdm-data-align = <0>;
143
144                 };
145
146                 dai@25 {
147                         reg = <PRIMARY_TDM_TX_0>;
148                         qcom,tdm-sync-mode = <1>:
149                         qcom,tdm-sync-src = <1>;
150                         qcom,tdm-data-out = <0>;
151                         qcom,tdm-invert-sync = <1>;
152                         qcom,tdm-data-delay <1>:
153                         qcom,tdm-data-align = <0>;
154                 };
155
156                 dai@16 {
157                         reg = <PRIMARY_MI2S_RX>;
158                         qcom,sd-lines = <0 2>;
159                 };
160
161                 dai@17 {
162                         reg = <PRIMARY_MI2S_TX>;
163                         qcom,sd-lines = <1>;
164                 };
165
166                 dai@18 {
167                         reg = <SECONDARY_MI2S_RX>;
168                         qcom,sd-lines = <0 3>;
169                 };
170
171                 dai@19 {
172                         reg = <SECONDARY_MI2S_TX>;
173                         qcom,sd-lines = <1>;
174                 };
175
176                 dai@20 {
177                         reg = <TERTIARY_MI2S_RX>;
178                         qcom,sd-lines = <1 3>;
179                 };
180
181                 dai@21 {
182                         reg = <TERTIARY_MI2S_TX>;
183                         qcom,sd-lines = <0>;
184                 };
185
186                 dai@22 {
187                         reg = <QUATERNARY_MI2S_RX>;
188                         qcom,sd-lines = <0>;
189                 };
190
191                 dai@23 {
192                         reg = <QUATERNARY_MI2S_TX>;
193                         qcom,sd-lines = <1>;
194                 };
195         };
196
197         clocks {
198                 compatible = "qcom,q6afe-clocks";
199                 #clock-cells = <2>;
200         };
201 };