Commit c6f6211e authored by Suman Anna's avatar Suman Anna
Browse files

remoteproc/pruss: add a remoteproc driver for PRUSS in TI SoCs



The Programmable Real-Time Unit Subsystem (PRUSS) consists of
dual 32-bit RISC cores (Programmable Real-Time Units, or PRUs),
shared, data and instruction memories, some internal peripheral
modules, and an interrupt controller. The programmable nature
of the PRUs provide flexibility to implement custom peripheral
interfaces, fast real-time responses, or specialized data handling.

The PRUSS is present on various TI SoCS such as AM335x or AM437x.
A new remoteproc module is added to perform the device management
of the PRU cores. The module is implemented as two platform
drivers - one dealing with the overall PRUSS, and the other for
the individual PRU RISC cores. This design provides flexibility
in representing the different modules of PRUSS accordingly, and
at the same time allowing the PRUSS driver to add certain auxdata
lookup to give specific device names to the child PRU core devices.
The parent PRUSS driver handles the creation and deletion of the
platform devices for the child PRU devices.

The PRU platform driver allows to provide specific device data
like PRU Id, firmware name etc using SoC-specific match data and
appropriate compatible strings. The PRU remoteproc driver uses
the standard remoteproc core ELF loader. However, the PRUs do not
have a unified address space, (has an Instruction RAM and a primary
Data RAM at both 0x0) and leverage an added .da_to_va ops to use
the standard ELF loader. This remoteproc driver is also designed
to work with virtio, and uses a mailbox for performing the virtio
signalling.

The driver currently supports the AM335x SoC, and can be easily
scaled to support other TI SoCs. The PRU remoteproc driver expects
the firmware names to be "am335x-pru0-fw" and "am335x-pru1-fw"
for the two PRU cores on the AM335x SoC.

Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
parent dad74133
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment