mbox series

[0/2] Add AM64x SoC support to PRU remoteproc driver

Message ID 20210623173243.7862-1-s-anna@ti.com
Headers show
Series Add AM64x SoC support to PRU remoteproc driver | expand

Message

Suman Anna June 23, 2021, 5:32 p.m. UTC
Hi All,

The following series updates the PRU remoteproc driver to support the
PRU, RTU and Tx_PRU cores present within the ICSSG IP on AM64x SoCs.
Patches are on top of latest rproc-next branch based on v5.13-rc1,
commit 30da589dba53 ("dt-bindings: remoteproc: qcom: pas: Fix indentation
warnings").

There are some minor differences around the PRU cores like different
Broadside RAM (BSRAM) sizes, but otherwise behave functionally the same
as the PRU cores on previous SoCs.

regards,
Suman

Suman Anna (2):
  dt-bindings: remoteproc: pru: Update bindings for K3 AM64x SoCs
  remoteproc: pru: Add support for various PRU cores on K3 AM64x SoCs

 .../devicetree/bindings/remoteproc/ti,pru-rproc.yaml         | 5 +++++
 drivers/remoteproc/pru_rproc.c                               | 3 +++
 2 files changed, 8 insertions(+)

Comments

Grygorii Strashko June 23, 2021, 6:21 p.m. UTC | #1
On 23/06/2021 20:32, Suman Anna wrote:
> The K3 AM64x family of SoCs have a ICSSG IP that is similar to the
> version on AM65x SR2.0 SoCs with some minor differences. The AM64x
> SoCs contain two instances of this newer ICSSG IP. Each ICSSG processor
> subsystem contains 2 primary PRU cores, 2 auxiliary PRU cores called
> RTUs, and 2 new auxiliary cores called Transmit PRUs (Tx_PRUs).
> 
> Enhance the existing PRU remoteproc driver to support all these PRU,
> RTU and Tx_PRU cores by using specific compatibles. The cores have the
> same memory copying limitations as on AM65x, so reuses the custom memcpy
> function within the driver's ELF loader implementation. The initial
> names for the firmware images for each PRU core are retrieved from
> DT nodes, and can be adjusted through sysfs if required.
> 
> Signed-off-by: Suman Anna <s-anna@ti.com>
> ---
>   drivers/remoteproc/pru_rproc.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/remoteproc/pru_rproc.c b/drivers/remoteproc/pru_rproc.c
> index e5778e476245..0ecf2675f5eb 100644
> --- a/drivers/remoteproc/pru_rproc.c
> +++ b/drivers/remoteproc/pru_rproc.c
> @@ -894,6 +894,9 @@ static const struct of_device_id pru_rproc_match[] = {
>   	{ .compatible = "ti,j721e-pru",		.data = &k3_pru_data },
>   	{ .compatible = "ti,j721e-rtu",		.data = &k3_rtu_data },
>   	{ .compatible = "ti,j721e-tx-pru",	.data = &k3_tx_pru_data },
> +	{ .compatible = "ti,am642-pru",		.data = &k3_pru_data },
> +	{ .compatible = "ti,am642-rtu",		.data = &k3_rtu_data },
> +	{ .compatible = "ti,am642-tx-pru",	.data = &k3_tx_pru_data },
>   	{},
>   };
>   MODULE_DEVICE_TABLE(of, pru_rproc_match);
> 


Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com>
Mathieu Poirier June 24, 2021, 7:41 p.m. UTC | #2
On Wed, Jun 23, 2021 at 12:32:42PM -0500, Suman Anna wrote:
> The K3 AM64x family of SoCs have a ICSSG IP that is similar to the
> version on AM65x SR2.0 SoCs with some minor differences. The AM64x
> SoCs contain two instances of this newer ICSSG IP. Each ICSSG processor
> subsystem contains 2 primary PRU cores, 2 auxiliary PRU cores called
> RTUs, and 2 new auxiliary cores called Transmit PRUs (Tx_PRUs).
> 
> Enhance the existing PRU remoteproc driver to support all these PRU,
> RTU and Tx_PRU cores by using specific compatibles. The cores have the
> same memory copying limitations as on AM65x, so reuses the custom memcpy
> function within the driver's ELF loader implementation. The initial
> names for the firmware images for each PRU core are retrieved from
> DT nodes, and can be adjusted through sysfs if required.
> 
> Signed-off-by: Suman Anna <s-anna@ti.com>
> ---
>  drivers/remoteproc/pru_rproc.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/remoteproc/pru_rproc.c b/drivers/remoteproc/pru_rproc.c
> index e5778e476245..0ecf2675f5eb 100644
> --- a/drivers/remoteproc/pru_rproc.c
> +++ b/drivers/remoteproc/pru_rproc.c
> @@ -894,6 +894,9 @@ static const struct of_device_id pru_rproc_match[] = {
>  	{ .compatible = "ti,j721e-pru",		.data = &k3_pru_data },
>  	{ .compatible = "ti,j721e-rtu",		.data = &k3_rtu_data },
>  	{ .compatible = "ti,j721e-tx-pru",	.data = &k3_tx_pru_data },
> +	{ .compatible = "ti,am642-pru",		.data = &k3_pru_data },
> +	{ .compatible = "ti,am642-rtu",		.data = &k3_rtu_data },
> +	{ .compatible = "ti,am642-tx-pru",	.data = &k3_tx_pru_data },
>  	{},

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  };
>  MODULE_DEVICE_TABLE(of, pru_rproc_match);
> -- 
> 2.30.1
>