| * Generic Subsystem Peripheral Image Loader |
| |
| subsys-pil-tz is a generic peripheral image loader (PIL) driver. It is |
| used for loading the firmware images of the 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-tz-generic" |
| - qcom,firmware-name: Base name of the firmware image. |
| |
| Optional properties: |
| - reg: Pairs of physical base addresses and region sizes of |
| memory mapped registers. |
| - reg-names: Names of the bases for the above registers. Not required for |
| PIL usage. Ex. "wrapper_base", "vbif_base". |
| - interrupts: Subsystem to Apps watchdog bite interrupt. |
| - vdd_'reg'-supply: Reference to the regulator that supplies the corresponding |
| 'reg' domain. |
| - qcom,proxy-reg-names: Names of the regulators that need to be turned on/off |
| during proxy voting/unvoting. |
| - qcom,active-reg-names: Names of the regulators that need to be turned on for the |
| subsystem to run. Turned off when the subsystem is shutdown. |
| - qcom,vdd_'reg'-uV-uA: Voltage and current values for the 'reg' regulator. |
| - 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,<clock-name>-freq: Frequency to be set for that clock in Hz. If the property |
| isn't added for a clock, then the default clock frequency |
| would be set to 19200000 Hz. |
| - qcom,msm-bus,name: Name of the bus client for the subsystem. |
| - qcom,msm-bus,num-cases: Number of use-cases. |
| - qcom,msm-bus,num-paths: Number of paths. |
| - qcom,msm-bus,active-only: If not set, uses the dual context by default. |
| - qcom,msm-bus,vectors-KBps: Vector array of master id, slave id, arbitrated |
| bandwidth and instantaneous bandwidth. |
| - qcom,pas-id: pas_id of the subsystem. |
| - qcom,proxy-timeout-ms: Proxy vote timeout value for the subsystem. |
| - qcom,smem-id: ID of the SMEM item for the subsystem. |
| - qcom,is-not-loadable: Boolean. Present if the subsystem's firmware image does not |
| need to be loaded. |
| - qcom,pil-no-auth: Boolean. Present if the subsystem is not authenticated and brought |
| out of reset by using the PIL ops. |
| - 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 subsystem to indicate error fatal to the apps. |
| - qcom,gpio-err-ready: GPIO used by the subsystem to indicate error ready to the apps. |
| - qcom,gpio-proxy-unvote: GPIO used by the subsystem to trigger proxy unvoting in |
| the apps. |
| - qcom,gpio-force-stop: GPIO used by the apps to force the subsystem to shutdown. |
| - qcom,gpio-stop-ack: GPIO used by the subsystem to ack force stop or a graceful stop |
| to the apps. |
| - qcom,restart-group: List of subsystems that will need to restart together. |
| - qcom,keep-proxy-regs-on: Boolean. Present if during proxy unvoting, PIL needs to leave |
| the regulators enabled after removing the voltage/current votes. |
| - qcom,edge: GLINK logical name of the remote subsystem |
| - 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,pil-force-shutdown: Boolean. If set, the SSR framework will not trigger graceful shutdown |
| on behalf of the subsystem driver. |
| - qcom,pil-generic-irq-handler: generic interrupt handler used for communication with subsytem |
| based on bit values in scsr registers. |
| - qcom,spss-scsr-bits: array of bit positions into the scsr registers used in generic handler. |
| - qcom,complete-ramdump: Boolean. If set, complete ramdump i.e. region between start address of |
| first segment to end address of last segment will be collected without |
| leaving any hole in between. |
| - qcom,ignore-ssr-failure: Boolean. If set, SSR failures are not considered fatal. |
| - qcom,mas-crypto: Reference to the bus master of crypto core. |
| |
| Example: |
| qcom,venus@fdce0000 { |
| compatible = "qcom,pil-tz-generic"; |
| reg = <0xfdce0000 0x4000>, |
| <0xfdc80000 0x400>; |
| |
| vdd-supply = <&gdsc_venus>; |
| qcom,proxy-reg-names = "vdd"; |
| clock-names = "core_clk", "iface_clk", "bus_clk", "mem_clk", |
| "scm_core_clk", "scm_iface_clk", "scm_bus_clk", |
| "scm_core_clk_src"; |
| qcom,proxy-clock-names = "core_clk", "iface_clk", "bus_clk", |
| "mem_clk", "scm_core_clk", |
| "scm_iface_clk", "scm_bus_clk", |
| "scm_core_clk_src"; |
| qcom,scm_core_clk_src-freq = <50000000>; |
| |
| qcom,msm-bus,name = "pil-venus"; |
| qcom,msm-bus,num-cases = <2>; |
| qcom,msm-bus,num-paths = <1>; |
| qcom,msm-bus,active-only = <0>; |
| qcom,msm-bus,vectors-KBps = |
| <63 512 0 0>, |
| <63 512 0 304000>; |
| |
| qcom,pas-id = <9>; |
| qcom,proxy-timeout-ms = <2000>; |
| qcom,firmware-name = "venus"; |
| }; |
| |
| qcom,lpass@fe200000 { |
| compatible = "qcom,pil-tz-generic"; |
| reg = <0xfe200000 0x00100>, |
| <0xfd485100 0x00010>, |
| <0xfc4016c0 0x00004>; |
| |
| interrupts = <0 162 1>; |
| |
| vdd_cx-supply = <&pm8841_s2_corner>; |
| qcom,proxy-reg-names = "vdd_cx"; |
| qcom,vdd_cx-uV-uA = <7 100000>; |
| clock-names = "bus_clk", "xo", "scm_core_clk", "scm_iface_clk", |
| "scm_bus_clk", "scm_core_clk_src"; |
| qcom,active-clock-names = "bus_clk"; |
| qcom,proxy-clock-names = "xo", "scm_core_clk", "scm_iface_clk", |
| "scm_bus_clk", "scm_core_clk_src"; |
| qcom,scm_core_clk_src-freq = <50000000>; |
| |
| qcom,smem-id = <423>; |
| qcom,pas-id = <1>; |
| qcom,proxy-timeout-ms = <10000>; |
| qcom,firmware-name = "adsp"; |
| qcom,edge = "lpass"; |
| |
| /* GPIO inputs from lpass */ |
| qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_2_in 0 0>; |
| qcom,gpio-proxy-unvote = <&smp2pgpio_ssr_smp2p_2_in 2 0>; |
| qcom,gpio-err-ready = <&smp2pgpio_ssr_smp2p_2_in 1 0>; |
| qcom,gpio-stop-ack = <&smp2pgpio_ssr_smp2p_2_in 3 0>; |
| |
| /* GPIO output to lpass */ |
| qcom,gpio-force-stop = <&smp2pgpio_ssr_smp2p_2_out 0 0>; |
| qcom,ssctl-instance-id = <14>; |
| qcom,sysmon-id = <1>; |
| }; |