xref: /linux/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml (revision fc710de0dd25ed50a087833b4171eb1a46737a9e)
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