forked from Minki/linux
d4ce2de7e4
The Programmable Real-Time Unit Subsystem (PRUSS) consists of dual 32-bit RISC cores (Programmable Real-Time Units, or PRUs) for program execution. This patch adds a remoteproc platform driver for managing the individual PRU RISC cores life cycle. The PRUs do not have a unified address space (have an Instruction RAM and a primary Data RAM at both 0x0). The PRU remoteproc driver therefore uses a custom remoteproc core ELF loader ops. The added .da_to_va ops is only used to provide translations for the PRU Data RAMs. This remoteproc driver does not have support for error recovery and system suspend/resume features. Different compatibles are used to allow providing scalability for instance-specific device data if needed. The driver uses a default firmware-name retrieved from device-tree for each PRU core, and the firmwares are expected to be present in the standard Linux firmware search paths. They can also be adjusted by userspace if required through the sysfs interface provided by the remoteproc core. The PRU remoteproc driver uses a client-driven boot methodology: it does _not_ support auto-boot so that the PRU load and boot is dictated by the corresponding client drivers for achieving various usecases. This allows flexibility for the client drivers or applications to set a firmware name (if needed) based on their desired functionality and boot the PRU. The sysfs bind and unbind attributes have also been suppressed so that the PRU devices cannot be unbound and thereby shutdown a PRU from underneath a PRU client driver. The driver currently supports the AM335x, AM437x, AM57xx and 66AK2G SoCs, and support for other TI SoCs will be added in subsequent patches. Co-developed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Suman Anna <s-anna@ti.com> Co-developed-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> Link: https://lore.kernel.org/r/20201208141002.17777-3-grzegorz.jaszczyk@linaro.org Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
38 lines
1.6 KiB
Makefile
38 lines
1.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Generic framework for controlling remote processors
|
|
#
|
|
|
|
obj-$(CONFIG_REMOTEPROC) += remoteproc.o
|
|
remoteproc-y := remoteproc_core.o
|
|
remoteproc-y += remoteproc_coredump.o
|
|
remoteproc-y += remoteproc_debugfs.o
|
|
remoteproc-y += remoteproc_sysfs.o
|
|
remoteproc-y += remoteproc_virtio.o
|
|
remoteproc-y += remoteproc_elf_loader.o
|
|
obj-$(CONFIG_REMOTEPROC_CDEV) += remoteproc_cdev.o
|
|
obj-$(CONFIG_IMX_REMOTEPROC) += imx_rproc.o
|
|
obj-$(CONFIG_INGENIC_VPU_RPROC) += ingenic_rproc.o
|
|
obj-$(CONFIG_MTK_SCP) += mtk_scp.o mtk_scp_ipi.o
|
|
obj-$(CONFIG_OMAP_REMOTEPROC) += omap_remoteproc.o
|
|
obj-$(CONFIG_WKUP_M3_RPROC) += wkup_m3_rproc.o
|
|
obj-$(CONFIG_DA8XX_REMOTEPROC) += da8xx_remoteproc.o
|
|
obj-$(CONFIG_KEYSTONE_REMOTEPROC) += keystone_remoteproc.o
|
|
obj-$(CONFIG_PRU_REMOTEPROC) += pru_rproc.o
|
|
obj-$(CONFIG_QCOM_PIL_INFO) += qcom_pil_info.o
|
|
obj-$(CONFIG_QCOM_RPROC_COMMON) += qcom_common.o
|
|
obj-$(CONFIG_QCOM_Q6V5_COMMON) += qcom_q6v5.o
|
|
obj-$(CONFIG_QCOM_Q6V5_ADSP) += qcom_q6v5_adsp.o
|
|
obj-$(CONFIG_QCOM_Q6V5_MSS) += qcom_q6v5_mss.o
|
|
obj-$(CONFIG_QCOM_Q6V5_PAS) += qcom_q6v5_pas.o
|
|
obj-$(CONFIG_QCOM_Q6V5_WCSS) += qcom_q6v5_wcss.o
|
|
obj-$(CONFIG_QCOM_SYSMON) += qcom_sysmon.o
|
|
obj-$(CONFIG_QCOM_WCNSS_PIL) += qcom_wcnss_pil.o
|
|
qcom_wcnss_pil-y += qcom_wcnss.o
|
|
qcom_wcnss_pil-y += qcom_wcnss_iris.o
|
|
obj-$(CONFIG_ST_REMOTEPROC) += st_remoteproc.o
|
|
obj-$(CONFIG_ST_SLIM_REMOTEPROC) += st_slim_rproc.o
|
|
obj-$(CONFIG_STM32_RPROC) += stm32_rproc.o
|
|
obj-$(CONFIG_TI_K3_DSP_REMOTEPROC) += ti_k3_dsp_remoteproc.o
|
|
obj-$(CONFIG_TI_K3_R5_REMOTEPROC) += ti_k3_r5_remoteproc.o
|