1*4882a593SmuzhiyunQualcomm ADSP Peripheral Image Loader 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunThis document defines the binding for a component that loads and boots firmware 4*4882a593Smuzhiyunon the Qualcomm ADSP Hexagon core. 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun- compatible: 7*4882a593Smuzhiyun Usage: required 8*4882a593Smuzhiyun Value type: <string> 9*4882a593Smuzhiyun Definition: must be one of: 10*4882a593Smuzhiyun "qcom,msm8974-adsp-pil" 11*4882a593Smuzhiyun "qcom,msm8996-adsp-pil" 12*4882a593Smuzhiyun "qcom,msm8996-slpi-pil" 13*4882a593Smuzhiyun "qcom,msm8998-adsp-pas" 14*4882a593Smuzhiyun "qcom,msm8998-slpi-pas" 15*4882a593Smuzhiyun "qcom,qcs404-adsp-pas" 16*4882a593Smuzhiyun "qcom,qcs404-cdsp-pas" 17*4882a593Smuzhiyun "qcom,qcs404-wcss-pas" 18*4882a593Smuzhiyun "qcom,sc7180-mpss-pas" 19*4882a593Smuzhiyun "qcom,sdm845-adsp-pas" 20*4882a593Smuzhiyun "qcom,sdm845-cdsp-pas" 21*4882a593Smuzhiyun "qcom,sm8150-adsp-pas" 22*4882a593Smuzhiyun "qcom,sm8150-cdsp-pas" 23*4882a593Smuzhiyun "qcom,sm8150-mpss-pas" 24*4882a593Smuzhiyun "qcom,sm8150-slpi-pas" 25*4882a593Smuzhiyun "qcom,sm8250-adsp-pas" 26*4882a593Smuzhiyun "qcom,sm8250-cdsp-pas" 27*4882a593Smuzhiyun "qcom,sm8250-slpi-pas" 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun- interrupts-extended: 30*4882a593Smuzhiyun Usage: required 31*4882a593Smuzhiyun Value type: <prop-encoded-array> 32*4882a593Smuzhiyun Definition: reference to the interrupts that match interrupt-names 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun- interrupt-names: 35*4882a593Smuzhiyun Usage: required 36*4882a593Smuzhiyun Value type: <stringlist> 37*4882a593Smuzhiyun Definition: The interrupts needed depends on the compatible 38*4882a593Smuzhiyun string: 39*4882a593Smuzhiyun qcom,msm8974-adsp-pil: 40*4882a593Smuzhiyun qcom,msm8996-adsp-pil: 41*4882a593Smuzhiyun qcom,msm8996-slpi-pil: 42*4882a593Smuzhiyun qcom,msm8998-adsp-pas: 43*4882a593Smuzhiyun qcom,msm8998-slpi-pas: 44*4882a593Smuzhiyun qcom,qcs404-adsp-pas: 45*4882a593Smuzhiyun qcom,qcs404-cdsp-pas: 46*4882a593Smuzhiyun qcom,sdm845-adsp-pas: 47*4882a593Smuzhiyun qcom,sdm845-cdsp-pas: 48*4882a593Smuzhiyun qcom,sm8150-adsp-pas: 49*4882a593Smuzhiyun qcom,sm8150-cdsp-pas: 50*4882a593Smuzhiyun qcom,sm8150-slpi-pas: 51*4882a593Smuzhiyun qcom,sm8250-adsp-pas: 52*4882a593Smuzhiyun qcom,sm8250-cdsp-pas: 53*4882a593Smuzhiyun qcom,sm8250-slpi-pas: 54*4882a593Smuzhiyun must be "wdog", "fatal", "ready", "handover", "stop-ack" 55*4882a593Smuzhiyun qcom,qcs404-wcss-pas: 56*4882a593Smuzhiyun qcom,sc7180-mpss-pas: 57*4882a593Smuzhiyun qcom,sm8150-mpss-pas: 58*4882a593Smuzhiyun must be "wdog", "fatal", "ready", "handover", "stop-ack", 59*4882a593Smuzhiyun "shutdown-ack" 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun- firmware-name: 62*4882a593Smuzhiyun Usage: optional 63*4882a593Smuzhiyun Value type: <string> 64*4882a593Smuzhiyun Definition: must list the relative firmware image path for the 65*4882a593Smuzhiyun Hexagon Core. 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun- clocks: 68*4882a593Smuzhiyun Usage: required 69*4882a593Smuzhiyun Value type: <prop-encoded-array> 70*4882a593Smuzhiyun Definition: reference to the xo clock and optionally aggre2 clock to be 71*4882a593Smuzhiyun held on behalf of the booting Hexagon core 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun- clock-names: 74*4882a593Smuzhiyun Usage: required 75*4882a593Smuzhiyun Value type: <stringlist> 76*4882a593Smuzhiyun Definition: must be "xo" and optionally include "aggre2" 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun- cx-supply: 79*4882a593Smuzhiyun Usage: required 80*4882a593Smuzhiyun Value type: <phandle> 81*4882a593Smuzhiyun Definition: reference to the regulator to be held on behalf of the 82*4882a593Smuzhiyun booting Hexagon core 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun- px-supply: 85*4882a593Smuzhiyun Usage: required 86*4882a593Smuzhiyun Value type: <phandle> 87*4882a593Smuzhiyun Definition: reference to the px regulator to be held on behalf of the 88*4882a593Smuzhiyun booting Hexagon core 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun- power-domains: 91*4882a593Smuzhiyun Usage: required 92*4882a593Smuzhiyun Value type: <phandle> 93*4882a593Smuzhiyun Definition: reference to power-domains that match the power-domain-names 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun- power-domain-names: 96*4882a593Smuzhiyun Usage: required 97*4882a593Smuzhiyun Value type: <stringlist> 98*4882a593Smuzhiyun Definition: The power-domains needed depend on the compatible string: 99*4882a593Smuzhiyun qcom,msm8974-adsp-pil: 100*4882a593Smuzhiyun qcom,msm8996-adsp-pil: 101*4882a593Smuzhiyun qcom,msm8998-adsp-pas: 102*4882a593Smuzhiyun must be "cx" 103*4882a593Smuzhiyun qcom,msm8996-slpi-pil: 104*4882a593Smuzhiyun must be "ss_cx" 105*4882a593Smuzhiyun qcom,msm8998-slpi-pas: 106*4882a593Smuzhiyun must be "ssc_cx" 107*4882a593Smuzhiyun qcom,qcs404-adsp-pas: 108*4882a593Smuzhiyun must be "lpi_cx" 109*4882a593Smuzhiyun qcom,qcs404-cdsp-pas: 110*4882a593Smuzhiyun qcom,qcs404-wcss-pas: 111*4882a593Smuzhiyun must be "mx" 112*4882a593Smuzhiyun qcom,sdm845-adsp-pas: 113*4882a593Smuzhiyun qcom,sdm845-cdsp-pas: 114*4882a593Smuzhiyun qcom,sm8150-adsp-pas: 115*4882a593Smuzhiyun qcom,sm8150-cdsp-pas: 116*4882a593Smuzhiyun qcom,sm8250-cdsp-pas: 117*4882a593Smuzhiyun must be "cx", "load_state" 118*4882a593Smuzhiyun qcom,sc7180-mpss-pas: 119*4882a593Smuzhiyun qcom,sm8150-mpss-pas: 120*4882a593Smuzhiyun must be "cx", "load_state", "mss" 121*4882a593Smuzhiyun qcom,sm8250-adsp-pas: 122*4882a593Smuzhiyun qcom,sm8150-slpi-pas: 123*4882a593Smuzhiyun qcom,sm8250-slpi-pas: 124*4882a593Smuzhiyun must be "lcx", "lmx", "load_state" 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun- memory-region: 127*4882a593Smuzhiyun Usage: required 128*4882a593Smuzhiyun Value type: <phandle> 129*4882a593Smuzhiyun Definition: reference to the reserved-memory for the ADSP 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun- qcom,smem-states: 132*4882a593Smuzhiyun Usage: required 133*4882a593Smuzhiyun Value type: <phandle> 134*4882a593Smuzhiyun Definition: reference to the smem state for requesting the ADSP to 135*4882a593Smuzhiyun shut down 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun- qcom,smem-state-names: 138*4882a593Smuzhiyun Usage: required 139*4882a593Smuzhiyun Value type: <stringlist> 140*4882a593Smuzhiyun Definition: must be "stop" 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun= SUBNODES 144*4882a593SmuzhiyunThe adsp node may have an subnode named either "smd-edge" or "glink-edge" that 145*4882a593Smuzhiyundescribes the communication edge, channels and devices related to the ADSP. 146*4882a593SmuzhiyunSee ../soc/qcom/qcom,smd.txt and ../soc/qcom/qcom,glink.txt for details on how 147*4882a593Smuzhiyunto describe these. 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun= EXAMPLE 151*4882a593SmuzhiyunThe following example describes the resources needed to boot control the 152*4882a593SmuzhiyunADSP, as it is found on MSM8974 boards. 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun adsp { 155*4882a593Smuzhiyun compatible = "qcom,msm8974-adsp-pil"; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun interrupts-extended = <&intc 0 162 IRQ_TYPE_EDGE_RISING>, 158*4882a593Smuzhiyun <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 159*4882a593Smuzhiyun <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 160*4882a593Smuzhiyun <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 161*4882a593Smuzhiyun <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 162*4882a593Smuzhiyun interrupt-names = "wdog", 163*4882a593Smuzhiyun "fatal", 164*4882a593Smuzhiyun "ready", 165*4882a593Smuzhiyun "handover", 166*4882a593Smuzhiyun "stop-ack"; 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun clocks = <&rpmcc RPM_CXO_CLK>; 169*4882a593Smuzhiyun clock-names = "xo"; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun cx-supply = <&pm8841_s2>; 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun memory-region = <&adsp_region>; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun qcom,smem-states = <&adsp_smp2p_out 0>; 176*4882a593Smuzhiyun qcom,smem-state-names = "stop"; 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun smd-edge { 179*4882a593Smuzhiyun interrupts = <0 156 IRQ_TYPE_EDGE_RISING>; 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun qcom,ipc = <&apcs 8 8>; 182*4882a593Smuzhiyun qcom,smd-edge = <1>; 183*4882a593Smuzhiyun }; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun 186*4882a593SmuzhiyunThe following example describes the resources needed to boot control the 187*4882a593SmuzhiyunSLPI, as it is found on MSM8996 boards. 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun slpi { 190*4882a593Smuzhiyun compatible = "qcom,msm8996-slpi-pil"; 191*4882a593Smuzhiyun interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>, 192*4882a593Smuzhiyun <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 193*4882a593Smuzhiyun <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 194*4882a593Smuzhiyun <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 195*4882a593Smuzhiyun <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 196*4882a593Smuzhiyun interrupt-names = "wdog", 197*4882a593Smuzhiyun "fatal", 198*4882a593Smuzhiyun "ready", 199*4882a593Smuzhiyun "handover", 200*4882a593Smuzhiyun "stop-ack"; 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun clocks = <&rpmcc MSM8996_RPM_SMD_XO_CLK_SRC>, 203*4882a593Smuzhiyun <&rpmcc MSM8996_RPM_SMD_AGGR2_NOC_CLK>; 204*4882a593Smuzhiyun clock-names = "xo", "aggre2"; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun cx-supply = <&pm8994_l26>; 207*4882a593Smuzhiyun px-supply = <&pm8994_lvs2>; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun memory-region = <&slpi_region>; 210*4882a593Smuzhiyun qcom,smem-states = <&slpi_smp2p_out 0>; 211*4882a593Smuzhiyun qcom,smem-state-names = "stop"; 212*4882a593Smuzhiyun }; 213