135 lines
3.2 KiB
Plaintext
135 lines
3.2 KiB
Plaintext
|
Qualcomm APR (Asynchronous Packet Router) binding
|
||
|
|
||
|
This binding describes the Qualcomm APR. APR is a IPC protocol for
|
||
|
communication between Application processor and QDSP. APR is mainly
|
||
|
used for audio/voice services on the QDSP.
|
||
|
|
||
|
- compatible:
|
||
|
Usage: required
|
||
|
Value type: <stringlist>
|
||
|
Definition: must be "qcom,apr-v<VERSION-NUMBER>", example "qcom,apr-v2"
|
||
|
|
||
|
- qcom,apr-domain
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: Destination processor ID.
|
||
|
Possible values are :
|
||
|
1 - APR simulator
|
||
|
2 - PC
|
||
|
3 - MODEM
|
||
|
4 - ADSP
|
||
|
5 - APPS
|
||
|
6 - MODEM2
|
||
|
7 - APPS2
|
||
|
|
||
|
= APR SERVICES
|
||
|
Each subnode of the APR node represents service tied to this apr. The name
|
||
|
of the nodes are not important. The properties of these nodes are defined
|
||
|
by the individual bindings for the specific service
|
||
|
- All APR services MUST contain the following property:
|
||
|
|
||
|
- reg
|
||
|
Usage: required
|
||
|
Value type: <u32>
|
||
|
Definition: APR Service ID
|
||
|
Possible values are :
|
||
|
3 - DSP Core Service
|
||
|
4 - Audio Front End Service.
|
||
|
5 - Voice Stream Manager Service.
|
||
|
6 - Voice processing manager.
|
||
|
7 - Audio Stream Manager Service.
|
||
|
8 - Audio Device Manager Service.
|
||
|
9 - Multimode voice manager.
|
||
|
10 - Core voice stream.
|
||
|
11 - Core voice processor.
|
||
|
12 - Ultrasound stream manager.
|
||
|
13 - Listen stream manager.
|
||
|
|
||
|
- qcom,protection-domain
|
||
|
Usage: optional
|
||
|
Value type: <stringlist>
|
||
|
Definition: Must list the protection domain service name and path
|
||
|
that the particular apr service has a dependency on.
|
||
|
Possible values are :
|
||
|
"avs/audio", "msm/adsp/audio_pd".
|
||
|
"kernel/elf_loader", "msm/modem/wlan_pd".
|
||
|
"tms/servreg", "msm/adsp/audio_pd".
|
||
|
"tms/servreg", "msm/modem/wlan_pd".
|
||
|
"tms/servreg", "msm/slpi/sensor_pd".
|
||
|
|
||
|
= EXAMPLE
|
||
|
The following example represents a QDSP based sound card on a MSM8996 device
|
||
|
which uses apr as communication between Apps and QDSP.
|
||
|
|
||
|
apr {
|
||
|
compatible = "qcom,apr-v2";
|
||
|
qcom,apr-domain = <APR_DOMAIN_ADSP>;
|
||
|
|
||
|
apr-service@3 {
|
||
|
compatible = "qcom,q6core";
|
||
|
reg = <APR_SVC_ADSP_CORE>;
|
||
|
};
|
||
|
|
||
|
apr-service@4 {
|
||
|
compatible = "qcom,q6afe";
|
||
|
reg = <APR_SVC_AFE>;
|
||
|
|
||
|
dais {
|
||
|
#sound-dai-cells = <1>;
|
||
|
dai@1 {
|
||
|
reg = <HDMI_RX>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
apr-service@7 {
|
||
|
compatible = "qcom,q6asm";
|
||
|
reg = <APR_SVC_ASM>;
|
||
|
...
|
||
|
};
|
||
|
|
||
|
apr-service@8 {
|
||
|
compatible = "qcom,q6adm";
|
||
|
reg = <APR_SVC_ADM>;
|
||
|
...
|
||
|
};
|
||
|
};
|
||
|
|
||
|
= EXAMPLE 2
|
||
|
The following example represents a QDSP based sound card with protection domain
|
||
|
dependencies specified. Here some of the apr services are dependent on services
|
||
|
running on protection domain hosted on ADSP/SLPI remote processors while others
|
||
|
have no such dependency.
|
||
|
|
||
|
apr {
|
||
|
compatible = "qcom,apr-v2";
|
||
|
qcom,glink-channels = "apr_audio_svc";
|
||
|
qcom,apr-domain = <APR_DOMAIN_ADSP>;
|
||
|
|
||
|
apr-service@3 {
|
||
|
compatible = "qcom,q6core";
|
||
|
reg = <APR_SVC_ADSP_CORE>;
|
||
|
};
|
||
|
|
||
|
q6afe: apr-service@4 {
|
||
|
compatible = "qcom,q6afe";
|
||
|
reg = <APR_SVC_AFE>;
|
||
|
qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
|
||
|
...
|
||
|
};
|
||
|
|
||
|
q6asm: apr-service@7 {
|
||
|
compatible = "qcom,q6asm";
|
||
|
reg = <APR_SVC_ASM>;
|
||
|
qcom,protection-domain = "tms/servreg", "msm/slpi/sensor_pd";
|
||
|
...
|
||
|
};
|
||
|
|
||
|
q6adm: apr-service@8 {
|
||
|
compatible = "qcom,q6adm";
|
||
|
reg = <APR_SVC_ADM>;
|
||
|
qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
|
||
|
...
|
||
|
};
|
||
|
};
|