Qualcomm MSS QDSP6v5 Peripheral Image Loader pil-qdsp6v5-mss is a peripheral image loader (PIL) driver. It is used for loading QDSP6v5 (Hexagon) firmware images for modem subsystems into memory and preparing the subsystem's processor to execute code. It's also responsible for shutting down the processor when it's not needed. Required properties: - compatible: Must be "qcom,pil-q6v5-mss" - reg: Pairs of physical base addresses and region sizes of memory mapped registers. - reg-names: Names of the bases for the above registers. "qdsp6_base", "halt_base", "rmb_base", and "restart_reg" are expected. - interrupts: The modem watchdog interrupt - vdd_cx-supply: Reference to the regulator that supplies the vdd_cx domain. - vdd_mx-supply: Reference to the regulator that supplies the memory rail. - qcom,firmware-name: Base name of the firmware image. Ex. "mdsp" - qcom,gpio-err-fatal: GPIO used by the modem to indicate error fatal to the apps. - qcom,gpio-err-ready: GPIO used by the modem to indicate error ready to the apps. - qcom,gpio-proxy-unvote: GPIO used by the modem to trigger proxy unvoting in the apps. - qcom,gpio-force-stop: GPIO used by the apps to force the modem to shutdown. - qcom,gpio-stop-ack: GPIO used by the modem to ack force stop or a graceful stop to the apps. Optional properties: - vdd_mss-supply: Reference to the regulator that supplies the processor. This may be a shared regulator that is already voted on in the PIL proxy voting code (and also managed by the modem on its own), hence we mark it as as optional. - vdd_pll-supply: Reference to the regulator that supplies the PLL's rail. - qcom,vdd_pll: Voltage to be set for the PLL's rail. - reg-names: "cxrail_bhs_reg" - control register for modem power domain. - qcom,is-not-loadable: Boolean- Present if the image does not need to be loaded. - qcom,pil-self-auth: Boolean- True if authentication is required. Example: qcom,mss@fc880000 { compatible = "qcom,pil-q6v5-mss"; reg = <0xfc880000 0x100>, <0xfd485000 0x400>, <0xfc820000 0x020>, <0xfc401680 0x004>; reg-names = "qdsp6_base", "halt_base", "rmb_base", "restart_reg"; interrupts = <0 24 1>; vdd_mss-supply = <&pm8841_s3>; vdd_cx-supply = <&pm8841_s2>; vdd_mx-supply = <&pm8841_s1>; qcom,is-not-loadable; qcom,firmware-name = "mba"; qcom,pil-self-auth; /* GPIO inputs from mss */ qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>; qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_1_in 1 0>; qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_1_in 2 0>; /* GPIO output to mss */ qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_1_out 0 0>; };