linux/drivers/remoteproc
Suman Anna 6edbe024ba 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-28 17:06:45 -07:00
..
da8xx_remoteproc.c remoteproc: Remove dev_err() usage after platform_get_irq() 2019-08-26 21:59:58 -07:00
imx_rproc.c remoteproc: Use size_t type for len in da_to_va 2020-03-25 22:29:38 -07:00
ingenic_rproc.c remoteproc: ingenic: Move clock handling to prepare/unprepare callbacks 2020-07-01 16:05:18 -07:00
Kconfig remoteproc: k3-dsp: Add a remoteproc driver of K3 C66x DSPs 2020-07-28 17:06:45 -07:00
keystone_remoteproc.c remoteproc: Use size_t type for len in da_to_va 2020-03-25 22:29:38 -07:00
Makefile remoteproc: k3-dsp: Add a remoteproc driver of K3 C66x DSPs 2020-07-28 17:06:45 -07:00
mtk_common.h remoteproc: mtk_scp: use dma_addr_t for DMA API 2020-04-16 15:53:15 -07:00
mtk_scp_ipi.c rpmsg: add rpmsg support for mt8183 SCP. 2020-01-20 10:29:56 -08:00
mtk_scp.c remoteproc updates for v5.8 2020-06-08 13:01:08 -07:00
omap_remoteproc.c remoteproc/omap: Fix set_load call in omap_rproc_request_timer 2020-04-03 10:47:21 -07:00
omap_remoteproc.h remoteproc/omap: Switch to SPDX license identifiers 2020-03-25 22:29:51 -07:00
qcom_common.c remoteproc: qcom: Add missing slab.h 2020-07-13 11:54:27 -07:00
qcom_common.h remoteproc: qcom: Add per subsystem SSR notification 2020-07-08 21:45:03 -07:00
qcom_pil_info.c remoteproc: qcom: pil-info: Fix shift overflow 2020-07-16 21:30:35 -07:00
qcom_pil_info.h remoteproc: qcom: Introduce helper to store pil info in IMEM 2020-07-01 22:10:18 -07:00
qcom_q6v5_adsp.c remoteproc: qcom: Update PIL relocation info on load 2020-07-01 22:10:19 -07:00
qcom_q6v5_ipa_notify.c remoteproc: add IPA notification to q6v5 driver 2020-03-08 22:07:09 -07:00
qcom_q6v5_mss.c remoteproc: qcom_q6v5_mss: Remove redundant running state 2020-07-27 23:22:22 -07:00
qcom_q6v5_pas.c remoteproc: qcom: Update PIL relocation info on load 2020-07-01 22:10:19 -07:00
qcom_q6v5_wcss.c remoteproc: qcom: Update PIL relocation info on load 2020-07-01 22:10:19 -07:00
qcom_q6v5.c remoteproc: qcom: q6v5: Update running state before requesting stop 2020-07-27 23:21:31 -07:00
qcom_q6v5.h remoteproc: qcom: q6v5: Add common panic handler 2020-03-25 22:29:45 -07:00
qcom_sysmon.c remoteproc: qcom_sysmon: Solve function header bitrot issues 2020-07-15 12:18:20 -07:00
qcom_wcnss_iris.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
qcom_wcnss.c remoteproc: qcom: Update PIL relocation info on load 2020-07-01 22:10:19 -07:00
qcom_wcnss.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
remoteproc_core.c remoteproc: Introduce rproc_of_parse_firmware() helper 2020-07-28 17:06:42 -07:00
remoteproc_coredump.c remoteproc: Add inline coredump functionality 2020-07-21 14:03:57 -07:00
remoteproc_debugfs.c remoteproc: Add coredump debugfs entry 2020-07-21 14:04:12 -07:00
remoteproc_elf_helpers.h remoteproc: Add elf helpers to access elf64 and elf32 fields 2020-03-25 22:29:39 -07:00
remoteproc_elf_loader.c remoteproc: remove rproc_elf32_sanity_check 2020-04-22 21:57:26 -07:00
remoteproc_internal.h remoteproc: Introduce rproc_of_parse_firmware() helper 2020-07-28 17:06:42 -07:00
remoteproc_sysfs.c remoteproc: Properly handle firmware name when attaching 2020-07-16 23:06:15 -07:00
remoteproc_virtio.c remoteproc: Fall back to using parent memory pool if no dedicated available 2020-05-12 16:08:00 -07:00
st_remoteproc.c remoteproc: remove rproc_elf32_sanity_check 2020-04-22 21:57:26 -07:00
st_slim_rproc.c remoteproc: remove rproc_elf32_sanity_check 2020-04-22 21:57:26 -07:00
stm32_rproc.c remoteproc: stm32: Update M4 state in stm32_rproc_stop() 2020-07-17 17:35:03 -07:00
ti_k3_dsp_remoteproc.c remoteproc: k3-dsp: Add a remoteproc driver of K3 C66x DSPs 2020-07-28 17:06:45 -07:00
ti_sci_proc.h remoteproc: k3: Add TI-SCI processor control helper functions 2020-07-28 17:06:43 -07:00
wkup_m3_rproc.c remoteproc: Use size_t type for len in da_to_va 2020-03-25 22:29:38 -07:00