Commits
Suman Anna committed 34eaa690297
remoteproc/pru: Add support for various PRU cores on K3 AM65x SoCs The K3 AM65x family of SoCs have the next generation of the PRU-ICSS processor subsystem, commonly referred to as ICSSG. Each ICSSG processor subsystem contain two primary PRU cores and two new auxiliary PRU cores called RTUs. Each RTU core has its own dedicated IRAM (smaller than a PRU), Control and debug feature sets, but is different in terms of sub-modules integrated around it and does not have the full capabilities associated with a PRU core. The RTU core is typically used to aid a PRU core in accelerating data transfers, but can also be used to run independent applications. The RTU cores though share the same Data RAMs as the PRU cores, so the memories have to be partitioned carefully between different applications. The new cores also support a new sub-module called Task Manager to support two different context thread executions. Enhance the existing PRU remoteproc driver to support these new PRU and RTU cores by using specific compatibles. The initial names for the firmware images for each PRU core are retrieved from DT nodes, and can be adjusted through sysfs if required. The PRU remoteproc driver has to be specifically modified to use a custom ELF loader implementation for these new cores in order to overcome a limitation with copying data into each of the core's IRAM memories. These memory ports support only 4-byte writes, and any sub-word order byte writes clear out the remaining bytes other than the bytes being written within the containing word. The default ARM64 memcpy also cannot be used as it throws an exception when the preferred 8-byte copy operation is attempted. The ICSSG instances on AM65x SoCs also have more System Events, Interrupt Channels and Host Interrupts compared to the previous generation PRUSS instances on other SoCs. The logic in pru_rproc_get() function to parse and program the interrupts from DT is also updated to use proper values relevant for K3 SoCs by using a state flag that is set only on K3 SoCs. This can be reworked to use match data to scale beyond current SoCs if needed. Signed-off-by: Suman Anna <s-anna@ti.com>