18c2ecf20Sopenharmony_ciQualcomm Audio Front End (Q6AFE) binding
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciAFE is one of the APR audio service on Q6DSP
48c2ecf20Sopenharmony_ciPlease refer to qcom,apr.txt for details of the common apr service bindings
58c2ecf20Sopenharmony_ciused by all apr services. Must contain the following properties.
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci- compatible:
88c2ecf20Sopenharmony_ci	Usage: required
98c2ecf20Sopenharmony_ci	Value type: <stringlist>
108c2ecf20Sopenharmony_ci	Definition: must be "qcom,q6afe-v<MAJOR-NUMBER>.<MINOR-NUMBER>"
118c2ecf20Sopenharmony_ci		  Or "qcom,q6afe" where the version number can be queried
128c2ecf20Sopenharmony_ci		  from DSP.
138c2ecf20Sopenharmony_ci		  example "qcom,q6afe"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci= AFE DAIs (Digial Audio Interface)
168c2ecf20Sopenharmony_ci"dais" subnode of the AFE node. It represents afe dais, each afe dai is a
178c2ecf20Sopenharmony_cisubnode of "dais" representing board specific dai setup.
188c2ecf20Sopenharmony_ci"dais" node should have following properties followed by dai children.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci- compatible:
218c2ecf20Sopenharmony_ci	Usage: required
228c2ecf20Sopenharmony_ci	Value type: <stringlist>
238c2ecf20Sopenharmony_ci	Definition: must be "qcom,q6afe-dais"
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci- #sound-dai-cells
268c2ecf20Sopenharmony_ci	Usage: required
278c2ecf20Sopenharmony_ci	Value type: <u32>
288c2ecf20Sopenharmony_ci	Definition: Must be 1
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci- #address-cells
318c2ecf20Sopenharmony_ci	Usage: required
328c2ecf20Sopenharmony_ci	Value type: <u32>
338c2ecf20Sopenharmony_ci	Definition: Must be 1
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci- #size-cells
368c2ecf20Sopenharmony_ci	Usage: required
378c2ecf20Sopenharmony_ci	Value type: <u32>
388c2ecf20Sopenharmony_ci	Definition: Must be 0
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci== AFE DAI is subnode of "dais" and represent a dai, it includes board specific
418c2ecf20Sopenharmony_ciconfiguration of each dai. Must contain the following properties.
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci- reg
448c2ecf20Sopenharmony_ci	Usage: required
458c2ecf20Sopenharmony_ci	Value type: <u32>
468c2ecf20Sopenharmony_ci	Definition: Must be dai id
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci- qcom,sd-lines
498c2ecf20Sopenharmony_ci	Usage: required for mi2s interface
508c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
518c2ecf20Sopenharmony_ci	Definition: Must be list of serial data lines used by this dai.
528c2ecf20Sopenharmony_ci	should be one or more of the 0-3 sd lines.
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci - qcom,tdm-sync-mode:
558c2ecf20Sopenharmony_ci	Usage: required for tdm interface
568c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
578c2ecf20Sopenharmony_ci	Definition: Synchronization mode.
588c2ecf20Sopenharmony_ci		0 - Short sync bit mode
598c2ecf20Sopenharmony_ci		1 - Long sync mode
608c2ecf20Sopenharmony_ci		2 - Short sync slot mode
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci - qcom,tdm-sync-src:
638c2ecf20Sopenharmony_ci	Usage: required for tdm interface
648c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
658c2ecf20Sopenharmony_ci	Definition: Synchronization source.
668c2ecf20Sopenharmony_ci		0 - External source
678c2ecf20Sopenharmony_ci		1 - Internal source
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci - qcom,tdm-data-out:
708c2ecf20Sopenharmony_ci	Usage: required for tdm interface
718c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
728c2ecf20Sopenharmony_ci	Definition: Data out signal to drive with other masters.
738c2ecf20Sopenharmony_ci		0 - Disable
748c2ecf20Sopenharmony_ci		1 - Enable
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci - qcom,tdm-invert-sync:
778c2ecf20Sopenharmony_ci	Usage: required for tdm interface
788c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
798c2ecf20Sopenharmony_ci	Definition: Invert the sync.
808c2ecf20Sopenharmony_ci		0 - Normal
818c2ecf20Sopenharmony_ci		1 - Invert
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci - qcom,tdm-data-delay:
848c2ecf20Sopenharmony_ci	Usage: required for tdm interface
858c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
868c2ecf20Sopenharmony_ci	Definition: Number of bit clock to delay data
878c2ecf20Sopenharmony_ci		with respect to sync edge.
888c2ecf20Sopenharmony_ci		0 - 0 bit clock cycle
898c2ecf20Sopenharmony_ci		1 - 1 bit clock cycle
908c2ecf20Sopenharmony_ci		2 - 2 bit clock cycle
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci - qcom,tdm-data-align:
938c2ecf20Sopenharmony_ci	Usage: required for tdm interface
948c2ecf20Sopenharmony_ci	Value type: <prop-encoded-array>
958c2ecf20Sopenharmony_ci	Definition: Indicate how data is packed
968c2ecf20Sopenharmony_ci		within the slot. For example, 32 slot width in case of
978c2ecf20Sopenharmony_ci		sample bit width is 24.
988c2ecf20Sopenharmony_ci		0 - MSB
998c2ecf20Sopenharmony_ci		1 - LSB
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci= AFE CLOCKSS
1028c2ecf20Sopenharmony_ci"clocks" subnode of the AFE node. It represents q6afe clocks
1038c2ecf20Sopenharmony_ci"clocks" node should have following properties.
1048c2ecf20Sopenharmony_ci- compatible:
1058c2ecf20Sopenharmony_ci	Usage: required
1068c2ecf20Sopenharmony_ci	Value type: <stringlist>
1078c2ecf20Sopenharmony_ci	Definition: must be "qcom,q6afe-clocks"
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci- #clock-cells:
1108c2ecf20Sopenharmony_ci	Usage: required
1118c2ecf20Sopenharmony_ci	Value type: <u32>
1128c2ecf20Sopenharmony_ci	Definition: Must be 2. Clock Id followed by
1138c2ecf20Sopenharmony_ci		below valid clock coupling attributes.
1148c2ecf20Sopenharmony_ci		1 - for no coupled clock
1158c2ecf20Sopenharmony_ci		2 - for dividend of the coupled clock
1168c2ecf20Sopenharmony_ci		3 - for divisor of the coupled clock
1178c2ecf20Sopenharmony_ci		4 - for inverted and no couple clock
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ci= EXAMPLE
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ciapr-service@4 {
1228c2ecf20Sopenharmony_ci	compatible = "qcom,q6afe";
1238c2ecf20Sopenharmony_ci	reg = <APR_SVC_AFE>;
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci	dais {
1268c2ecf20Sopenharmony_ci		compatible = "qcom,q6afe-dais";
1278c2ecf20Sopenharmony_ci		#sound-dai-cells = <1>;
1288c2ecf20Sopenharmony_ci		#address-cells = <1>;
1298c2ecf20Sopenharmony_ci		#size-cells = <0>;
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci		dai@1 {
1328c2ecf20Sopenharmony_ci			reg = <HDMI_RX>;
1338c2ecf20Sopenharmony_ci		};
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci		dai@24 {
1368c2ecf20Sopenharmony_ci			reg = <PRIMARY_TDM_RX_0>;
1378c2ecf20Sopenharmony_ci			qcom,tdm-sync-mode = <1>:
1388c2ecf20Sopenharmony_ci			qcom,tdm-sync-src = <1>;
1398c2ecf20Sopenharmony_ci			qcom,tdm-data-out = <0>;
1408c2ecf20Sopenharmony_ci			qcom,tdm-invert-sync = <1>;
1418c2ecf20Sopenharmony_ci			qcom,tdm-data-delay = <1>;
1428c2ecf20Sopenharmony_ci			qcom,tdm-data-align = <0>;
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci		};
1458c2ecf20Sopenharmony_ci
1468c2ecf20Sopenharmony_ci		dai@25 {
1478c2ecf20Sopenharmony_ci			reg = <PRIMARY_TDM_TX_0>;
1488c2ecf20Sopenharmony_ci			qcom,tdm-sync-mode = <1>:
1498c2ecf20Sopenharmony_ci			qcom,tdm-sync-src = <1>;
1508c2ecf20Sopenharmony_ci			qcom,tdm-data-out = <0>;
1518c2ecf20Sopenharmony_ci			qcom,tdm-invert-sync = <1>;
1528c2ecf20Sopenharmony_ci			qcom,tdm-data-delay <1>:
1538c2ecf20Sopenharmony_ci			qcom,tdm-data-align = <0>;
1548c2ecf20Sopenharmony_ci		};
1558c2ecf20Sopenharmony_ci
1568c2ecf20Sopenharmony_ci		dai@16 {
1578c2ecf20Sopenharmony_ci			reg = <PRIMARY_MI2S_RX>;
1588c2ecf20Sopenharmony_ci			qcom,sd-lines = <0 2>;
1598c2ecf20Sopenharmony_ci		};
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci		dai@17 {
1628c2ecf20Sopenharmony_ci			reg = <PRIMARY_MI2S_TX>;
1638c2ecf20Sopenharmony_ci			qcom,sd-lines = <1>;
1648c2ecf20Sopenharmony_ci		};
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ci		dai@18 {
1678c2ecf20Sopenharmony_ci			reg = <SECONDARY_MI2S_RX>;
1688c2ecf20Sopenharmony_ci			qcom,sd-lines = <0 3>;
1698c2ecf20Sopenharmony_ci		};
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci		dai@19 {
1728c2ecf20Sopenharmony_ci			reg = <SECONDARY_MI2S_TX>;
1738c2ecf20Sopenharmony_ci			qcom,sd-lines = <1>;
1748c2ecf20Sopenharmony_ci		};
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci		dai@20 {
1778c2ecf20Sopenharmony_ci			reg = <TERTIARY_MI2S_RX>;
1788c2ecf20Sopenharmony_ci			qcom,sd-lines = <1 3>;
1798c2ecf20Sopenharmony_ci		};
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci		dai@21 {
1828c2ecf20Sopenharmony_ci			reg = <TERTIARY_MI2S_TX>;
1838c2ecf20Sopenharmony_ci			qcom,sd-lines = <0>;
1848c2ecf20Sopenharmony_ci		};
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci		dai@22 {
1878c2ecf20Sopenharmony_ci			reg = <QUATERNARY_MI2S_RX>;
1888c2ecf20Sopenharmony_ci			qcom,sd-lines = <0>;
1898c2ecf20Sopenharmony_ci		};
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci		dai@23 {
1928c2ecf20Sopenharmony_ci			reg = <QUATERNARY_MI2S_TX>;
1938c2ecf20Sopenharmony_ci			qcom,sd-lines = <1>;
1948c2ecf20Sopenharmony_ci		};
1958c2ecf20Sopenharmony_ci	};
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci	clocks {
1988c2ecf20Sopenharmony_ci		compatible = "qcom,q6afe-clocks";
1998c2ecf20Sopenharmony_ci		#clock-cells = <2>;
2008c2ecf20Sopenharmony_ci	};
2018c2ecf20Sopenharmony_ci};
202