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