Qualcomm Technologies Inc 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" or "qcom,pil-q6v55-mss" or "qcom,pil-q6v56-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", "rmb_base", "restart_reg" or "restart_reg_sec"(optional for secure mode) are expected. If "halt_base" is in same 4K pages this register then this will be defined else "halt_q6", "halt_modem", "halt_nc" is required. "pdc_sync" is the power domain register introduced in sdm845 for power domain of subsystems. If alternative reset is required, "alt_reset" maps to mss_alt_ares. - interrupts: The modem watchdog interrupt - vdd_cx-supply: Reference to the regulator that supplies the vdd_cx domain. - vdd_cx-voltage: Voltage corner/level(max) for cx rail. - vdd_mx-supply: Reference to the regulator that supplies the memory rail. - vdd_mx-uV: Voltage setting for the mx rail. - qcom,firmware-name: Base name of the firmware image. Ex. "mdsp" 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_mss-uV: Voltage to set for vdd_mss. - 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. - clocks: Array of listing all the clocks that are accesed by this subsystem. - qcom,proxy-clock-names: Names of the clocks that need to be turned on/off during proxy voting/unvoting. - qcom,active-clock-names: Names of the clocks that need to be turned on for the subsystem to run. Turned off when the subsystem is shutdown. - clock-names: Names of all the clocks that are accessed by the subsystem. - 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. - qcom,mem-protect-id: Virtual ID used by PIL to call into TZ/HYP to protect/unprotect subsystem related memory. - 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. - qcom,gpio-ramdump-disable: GPIO used by the modem to inform the apps that ramdump collection should be disabled. - qcom,gpio-shutdown-ack: GPIO used by the modem to indicate that it has done the necessary cleanup and that the apps can move forward with the shutdown sequence. - qcom,restart-group: List of subsystems that will need to restart together. - qcom,mba-image-is-not-elf: Boolean- Present if MBA image doesn't use the ELF format. - qcom,ssctl-instance-id: Instance id used by the subsystem to connect with the SSCTL service. - qcom,sysmon-id: platform device id that sysmon is probed with for the subsystem. - qcom,override-acc: Boolean- Present if we need to override the default ACC settings - qcom,mss_pdc_offset: Integer- Mandatory if PDC register is specified. It is used to specify which bit in the PDC register corresponds to the modem. - qcom,ahb-clk-vote: Boolean- Present if we need to remove the vote for the mss_cfg_ahb clock after the modem boots up - qcom,pnoc-clk-vote: Boolean- Present if the modem needs the PNOC bus to be clocked before it boots up - qcom,qdsp6v56-1-3: Boolean- Present if the qdsp version is v56 1.3 - qcom,qdsp6v56-1-5: Boolean- Present if the qdsp version is v56 1.5 - qcom,edge: GLINK logical name of the remote subsystem - qcom,pil-force-shutdown: Boolean. If set, the SSR framework will not trigger graceful shutdown on behalf of the subsystem driver. - qcom,pil-mss-memsetup: Boolean - True if TZ need to be informed of modem start address and size. - qcom,pas-id: pas_id of the subsystem. - qcom,qdsp6v56-1-8: Boolean- Present if the qdsp version is v56 1.8 - qcom,qdsp6v56-1-8-inrush-current: Boolean- Present if the qdsp version is V56 1.8 and has in-rush current issue. - qcom,qdsp6v61-1-1: Boolean- Present if the qdsp version is v61 1.1 - qcom,qdsp6v62-1-2: Boolean- Present if the qdsp version is v62 1.2 - qcom,qdsp6v62-1-4: Boolean- Present if the qdsp version is v62 1.4 - qcom,qdsp6v62-1-5: Boolean- Present if the qdsp version is v62 1.5 - qcom,qdsp6v65-1-0: Boolean- Present if the qdsp version is v65 1.0 - qcom,mx-spike-wa: Boolean- Present if we need to assert QDSP6 I/O clamp, memory wordline clamp, and compiler memory clamp during MSS restart. - qcom,qdsp6v56-1-10: Boolean- Present if the qdsp version is v56 1.10 - qcom,override-acc-1: Override the default ACC settings with this value if present. - qcom,minidump-id: Unique id for each subsystem - qcom,reset-clk: Enable clock after MSS restart One child node to represent the MBA image may be specified, when the MBA image needs to be loaded in a specifically carved out memory region. Required properties: - compatible: Must be "qcom,pil-mba-mem" - memory-region: A phandle that points to a reserved memory where the MBA image will be loaded. 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_cx-voltage = <7>; vdd_mx-supply = <&pm8841_s1>; vdd_mx-uV = <105000>; clocks = <&clock_rpm clk_xo_pil_mss_clk>, <&clock_gcc clk_gcc_mss_cfg_ahb_clk>, <&clock_gcc clk_gcc_mss_q6_bimc_axi_clk>, <&clock_gcc clk_gcc_boot_rom_ahb_clk>; clock-names = "xo", "iface_clk", "bus_clk", "mem_clk"; qcom,proxy-clock-names = "xo"; qcom,active-clock-names = "iface_clk", "bus_clk", "mem_clk"; qcom,is-not-loadable; qcom,firmware-name = "mba"; qcom,pil-self-auth; qcom,mba-image-is-not-elf; qcom,override-acc; /* 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>; qcom,ssctl-instance-id = <12>; qcom,sysmon-id = <0>; qcom,mba-mem@0 { compatible = "qcom,pil-mba-mem"; memory-region = <&peripheral_mem>; }; };