Add a BRAM-based remoteproc driver and corresponding binding for AMD soft processors located in programmable logic.
The series models a soft-core processor subsystem that executes firmware from dual-port BRAM. The BRAM window is described in the processor-local address space and translated to the Linux-visible system physical address through the parent bus ranges property. This series depends on the remoteproc cleanup series available here: https://lore.kernel.org/linux-remoteproc/ah2aVdlsLqy9aeHP@p14s/ That series adds the common WC ioremap carveout callbacks and optional ELF resource-table helper used by patch 2. v4: Patch 1, dt-bindings: remoteproc: document AMD BRAM-based rproc - Sorted the SoC-specific compatible enum by name. Patch 2, remoteproc: add AMD BRAM-based remote processor driver - Dropped the driver-specific MAINTAINERS entry. - Trimmed the Kconfig help text. - Reused the common WC ioremap/iounmap carveout callbacks. - Reused the common optional ELF resource-table helper. - Used resource_size(&res) for the translated memory window size. - Kept the coredump segment address as the processor-local device address. The coredump path resolves segment addresses through rproc_da_to_va() against the registered carveout device address, while res.start is the Linux-visible system physical address after DT translation and may differ from the processor-local BRAM address. v3: This version updates the binding to use SoC-specific compatibles with the fallback form discussed on the thread. Patch 1, dt-bindings: remoteproc: document AMD BRAM-based rproc - Reworked the compatible schema to use SoC-specific compatibles. - Added amd,versal2-bram-rproc to the supported compatible list. - Used xlnx,zynqmp-bram-rproc as the fallback compatible. - Updated the example to match the new compatible scheme. Patch 2, remoteproc: add AMD BRAM-based remote processor driver - Updated the driver OF match table to bind via the xlnx,zynqmp-bram-rproc fallback compatible. v2: This version pivots the series away from a MicroBlaze-specific binding and driver shape and instead models a BRAM-based soft-core processor subsystem more generally. This follows the upstream feedback that amd,microblaze was too tied to the processor architecture while also being too generic as a DT compatible for the hardware interface being described. Patch 1, dt-bindings: remoteproc: document AMD BRAM-based rproc - Renamed the binding away from amd,microblaze and reframed it around a BRAM-based soft-core processor subsystem. - Dropped the redundant trailing "binding" wording from the patch subject. - Rewrote the binding text to describe the hardware rather than the Linux remoteproc framework. - Reworked the example to address the original dt_binding_check complaints about the root node and simple-pm-bus example shape. - Added a clocks property for the soft-core subsystem. Patch 2, remoteproc: add AMD BRAM-based remote processor driver - Renamed the driver away from the MicroBlaze-specific name to match the BRAM-based binding. - Added clock handling for the soft-core subsystem and the matching COMMON_CLK dependency in Kconfig. - Cleaned up the reset comments and removed the success dev_dbg() message called out in review. Ben Levinsky (2): dt-bindings: remoteproc: document AMD BRAM-based rproc remoteproc: add AMD BRAM-based remote processor driver .../bindings/remoteproc/amd,bram-rproc.yaml | 105 +++++++++ drivers/remoteproc/Kconfig | 11 + drivers/remoteproc/Makefile | 1 + drivers/remoteproc/amd_bram_rproc.c | 213 ++++++++++++++++++ 4 files changed, 330 insertions(+) create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml create mode 100644 drivers/remoteproc/amd_bram_rproc.c -- 2.34.1

