1*c66ec88fSEmmanuel VadotQualcomm Technology Inc. Hexagon v56 Peripheral Image Loader 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThis document defines the binding for a component that loads and boots firmware 4*c66ec88fSEmmanuel Vadoton the Qualcomm Technology Inc. Hexagon v56 core. 5*c66ec88fSEmmanuel Vadot 6*c66ec88fSEmmanuel Vadot- compatible: 7*c66ec88fSEmmanuel Vadot Usage: required 8*c66ec88fSEmmanuel Vadot Value type: <string> 9*c66ec88fSEmmanuel Vadot Definition: must be one of: 10*c66ec88fSEmmanuel Vadot "qcom,qcs404-cdsp-pil", 11*c66ec88fSEmmanuel Vadot "qcom,sdm845-adsp-pil" 12*c66ec88fSEmmanuel Vadot 13*c66ec88fSEmmanuel Vadot- reg: 14*c66ec88fSEmmanuel Vadot Usage: required 15*c66ec88fSEmmanuel Vadot Value type: <prop-encoded-array> 16*c66ec88fSEmmanuel Vadot Definition: must specify the base address and size of the qdsp6ss register 17*c66ec88fSEmmanuel Vadot 18*c66ec88fSEmmanuel Vadot- interrupts-extended: 19*c66ec88fSEmmanuel Vadot Usage: required 20*c66ec88fSEmmanuel Vadot Value type: <prop-encoded-array> 21*c66ec88fSEmmanuel Vadot Definition: must list the watchdog, fatal IRQs ready, handover and 22*c66ec88fSEmmanuel Vadot stop-ack IRQs 23*c66ec88fSEmmanuel Vadot 24*c66ec88fSEmmanuel Vadot- interrupt-names: 25*c66ec88fSEmmanuel Vadot Usage: required 26*c66ec88fSEmmanuel Vadot Value type: <stringlist> 27*c66ec88fSEmmanuel Vadot Definition: must be "wdog", "fatal", "ready", "handover", "stop-ack" 28*c66ec88fSEmmanuel Vadot 29*c66ec88fSEmmanuel Vadot- clocks: 30*c66ec88fSEmmanuel Vadot Usage: required 31*c66ec88fSEmmanuel Vadot Value type: <prop-encoded-array> 32*c66ec88fSEmmanuel Vadot Definition: List of phandles and clock specifier pairs for the Hexagon, 33*c66ec88fSEmmanuel Vadot per clock-names below. 34*c66ec88fSEmmanuel Vadot 35*c66ec88fSEmmanuel Vadot- clock-names: 36*c66ec88fSEmmanuel Vadot Usage: required for SDM845 ADSP 37*c66ec88fSEmmanuel Vadot Value type: <stringlist> 38*c66ec88fSEmmanuel Vadot Definition: List of clock input name strings sorted in the same 39*c66ec88fSEmmanuel Vadot order as the clocks property. Definition must have 40*c66ec88fSEmmanuel Vadot "xo", "sway_cbcr", "lpass_ahbs_aon_cbcr", 41*c66ec88fSEmmanuel Vadot "lpass_ahbm_aon_cbcr", "qdsp6ss_xo", "qdsp6ss_sleep" 42*c66ec88fSEmmanuel Vadot and "qdsp6ss_core". 43*c66ec88fSEmmanuel Vadot 44*c66ec88fSEmmanuel Vadot- clock-names: 45*c66ec88fSEmmanuel Vadot Usage: required for QCS404 CDSP 46*c66ec88fSEmmanuel Vadot Value type: <stringlist> 47*c66ec88fSEmmanuel Vadot Definition: List of clock input name strings sorted in the same 48*c66ec88fSEmmanuel Vadot order as the clocks property. Definition must have 49*c66ec88fSEmmanuel Vadot "xo", "sway", "tbu", "bimc", "ahb_aon", "q6ss_slave", 50*c66ec88fSEmmanuel Vadot "q6ss_master", "q6_axim". 51*c66ec88fSEmmanuel Vadot 52*c66ec88fSEmmanuel Vadot- power-domains: 53*c66ec88fSEmmanuel Vadot Usage: required 54*c66ec88fSEmmanuel Vadot Value type: <phandle> 55*c66ec88fSEmmanuel Vadot Definition: reference to cx power domain node. 56*c66ec88fSEmmanuel Vadot 57*c66ec88fSEmmanuel Vadot- resets: 58*c66ec88fSEmmanuel Vadot Usage: required 59*c66ec88fSEmmanuel Vadot Value type: <phandle> 60*c66ec88fSEmmanuel Vadot Definition: reference to the list of resets for the Hexagon. 61*c66ec88fSEmmanuel Vadot 62*c66ec88fSEmmanuel Vadot- reset-names: 63*c66ec88fSEmmanuel Vadot Usage: required for SDM845 ADSP 64*c66ec88fSEmmanuel Vadot Value type: <stringlist> 65*c66ec88fSEmmanuel Vadot Definition: must be "pdc_sync" and "cc_lpass" 66*c66ec88fSEmmanuel Vadot 67*c66ec88fSEmmanuel Vadot- reset-names: 68*c66ec88fSEmmanuel Vadot Usage: required for QCS404 CDSP 69*c66ec88fSEmmanuel Vadot Value type: <stringlist> 70*c66ec88fSEmmanuel Vadot Definition: must be "restart" 71*c66ec88fSEmmanuel Vadot 72*c66ec88fSEmmanuel Vadot- qcom,halt-regs: 73*c66ec88fSEmmanuel Vadot Usage: required 74*c66ec88fSEmmanuel Vadot Value type: <prop-encoded-array> 75*c66ec88fSEmmanuel Vadot Definition: a phandle reference to a syscon representing TCSR followed 76*c66ec88fSEmmanuel Vadot by the offset within syscon for Hexagon halt register. 77*c66ec88fSEmmanuel Vadot 78*c66ec88fSEmmanuel Vadot- memory-region: 79*c66ec88fSEmmanuel Vadot Usage: required 80*c66ec88fSEmmanuel Vadot Value type: <phandle> 81*c66ec88fSEmmanuel Vadot Definition: reference to the reserved-memory for the firmware 82*c66ec88fSEmmanuel Vadot 83*c66ec88fSEmmanuel Vadot- qcom,smem-states: 84*c66ec88fSEmmanuel Vadot Usage: required 85*c66ec88fSEmmanuel Vadot Value type: <phandle> 86*c66ec88fSEmmanuel Vadot Definition: reference to the smem state for requesting the Hexagon to 87*c66ec88fSEmmanuel Vadot shut down 88*c66ec88fSEmmanuel Vadot 89*c66ec88fSEmmanuel Vadot- qcom,smem-state-names: 90*c66ec88fSEmmanuel Vadot Usage: required 91*c66ec88fSEmmanuel Vadot Value type: <stringlist> 92*c66ec88fSEmmanuel Vadot Definition: must be "stop" 93*c66ec88fSEmmanuel Vadot 94*c66ec88fSEmmanuel Vadot 95*c66ec88fSEmmanuel Vadot= SUBNODES 96*c66ec88fSEmmanuel VadotThe adsp node may have an subnode named "glink-edge" that describes the 97*c66ec88fSEmmanuel Vadotcommunication edge, channels and devices related to the Hexagon. 98*c66ec88fSEmmanuel VadotSee ../soc/qcom/qcom,glink.txt for details on how to describe these. 99*c66ec88fSEmmanuel Vadot 100*c66ec88fSEmmanuel Vadot= EXAMPLE 101*c66ec88fSEmmanuel VadotThe following example describes the resources needed to boot control the 102*c66ec88fSEmmanuel VadotADSP, as it is found on SDM845 boards. 103*c66ec88fSEmmanuel Vadot 104*c66ec88fSEmmanuel Vadot remoteproc@17300000 { 105*c66ec88fSEmmanuel Vadot compatible = "qcom,sdm845-adsp-pil"; 106*c66ec88fSEmmanuel Vadot reg = <0x17300000 0x40c>; 107*c66ec88fSEmmanuel Vadot 108*c66ec88fSEmmanuel Vadot interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>, 109*c66ec88fSEmmanuel Vadot <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 110*c66ec88fSEmmanuel Vadot <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 111*c66ec88fSEmmanuel Vadot <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 112*c66ec88fSEmmanuel Vadot <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 113*c66ec88fSEmmanuel Vadot interrupt-names = "wdog", "fatal", "ready", 114*c66ec88fSEmmanuel Vadot "handover", "stop-ack"; 115*c66ec88fSEmmanuel Vadot 116*c66ec88fSEmmanuel Vadot clocks = <&rpmhcc RPMH_CXO_CLK>, 117*c66ec88fSEmmanuel Vadot <&gcc GCC_LPASS_SWAY_CLK>, 118*c66ec88fSEmmanuel Vadot <&lpasscc LPASS_Q6SS_AHBS_AON_CLK>, 119*c66ec88fSEmmanuel Vadot <&lpasscc LPASS_Q6SS_AHBM_AON_CLK>, 120*c66ec88fSEmmanuel Vadot <&lpasscc LPASS_QDSP6SS_XO_CLK>, 121*c66ec88fSEmmanuel Vadot <&lpasscc LPASS_QDSP6SS_SLEEP_CLK>, 122*c66ec88fSEmmanuel Vadot <&lpasscc LPASS_QDSP6SS_CORE_CLK>; 123*c66ec88fSEmmanuel Vadot clock-names = "xo", "sway_cbcr", 124*c66ec88fSEmmanuel Vadot "lpass_ahbs_aon_cbcr", 125*c66ec88fSEmmanuel Vadot "lpass_ahbm_aon_cbcr", "qdsp6ss_xo", 126*c66ec88fSEmmanuel Vadot "qdsp6ss_sleep", "qdsp6ss_core"; 127*c66ec88fSEmmanuel Vadot 128*c66ec88fSEmmanuel Vadot power-domains = <&rpmhpd SDM845_CX>; 129*c66ec88fSEmmanuel Vadot 130*c66ec88fSEmmanuel Vadot resets = <&pdc_reset PDC_AUDIO_SYNC_RESET>, 131*c66ec88fSEmmanuel Vadot <&aoss_reset AOSS_CC_LPASS_RESTART>; 132*c66ec88fSEmmanuel Vadot reset-names = "pdc_sync", "cc_lpass"; 133*c66ec88fSEmmanuel Vadot 134*c66ec88fSEmmanuel Vadot qcom,halt-regs = <&tcsr_mutex_regs 0x22000>; 135*c66ec88fSEmmanuel Vadot 136*c66ec88fSEmmanuel Vadot memory-region = <&pil_adsp_mem>; 137*c66ec88fSEmmanuel Vadot 138*c66ec88fSEmmanuel Vadot qcom,smem-states = <&adsp_smp2p_out 0>; 139*c66ec88fSEmmanuel Vadot qcom,smem-state-names = "stop"; 140*c66ec88fSEmmanuel Vadot }; 141