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