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