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