linux/drivers/remoteproc
Roger Quadros 1028534003 remoteproc: pru: Add pru_rproc_set_ctable() function
Some firmwares expect the OS drivers to configure the CTABLE
entries publishing dynamically allocated memory regions. For
example, the PRU Ethernet firmwares use the C28 and C30 entries
for retrieving the Shared RAM and System SRAM (OCMC) areas
allocated by the PRU Ethernet client driver.

Provide a way for users to do that through a new API,
pru_rproc_set_ctable(). The API returns 0 on success and
a negative value on error.

NOTE:
The programmable CTABLE entries are typically re-programmed by
the PRU firmwares when dealing with a certain block of memory
during block processing. This API provides an interface to the
PRU client drivers to publish a dynamically allocated memory
block with the PRU firmware using a CTABLE entry instead of a
negotiated address in shared memory. Additional synchronization
may be needed between the PRU client drivers and firmwares if
different addresses needs to be published at run-time reusing
the same CTABLE entry.

CTABLE for stands for "constant table".
Each CTable entry just holds the upper address bits so PRU can
reference to external memory with larger address bits.

For use case please see
prueth_sw_emac_config() in "drivers/net/ethernet/ti/prueth_switch.c"

            /* Set in constant table C28 of PRUn to ICSS Shared memory */
             pru_rproc_set_ctable(prueth->pru0, PRU_C28, sharedramaddr);
             pru_rproc_set_ctable(prueth->pru1, PRU_C28, sharedramaddr);

            /* Set in constant table C30 of PRUn to OCMC memory */
             pru_rproc_set_ctable(prueth->pru0, PRU_C30, ocmcaddr);
             pru_rproc_set_ctable(prueth->pru1, PRU_C30, ocmcaddr);

Signed-off-by: Andrew F. Davis <afd@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
Link: https://lore.kernel.org/r/20230106121046.886863-6-danishanwar@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
2023-01-06 09:16:16 -07:00
..
da8xx_remoteproc.c remoteproc: Remove dev_err() usage after platform_get_irq() 2019-08-26 21:59:58 -07:00
imx_dsp_rproc.c remoteproc: imx_dsp_rproc: Add mutex protection for workqueue 2022-10-24 10:21:16 -06:00
imx_rproc.c remoteproc: imx_rproc: Correct i.MX93 DRAM mapping 2022-11-15 11:38:09 -07:00
imx_rproc.h remoteproc: imx_rproc: Add IMX_RPROC_SCU_API method 2021-10-12 09:16:13 -06:00
ingenic_rproc.c remoteproc: ingenic: Request IRQ disabled 2021-12-06 10:17:44 -07:00
Kconfig drivers: remoteproc: Add Xilinx r5 remoteproc driver 2022-11-25 09:12:05 -07:00
keystone_remoteproc.c remoteproc/keystone: Switch to using gpiod API 2022-09-19 15:32:27 -06:00
Makefile drivers: remoteproc: Add Xilinx r5 remoteproc driver 2022-11-25 09:12:05 -07:00
meson_mx_ao_arc.c remoteproc: meson-mx-ao-arc: fix a bit test 2021-10-04 10:40:29 -05:00
mtk_common.h remoteproc: mediatek: Fix side effect of mt8195 sram power on 2022-04-11 09:56:42 -06:00
mtk_scp_ipi.c remoteproc/mtk_scp: Remove timeout variable from scp_ipi_send() 2023-01-04 15:46:17 -07:00
mtk_scp.c remoteproc: mediatek: Support MT8188 SCP 2022-07-18 11:10:34 -06:00
omap_remoteproc.c remoteproc: omap_remoteproc: Fix typo in comment 2022-06-14 16:57:59 -06:00
omap_remoteproc.h remoteproc/omap: Switch to SPDX license identifiers 2020-03-25 22:29:51 -07:00
pru_rproc.c remoteproc: pru: Add pru_rproc_set_ctable() function 2023-01-06 09:16:16 -07:00
pru_rproc.h remoteproc: pru: Add support for PRU specific interrupt configuration 2020-12-10 10:56:01 -06:00
qcom_common.c remoteproc: qcom: correct kerneldoc 2022-07-18 15:32:33 -05:00
qcom_common.h remoteproc: qcom: Add capability to collect minidumps 2020-12-10 13:16:54 -06:00
qcom_pil_info.c remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided 2021-12-13 16:58:05 -06: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: Add support for memory sandbox 2022-12-28 10:29:34 -06:00
qcom_q6v5_mss.c remoteproc: qcom: q6v5-mss: Add modem support on MSM8953 2022-12-27 10:03:12 -06:00
qcom_q6v5_pas.c remoteproc: qcom: pas: Fix subdevice add order 2022-12-28 10:52:44 -06:00
qcom_q6v5_wcss.c remoteproc: qcom: q6v5: Fix missing clk_disable_unprepare() in q6v5_wcss_qcs404_power_on() 2022-12-06 22:34:13 -06:00
qcom_q6v5.c remoteproc: qcom: q6v5: Avoid setting smem bit in case of crash shutdown 2022-12-28 09:59:04 -06:00
qcom_q6v5.h remoteproc: qcom: q6v5: Add interconnect path proxy vote 2022-03-11 14:22:03 -06:00
qcom_sysmon.c remoteproc: move from strlcpy with unused retval to strscpy 2022-12-28 09:47:21 -06:00
qcom_wcnss_iris.c remoteproc: qcom: wcnss: Fix race with iris probe 2021-07-28 14:57:30 -05:00
qcom_wcnss.c remoteproc: qcom: qcom_wcnss: Add support for pronto-v3 2022-12-27 10:04:04 -06:00
qcom_wcnss.h remoteproc: qcom: wcnss: remove unused qcom_iris_driver declaration 2022-12-28 09:50:07 -06:00
rcar_rproc.c remoteproc: rcar_rproc: Remove trailing semicolon 2021-12-20 09:33:59 -07:00
remoteproc_cdev.c remoteproc: core: Move state checking to remoteproc_core 2022-04-14 11:13:33 -06:00
remoteproc_core.c remoteproc: core: Do pm_relax when in RPROC_OFFLINE state 2022-12-07 11:20:55 -07:00
remoteproc_coredump.c remoteproc: coredump: Correct argument 2 type for memcpy_fromio 2021-11-17 09:37:31 -07:00
remoteproc_debugfs.c remoteproc: Don't bother checking the return value of debugfs_create* 2022-04-11 10:04:40 -06:00
remoteproc_elf_helpers.h remoteproc: fix an typo in fw_elf_get_class code comments 2021-07-28 14:57:30 -05:00
remoteproc_elf_loader.c remoteproc: elf_loader: skip segment with memsz as zero 2022-04-13 11:14:03 -06:00
remoteproc_internal.h remoteproc: Introduce rproc features 2022-09-28 10:46:21 -06:00
remoteproc_sysfs.c remoteproc: core: Move state checking to remoteproc_core 2022-04-14 11:13:33 -06:00
remoteproc_virtio.c remoteproc: virtio: Fix warning on bindings by removing the of_match_table 2022-10-05 09:20:44 -06:00
st_remoteproc.c remoteproc: remove rproc_elf32_sanity_check 2020-04-22 21:57:26 -07:00
st_slim_rproc.c remoteproc: Fix remaining wrong return formatting in documentation 2021-12-08 10:09:40 -07:00
stm32_rproc.c remoteproc: stm32: Improve crash recovery time 2022-01-03 11:40:45 -07:00
ti_k3_dsp_remoteproc.c remoteproc: k3-dsp: Add support for IPC-only mode for all K3 DSPs 2022-03-11 14:31:56 -06:00
ti_k3_r5_remoteproc.c remoteproc: k3-r5: Fix refcount leak in k3_r5_cluster_of_init 2022-06-14 16:54:57 -06: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: wkup_m3: Set sysfs_read_only flag 2022-03-04 09:28:32 -07:00
xlnx_r5_remoteproc.c drivers: remoteproc: Add Xilinx r5 remoteproc driver 2022-11-25 09:12:05 -07:00