remoteproc/pruss: add support for PRU-ICSS subsystems on AM57xx SoCs
The AM57xx family of SoCs supports two PRU-ICSS instances, each of
which has two PRU processor cores. The two PRU-ICSS instances are
identical to each other, and are very similar to the PRU-ICSS1 of
AM33xx/AM43xx except for a few minor differences like the RAM sizes
and the number of interrupts coming into the MPU INTC. They also do
not have a programmable module reset line like those present in
AM33xx/AM43xx. The modules are reset just like any other IP with the
SoC's global cold/warm resets. Each PRU-ICSS's INTC is also preceded
by a Crossbar that enables multiple external events to be routed to
a specific number of input interrupt events. Any interrupt events
needs these crossbars to be setup properly on the firmware side.
The existing PRUSS remoteproc driver has been enhanced to support
these AM57xx PRU-ICSS instances through new AM57xx specific
compatibles for properly probing and booting all the different PRU
cores in each PRU-ICSS processor subsystem. A build dependency
with SOC_DRA7XX is also added to enable the driver to be built in
AM57xx-only configuration (there is no separate Kconfig option
for AM57xx vs DRA7xx).
The auxdata lookup logic has to be adjusted for AM57xx as there are
more than one instance of the PRU-ICSS remote processor subsystem,
and the child PRU nodes and their respective platform data containing
the firmware image names will be different between the two PRU-ICSS
instances. The names for the firmware images are fixed for each PRU
core and is expected to be as follows:
PRU-ICSS1 PRU0 Core: am57xx-pru1_0-fw
PRU-ICSS1 PRU1 Core: am57xx-pru1_1-fw
PRU-ICSS2 PRU0 Core: am57xx-pru2_0-fw
PRU-ICSS2 PRU1 Core: am57xx-pru2_1-fw
Signed-off-by:
Suman Anna <s-anna@ti.com>
Loading
Please sign in to comment