Loading Documentation/devicetree/bindings/pil/subsys-pil-tz.txt 0 → 100644 +139 −0 Original line number Diff line number Diff line * 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,signal-aop: Boolean. If set, when subsystem is brought up, pil will send a notification to AOP through qmp mailbox 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>; }; drivers/soc/qcom/Kconfig +59 −0 Original line number Diff line number Diff line # SPDX-License-Identifier: GPL-2.0 # # QCOM Soc drivers # Loading Loading @@ -108,4 +109,62 @@ config QCOM_WCNSS_CTRL Client driver for the WCNSS_CTRL SMD channel, used to download nv firmware to a newly booted WCNSS chip. config MSM_SERVICE_LOCATOR bool "Service Locator" depends on MSM_QMI_INTERFACE help The Service Locator provides a library to retrieve location information given a service identifier. Location here translates to what process domain exports the service, and which subsystem that process domain will execute in. config MSM_SERVICE_NOTIFIER bool "Service Notifier" depends on MSM_SERVICE_LOCATOR && MSM_SUBSYSTEM_RESTART help The Service Notifier provides a library for a kernel client to register for state change notifications regarding a remote service. A remote service here refers to a process providing certain services like audio, the identifier for which is provided by the service locator. config MSM_SUBSYSTEM_RESTART bool "MSM Subsystem Restart" help This option enables the MSM subsystem restart framework. The MSM subsystem restart framework provides support to boot, shutdown, and restart subsystems with a reference counted API. It also notifies userspace of transitions between these states via sysfs. config MSM_PIL bool "Peripheral image loading" select FW_LOADER default n help Some peripherals need to be loaded into memory before they can be brought out of reset. Say yes to support these devices. config MSM_SYSMON_GLINK_COMM bool "MSM System Monitor communication support using GLINK transport" depends on MSM_GLINK && MSM_SUBSYSTEM_RESTART help This option adds support for MSM System Monitor APIs using the GLINK transport layer. The APIs provided may be used for notifying subsystems within the SoC about other subsystems' power-up/down state-changes. config MSM_PIL_SSR_GENERIC tristate "MSM Subsystem Boot Support" depends on MSM_PIL && MSM_SUBSYSTEM_RESTART help Support for booting and shutting down MSM Subsystem processors. This driver also monitors the SMSM status bits and the watchdog interrupt for the subsystem and restarts it on a watchdog bite or a fatal error. Subsystems include LPASS, Venus, VPU, WCNSS and BCSS. endmenu drivers/soc/qcom/Makefile +11 −0 Original line number Diff line number Diff line Loading @@ -12,3 +12,14 @@ obj-$(CONFIG_QCOM_SMEM_STATE) += smem_state.o obj-$(CONFIG_QCOM_SMP2P) += smp2p.o obj-$(CONFIG_QCOM_SMSM) += smsm.o obj-$(CONFIG_QCOM_WCNSS_CTRL) += wcnss_ctrl.o obj-$(CONFIG_MSM_SERVICE_NOTIFIER) += service-notifier.o obj-$(CONFIG_MSM_SERVICE_LOCATOR) += service-locator.o obj-$(CONFIG_MSM_SYSMON_GLINK_COMM) += sysmon-glink.o sysmon-qmi.o obj-$(CONFIG_MSM_PIL_SSR_GENERIC) += subsys-pil-tz.o obj-$(CONFIG_MSM_PIL) += peripheral-loader.o ifdef CONFIG_MSM_SUBSYSTEM_RESTART obj-y += subsystem_notif.o obj-y += subsystem_restart.o obj-y += ramdump.o endif Loading
Documentation/devicetree/bindings/pil/subsys-pil-tz.txt 0 → 100644 +139 −0 Original line number Diff line number Diff line * 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,signal-aop: Boolean. If set, when subsystem is brought up, pil will send a notification to AOP through qmp mailbox 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>; };
drivers/soc/qcom/Kconfig +59 −0 Original line number Diff line number Diff line # SPDX-License-Identifier: GPL-2.0 # # QCOM Soc drivers # Loading Loading @@ -108,4 +109,62 @@ config QCOM_WCNSS_CTRL Client driver for the WCNSS_CTRL SMD channel, used to download nv firmware to a newly booted WCNSS chip. config MSM_SERVICE_LOCATOR bool "Service Locator" depends on MSM_QMI_INTERFACE help The Service Locator provides a library to retrieve location information given a service identifier. Location here translates to what process domain exports the service, and which subsystem that process domain will execute in. config MSM_SERVICE_NOTIFIER bool "Service Notifier" depends on MSM_SERVICE_LOCATOR && MSM_SUBSYSTEM_RESTART help The Service Notifier provides a library for a kernel client to register for state change notifications regarding a remote service. A remote service here refers to a process providing certain services like audio, the identifier for which is provided by the service locator. config MSM_SUBSYSTEM_RESTART bool "MSM Subsystem Restart" help This option enables the MSM subsystem restart framework. The MSM subsystem restart framework provides support to boot, shutdown, and restart subsystems with a reference counted API. It also notifies userspace of transitions between these states via sysfs. config MSM_PIL bool "Peripheral image loading" select FW_LOADER default n help Some peripherals need to be loaded into memory before they can be brought out of reset. Say yes to support these devices. config MSM_SYSMON_GLINK_COMM bool "MSM System Monitor communication support using GLINK transport" depends on MSM_GLINK && MSM_SUBSYSTEM_RESTART help This option adds support for MSM System Monitor APIs using the GLINK transport layer. The APIs provided may be used for notifying subsystems within the SoC about other subsystems' power-up/down state-changes. config MSM_PIL_SSR_GENERIC tristate "MSM Subsystem Boot Support" depends on MSM_PIL && MSM_SUBSYSTEM_RESTART help Support for booting and shutting down MSM Subsystem processors. This driver also monitors the SMSM status bits and the watchdog interrupt for the subsystem and restarts it on a watchdog bite or a fatal error. Subsystems include LPASS, Venus, VPU, WCNSS and BCSS. endmenu
drivers/soc/qcom/Makefile +11 −0 Original line number Diff line number Diff line Loading @@ -12,3 +12,14 @@ obj-$(CONFIG_QCOM_SMEM_STATE) += smem_state.o obj-$(CONFIG_QCOM_SMP2P) += smp2p.o obj-$(CONFIG_QCOM_SMSM) += smsm.o obj-$(CONFIG_QCOM_WCNSS_CTRL) += wcnss_ctrl.o obj-$(CONFIG_MSM_SERVICE_NOTIFIER) += service-notifier.o obj-$(CONFIG_MSM_SERVICE_LOCATOR) += service-locator.o obj-$(CONFIG_MSM_SYSMON_GLINK_COMM) += sysmon-glink.o sysmon-qmi.o obj-$(CONFIG_MSM_PIL_SSR_GENERIC) += subsys-pil-tz.o obj-$(CONFIG_MSM_PIL) += peripheral-loader.o ifdef CONFIG_MSM_SUBSYSTEM_RESTART obj-y += subsystem_notif.o obj-y += subsystem_restart.o obj-y += ramdump.o endif