0001 Qualcomm Hexagon Peripheral Image Loader
0002
0003 This document defines the binding for a component that loads and boots firmware
0004 on the Qualcomm Hexagon core.
0005
0006 - compatible:
0007 Usage: required
0008 Value type: <string>
0009 Definition: must be one of:
0010 "qcom,q6v5-pil",
0011 "qcom,ipq8074-wcss-pil"
0012 "qcom,qcs404-wcss-pil"
0013 "qcom,msm8916-mss-pil",
0014 "qcom,msm8974-mss-pil"
0015 "qcom,msm8996-mss-pil"
0016 "qcom,msm8998-mss-pil"
0017 "qcom,sdm845-mss-pil"
0018
0019 - reg:
0020 Usage: required
0021 Value type: <prop-encoded-array>
0022 Definition: must specify the base address and size of the qdsp6 and
0023 rmb register blocks
0024
0025 - reg-names:
0026 Usage: required
0027 Value type: <stringlist>
0028 Definition: must be "q6dsp" and "rmb"
0029
0030 - interrupts-extended:
0031 Usage: required
0032 Value type: <prop-encoded-array>
0033 Definition: reference to the interrupts that match interrupt-names
0034
0035 - interrupt-names:
0036 Usage: required
0037 Value type: <stringlist>
0038 Definition: The interrupts needed depends on the compatible
0039 string:
0040 qcom,q6v5-pil:
0041 qcom,ipq8074-wcss-pil:
0042 qcom,qcs404-wcss-pil:
0043 qcom,msm8916-mss-pil:
0044 qcom,msm8974-mss-pil:
0045 must be "wdog", "fatal", "ready", "handover", "stop-ack"
0046 qcom,msm8996-mss-pil:
0047 qcom,msm8998-mss-pil:
0048 qcom,sdm845-mss-pil:
0049 must be "wdog", "fatal", "ready", "handover", "stop-ack",
0050 "shutdown-ack"
0051
0052 - firmware-name:
0053 Usage: optional
0054 Value type: <stringlist>
0055 Definition: must list the relative firmware image paths for mba and
0056 modem. They are used for booting and authenticating the
0057 Hexagon core.
0058
0059 - clocks:
0060 Usage: required
0061 Value type: <phandle>
0062 Definition: reference to the clocks that match clock-names
0063
0064 - clock-names:
0065 Usage: required
0066 Value type: <stringlist>
0067 Definition: The clocks needed depend on the compatible string:
0068 qcom,ipq8074-wcss-pil:
0069 no clock names required
0070 qcom,qcs404-wcss-pil:
0071 must be "xo", "gcc_abhs_cbcr", "gcc_abhs_cbcr",
0072 "gcc_axim_cbcr", "lcc_ahbfabric_cbc", "tcsr_lcc_cbc",
0073 "lcc_abhs_cbc", "lcc_tcm_slave_cbc", "lcc_abhm_cbc",
0074 "lcc_axim_cbc", "lcc_bcr_sleep"
0075 qcom,q6v5-pil:
0076 qcom,msm8916-mss-pil:
0077 qcom,msm8974-mss-pil:
0078 must be "iface", "bus", "mem", "xo"
0079 qcom,msm8996-mss-pil:
0080 must be "iface", "bus", "mem", "xo", "gpll0_mss",
0081 "snoc_axi", "mnoc_axi", "pnoc", "qdss"
0082 qcom,msm8998-mss-pil:
0083 must be "iface", "bus", "mem", "xo", "gpll0_mss",
0084 "snoc_axi", "mnoc_axi", "qdss"
0085 qcom,sdm845-mss-pil:
0086 must be "iface", "bus", "mem", "xo", "gpll0_mss",
0087 "snoc_axi", "mnoc_axi", "prng"
0088
0089 - resets:
0090 Usage: required
0091 Value type: <phandle>
0092 Definition: reference to the reset-controller for the modem sub-system
0093 reference to the list of 3 reset-controllers for the
0094 wcss sub-system
0095 reference to the list of 2 reset-controllers for the modem
0096 sub-system on SDM845 SoCs
0097
0098 - reset-names:
0099 Usage: required
0100 Value type: <stringlist>
0101 Definition: must be "mss_restart" for the modem sub-system
0102 must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
0103 for the wcss sub-system
0104 must be "mss_restart", "pdc_reset" for the modem
0105 sub-system on SDM845 SoCs
0106
0107 For devices where the mba and mpss sub-nodes are not specified, mba/mpss region
0108 should be referenced as follows:
0109 - memory-region:
0110 Usage: required
0111 Value type: <phandle>
0112 Definition: reference to the reserved-memory for the mba region followed
0113 by the mpss region
0114
0115 For the compatible strings below the following supplies are required:
0116 "qcom,q6v5-pil"
0117 "qcom,msm8916-mss-pil",
0118 - cx-supply: (deprecated, use power domain instead)
0119 - mx-supply: (deprecated, use power domain instead)
0120 - pll-supply:
0121 Usage: required
0122 Value type: <phandle>
0123 Definition: reference to the regulators to be held on behalf of the
0124 booting of the Hexagon core
0125
0126 For the compatible string below the following supplies are required:
0127 "qcom,msm8974-mss-pil"
0128 - cx-supply: (deprecated, use power domain instead)
0129 - mss-supply:
0130 - mx-supply: (deprecated, use power domain instead)
0131 - pll-supply:
0132 Usage: required
0133 Value type: <phandle>
0134 Definition: reference to the regulators to be held on behalf of the
0135 booting of the Hexagon core
0136
0137 For the compatible string below the following supplies are required:
0138 "qcom,qcs404-wcss-pil"
0139 - cx-supply:
0140 Usage: required
0141 Value type: <phandle>
0142 Definition: reference to the regulators to be held on behalf of the
0143 booting of the Hexagon core
0144
0145 For the compatible string below the following supplies are required:
0146 "qcom,msm8996-mss-pil"
0147 - pll-supply:
0148 Usage: required
0149 Value type: <phandle>
0150 Definition: reference to the regulators to be held on behalf of the
0151 booting of the Hexagon core
0152
0153 - power-domains:
0154 Usage: required
0155 Value type: <phandle>
0156 Definition: reference to power-domains that match power-domain-names
0157
0158 - power-domain-names:
0159 Usage: required
0160 Value type: <stringlist>
0161 Definition: The power-domains needed depend on the compatible string:
0162 qcom,ipq8074-wcss-pil:
0163 no power-domain names required
0164 qcom,q6v5-pil:
0165 qcom,msm8916-mss-pil:
0166 qcom,msm8974-mss-pil:
0167 qcom,msm8996-mss-pil:
0168 qcom,msm8998-mss-pil:
0169 must be "cx", "mx"
0170 qcom,sdm845-mss-pil:
0171 must be "cx", "mx", "mss"
0172
0173 - qcom,qmp:
0174 Usage: optional
0175 Value type: <phandle>
0176 Definition: reference to the AOSS side-channel message RAM.
0177
0178 - qcom,smem-states:
0179 Usage: required
0180 Value type: <phandle>
0181 Definition: reference to the smem state for requesting the Hexagon to
0182 shut down
0183
0184 - qcom,smem-state-names:
0185 Usage: required
0186 Value type: <stringlist>
0187 Definition: must be "stop"
0188
0189 - qcom,halt-regs:
0190 Usage: required
0191 Value type: <prop-encoded-array>
0192 Definition: a phandle reference to a syscon representing TCSR followed
0193 by the three offsets within syscon for q6, modem and nc
0194 halt registers.
0195
0196 The Hexagon node must contain iommus property as described in ../iommu/iommu.txt
0197 on platforms which do not have TrustZone.
0198
0199 = SUBNODES:
0200 The Hexagon node must contain two subnodes, named "mba" and "mpss" representing
0201 the memory regions used by the Hexagon firmware. Each sub-node must contain:
0202
0203 - memory-region:
0204 Usage: required
0205 Value type: <phandle>
0206 Definition: reference to the reserved-memory for the region
0207
0208 The Hexagon node may also have an subnode named either "smd-edge" or
0209 "glink-edge" that describes the communication edge, channels and devices
0210 related to the Hexagon. See ../soc/qcom/qcom,smd.yaml and
0211 ../soc/qcom/qcom,glink.txt for details on how to describe these.
0212
0213 = EXAMPLE
0214 The following example describes the resources needed to boot control the
0215 Hexagon, as it is found on MSM8974 boards.
0216
0217 remoteproc@fc880000 {
0218 compatible = "qcom,msm8974-mss-pil";
0219 reg = <0xfc880000 0x100>, <0xfc820000 0x020>;
0220 reg-names = "qdsp6", "rmb";
0221
0222 interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>,
0223 <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
0224 <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
0225 <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
0226 <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
0227 interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
0228
0229 clocks = <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
0230 <&gcc GCC_MSS_CFG_AHB_CLK>,
0231 <&gcc GCC_BOOT_ROM_AHB_CLK>,
0232 <&xo_board>;
0233 clock-names = "iface", "bus", "mem", "xo";
0234
0235 resets = <&gcc GCC_MSS_RESTART>;
0236 reset-names = "mss_restart";
0237
0238 cx-supply = <&pm8841_s2>;
0239 mss-supply = <&pm8841_s3>;
0240 mx-supply = <&pm8841_s1>;
0241 pll-supply = <&pm8941_l12>;
0242
0243 qcom,halt-regs = <&tcsr_mutex_block 0x1180 0x1200 0x1280>;
0244
0245 qcom,smem-states = <&modem_smp2p_out 0>;
0246 qcom,smem-state-names = "stop";
0247
0248 mba {
0249 memory-region = <&mba_region>;
0250 };
0251
0252 mpss {
0253 memory-region = <&mpss_region>;
0254 };
0255
0256 smd-edge {
0257 interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
0258
0259 qcom,ipc = <&apcs 8 12>;
0260 qcom,smd-edge = <0>;
0261
0262 label = "modem";
0263 };
0264 };