130 lines
5.5 KiB
Plaintext
130 lines
5.5 KiB
Plaintext
* 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.
|
|
|
|
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>;
|
|
};
|