18c2ecf20Sopenharmony_ciQualcomm ADSP Peripheral Image Loader 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThis document defines the binding for a component that loads and boots firmware 48c2ecf20Sopenharmony_cion the Qualcomm ADSP Hexagon core. 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci- compatible: 78c2ecf20Sopenharmony_ci Usage: required 88c2ecf20Sopenharmony_ci Value type: <string> 98c2ecf20Sopenharmony_ci Definition: must be one of: 108c2ecf20Sopenharmony_ci "qcom,msm8974-adsp-pil" 118c2ecf20Sopenharmony_ci "qcom,msm8996-adsp-pil" 128c2ecf20Sopenharmony_ci "qcom,msm8996-slpi-pil" 138c2ecf20Sopenharmony_ci "qcom,msm8998-adsp-pas" 148c2ecf20Sopenharmony_ci "qcom,msm8998-slpi-pas" 158c2ecf20Sopenharmony_ci "qcom,qcs404-adsp-pas" 168c2ecf20Sopenharmony_ci "qcom,qcs404-cdsp-pas" 178c2ecf20Sopenharmony_ci "qcom,qcs404-wcss-pas" 188c2ecf20Sopenharmony_ci "qcom,sc7180-mpss-pas" 198c2ecf20Sopenharmony_ci "qcom,sdm845-adsp-pas" 208c2ecf20Sopenharmony_ci "qcom,sdm845-cdsp-pas" 218c2ecf20Sopenharmony_ci "qcom,sm8150-adsp-pas" 228c2ecf20Sopenharmony_ci "qcom,sm8150-cdsp-pas" 238c2ecf20Sopenharmony_ci "qcom,sm8150-mpss-pas" 248c2ecf20Sopenharmony_ci "qcom,sm8150-slpi-pas" 258c2ecf20Sopenharmony_ci "qcom,sm8250-adsp-pas" 268c2ecf20Sopenharmony_ci "qcom,sm8250-cdsp-pas" 278c2ecf20Sopenharmony_ci "qcom,sm8250-slpi-pas" 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci- interrupts-extended: 308c2ecf20Sopenharmony_ci Usage: required 318c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 328c2ecf20Sopenharmony_ci Definition: reference to the interrupts that match interrupt-names 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci- interrupt-names: 358c2ecf20Sopenharmony_ci Usage: required 368c2ecf20Sopenharmony_ci Value type: <stringlist> 378c2ecf20Sopenharmony_ci Definition: The interrupts needed depends on the compatible 388c2ecf20Sopenharmony_ci string: 398c2ecf20Sopenharmony_ci qcom,msm8974-adsp-pil: 408c2ecf20Sopenharmony_ci qcom,msm8996-adsp-pil: 418c2ecf20Sopenharmony_ci qcom,msm8996-slpi-pil: 428c2ecf20Sopenharmony_ci qcom,msm8998-adsp-pas: 438c2ecf20Sopenharmony_ci qcom,msm8998-slpi-pas: 448c2ecf20Sopenharmony_ci qcom,qcs404-adsp-pas: 458c2ecf20Sopenharmony_ci qcom,qcs404-cdsp-pas: 468c2ecf20Sopenharmony_ci qcom,sdm845-adsp-pas: 478c2ecf20Sopenharmony_ci qcom,sdm845-cdsp-pas: 488c2ecf20Sopenharmony_ci qcom,sm8150-adsp-pas: 498c2ecf20Sopenharmony_ci qcom,sm8150-cdsp-pas: 508c2ecf20Sopenharmony_ci qcom,sm8150-slpi-pas: 518c2ecf20Sopenharmony_ci qcom,sm8250-adsp-pas: 528c2ecf20Sopenharmony_ci qcom,sm8250-cdsp-pas: 538c2ecf20Sopenharmony_ci qcom,sm8250-slpi-pas: 548c2ecf20Sopenharmony_ci must be "wdog", "fatal", "ready", "handover", "stop-ack" 558c2ecf20Sopenharmony_ci qcom,qcs404-wcss-pas: 568c2ecf20Sopenharmony_ci qcom,sc7180-mpss-pas: 578c2ecf20Sopenharmony_ci qcom,sm8150-mpss-pas: 588c2ecf20Sopenharmony_ci must be "wdog", "fatal", "ready", "handover", "stop-ack", 598c2ecf20Sopenharmony_ci "shutdown-ack" 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci- firmware-name: 628c2ecf20Sopenharmony_ci Usage: optional 638c2ecf20Sopenharmony_ci Value type: <string> 648c2ecf20Sopenharmony_ci Definition: must list the relative firmware image path for the 658c2ecf20Sopenharmony_ci Hexagon Core. 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci- clocks: 688c2ecf20Sopenharmony_ci Usage: required 698c2ecf20Sopenharmony_ci Value type: <prop-encoded-array> 708c2ecf20Sopenharmony_ci Definition: reference to the xo clock and optionally aggre2 clock to be 718c2ecf20Sopenharmony_ci held on behalf of the booting Hexagon core 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci- clock-names: 748c2ecf20Sopenharmony_ci Usage: required 758c2ecf20Sopenharmony_ci Value type: <stringlist> 768c2ecf20Sopenharmony_ci Definition: must be "xo" and optionally include "aggre2" 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci- cx-supply: 798c2ecf20Sopenharmony_ci Usage: required 808c2ecf20Sopenharmony_ci Value type: <phandle> 818c2ecf20Sopenharmony_ci Definition: reference to the regulator to be held on behalf of the 828c2ecf20Sopenharmony_ci booting Hexagon core 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci- px-supply: 858c2ecf20Sopenharmony_ci Usage: required 868c2ecf20Sopenharmony_ci Value type: <phandle> 878c2ecf20Sopenharmony_ci Definition: reference to the px regulator to be held on behalf of the 888c2ecf20Sopenharmony_ci booting Hexagon core 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci- power-domains: 918c2ecf20Sopenharmony_ci Usage: required 928c2ecf20Sopenharmony_ci Value type: <phandle> 938c2ecf20Sopenharmony_ci Definition: reference to power-domains that match the power-domain-names 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci- power-domain-names: 968c2ecf20Sopenharmony_ci Usage: required 978c2ecf20Sopenharmony_ci Value type: <stringlist> 988c2ecf20Sopenharmony_ci Definition: The power-domains needed depend on the compatible string: 998c2ecf20Sopenharmony_ci qcom,msm8974-adsp-pil: 1008c2ecf20Sopenharmony_ci qcom,msm8996-adsp-pil: 1018c2ecf20Sopenharmony_ci qcom,msm8998-adsp-pas: 1028c2ecf20Sopenharmony_ci must be "cx" 1038c2ecf20Sopenharmony_ci qcom,msm8996-slpi-pil: 1048c2ecf20Sopenharmony_ci must be "ss_cx" 1058c2ecf20Sopenharmony_ci qcom,msm8998-slpi-pas: 1068c2ecf20Sopenharmony_ci must be "ssc_cx" 1078c2ecf20Sopenharmony_ci qcom,qcs404-adsp-pas: 1088c2ecf20Sopenharmony_ci must be "lpi_cx" 1098c2ecf20Sopenharmony_ci qcom,qcs404-cdsp-pas: 1108c2ecf20Sopenharmony_ci qcom,qcs404-wcss-pas: 1118c2ecf20Sopenharmony_ci must be "mx" 1128c2ecf20Sopenharmony_ci qcom,sdm845-adsp-pas: 1138c2ecf20Sopenharmony_ci qcom,sdm845-cdsp-pas: 1148c2ecf20Sopenharmony_ci qcom,sm8150-adsp-pas: 1158c2ecf20Sopenharmony_ci qcom,sm8150-cdsp-pas: 1168c2ecf20Sopenharmony_ci qcom,sm8250-cdsp-pas: 1178c2ecf20Sopenharmony_ci must be "cx", "load_state" 1188c2ecf20Sopenharmony_ci qcom,sc7180-mpss-pas: 1198c2ecf20Sopenharmony_ci qcom,sm8150-mpss-pas: 1208c2ecf20Sopenharmony_ci must be "cx", "load_state", "mss" 1218c2ecf20Sopenharmony_ci qcom,sm8250-adsp-pas: 1228c2ecf20Sopenharmony_ci qcom,sm8150-slpi-pas: 1238c2ecf20Sopenharmony_ci qcom,sm8250-slpi-pas: 1248c2ecf20Sopenharmony_ci must be "lcx", "lmx", "load_state" 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ci- memory-region: 1278c2ecf20Sopenharmony_ci Usage: required 1288c2ecf20Sopenharmony_ci Value type: <phandle> 1298c2ecf20Sopenharmony_ci Definition: reference to the reserved-memory for the ADSP 1308c2ecf20Sopenharmony_ci 1318c2ecf20Sopenharmony_ci- qcom,smem-states: 1328c2ecf20Sopenharmony_ci Usage: required 1338c2ecf20Sopenharmony_ci Value type: <phandle> 1348c2ecf20Sopenharmony_ci Definition: reference to the smem state for requesting the ADSP to 1358c2ecf20Sopenharmony_ci shut down 1368c2ecf20Sopenharmony_ci 1378c2ecf20Sopenharmony_ci- qcom,smem-state-names: 1388c2ecf20Sopenharmony_ci Usage: required 1398c2ecf20Sopenharmony_ci Value type: <stringlist> 1408c2ecf20Sopenharmony_ci Definition: must be "stop" 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ci= SUBNODES 1448c2ecf20Sopenharmony_ciThe adsp node may have an subnode named either "smd-edge" or "glink-edge" that 1458c2ecf20Sopenharmony_cidescribes the communication edge, channels and devices related to the ADSP. 1468c2ecf20Sopenharmony_ciSee ../soc/qcom/qcom,smd.txt and ../soc/qcom/qcom,glink.txt for details on how 1478c2ecf20Sopenharmony_cito describe these. 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_ci= EXAMPLE 1518c2ecf20Sopenharmony_ciThe following example describes the resources needed to boot control the 1528c2ecf20Sopenharmony_ciADSP, as it is found on MSM8974 boards. 1538c2ecf20Sopenharmony_ci 1548c2ecf20Sopenharmony_ci adsp { 1558c2ecf20Sopenharmony_ci compatible = "qcom,msm8974-adsp-pil"; 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_ci interrupts-extended = <&intc 0 162 IRQ_TYPE_EDGE_RISING>, 1588c2ecf20Sopenharmony_ci <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 1598c2ecf20Sopenharmony_ci <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 1608c2ecf20Sopenharmony_ci <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 1618c2ecf20Sopenharmony_ci <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 1628c2ecf20Sopenharmony_ci interrupt-names = "wdog", 1638c2ecf20Sopenharmony_ci "fatal", 1648c2ecf20Sopenharmony_ci "ready", 1658c2ecf20Sopenharmony_ci "handover", 1668c2ecf20Sopenharmony_ci "stop-ack"; 1678c2ecf20Sopenharmony_ci 1688c2ecf20Sopenharmony_ci clocks = <&rpmcc RPM_CXO_CLK>; 1698c2ecf20Sopenharmony_ci clock-names = "xo"; 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_ci cx-supply = <&pm8841_s2>; 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_ci memory-region = <&adsp_region>; 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ci qcom,smem-states = <&adsp_smp2p_out 0>; 1768c2ecf20Sopenharmony_ci qcom,smem-state-names = "stop"; 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ci smd-edge { 1798c2ecf20Sopenharmony_ci interrupts = <0 156 IRQ_TYPE_EDGE_RISING>; 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci qcom,ipc = <&apcs 8 8>; 1828c2ecf20Sopenharmony_ci qcom,smd-edge = <1>; 1838c2ecf20Sopenharmony_ci }; 1848c2ecf20Sopenharmony_ci }; 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ciThe following example describes the resources needed to boot control the 1878c2ecf20Sopenharmony_ciSLPI, as it is found on MSM8996 boards. 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ci slpi { 1908c2ecf20Sopenharmony_ci compatible = "qcom,msm8996-slpi-pil"; 1918c2ecf20Sopenharmony_ci interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>, 1928c2ecf20Sopenharmony_ci <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 1938c2ecf20Sopenharmony_ci <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 1948c2ecf20Sopenharmony_ci <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 1958c2ecf20Sopenharmony_ci <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 1968c2ecf20Sopenharmony_ci interrupt-names = "wdog", 1978c2ecf20Sopenharmony_ci "fatal", 1988c2ecf20Sopenharmony_ci "ready", 1998c2ecf20Sopenharmony_ci "handover", 2008c2ecf20Sopenharmony_ci "stop-ack"; 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci clocks = <&rpmcc MSM8996_RPM_SMD_XO_CLK_SRC>, 2038c2ecf20Sopenharmony_ci <&rpmcc MSM8996_RPM_SMD_AGGR2_NOC_CLK>; 2048c2ecf20Sopenharmony_ci clock-names = "xo", "aggre2"; 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci cx-supply = <&pm8994_l26>; 2078c2ecf20Sopenharmony_ci px-supply = <&pm8994_lvs2>; 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_ci memory-region = <&slpi_region>; 2108c2ecf20Sopenharmony_ci qcom,smem-states = <&slpi_smp2p_out 0>; 2118c2ecf20Sopenharmony_ci qcom,smem-state-names = "stop"; 2128c2ecf20Sopenharmony_ci }; 213