2019-05-19 20:07:45 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2013-01-17 10:53:51 +08:00
|
|
|
menu "Remoteproc drivers"
|
2011-12-14 19:01:59 +08:00
|
|
|
|
2011-10-20 22:52:46 +08:00
|
|
|
config REMOTEPROC
|
2019-08-30 14:43:12 +08:00
|
|
|
bool "Support for Remote Processor subsystem"
|
2012-09-14 02:03:58 +08:00
|
|
|
depends on HAS_DMA
|
2013-04-07 19:06:07 +08:00
|
|
|
select CRC32
|
2013-03-29 09:41:43 +08:00
|
|
|
select FW_LOADER
|
2012-09-30 16:25:34 +08:00
|
|
|
select VIRTIO
|
2018-01-06 08:04:17 +08:00
|
|
|
select WANT_DEV_COREDUMP
|
2016-12-19 17:22:50 +08:00
|
|
|
help
|
|
|
|
Support for remote processors (such as DSP coprocessors). These
|
|
|
|
are mainly used on embedded systems.
|
2011-10-21 00:53:35 +08:00
|
|
|
|
2016-10-18 17:39:08 +08:00
|
|
|
if REMOTEPROC
|
|
|
|
|
2017-08-17 15:15:26 +08:00
|
|
|
config IMX_REMOTEPROC
|
|
|
|
tristate "IMX6/7 remoteproc support"
|
2019-06-04 07:46:27 +08:00
|
|
|
depends on ARCH_MXC
|
2017-08-17 15:15:26 +08:00
|
|
|
help
|
|
|
|
Say y here to support iMX's remote processors (Cortex M4
|
|
|
|
on iMX7D) via the remote processor framework.
|
|
|
|
|
|
|
|
It's safe to say N here.
|
|
|
|
|
2020-05-15 18:43:39 +08:00
|
|
|
config INGENIC_VPU_RPROC
|
|
|
|
tristate "Ingenic JZ47xx VPU remoteproc support"
|
|
|
|
depends on MIPS || COMPILE_TEST
|
|
|
|
help
|
|
|
|
Say y or m here to support the VPU in the JZ47xx SoCs from Ingenic.
|
|
|
|
|
|
|
|
This can be either built-in or a loadable module.
|
|
|
|
If unsure say N.
|
|
|
|
|
2019-11-12 19:03:25 +08:00
|
|
|
config MTK_SCP
|
|
|
|
tristate "Mediatek SCP support"
|
|
|
|
depends on ARCH_MEDIATEK
|
2019-11-12 19:03:26 +08:00
|
|
|
select RPMSG_MTK_SCP
|
2019-11-12 19:03:25 +08:00
|
|
|
help
|
|
|
|
Say y here to support Mediatek's System Companion Processor (SCP) via
|
|
|
|
the remote processor framework.
|
|
|
|
|
|
|
|
It's safe to say N here.
|
|
|
|
|
2011-10-21 00:53:35 +08:00
|
|
|
config OMAP_REMOTEPROC
|
|
|
|
tristate "OMAP remoteproc support"
|
2020-03-24 19:00:27 +08:00
|
|
|
depends on ARCH_OMAP4 || SOC_OMAP5 || SOC_DRA7XX
|
2012-02-28 19:04:33 +08:00
|
|
|
depends on OMAP_IOMMU
|
2013-03-13 06:55:29 +08:00
|
|
|
select MAILBOX
|
|
|
|
select OMAP2PLUS_MBOX
|
2011-10-21 00:53:35 +08:00
|
|
|
help
|
|
|
|
Say y here to support OMAP's remote processors (dual M3
|
|
|
|
and DSP on OMAP4) via the remote processor framework.
|
|
|
|
|
|
|
|
Currently only supported on OMAP4.
|
|
|
|
|
2016-12-19 17:22:50 +08:00
|
|
|
Usually you want to say Y here, in order to enable multimedia
|
2011-10-21 00:53:35 +08:00
|
|
|
use-cases to run on your platform (multimedia codecs are
|
|
|
|
offloaded to remote DSP processors using this framework).
|
|
|
|
|
2016-12-19 17:22:50 +08:00
|
|
|
It's safe to say N here if you're not interested in multimedia
|
2011-10-21 00:53:35 +08:00
|
|
|
offloading or just want a bare minimum kernel.
|
2011-12-14 19:01:59 +08:00
|
|
|
|
2020-03-24 19:00:34 +08:00
|
|
|
config OMAP_REMOTEPROC_WATCHDOG
|
|
|
|
bool "OMAP remoteproc watchdog timer"
|
|
|
|
depends on OMAP_REMOTEPROC
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
Say Y here to enable watchdog timer for remote processors.
|
|
|
|
|
|
|
|
This option controls the watchdog functionality for the remote
|
|
|
|
processors in OMAP. Dedicated OMAP DMTimers are used by the remote
|
|
|
|
processors and triggers the timer interrupt upon a watchdog
|
|
|
|
detection.
|
|
|
|
|
2015-05-23 04:45:30 +08:00
|
|
|
config WKUP_M3_RPROC
|
|
|
|
tristate "AMx3xx Wakeup M3 remoteproc support"
|
|
|
|
depends on SOC_AM33XX || SOC_AM43XX
|
|
|
|
help
|
|
|
|
Say y here to support Wakeup M3 remote processor on TI AM33xx
|
|
|
|
and AM43xx family of SoCs.
|
|
|
|
|
|
|
|
Required for Suspend-to-RAM on AM33xx and AM43xx SoCs. Also needed
|
|
|
|
for deep CPUIdle states on AM33xx SoCs. Allows for loading of the
|
|
|
|
firmware onto these remote processors.
|
|
|
|
If unsure say N.
|
|
|
|
|
2013-04-10 05:20:21 +08:00
|
|
|
config DA8XX_REMOTEPROC
|
|
|
|
tristate "DA8xx/OMAP-L13x remoteproc support"
|
|
|
|
depends on ARCH_DAVINCI_DA8XX
|
2017-05-19 06:08:59 +08:00
|
|
|
depends on DMA_CMA
|
2013-04-10 05:20:21 +08:00
|
|
|
help
|
|
|
|
Say y here to support DA8xx/OMAP-L13x remote processors via the
|
|
|
|
remote processor framework.
|
|
|
|
|
|
|
|
You want to say y here in order to enable AMP
|
|
|
|
use-cases to run on your platform (multimedia codecs are
|
|
|
|
offloaded to remote DSP processors using this framework).
|
|
|
|
|
|
|
|
This module controls the name of the firmware file that gets
|
|
|
|
loaded on the DSP. This file must reside in the /lib/firmware
|
|
|
|
directory. It can be specified via the module parameter
|
|
|
|
da8xx_fw_name=<filename>, and if not specified will default to
|
|
|
|
"rproc-dsp-fw".
|
|
|
|
|
|
|
|
It's safe to say n here if you're not interested in multimedia
|
|
|
|
offloading.
|
|
|
|
|
remoteproc/keystone: Add a remoteproc driver for Keystone 2 DSPs
The Texas Instrument's Keystone 2 family of SoCs has 1 or more
TMS320C66x DSP Core Subsystems (C66x CorePacs). Each subsystem has
a C66x Fixed/Floating-Point DSP Core, with 32KB of L1P and L1D SRAMs,
that can be configured and partitioned as either RAM and/or Cache,
and 1 MB of L2 SRAM. The CorePac also includes an Internal DMA (IDMA),
External Memory Controller (EMC), Extended Memory Controller (XMC)
with a Memory Protection and Address Extension (MPAX) unit, a Bandwidth
Management (BWM) unit, an Interrupt Controller (INTC) and a Powerdown
Controller (PDC).
A new remoteproc module is added to perform the device management of
these DSP devices. The driver expects the firmware names to be of the
form "keystone-dsp<X>-fw", where X is the corresponding DSP number, and
uses the standard remoteproc core ELF loader. The support is limited
to images only using the DSP internal memories at the moment. This
remoteproc driver is also designed to work with virtio, and uses the
IPC Generation registers for performing the virtio signalling and
getting notified of exceptions.
The driver currently supports the 66AK2H/66AK2K, 66AK2L and 66AK2E
SoCs.
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Sam Nelson <sam.nelson@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2017-06-14 07:45:12 +08:00
|
|
|
config KEYSTONE_REMOTEPROC
|
|
|
|
tristate "Keystone Remoteproc support"
|
|
|
|
depends on ARCH_KEYSTONE
|
|
|
|
help
|
|
|
|
Say Y here here to support Keystone remote processors (DSP)
|
|
|
|
via the remote processor framework.
|
|
|
|
|
|
|
|
It's safe to say N here if you're not interested in the Keystone
|
|
|
|
DSPs or just want to use a bare minimum kernel.
|
|
|
|
|
2020-06-23 03:19:39 +08:00
|
|
|
config QCOM_PIL_INFO
|
|
|
|
tristate
|
|
|
|
|
2018-09-25 07:45:25 +08:00
|
|
|
config QCOM_RPROC_COMMON
|
|
|
|
tristate
|
|
|
|
|
|
|
|
config QCOM_Q6V5_COMMON
|
|
|
|
tristate
|
|
|
|
depends on ARCH_QCOM
|
|
|
|
depends on QCOM_SMEM
|
|
|
|
|
2018-09-24 19:07:50 +08:00
|
|
|
config QCOM_Q6V5_ADSP
|
|
|
|
tristate "Qualcomm Technology Inc ADSP Peripheral Image Loader"
|
|
|
|
depends on OF && ARCH_QCOM
|
|
|
|
depends on QCOM_SMEM
|
|
|
|
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
|
|
|
|
depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
|
|
|
|
depends on QCOM_SYSMON || QCOM_SYSMON=n
|
|
|
|
select MFD_SYSCON
|
2020-06-23 03:19:40 +08:00
|
|
|
select QCOM_PIL_INFO
|
2018-09-24 19:07:50 +08:00
|
|
|
select QCOM_MDT_LOADER
|
|
|
|
select QCOM_Q6V5_COMMON
|
|
|
|
select QCOM_RPROC_COMMON
|
|
|
|
help
|
|
|
|
Say y here to support the Peripheral Image Loader
|
|
|
|
for the Qualcomm Technology Inc. ADSP remote processors.
|
|
|
|
|
2018-09-25 07:45:26 +08:00
|
|
|
config QCOM_Q6V5_MSS
|
|
|
|
tristate "Qualcomm Hexagon V5 self-authenticating modem subsystem support"
|
2016-08-23 13:57:44 +08:00
|
|
|
depends on OF && ARCH_QCOM
|
|
|
|
depends on QCOM_SMEM
|
2017-03-28 13:26:34 +08:00
|
|
|
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
|
2017-08-30 07:13:35 +08:00
|
|
|
depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
|
2017-08-28 12:51:38 +08:00
|
|
|
depends on QCOM_SYSMON || QCOM_SYSMON=n
|
2016-08-23 13:57:44 +08:00
|
|
|
select MFD_SYSCON
|
2019-07-04 14:46:49 +08:00
|
|
|
select QCOM_MDT_LOADER
|
2020-06-23 03:19:40 +08:00
|
|
|
select QCOM_PIL_INFO
|
2018-06-05 04:30:37 +08:00
|
|
|
select QCOM_Q6V5_COMMON
|
2017-01-27 18:28:32 +08:00
|
|
|
select QCOM_RPROC_COMMON
|
2016-12-09 19:47:02 +08:00
|
|
|
select QCOM_SCM
|
2016-08-23 13:57:44 +08:00
|
|
|
help
|
2018-09-25 07:45:26 +08:00
|
|
|
Say y here to support the Qualcomm self-authenticating modem
|
|
|
|
subsystem based on Hexagon V5.
|
2018-06-05 04:30:36 +08:00
|
|
|
|
2018-09-25 07:45:26 +08:00
|
|
|
config QCOM_Q6V5_PAS
|
|
|
|
tristate "Qualcomm Hexagon v5 Peripheral Authentication Service support"
|
2016-06-21 05:28:41 +08:00
|
|
|
depends on OF && ARCH_QCOM
|
|
|
|
depends on QCOM_SMEM
|
2017-03-28 13:26:34 +08:00
|
|
|
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
|
2017-09-12 03:54:17 +08:00
|
|
|
depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
|
2017-08-28 12:51:38 +08:00
|
|
|
depends on QCOM_SYSMON || QCOM_SYSMON=n
|
2016-06-21 05:28:41 +08:00
|
|
|
select MFD_SYSCON
|
2020-06-23 03:19:40 +08:00
|
|
|
select QCOM_PIL_INFO
|
2018-09-25 07:45:26 +08:00
|
|
|
select QCOM_MDT_LOADER
|
2018-06-05 04:30:38 +08:00
|
|
|
select QCOM_Q6V5_COMMON
|
2017-01-27 18:28:32 +08:00
|
|
|
select QCOM_RPROC_COMMON
|
2016-12-09 19:47:02 +08:00
|
|
|
select QCOM_SCM
|
2016-06-21 05:28:41 +08:00
|
|
|
help
|
2018-09-25 07:45:25 +08:00
|
|
|
Say y here to support the TrustZone based Peripherial Image Loader
|
|
|
|
for the Qualcomm Hexagon v5 based remote processors. This is commonly
|
|
|
|
used to control subsystems such as ADSP, Compute and Sensor.
|
2016-06-21 05:28:41 +08:00
|
|
|
|
2018-06-08 01:27:11 +08:00
|
|
|
config QCOM_Q6V5_WCSS
|
|
|
|
tristate "Qualcomm Hexagon based WCSS Peripheral Image Loader"
|
|
|
|
depends on OF && ARCH_QCOM
|
|
|
|
depends on QCOM_SMEM
|
2018-07-18 19:16:26 +08:00
|
|
|
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
|
2018-06-08 01:27:11 +08:00
|
|
|
depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
|
|
|
|
depends on QCOM_SYSMON || QCOM_SYSMON=n
|
|
|
|
select MFD_SYSCON
|
|
|
|
select QCOM_MDT_LOADER
|
2020-06-23 03:19:40 +08:00
|
|
|
select QCOM_PIL_INFO
|
2018-06-08 01:27:11 +08:00
|
|
|
select QCOM_Q6V5_COMMON
|
|
|
|
select QCOM_RPROC_COMMON
|
|
|
|
select QCOM_SCM
|
|
|
|
help
|
|
|
|
Say y here to support the Qualcomm Peripheral Image Loader for the
|
|
|
|
Hexagon V5 based WCSS remote processors.
|
|
|
|
|
2017-08-28 12:51:38 +08:00
|
|
|
config QCOM_SYSMON
|
|
|
|
tristate "Qualcomm sysmon driver"
|
|
|
|
depends on RPMSG
|
|
|
|
depends on ARCH_QCOM
|
2018-02-22 23:57:38 +08:00
|
|
|
depends on NET
|
2017-08-28 12:51:38 +08:00
|
|
|
select QCOM_QMI_HELPERS
|
|
|
|
help
|
|
|
|
The sysmon driver implements a sysmon QMI client and a handler for
|
|
|
|
the sys_mon SMD and GLINK channel, which are used for graceful
|
|
|
|
shutdown, retrieving failure information and propagating information
|
|
|
|
about other subsystems being shut down.
|
|
|
|
|
|
|
|
Say y here if your system runs firmware on any other subsystems, e.g.
|
|
|
|
modem or DSP.
|
|
|
|
|
2016-08-13 09:18:59 +08:00
|
|
|
config QCOM_WCNSS_PIL
|
|
|
|
tristate "Qualcomm WCNSS Peripheral Image Loader"
|
|
|
|
depends on OF && ARCH_QCOM
|
2017-03-28 13:26:34 +08:00
|
|
|
depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
|
2017-09-12 03:54:17 +08:00
|
|
|
depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
|
2016-08-13 09:18:59 +08:00
|
|
|
depends on QCOM_SMEM
|
2017-08-28 12:51:38 +08:00
|
|
|
depends on QCOM_SYSMON || QCOM_SYSMON=n
|
2016-08-13 09:18:59 +08:00
|
|
|
select QCOM_MDT_LOADER
|
2020-06-23 03:19:40 +08:00
|
|
|
select QCOM_PIL_INFO
|
2017-01-27 18:28:32 +08:00
|
|
|
select QCOM_RPROC_COMMON
|
2016-08-13 09:18:59 +08:00
|
|
|
select QCOM_SCM
|
|
|
|
help
|
|
|
|
Say y here to support the Peripheral Image Loader for the Qualcomm
|
|
|
|
Wireless Connectivity Subsystem.
|
|
|
|
|
2016-01-12 20:46:18 +08:00
|
|
|
config ST_REMOTEPROC
|
|
|
|
tristate "ST remoteproc support"
|
|
|
|
depends on ARCH_STI
|
2017-01-31 20:35:54 +08:00
|
|
|
select MAILBOX
|
|
|
|
select STI_MBOX
|
2016-01-12 20:46:18 +08:00
|
|
|
help
|
|
|
|
Say y here to support ST's adjunct processors via the remote
|
|
|
|
processor framework.
|
|
|
|
This can be either built-in or a loadable module.
|
|
|
|
|
2016-10-18 17:39:06 +08:00
|
|
|
config ST_SLIM_REMOTEPROC
|
|
|
|
tristate
|
2016-10-18 17:39:08 +08:00
|
|
|
|
2019-05-14 16:26:58 +08:00
|
|
|
config STM32_RPROC
|
|
|
|
tristate "STM32 remoteproc support"
|
|
|
|
depends on ARCH_STM32
|
|
|
|
depends on REMOTEPROC
|
|
|
|
select MAILBOX
|
|
|
|
help
|
|
|
|
Say y here to support STM32 MCU processors via the
|
|
|
|
remote processor framework.
|
|
|
|
|
|
|
|
You want to say y here in order to enable AMP
|
|
|
|
use-cases to run on your platform (dedicated firmware could be
|
|
|
|
offloaded to remote MCU processors using this framework).
|
|
|
|
|
|
|
|
This can be either built-in or a loadable module.
|
|
|
|
|
remoteproc: k3-dsp: Add a remoteproc driver of K3 C66x DSPs
The Texas Instrument's K3 J721E SoCs have two C66x DSP Subsystems in MAIN
voltage domain that are based on the TI's standard TMS320C66x DSP CorePac
module. Each subsystem has a Fixed/Floating-Point DSP CPU, with 32 KB each
of L1P & L1D SRAMs that can be configured and partitioned as either RAM
and/or Cache, and 288 KB of L2 SRAM with 256 KB of memory configurable as
either RAM and/or Cache. The CorePac also includes an Internal DMA (IDMA),
External Memory Controller (EMC), Extended Memory Controller (XMC) with a
Region Address Translator (RAT) unit for 32-bit to 48-bit address
extension/translations, an Interrupt Controller (INTC) and a Powerdown
Controller (PDC).
A new remoteproc module is added to perform the device management of
these DSP devices. The support is limited to images using only external
DDR memory at the moment, the loading support to internal memories and
any on-chip RAM memories will be added in a subsequent patch. RAT support
is also left for a future patch, and as such the reserved memory carveout
regions are all expected to be using memory regions within the first 2 GB.
Error Recovery and Power Management features are not currently supported.
The C66x remote processors do not have an MMU, and so require fixed memory
carveout regions matching the firmware image addresses. Support for this
is provided by mandating multiple memory regions to be attached to the
remoteproc device. The first memory region will be used to serve as the
DMA pool for all dynamic allocations like the vrings and vring buffers.
The remaining memory regions are mapped into the kernel at device probe
time, and are used to provide address translations for firmware image
segments without the need for any RSC_CARVEOUT entries. Any firmware
image using memory outside of the supplied reserved memory carveout
regions will be errored out.
The driver uses various TI-SCI interfaces to talk to the System Controller
(DMSC) for managing configuration, power and reset management of these
cores. IPC between the A72 cores and the DSP cores is supported through
the virtio rpmsg stack using shared memory and OMAP Mailboxes.
Signed-off-by: Suman Anna <s-anna@ti.com>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20200721223617.20312-6-s-anna@ti.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2020-07-22 06:36:16 +08:00
|
|
|
config TI_K3_DSP_REMOTEPROC
|
|
|
|
tristate "TI K3 DSP remoteproc support"
|
|
|
|
depends on ARCH_K3
|
|
|
|
select MAILBOX
|
|
|
|
select OMAP2PLUS_MBOX
|
|
|
|
help
|
|
|
|
Say m here to support TI's C66x and C71x DSP remote processor
|
|
|
|
subsystems on various TI K3 family of SoCs through the remote
|
|
|
|
processor framework.
|
|
|
|
|
|
|
|
It's safe to say N here if you're not interested in utilizing
|
|
|
|
the DSP slave processors.
|
|
|
|
|
2016-10-18 17:39:08 +08:00
|
|
|
endif # REMOTEPROC
|
2016-10-18 17:39:06 +08:00
|
|
|
|
2011-12-14 19:01:59 +08:00
|
|
|
endmenu
|