[PATCH v2 0/3] J721S2 Add remoteproc early boot support

The series adds the support to boot early remote cores from u-boot and changes the rproc_fw_binaries to be compatible with Linux DT Syncs.
Logs: https://gist.github.com/manorit2001/2f2ef0699619e0b496367b400ff02d3c
Cc: Apurva Nandan a-nandan@ti.com Cc: Udit Kumar u-kumar1@ti.com Cc: Vignesh Raghavendra vigneshr@ti.com Cc: Neha Malcom Francis n-francis@ti.com Cc: Nishanth Menon nm@ti.com Cc: Andrew Davis afd@ti.com Cc: u-boot@lists.denx.de To: Tom Rini trini@konsulko.com Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
Changes in v2: - Update the signoff
--- Hari Nagalla (2): remoteproc: k3-r5: Extend support for R5F clusters on J721S2 SoCs remoteproc: k3-dsp: Extend support for C71x DSPs on J721S2 SoCs
Manorit Chawdhry (1): env: ti: j721s2.env: Remove the processors that are in lockstep
board/ti/j721s2/j721s2.env | 2 +- drivers/remoteproc/ti_k3_dsp_rproc.c | 4 +++- drivers/remoteproc/ti_k3_r5f_rproc.c | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) --- base-commit: 054222eb68f6d7500e21dd1f01af8b9a59b89fd4 change-id: 20231127-b4-upstream-j721e-rproc-support-15074716a401
Best regards,

From: Hari Nagalla hnagalla@ti.com
The K3 J721S2 SoCs have three dual-core R5F subsystems, one in MCU voltage domain and the other two in MAIN voltage domain. These R5F clusters are similar to the R5F clusters in J7200 SoCs.
Compatible Info is updated to support J721S2 SoCs.
Signed-off-by: Hari Nagalla hnagalla@ti.com Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- drivers/remoteproc/ti_k3_r5f_rproc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/ti_k3_r5f_rproc.c b/drivers/remoteproc/ti_k3_r5f_rproc.c index 6f3e12d915e6..631e548dccef 100644 --- a/drivers/remoteproc/ti_k3_r5f_rproc.c +++ b/drivers/remoteproc/ti_k3_r5f_rproc.c @@ -855,7 +855,7 @@ static const struct k3_r5f_ip_data k3_data = { .tcm_ecc_autoinit = false, };
-static const struct k3_r5f_ip_data j7200_data = { +static const struct k3_r5f_ip_data j7200_j721s2_data = { .tcm_is_double = true, .tcm_ecc_autoinit = true, }; @@ -863,7 +863,8 @@ static const struct k3_r5f_ip_data j7200_data = { static const struct udevice_id k3_r5f_rproc_ids[] = { { .compatible = "ti,am654-r5f", .data = (ulong)&k3_data, }, { .compatible = "ti,j721e-r5f", .data = (ulong)&k3_data, }, - { .compatible = "ti,j7200-r5f", .data = (ulong)&j7200_data, }, + { .compatible = "ti,j7200-r5f", .data = (ulong)&j7200_j721s2_data, }, + { .compatible = "ti,j721s2-r5f", .data = (ulong)&j7200_j721s2_data, }, {} };
@@ -901,6 +902,7 @@ static const struct udevice_id k3_r5fss_ids[] = { { .compatible = "ti,am654-r5fss"}, { .compatible = "ti,j721e-r5fss"}, { .compatible = "ti,j7200-r5fss"}, + { .compatible = "ti,j721s2-r5fss"}, {} };

From: Hari Nagalla hnagalla@ti.com
The K3 J721S2 SoCs have two C71x DSP subsystems in MAIN voltage domain, and there are no C66x DSP subsystems on these SoCs. The C71x DSP subsystem is a slighly updated version of the C71x DSP subsystem on J721e. The C71x DSPs are 64 bit machine with fixed and floating point DSP operations.
Extend support to the C71x DSPs with J721S2 compatible strings.
Signed-off-by: Hari Nagalla hnagalla@ti.com Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- drivers/remoteproc/ti_k3_dsp_rproc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/remoteproc/ti_k3_dsp_rproc.c b/drivers/remoteproc/ti_k3_dsp_rproc.c index 576de4bb26e4..749ea2bd6187 100644 --- a/drivers/remoteproc/ti_k3_dsp_rproc.c +++ b/drivers/remoteproc/ti_k3_dsp_rproc.c @@ -327,7 +327,8 @@ static int k3_dsp_of_get_memories(struct udevice *dev)
for (i = 0; i < dsp->num_mems; i++) { /* C71 cores only have a L1P Cache, there are no L1P SRAMs */ - if (device_is_compatible(dev, "ti,j721e-c71-dsp") && + if (((device_is_compatible(dev, "ti,j721e-c71-dsp")) || + (device_is_compatible(dev, "ti,j721s2-c71-dsp"))) && !strcmp(mem_names[i], "l1pram")) { dsp->mem[i].bus_addr = FDT_ADDR_T_NONE; dsp->mem[i].dev_addr = FDT_ADDR_T_NONE; @@ -446,6 +447,7 @@ static const struct k3_dsp_boot_data c71_data = { static const struct udevice_id k3_dsp_ids[] = { { .compatible = "ti,j721e-c66-dsp", .data = (ulong)&c66_data, }, { .compatible = "ti,j721e-c71-dsp", .data = (ulong)&c71_data, }, + { .compatible = "ti,j721s2-c71-dsp", .data = (ulong)&c71_data, }, {} };

Linux 6.7-rc1 DT have the main R5s in lockstep configuration, since U-boot is using the Linux DT files.
Remove the processors that will be booted in lockstep configuration.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com --- board/ti/j721s2/j721s2.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/ti/j721s2/j721s2.env b/board/ti/j721s2/j721s2.env index 64e3d9da85f0..1802147a9034 100644 --- a/board/ti/j721s2/j721s2.env +++ b/board/ti/j721s2/j721s2.env @@ -31,6 +31,6 @@ name_mcur5f0_0fw=/lib/firmware/j7-mcu-r5f0_0-fw #endif rd_spec=-
-rproc_fw_binaries= 2 /lib/firmware/j721s2-main-r5f0_0-fw 3 /lib/firmware/j721s2-main-r5f0_1-fw 4 /lib/firmware/j721s2-main-r5f1_0-fw 5 /lib/firmware/j721s2-main-r5f1_1-fw 6 /lib/firmware/j721s2-c71_0-fw 7 /lib/firmware/j721s2-c71_1-fw +rproc_fw_binaries= 2 /lib/firmware/j721s2-main-r5f0_0-fw 4 /lib/firmware/j721s2-main-r5f1_0-fw 6 /lib/firmware/j721s2-c71_0-fw 7 /lib/firmware/j721s2-c71_1-fw

On 15:59-20231127, Manorit Chawdhry wrote:
Linux 6.7-rc1 DT have the main R5s in lockstep configuration, since U-boot is using the Linux DT files.
Remove the processors that will be booted in lockstep configuration.
Signed-off-by: Manorit Chawdhry m-chawdhry@ti.com
board/ti/j721s2/j721s2.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/board/ti/j721s2/j721s2.env b/board/ti/j721s2/j721s2.env index 64e3d9da85f0..1802147a9034 100644 --- a/board/ti/j721s2/j721s2.env +++ b/board/ti/j721s2/j721s2.env @@ -31,6 +31,6 @@ name_mcur5f0_0fw=/lib/firmware/j7-mcu-r5f0_0-fw #endif rd_spec=-
-rproc_fw_binaries= 2 /lib/firmware/j721s2-main-r5f0_0-fw 3 /lib/firmware/j721s2-main-r5f0_1-fw 4 /lib/firmware/j721s2-main-r5f1_0-fw 5 /lib/firmware/j721s2-main-r5f1_1-fw 6 /lib/firmware/j721s2-c71_0-fw 7 /lib/firmware/j721s2-c71_1-fw +rproc_fw_binaries= 2 /lib/firmware/j721s2-main-r5f0_0-fw 4 /lib/firmware/j721s2-main-r5f1_0-fw 6 /lib/firmware/j721s2-c71_0-fw 7 /lib/firmware/j721s2-c71_1-fw
I really would prefer us to work towards getting stdboot remoteproc properly handled.
participants (2)
-
Manorit Chawdhry
-
Nishanth Menon