1*4882a593SmuzhiyunQualcomm Hexagon Peripheral Image Loader 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunThis document defines the binding for a component that loads and boots firmware 4*4882a593Smuzhiyunon the Qualcomm 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,q6v5-pil", 11*4882a593Smuzhiyun "qcom,ipq8074-wcss-pil" 12*4882a593Smuzhiyun "qcom,msm8916-mss-pil", 13*4882a593Smuzhiyun "qcom,msm8974-mss-pil" 14*4882a593Smuzhiyun "qcom,msm8996-mss-pil" 15*4882a593Smuzhiyun "qcom,msm8998-mss-pil" 16*4882a593Smuzhiyun "qcom,sc7180-mss-pil" 17*4882a593Smuzhiyun "qcom,sdm845-mss-pil" 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun- reg: 20*4882a593Smuzhiyun Usage: required 21*4882a593Smuzhiyun Value type: <prop-encoded-array> 22*4882a593Smuzhiyun Definition: must specify the base address and size of the qdsp6 and 23*4882a593Smuzhiyun rmb register blocks 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun- reg-names: 26*4882a593Smuzhiyun Usage: required 27*4882a593Smuzhiyun Value type: <stringlist> 28*4882a593Smuzhiyun Definition: must be "q6dsp" and "rmb" 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun- interrupts-extended: 31*4882a593Smuzhiyun Usage: required 32*4882a593Smuzhiyun Value type: <prop-encoded-array> 33*4882a593Smuzhiyun Definition: reference to the interrupts that match interrupt-names 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun- interrupt-names: 36*4882a593Smuzhiyun Usage: required 37*4882a593Smuzhiyun Value type: <stringlist> 38*4882a593Smuzhiyun Definition: The interrupts needed depends on the the compatible 39*4882a593Smuzhiyun string: 40*4882a593Smuzhiyun qcom,q6v5-pil: 41*4882a593Smuzhiyun qcom,ipq8074-wcss-pil: 42*4882a593Smuzhiyun qcom,msm8916-mss-pil: 43*4882a593Smuzhiyun qcom,msm8974-mss-pil: 44*4882a593Smuzhiyun must be "wdog", "fatal", "ready", "handover", "stop-ack" 45*4882a593Smuzhiyun qcom,msm8996-mss-pil: 46*4882a593Smuzhiyun qcom,msm8998-mss-pil: 47*4882a593Smuzhiyun qcom,sc7180-mss-pil: 48*4882a593Smuzhiyun qcom,sdm845-mss-pil: 49*4882a593Smuzhiyun must be "wdog", "fatal", "ready", "handover", "stop-ack", 50*4882a593Smuzhiyun "shutdown-ack" 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun- firmware-name: 53*4882a593Smuzhiyun Usage: optional 54*4882a593Smuzhiyun Value type: <stringlist> 55*4882a593Smuzhiyun Definition: must list the relative firmware image paths for mba and 56*4882a593Smuzhiyun modem. They are used for booting and authenticating the 57*4882a593Smuzhiyun Hexagon core. 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun- clocks: 60*4882a593Smuzhiyun Usage: required 61*4882a593Smuzhiyun Value type: <phandle> 62*4882a593Smuzhiyun Definition: reference to the clocks that match clock-names 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun- clock-names: 65*4882a593Smuzhiyun Usage: required 66*4882a593Smuzhiyun Value type: <stringlist> 67*4882a593Smuzhiyun Definition: The clocks needed depend on the compatible string: 68*4882a593Smuzhiyun qcom,ipq8074-wcss-pil: 69*4882a593Smuzhiyun no clock names required 70*4882a593Smuzhiyun qcom,q6v5-pil: 71*4882a593Smuzhiyun qcom,msm8916-mss-pil: 72*4882a593Smuzhiyun qcom,msm8974-mss-pil: 73*4882a593Smuzhiyun must be "iface", "bus", "mem", "xo" 74*4882a593Smuzhiyun qcom,msm8996-mss-pil: 75*4882a593Smuzhiyun must be "iface", "bus", "mem", "xo", "gpll0_mss", 76*4882a593Smuzhiyun "snoc_axi", "mnoc_axi", "pnoc", "qdss" 77*4882a593Smuzhiyun qcom,msm8998-mss-pil: 78*4882a593Smuzhiyun must be "iface", "bus", "mem", "xo", "gpll0_mss", 79*4882a593Smuzhiyun "snoc_axi", "mnoc_axi", "qdss" 80*4882a593Smuzhiyun qcom,sc7180-mss-pil: 81*4882a593Smuzhiyun must be "iface", "bus", "xo", "snoc_axi", "mnoc_axi", 82*4882a593Smuzhiyun "nav" 83*4882a593Smuzhiyun qcom,sdm845-mss-pil: 84*4882a593Smuzhiyun must be "iface", "bus", "mem", "xo", "gpll0_mss", 85*4882a593Smuzhiyun "snoc_axi", "mnoc_axi", "prng" 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun- resets: 88*4882a593Smuzhiyun Usage: required 89*4882a593Smuzhiyun Value type: <phandle> 90*4882a593Smuzhiyun Definition: reference to the reset-controller for the modem sub-system 91*4882a593Smuzhiyun reference to the list of 3 reset-controllers for the 92*4882a593Smuzhiyun wcss sub-system 93*4882a593Smuzhiyun reference to the list of 2 reset-controllers for the modem 94*4882a593Smuzhiyun sub-system on SC7180, SDM845 SoCs 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun- reset-names: 97*4882a593Smuzhiyun Usage: required 98*4882a593Smuzhiyun Value type: <stringlist> 99*4882a593Smuzhiyun Definition: must be "mss_restart" for the modem sub-system 100*4882a593Smuzhiyun must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset" 101*4882a593Smuzhiyun for the wcss sub-system 102*4882a593Smuzhiyun must be "mss_restart", "pdc_reset" for the modem 103*4882a593Smuzhiyun sub-system on SC7180, SDM845 SoCs 104*4882a593Smuzhiyun 105*4882a593SmuzhiyunFor devices where the mba and mpss sub-nodes are not specified, mba/mpss region 106*4882a593Smuzhiyunshould be referenced as follows: 107*4882a593Smuzhiyun- memory-region: 108*4882a593Smuzhiyun Usage: required 109*4882a593Smuzhiyun Value type: <phandle> 110*4882a593Smuzhiyun Definition: reference to the reserved-memory for the mba region followed 111*4882a593Smuzhiyun by the mpss region 112*4882a593Smuzhiyun 113*4882a593SmuzhiyunFor the compatible strings below the following supplies are required: 114*4882a593Smuzhiyun "qcom,q6v5-pil" 115*4882a593Smuzhiyun "qcom,msm8916-mss-pil", 116*4882a593Smuzhiyun- cx-supply: 117*4882a593Smuzhiyun- mx-supply: 118*4882a593Smuzhiyun- pll-supply: 119*4882a593Smuzhiyun Usage: required 120*4882a593Smuzhiyun Value type: <phandle> 121*4882a593Smuzhiyun Definition: reference to the regulators to be held on behalf of the 122*4882a593Smuzhiyun booting of the Hexagon core 123*4882a593Smuzhiyun 124*4882a593SmuzhiyunFor the compatible string below the following supplies are required: 125*4882a593Smuzhiyun "qcom,msm8974-mss-pil" 126*4882a593Smuzhiyun- cx-supply: 127*4882a593Smuzhiyun- mss-supply: 128*4882a593Smuzhiyun- mx-supply: 129*4882a593Smuzhiyun- pll-supply: 130*4882a593Smuzhiyun Usage: required 131*4882a593Smuzhiyun Value type: <phandle> 132*4882a593Smuzhiyun Definition: reference to the regulators to be held on behalf of the 133*4882a593Smuzhiyun booting of the Hexagon core 134*4882a593Smuzhiyun 135*4882a593SmuzhiyunFor the compatible string below the following supplies are required: 136*4882a593Smuzhiyun "qcom,msm8996-mss-pil" 137*4882a593Smuzhiyun- pll-supply: 138*4882a593Smuzhiyun Usage: required 139*4882a593Smuzhiyun Value type: <phandle> 140*4882a593Smuzhiyun Definition: reference to the regulators to be held on behalf of the 141*4882a593Smuzhiyun booting of the Hexagon core 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun- power-domains: 144*4882a593Smuzhiyun Usage: required 145*4882a593Smuzhiyun Value type: <phandle> 146*4882a593Smuzhiyun Definition: reference to power-domains that match power-domain-names 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun- power-domain-names: 149*4882a593Smuzhiyun Usage: required 150*4882a593Smuzhiyun Value type: <stringlist> 151*4882a593Smuzhiyun Definition: The power-domains needed depend on the compatible string: 152*4882a593Smuzhiyun qcom,q6v5-pil: 153*4882a593Smuzhiyun qcom,ipq8074-wcss-pil: 154*4882a593Smuzhiyun qcom,msm8916-mss-pil: 155*4882a593Smuzhiyun qcom,msm8974-mss-pil: 156*4882a593Smuzhiyun no power-domain names required 157*4882a593Smuzhiyun qcom,msm8996-mss-pil: 158*4882a593Smuzhiyun qcom,msm8998-mss-pil: 159*4882a593Smuzhiyun must be "cx", "mx" 160*4882a593Smuzhiyun qcom,sc7180-mss-pil: 161*4882a593Smuzhiyun qcom,sdm845-mss-pil: 162*4882a593Smuzhiyun must be "cx", "mx", "mss", "load_state" 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun- qcom,smem-states: 165*4882a593Smuzhiyun Usage: required 166*4882a593Smuzhiyun Value type: <phandle> 167*4882a593Smuzhiyun Definition: reference to the smem state for requesting the Hexagon to 168*4882a593Smuzhiyun shut down 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun- qcom,smem-state-names: 171*4882a593Smuzhiyun Usage: required 172*4882a593Smuzhiyun Value type: <stringlist> 173*4882a593Smuzhiyun Definition: must be "stop" 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun- qcom,halt-regs: 176*4882a593Smuzhiyun Usage: required 177*4882a593Smuzhiyun Value type: <prop-encoded-array> 178*4882a593Smuzhiyun Definition: a phandle reference to a syscon representing TCSR followed 179*4882a593Smuzhiyun by the three offsets within syscon for q6, modem and nc 180*4882a593Smuzhiyun halt registers. 181*4882a593Smuzhiyun 182*4882a593SmuzhiyunFor the compatible strings below the following phandle references are required: 183*4882a593Smuzhiyun "qcom,sc7180-mss-pil" 184*4882a593Smuzhiyun- qcom,spare-regs: 185*4882a593Smuzhiyun Usage: required 186*4882a593Smuzhiyun Value type: <prop-encoded-array> 187*4882a593Smuzhiyun Definition: a phandle reference to a syscon representing TCSR followed 188*4882a593Smuzhiyun by the offset within syscon for conn_box_spare0 register 189*4882a593Smuzhiyun used by the modem sub-system running on SC7180 SoC. 190*4882a593Smuzhiyun 191*4882a593SmuzhiyunThe Hexagon node must contain iommus property as described in ../iommu/iommu.txt 192*4882a593Smuzhiyunon platforms which do not have TrustZone. 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun= SUBNODES: 195*4882a593SmuzhiyunThe Hexagon node must contain two subnodes, named "mba" and "mpss" representing 196*4882a593Smuzhiyunthe memory regions used by the Hexagon firmware. Each sub-node must contain: 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun- memory-region: 199*4882a593Smuzhiyun Usage: required 200*4882a593Smuzhiyun Value type: <phandle> 201*4882a593Smuzhiyun Definition: reference to the reserved-memory for the region 202*4882a593Smuzhiyun 203*4882a593SmuzhiyunThe Hexagon node may also have an subnode named either "smd-edge" or 204*4882a593Smuzhiyun"glink-edge" that describes the communication edge, channels and devices 205*4882a593Smuzhiyunrelated to the Hexagon. See ../soc/qcom/qcom,smd.txt and 206*4882a593Smuzhiyun../soc/qcom/qcom,glink.txt for details on how to describe these. 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun= EXAMPLE 209*4882a593SmuzhiyunThe following example describes the resources needed to boot control the 210*4882a593SmuzhiyunHexagon, as it is found on MSM8974 boards. 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun modem-rproc@fc880000 { 213*4882a593Smuzhiyun compatible = "qcom,q6v5-pil"; 214*4882a593Smuzhiyun reg = <0xfc880000 0x100>, 215*4882a593Smuzhiyun <0xfc820000 0x020>; 216*4882a593Smuzhiyun reg-names = "qdsp6", "rmb"; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun interrupts-extended = <&intc 0 24 1>, 219*4882a593Smuzhiyun <&modem_smp2p_in 0 0>, 220*4882a593Smuzhiyun <&modem_smp2p_in 1 0>, 221*4882a593Smuzhiyun <&modem_smp2p_in 2 0>, 222*4882a593Smuzhiyun <&modem_smp2p_in 3 0>; 223*4882a593Smuzhiyun interrupt-names = "wdog", 224*4882a593Smuzhiyun "fatal", 225*4882a593Smuzhiyun "ready", 226*4882a593Smuzhiyun "handover", 227*4882a593Smuzhiyun "stop-ack"; 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun clocks = <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>, 230*4882a593Smuzhiyun <&gcc GCC_MSS_CFG_AHB_CLK>, 231*4882a593Smuzhiyun <&gcc GCC_BOOT_ROM_AHB_CLK>; 232*4882a593Smuzhiyun clock-names = "iface", "bus", "mem"; 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun qcom,halt-regs = <&tcsr_mutex_block 0x1180 0x1200 0x1280>; 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun resets = <&gcc GCC_MSS_RESTART>; 237*4882a593Smuzhiyun reset-names = "mss_restart"; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun cx-supply = <&pm8841_s2>; 240*4882a593Smuzhiyun mss-supply = <&pm8841_s3>; 241*4882a593Smuzhiyun mx-supply = <&pm8841_s1>; 242*4882a593Smuzhiyun pll-supply = <&pm8941_l12>; 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun qcom,smem-states = <&modem_smp2p_out 0>; 245*4882a593Smuzhiyun qcom,smem-state-names = "stop"; 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun mba { 248*4882a593Smuzhiyun memory-region = <&mba_region>; 249*4882a593Smuzhiyun }; 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun mpss { 252*4882a593Smuzhiyun memory-region = <&mpss_region>; 253*4882a593Smuzhiyun }; 254*4882a593Smuzhiyun }; 255