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