Commits
Suman Anna committed 724cf9b8d21
remoteproc/pruss: add PRU remoteproc driver The Programmable Real-Time Unit Subsystem (PRUSS) consists of dual 32-bit RISC cores (Programmable Real-Time Units, or PRUs) for program execution. This patch adds a remoteproc platform driver for managing the individual PRU RISC cores life cycle. 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 does not have support for error recovery and system suspend/resume features. The PRU interrupt configuration is handled within the PRUSS INTC platform driver, and leverages the system events to interrupt channels and host interrupts mapping configuration through a PRU firmware resource table for now. This will be revisited and enhanced in the future for a better interface. The mappings are currently programmed during the booting/shutdown of the PRU. The PRU remoteproc driver is also designed to support virtio-ring based communication between MPU and a PRU core on supported firmwares. The virtio-ring signalling support is provided either through a OMAP mailbox or through two PRU system events - one event used in each direction for kicking from one processor and receiving notification on the other processor. The driver supports both signalling options, and they are designed to be used in mutually exclusive fashion. The mailbox-based signalling takes precedence if both options are mentioned. Either of the options would require the corresponding firmware support though. The driver currently supports the AM335x SoC, and support for other TI SoCs will be added in subsequent patches. The PRU remoteproc driver expects the firmware names to be the following for each of the PRU cores: "am335x-pru0-fw" and "am335x-pru1-fw". The driver leverages the 'auto-boot' feature from remoteproc core, and the firmware names can be adjusted if required through the sysfs interface provided by the remoteproc core. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Andrew F. Davis <afd@ti.com>