18c2ecf20Sopenharmony_ciQualcomm APR (Asynchronous Packet Router) binding
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThis binding describes the Qualcomm APR. APR is a IPC protocol for
48c2ecf20Sopenharmony_cicommunication between Application processor and QDSP. APR is mainly
58c2ecf20Sopenharmony_ciused for audio/voice services on the QDSP.
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci- compatible:
88c2ecf20Sopenharmony_ci	Usage: required
98c2ecf20Sopenharmony_ci	Value type: <stringlist>
108c2ecf20Sopenharmony_ci	Definition: must be "qcom,apr-v<VERSION-NUMBER>", example "qcom,apr-v2"
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci- qcom,apr-domain
138c2ecf20Sopenharmony_ci	Usage: required
148c2ecf20Sopenharmony_ci	Value type: <u32>
158c2ecf20Sopenharmony_ci	Definition: Destination processor ID.
168c2ecf20Sopenharmony_ci	Possible values are :
178c2ecf20Sopenharmony_ci			1 - APR simulator
188c2ecf20Sopenharmony_ci			2 - PC
198c2ecf20Sopenharmony_ci			3 - MODEM
208c2ecf20Sopenharmony_ci			4 - ADSP
218c2ecf20Sopenharmony_ci			5 - APPS
228c2ecf20Sopenharmony_ci			6 - MODEM2
238c2ecf20Sopenharmony_ci			7 - APPS2
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci= APR SERVICES
268c2ecf20Sopenharmony_ciEach subnode of the APR node represents service tied to this apr. The name
278c2ecf20Sopenharmony_ciof the nodes are not important. The properties of these nodes are defined
288c2ecf20Sopenharmony_ciby the individual bindings for the specific service
298c2ecf20Sopenharmony_ci- All APR services MUST contain the following property:
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci- reg
328c2ecf20Sopenharmony_ci	Usage: required
338c2ecf20Sopenharmony_ci	Value type: <u32>
348c2ecf20Sopenharmony_ci	Definition: APR Service ID
358c2ecf20Sopenharmony_ci	Possible values are :
368c2ecf20Sopenharmony_ci			3 - DSP Core Service
378c2ecf20Sopenharmony_ci			4 - Audio Front End Service.
388c2ecf20Sopenharmony_ci			5 - Voice Stream Manager Service.
398c2ecf20Sopenharmony_ci			6 - Voice processing manager.
408c2ecf20Sopenharmony_ci			7 - Audio Stream Manager Service.
418c2ecf20Sopenharmony_ci			8 - Audio Device Manager Service.
428c2ecf20Sopenharmony_ci			9 - Multimode voice manager.
438c2ecf20Sopenharmony_ci			10 - Core voice stream.
448c2ecf20Sopenharmony_ci			11 - Core voice processor.
458c2ecf20Sopenharmony_ci			12 - Ultrasound stream manager.
468c2ecf20Sopenharmony_ci			13 - Listen stream manager.
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci- qcom,protection-domain
498c2ecf20Sopenharmony_ci	Usage: optional
508c2ecf20Sopenharmony_ci	Value type: <stringlist>
518c2ecf20Sopenharmony_ci	Definition: Must list the protection domain service name and path
528c2ecf20Sopenharmony_ci		    that the particular apr service has a dependency on.
538c2ecf20Sopenharmony_ci	Possible values are :
548c2ecf20Sopenharmony_ci			"avs/audio", "msm/adsp/audio_pd".
558c2ecf20Sopenharmony_ci			"kernel/elf_loader", "msm/modem/wlan_pd".
568c2ecf20Sopenharmony_ci			"tms/servreg", "msm/adsp/audio_pd".
578c2ecf20Sopenharmony_ci			"tms/servreg", "msm/modem/wlan_pd".
588c2ecf20Sopenharmony_ci			"tms/servreg", "msm/slpi/sensor_pd".
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci= EXAMPLE
618c2ecf20Sopenharmony_ciThe following example represents a QDSP based sound card on a MSM8996 device
628c2ecf20Sopenharmony_ciwhich uses apr as communication between Apps and QDSP.
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci	apr {
658c2ecf20Sopenharmony_ci		compatible = "qcom,apr-v2";
668c2ecf20Sopenharmony_ci		qcom,apr-domain = <APR_DOMAIN_ADSP>;
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci		apr-service@3 {
698c2ecf20Sopenharmony_ci			compatible = "qcom,q6core";
708c2ecf20Sopenharmony_ci			reg = <APR_SVC_ADSP_CORE>;
718c2ecf20Sopenharmony_ci		};
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci		apr-service@4 {
748c2ecf20Sopenharmony_ci			compatible = "qcom,q6afe";
758c2ecf20Sopenharmony_ci			reg = <APR_SVC_AFE>;
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci			dais {
788c2ecf20Sopenharmony_ci				#sound-dai-cells = <1>;
798c2ecf20Sopenharmony_ci				dai@1 {
808c2ecf20Sopenharmony_ci					reg = <HDMI_RX>;
818c2ecf20Sopenharmony_ci				};
828c2ecf20Sopenharmony_ci			};
838c2ecf20Sopenharmony_ci		};
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci		apr-service@7 {
868c2ecf20Sopenharmony_ci			compatible = "qcom,q6asm";
878c2ecf20Sopenharmony_ci			reg = <APR_SVC_ASM>;
888c2ecf20Sopenharmony_ci			...
898c2ecf20Sopenharmony_ci		};
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci		apr-service@8 {
928c2ecf20Sopenharmony_ci			compatible = "qcom,q6adm";
938c2ecf20Sopenharmony_ci			reg = <APR_SVC_ADM>;
948c2ecf20Sopenharmony_ci			...
958c2ecf20Sopenharmony_ci		};
968c2ecf20Sopenharmony_ci	};
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci= EXAMPLE 2
998c2ecf20Sopenharmony_ciThe following example represents a QDSP based sound card with protection domain
1008c2ecf20Sopenharmony_cidependencies specified. Here some of the apr services are dependent on services
1018c2ecf20Sopenharmony_cirunning on protection domain hosted on ADSP/SLPI remote processors while others
1028c2ecf20Sopenharmony_cihave no such dependency.
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci	apr {
1058c2ecf20Sopenharmony_ci		compatible = "qcom,apr-v2";
1068c2ecf20Sopenharmony_ci		qcom,glink-channels = "apr_audio_svc";
1078c2ecf20Sopenharmony_ci		qcom,apr-domain = <APR_DOMAIN_ADSP>;
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci		apr-service@3 {
1108c2ecf20Sopenharmony_ci			compatible = "qcom,q6core";
1118c2ecf20Sopenharmony_ci			reg = <APR_SVC_ADSP_CORE>;
1128c2ecf20Sopenharmony_ci		};
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci		q6afe: apr-service@4 {
1158c2ecf20Sopenharmony_ci			compatible = "qcom,q6afe";
1168c2ecf20Sopenharmony_ci			reg = <APR_SVC_AFE>;
1178c2ecf20Sopenharmony_ci			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
1188c2ecf20Sopenharmony_ci			...
1198c2ecf20Sopenharmony_ci		};
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci		q6asm: apr-service@7 {
1228c2ecf20Sopenharmony_ci			compatible = "qcom,q6asm";
1238c2ecf20Sopenharmony_ci			reg = <APR_SVC_ASM>;
1248c2ecf20Sopenharmony_ci			qcom,protection-domain = "tms/servreg", "msm/slpi/sensor_pd";
1258c2ecf20Sopenharmony_ci			...
1268c2ecf20Sopenharmony_ci		};
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_ci		q6adm: apr-service@8 {
1298c2ecf20Sopenharmony_ci			compatible = "qcom,q6adm";
1308c2ecf20Sopenharmony_ci			reg = <APR_SVC_ADM>;
1318c2ecf20Sopenharmony_ci			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
1328c2ecf20Sopenharmony_ci			...
1338c2ecf20Sopenharmony_ci		};
1348c2ecf20Sopenharmony_ci	};
135