xref: /freebsd-src/sys/contrib/device-tree/Bindings/soc/qcom/qcom,apr.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotQualcomm APR (Asynchronous Packet Router) binding
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotThis binding describes the Qualcomm APR. APR is a IPC protocol for
4*c66ec88fSEmmanuel Vadotcommunication between Application processor and QDSP. APR is mainly
5*c66ec88fSEmmanuel Vadotused for audio/voice services on the QDSP.
6*c66ec88fSEmmanuel Vadot
7*c66ec88fSEmmanuel Vadot- compatible:
8*c66ec88fSEmmanuel Vadot	Usage: required
9*c66ec88fSEmmanuel Vadot	Value type: <stringlist>
10*c66ec88fSEmmanuel Vadot	Definition: must be "qcom,apr-v<VERSION-NUMBER>", example "qcom,apr-v2"
11*c66ec88fSEmmanuel Vadot
12*c66ec88fSEmmanuel Vadot- qcom,apr-domain
13*c66ec88fSEmmanuel Vadot	Usage: required
14*c66ec88fSEmmanuel Vadot	Value type: <u32>
15*c66ec88fSEmmanuel Vadot	Definition: Destination processor ID.
16*c66ec88fSEmmanuel Vadot	Possible values are :
17*c66ec88fSEmmanuel Vadot			1 - APR simulator
18*c66ec88fSEmmanuel Vadot			2 - PC
19*c66ec88fSEmmanuel Vadot			3 - MODEM
20*c66ec88fSEmmanuel Vadot			4 - ADSP
21*c66ec88fSEmmanuel Vadot			5 - APPS
22*c66ec88fSEmmanuel Vadot			6 - MODEM2
23*c66ec88fSEmmanuel Vadot			7 - APPS2
24*c66ec88fSEmmanuel Vadot
25*c66ec88fSEmmanuel Vadot= APR SERVICES
26*c66ec88fSEmmanuel VadotEach subnode of the APR node represents service tied to this apr. The name
27*c66ec88fSEmmanuel Vadotof the nodes are not important. The properties of these nodes are defined
28*c66ec88fSEmmanuel Vadotby the individual bindings for the specific service
29*c66ec88fSEmmanuel Vadot- All APR services MUST contain the following property:
30*c66ec88fSEmmanuel Vadot
31*c66ec88fSEmmanuel Vadot- reg
32*c66ec88fSEmmanuel Vadot	Usage: required
33*c66ec88fSEmmanuel Vadot	Value type: <u32>
34*c66ec88fSEmmanuel Vadot	Definition: APR Service ID
35*c66ec88fSEmmanuel Vadot	Possible values are :
36*c66ec88fSEmmanuel Vadot			3 - DSP Core Service
37*c66ec88fSEmmanuel Vadot			4 - Audio Front End Service.
38*c66ec88fSEmmanuel Vadot			5 - Voice Stream Manager Service.
39*c66ec88fSEmmanuel Vadot			6 - Voice processing manager.
40*c66ec88fSEmmanuel Vadot			7 - Audio Stream Manager Service.
41*c66ec88fSEmmanuel Vadot			8 - Audio Device Manager Service.
42*c66ec88fSEmmanuel Vadot			9 - Multimode voice manager.
43*c66ec88fSEmmanuel Vadot			10 - Core voice stream.
44*c66ec88fSEmmanuel Vadot			11 - Core voice processor.
45*c66ec88fSEmmanuel Vadot			12 - Ultrasound stream manager.
46*c66ec88fSEmmanuel Vadot			13 - Listen stream manager.
47*c66ec88fSEmmanuel Vadot
48*c66ec88fSEmmanuel Vadot- qcom,protection-domain
49*c66ec88fSEmmanuel Vadot	Usage: optional
50*c66ec88fSEmmanuel Vadot	Value type: <stringlist>
51*c66ec88fSEmmanuel Vadot	Definition: Must list the protection domain service name and path
52*c66ec88fSEmmanuel Vadot		    that the particular apr service has a dependency on.
53*c66ec88fSEmmanuel Vadot	Possible values are :
54*c66ec88fSEmmanuel Vadot			"avs/audio", "msm/adsp/audio_pd".
55*c66ec88fSEmmanuel Vadot			"kernel/elf_loader", "msm/modem/wlan_pd".
56*c66ec88fSEmmanuel Vadot			"tms/servreg", "msm/adsp/audio_pd".
57*c66ec88fSEmmanuel Vadot			"tms/servreg", "msm/modem/wlan_pd".
58*c66ec88fSEmmanuel Vadot			"tms/servreg", "msm/slpi/sensor_pd".
59*c66ec88fSEmmanuel Vadot
60*c66ec88fSEmmanuel Vadot= EXAMPLE
61*c66ec88fSEmmanuel VadotThe following example represents a QDSP based sound card on a MSM8996 device
62*c66ec88fSEmmanuel Vadotwhich uses apr as communication between Apps and QDSP.
63*c66ec88fSEmmanuel Vadot
64*c66ec88fSEmmanuel Vadot	apr {
65*c66ec88fSEmmanuel Vadot		compatible = "qcom,apr-v2";
66*c66ec88fSEmmanuel Vadot		qcom,apr-domain = <APR_DOMAIN_ADSP>;
67*c66ec88fSEmmanuel Vadot
68*c66ec88fSEmmanuel Vadot		apr-service@3 {
69*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6core";
70*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_ADSP_CORE>;
71*c66ec88fSEmmanuel Vadot		};
72*c66ec88fSEmmanuel Vadot
73*c66ec88fSEmmanuel Vadot		apr-service@4 {
74*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6afe";
75*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_AFE>;
76*c66ec88fSEmmanuel Vadot
77*c66ec88fSEmmanuel Vadot			dais {
78*c66ec88fSEmmanuel Vadot				#sound-dai-cells = <1>;
79*c66ec88fSEmmanuel Vadot				dai@1 {
80*c66ec88fSEmmanuel Vadot					reg = <HDMI_RX>;
81*c66ec88fSEmmanuel Vadot				};
82*c66ec88fSEmmanuel Vadot			};
83*c66ec88fSEmmanuel Vadot		};
84*c66ec88fSEmmanuel Vadot
85*c66ec88fSEmmanuel Vadot		apr-service@7 {
86*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6asm";
87*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_ASM>;
88*c66ec88fSEmmanuel Vadot			...
89*c66ec88fSEmmanuel Vadot		};
90*c66ec88fSEmmanuel Vadot
91*c66ec88fSEmmanuel Vadot		apr-service@8 {
92*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6adm";
93*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_ADM>;
94*c66ec88fSEmmanuel Vadot			...
95*c66ec88fSEmmanuel Vadot		};
96*c66ec88fSEmmanuel Vadot	};
97*c66ec88fSEmmanuel Vadot
98*c66ec88fSEmmanuel Vadot= EXAMPLE 2
99*c66ec88fSEmmanuel VadotThe following example represents a QDSP based sound card with protection domain
100*c66ec88fSEmmanuel Vadotdependencies specified. Here some of the apr services are dependent on services
101*c66ec88fSEmmanuel Vadotrunning on protection domain hosted on ADSP/SLPI remote processors while others
102*c66ec88fSEmmanuel Vadothave no such dependency.
103*c66ec88fSEmmanuel Vadot
104*c66ec88fSEmmanuel Vadot	apr {
105*c66ec88fSEmmanuel Vadot		compatible = "qcom,apr-v2";
106*c66ec88fSEmmanuel Vadot		qcom,glink-channels = "apr_audio_svc";
107*c66ec88fSEmmanuel Vadot		qcom,apr-domain = <APR_DOMAIN_ADSP>;
108*c66ec88fSEmmanuel Vadot
109*c66ec88fSEmmanuel Vadot		apr-service@3 {
110*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6core";
111*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_ADSP_CORE>;
112*c66ec88fSEmmanuel Vadot		};
113*c66ec88fSEmmanuel Vadot
114*c66ec88fSEmmanuel Vadot		q6afe: apr-service@4 {
115*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6afe";
116*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_AFE>;
117*c66ec88fSEmmanuel Vadot			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
118*c66ec88fSEmmanuel Vadot			...
119*c66ec88fSEmmanuel Vadot		};
120*c66ec88fSEmmanuel Vadot
121*c66ec88fSEmmanuel Vadot		q6asm: apr-service@7 {
122*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6asm";
123*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_ASM>;
124*c66ec88fSEmmanuel Vadot			qcom,protection-domain = "tms/servreg", "msm/slpi/sensor_pd";
125*c66ec88fSEmmanuel Vadot			...
126*c66ec88fSEmmanuel Vadot		};
127*c66ec88fSEmmanuel Vadot
128*c66ec88fSEmmanuel Vadot		q6adm: apr-service@8 {
129*c66ec88fSEmmanuel Vadot			compatible = "qcom,q6adm";
130*c66ec88fSEmmanuel Vadot			reg = <APR_SVC_ADM>;
131*c66ec88fSEmmanuel Vadot			qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
132*c66ec88fSEmmanuel Vadot			...
133*c66ec88fSEmmanuel Vadot		};
134*c66ec88fSEmmanuel Vadot	};
135