]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
soc: ti: pruss: Add support for PRU-ICSSs on AM437x SoCs
authorSuman Anna <s-anna@ti.com>
Sat, 12 Sep 2020 04:43:35 +0000 (21:43 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Sat, 12 Sep 2020 04:43:35 +0000 (21:43 -0700)
commit78251639d376a4ea1a795a4f3dcd985fcdf9aed3
tree6c416303010cce8b1c33acc89afef707c086b311
parentdc1129564a0147feb459159fd220ae22357e2eb6
soc: ti: pruss: Add support for PRU-ICSSs on AM437x SoCs

The AM437x SoCs have two different PRU-ICSS subsystems: PRU-ICSS1
and a smaller PRU-ICSS0. Enhance the PRUSS platform driver to support
both the PRU-ICSS sub-systems on these SoCs.

The PRU-ICSS1 on AM437x is very similar to the PRU-ICSS on AM33xx
except for few minor differences - increased Instruction RAM, increased
Shared Data RAM2, and 1 less interrupt (PRUSS host interrupt 7 which is
redirected to the other PRUSS) towards the MPU INTC. The PRU-ICSS0 is
a cut-down version of the IP, with less DRAM per PRU, no Shared DRAM etc.
It also does not have direct access to L3 bus regions, there is a single
interface to L3 for both PRUSS0 and PRUSS1, and it would have to go
through the PRUSS1's interface. The PRUSS_SYSCFG register is reserved on
PRUSS0, so any external access requires the programming the corresponding
PRUSS_SYSCFG register in PRUSS1. It does have its own dedicated I/O lines
though. Note that this instance does not support any PRU Ethernet related
use cases.

The adaptation uses SoC-specific compatibles in the driver and uses
a newly introduced pruss_match_private_data structure and the
pruss_get_private_data() function to retrieve a PRUSS instance specific
data using a device-name based lookup logic. The reset and the L3 external
access are managed by the parent interconnect ti-sysc bus driver so that
PRUSS1 and PRUSS0 can be independently supported.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
Signed-off-by: Grzegorz Jaszczyk <grzegorz.jaszczyk@linaro.org>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
drivers/soc/ti/Kconfig
drivers/soc/ti/pruss.c