1*8527ebd2SBen Levinsky# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*8527ebd2SBen Levinsky%YAML 1.2 3*8527ebd2SBen Levinsky--- 4*8527ebd2SBen Levinsky$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml# 5*8527ebd2SBen Levinsky$schema: http://devicetree.org/meta-schemas/core.yaml# 6*8527ebd2SBen Levinsky 7*8527ebd2SBen Levinskytitle: AMD MicroBlaze/V BRAM-based Remote Processor 8*8527ebd2SBen Levinsky 9*8527ebd2SBen Levinskymaintainers: 10*8527ebd2SBen Levinsky - Ben Levinsky <ben.levinsky@amd.com> 11*8527ebd2SBen Levinsky 12*8527ebd2SBen Levinskydescription: | 13*8527ebd2SBen Levinsky Soft-core processor subsystem instantiated in AMD programmable logic and 14*8527ebd2SBen Levinsky using dual-port BRAM for firmware storage and execution. 15*8527ebd2SBen Levinsky 16*8527ebd2SBen Levinsky Hardware Architecture: 17*8527ebd2SBen Levinsky 18*8527ebd2SBen Levinsky Host (PS) Programmable Logic (PL) 19*8527ebd2SBen Levinsky ========= ====================== 20*8527ebd2SBen Levinsky 21*8527ebd2SBen Levinsky AXI Interface -----------------> AXI BRAM Controller (Host Port) 22*8527ebd2SBen Levinsky | 23*8527ebd2SBen Levinsky | Port A 24*8527ebd2SBen Levinsky v 25*8527ebd2SBen Levinsky +-----------------+ 26*8527ebd2SBen Levinsky | Dual-Port BRAM | 27*8527ebd2SBen Levinsky | (shared memory) | 28*8527ebd2SBen Levinsky +-----------------+ 29*8527ebd2SBen Levinsky ^ 30*8527ebd2SBen Levinsky | Port B 31*8527ebd2SBen Levinsky | 32*8527ebd2SBen Levinsky AXI BRAM Controller (Soft-core Port) 33*8527ebd2SBen Levinsky ^ 34*8527ebd2SBen Levinsky | LMB 35*8527ebd2SBen Levinsky | 36*8527ebd2SBen Levinsky Soft-core CPU (MicroBlaze/V) 37*8527ebd2SBen Levinsky 38*8527ebd2SBen Levinsky GPIO --------------------------> Proc Sys Reset ----> CPU Reset Signal 39*8527ebd2SBen Levinsky 40*8527ebd2SBen Levinsky Clock -------------------------> Clock Distribution -> CPU Clock 41*8527ebd2SBen Levinsky 42*8527ebd2SBen Levinsky Memory Architecture: 43*8527ebd2SBen Levinsky 44*8527ebd2SBen Levinsky The dual-port BRAM allows simultaneous access from both processors: 45*8527ebd2SBen Levinsky - Port A: Connected to the host AXI BRAM controller for firmware loading 46*8527ebd2SBen Levinsky - Port B: Connected to the soft-core local memory bus for execution 47*8527ebd2SBen Levinsky 48*8527ebd2SBen Levinsky The reg property describes the executable BRAM window in the processor-local 49*8527ebd2SBen Levinsky address space. The parent bus node translates that window to the system 50*8527ebd2SBen Levinsky physical address space by using standard devicetree address translation 51*8527ebd2SBen Levinsky through ranges. A clock input and a reset GPIO control the subsystem. 52*8527ebd2SBen Levinsky 53*8527ebd2SBen Levinskyproperties: 54*8527ebd2SBen Levinsky compatible: 55*8527ebd2SBen Levinsky oneOf: 56*8527ebd2SBen Levinsky - const: xlnx,zynqmp-bram-rproc 57*8527ebd2SBen Levinsky - items: 58*8527ebd2SBen Levinsky - enum: 59*8527ebd2SBen Levinsky - amd,versal2-bram-rproc 60*8527ebd2SBen Levinsky - xlnx,versal-bram-rproc 61*8527ebd2SBen Levinsky - xlnx,versal-net-bram-rproc 62*8527ebd2SBen Levinsky - const: xlnx,zynqmp-bram-rproc 63*8527ebd2SBen Levinsky 64*8527ebd2SBen Levinsky reg: 65*8527ebd2SBen Levinsky maxItems: 1 66*8527ebd2SBen Levinsky description: 67*8527ebd2SBen Levinsky Processor-local address and size of the BRAM firmware memory window, 68*8527ebd2SBen Levinsky as seen by the soft-core processor (typically 0x0 for reset vector). 69*8527ebd2SBen Levinsky The parent bus ranges property must translate this window to the 70*8527ebd2SBen Levinsky corresponding system physical address. 71*8527ebd2SBen Levinsky 72*8527ebd2SBen Levinsky clocks: 73*8527ebd2SBen Levinsky maxItems: 1 74*8527ebd2SBen Levinsky description: 75*8527ebd2SBen Levinsky Clock input for the soft-core processor subsystem. 76*8527ebd2SBen Levinsky 77*8527ebd2SBen Levinsky firmware-name: 78*8527ebd2SBen Levinsky maxItems: 1 79*8527ebd2SBen Levinsky description: 80*8527ebd2SBen Levinsky Name of the firmware ELF file to load. 81*8527ebd2SBen Levinsky 82*8527ebd2SBen Levinsky reset-gpios: 83*8527ebd2SBen Levinsky maxItems: 1 84*8527ebd2SBen Levinsky description: 85*8527ebd2SBen Levinsky GPIO specifier controlling the soft-core reset input. 86*8527ebd2SBen Levinsky 87*8527ebd2SBen Levinskyrequired: 88*8527ebd2SBen Levinsky - compatible 89*8527ebd2SBen Levinsky - reg 90*8527ebd2SBen Levinsky - clocks 91*8527ebd2SBen Levinsky - reset-gpios 92*8527ebd2SBen Levinsky 93*8527ebd2SBen LevinskyadditionalProperties: false 94*8527ebd2SBen Levinsky 95*8527ebd2SBen Levinskyexamples: 96*8527ebd2SBen Levinsky - | 97*8527ebd2SBen Levinsky #include <dt-bindings/gpio/gpio.h> 98*8527ebd2SBen Levinsky remoteproc@0 { 99*8527ebd2SBen Levinsky compatible = "xlnx,zynqmp-bram-rproc"; 100*8527ebd2SBen Levinsky reg = <0x0 0x40000>; 101*8527ebd2SBen Levinsky clocks = <&pl_clk>; 102*8527ebd2SBen Levinsky firmware-name = "firmware.elf"; 103*8527ebd2SBen Levinsky reset-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; 104*8527ebd2SBen Levinsky }; 105*8527ebd2SBen Levinsky... 106