xref: /freebsd/sys/contrib/device-tree/Bindings/fpga/fpga-region.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1*01950c46SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2*01950c46SEmmanuel Vadot%YAML 1.2
3*01950c46SEmmanuel Vadot---
4*01950c46SEmmanuel Vadot$id: http://devicetree.org/schemas/fpga/fpga-region.yaml#
5*01950c46SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*01950c46SEmmanuel Vadot
7*01950c46SEmmanuel Vadottitle: FPGA Region
8*01950c46SEmmanuel Vadot
9*01950c46SEmmanuel Vadotmaintainers:
10*01950c46SEmmanuel Vadot  - Michal Simek <michal.simek@amd.com>
11*01950c46SEmmanuel Vadot
12*01950c46SEmmanuel Vadotdescription: |
13*01950c46SEmmanuel Vadot  CONTENTS
14*01950c46SEmmanuel Vadot   - Introduction
15*01950c46SEmmanuel Vadot   - Terminology
16*01950c46SEmmanuel Vadot   - Sequence
17*01950c46SEmmanuel Vadot   - FPGA Region
18*01950c46SEmmanuel Vadot   - Supported Use Models
19*01950c46SEmmanuel Vadot   - Constraints
20*01950c46SEmmanuel Vadot
21*01950c46SEmmanuel Vadot
22*01950c46SEmmanuel Vadot  Introduction
23*01950c46SEmmanuel Vadot  ============
24*01950c46SEmmanuel Vadot
25*01950c46SEmmanuel Vadot  FPGA Regions represent FPGA's and partial reconfiguration regions of FPGA's in
26*01950c46SEmmanuel Vadot  the Device Tree.  FPGA Regions provide a way to program FPGAs under device tree
27*01950c46SEmmanuel Vadot  control.
28*01950c46SEmmanuel Vadot
29*01950c46SEmmanuel Vadot  The documentation hits some of the high points of FPGA usage and
30*01950c46SEmmanuel Vadot  attempts to include terminology used by both major FPGA manufacturers.  This
31*01950c46SEmmanuel Vadot  document isn't a replacement for any manufacturers specifications for FPGA
32*01950c46SEmmanuel Vadot  usage.
33*01950c46SEmmanuel Vadot
34*01950c46SEmmanuel Vadot
35*01950c46SEmmanuel Vadot  Terminology
36*01950c46SEmmanuel Vadot  ===========
37*01950c46SEmmanuel Vadot
38*01950c46SEmmanuel Vadot  Full Reconfiguration
39*01950c46SEmmanuel Vadot   * The entire FPGA is programmed.
40*01950c46SEmmanuel Vadot
41*01950c46SEmmanuel Vadot  Partial Reconfiguration (PR)
42*01950c46SEmmanuel Vadot   * A section of an FPGA is reprogrammed while the rest of the FPGA is not
43*01950c46SEmmanuel Vadot     affected.
44*01950c46SEmmanuel Vadot   * Not all FPGA's support PR.
45*01950c46SEmmanuel Vadot
46*01950c46SEmmanuel Vadot  Partial Reconfiguration Region (PRR)
47*01950c46SEmmanuel Vadot   * Also called a "reconfigurable partition"
48*01950c46SEmmanuel Vadot   * A PRR is a specific section of an FPGA reserved for reconfiguration.
49*01950c46SEmmanuel Vadot   * A base (or static) FPGA image may create a set of PRR's that later may
50*01950c46SEmmanuel Vadot     be independently reprogrammed many times.
51*01950c46SEmmanuel Vadot   * The size and specific location of each PRR is fixed.
52*01950c46SEmmanuel Vadot   * The connections at the edge of each PRR are fixed.  The image that is loaded
53*01950c46SEmmanuel Vadot     into a PRR must fit and must use a subset of the region's connections.
54*01950c46SEmmanuel Vadot   * The busses within the FPGA are split such that each region gets its own
55*01950c46SEmmanuel Vadot     branch that may be gated independently.
56*01950c46SEmmanuel Vadot
57*01950c46SEmmanuel Vadot  Persona
58*01950c46SEmmanuel Vadot   * Also called a "partial bit stream"
59*01950c46SEmmanuel Vadot   * An FPGA image that is designed to be loaded into a PRR.  There may be
60*01950c46SEmmanuel Vadot     any number of personas designed to fit into a PRR, but only one at a time
61*01950c46SEmmanuel Vadot     may be loaded.
62*01950c46SEmmanuel Vadot   * A persona may create more regions.
63*01950c46SEmmanuel Vadot
64*01950c46SEmmanuel Vadot  FPGA Bridge
65*01950c46SEmmanuel Vadot   * FPGA Bridges gate bus signals between a host and FPGA.
66*01950c46SEmmanuel Vadot   * FPGA Bridges should be disabled while the FPGA is being programmed to
67*01950c46SEmmanuel Vadot     prevent spurious signals on the cpu bus and to the soft logic.
68*01950c46SEmmanuel Vadot   * FPGA bridges may be actual hardware or soft logic on an FPGA.
69*01950c46SEmmanuel Vadot   * During Full Reconfiguration, hardware bridges between the host and FPGA
70*01950c46SEmmanuel Vadot     will be disabled.
71*01950c46SEmmanuel Vadot   * During Partial Reconfiguration of a specific region, that region's bridge
72*01950c46SEmmanuel Vadot     will be used to gate the busses.  Traffic to other regions is not affected.
73*01950c46SEmmanuel Vadot   * In some implementations, the FPGA Manager transparently handles gating the
74*01950c46SEmmanuel Vadot     buses, eliminating the need to show the hardware FPGA bridges in the
75*01950c46SEmmanuel Vadot     device tree.
76*01950c46SEmmanuel Vadot   * An FPGA image may create a set of reprogrammable regions, each having its
77*01950c46SEmmanuel Vadot     own bridge and its own split of the busses in the FPGA.
78*01950c46SEmmanuel Vadot
79*01950c46SEmmanuel Vadot  FPGA Manager
80*01950c46SEmmanuel Vadot   * An FPGA Manager is a hardware block that programs an FPGA under the control
81*01950c46SEmmanuel Vadot     of a host processor.
82*01950c46SEmmanuel Vadot
83*01950c46SEmmanuel Vadot  Base Image
84*01950c46SEmmanuel Vadot   * Also called the "static image"
85*01950c46SEmmanuel Vadot   * An FPGA image that is designed to do full reconfiguration of the FPGA.
86*01950c46SEmmanuel Vadot   * A base image may set up a set of partial reconfiguration regions that may
87*01950c46SEmmanuel Vadot     later be reprogrammed.
88*01950c46SEmmanuel Vadot
89*01950c46SEmmanuel Vadot      ----------------       ----------------------------------
90*01950c46SEmmanuel Vadot      |  Host CPU    |       |             FPGA               |
91*01950c46SEmmanuel Vadot      |              |       |                                |
92*01950c46SEmmanuel Vadot      |          ----|       |       -----------    --------  |
93*01950c46SEmmanuel Vadot      |          | H |       |   |==>| Bridge0 |<==>| PRR0 |  |
94*01950c46SEmmanuel Vadot      |          | W |       |   |   -----------    --------  |
95*01950c46SEmmanuel Vadot      |          |   |       |   |                            |
96*01950c46SEmmanuel Vadot      |          | B |<=====>|<==|   -----------    --------  |
97*01950c46SEmmanuel Vadot      |          | R |       |   |==>| Bridge1 |<==>| PRR1 |  |
98*01950c46SEmmanuel Vadot      |          | I |       |   |   -----------    --------  |
99*01950c46SEmmanuel Vadot      |          | D |       |   |                            |
100*01950c46SEmmanuel Vadot      |          | G |       |   |   -----------    --------  |
101*01950c46SEmmanuel Vadot      |          | E |       |   |==>| Bridge2 |<==>| PRR2 |  |
102*01950c46SEmmanuel Vadot      |          ----|       |       -----------    --------  |
103*01950c46SEmmanuel Vadot      |              |       |                                |
104*01950c46SEmmanuel Vadot      ----------------       ----------------------------------
105*01950c46SEmmanuel Vadot
106*01950c46SEmmanuel Vadot  Figure 1: An FPGA set up with a base image that created three regions.  Each
107*01950c46SEmmanuel Vadot  region (PRR0-2) gets its own split of the busses that is independently gated by
108*01950c46SEmmanuel Vadot  a soft logic bridge (Bridge0-2) in the FPGA.  The contents of each PRR can be
109*01950c46SEmmanuel Vadot  reprogrammed independently while the rest of the system continues to function.
110*01950c46SEmmanuel Vadot
111*01950c46SEmmanuel Vadot
112*01950c46SEmmanuel Vadot  Sequence
113*01950c46SEmmanuel Vadot  ========
114*01950c46SEmmanuel Vadot
115*01950c46SEmmanuel Vadot  When a DT overlay that targets an FPGA Region is applied, the FPGA Region will
116*01950c46SEmmanuel Vadot  do the following:
117*01950c46SEmmanuel Vadot
118*01950c46SEmmanuel Vadot   1. Disable appropriate FPGA bridges.
119*01950c46SEmmanuel Vadot   2. Program the FPGA using the FPGA manager.
120*01950c46SEmmanuel Vadot   3. Enable the FPGA bridges.
121*01950c46SEmmanuel Vadot   4. The Device Tree overlay is accepted into the live tree.
122*01950c46SEmmanuel Vadot   5. Child devices are populated.
123*01950c46SEmmanuel Vadot
124*01950c46SEmmanuel Vadot  When the overlay is removed, the child nodes will be removed and the FPGA Region
125*01950c46SEmmanuel Vadot  will disable the bridges.
126*01950c46SEmmanuel Vadot
127*01950c46SEmmanuel Vadot
128*01950c46SEmmanuel Vadot  FPGA Region
129*01950c46SEmmanuel Vadot  ===========
130*01950c46SEmmanuel Vadot
131*01950c46SEmmanuel Vadot  FPGA Regions represent FPGA's and FPGA PR regions in the device tree.  An FPGA
132*01950c46SEmmanuel Vadot  Region brings together the elements needed to program on a running system and
133*01950c46SEmmanuel Vadot  add the child devices:
134*01950c46SEmmanuel Vadot
135*01950c46SEmmanuel Vadot   * FPGA Manager
136*01950c46SEmmanuel Vadot   * FPGA Bridges
137*01950c46SEmmanuel Vadot   * image-specific information needed to the programming.
138*01950c46SEmmanuel Vadot   * child nodes
139*01950c46SEmmanuel Vadot
140*01950c46SEmmanuel Vadot  The intended use is that a Device Tree overlay (DTO) can be used to reprogram an
141*01950c46SEmmanuel Vadot  FPGA while an operating system is running.
142*01950c46SEmmanuel Vadot
143*01950c46SEmmanuel Vadot  An FPGA Region that exists in the live Device Tree reflects the current state.
144*01950c46SEmmanuel Vadot  If the live tree shows a "firmware-name" property or child nodes under an FPGA
145*01950c46SEmmanuel Vadot  Region, the FPGA already has been programmed.  A DTO that targets an FPGA Region
146*01950c46SEmmanuel Vadot  and adds the "firmware-name" property is taken as a request to reprogram the
147*01950c46SEmmanuel Vadot  FPGA.  After reprogramming is successful, the overlay is accepted into the live
148*01950c46SEmmanuel Vadot  tree.
149*01950c46SEmmanuel Vadot
150*01950c46SEmmanuel Vadot  The base FPGA Region in the device tree represents the FPGA and supports full
151*01950c46SEmmanuel Vadot  reconfiguration.  It must include a phandle to an FPGA Manager.  The base
152*01950c46SEmmanuel Vadot  FPGA region will be the child of one of the hardware bridges (the bridge that
153*01950c46SEmmanuel Vadot  allows register access) between the cpu and the FPGA.  If there are more than
154*01950c46SEmmanuel Vadot  one bridge to control during FPGA programming, the region will also contain a
155*01950c46SEmmanuel Vadot  list of phandles to the additional hardware FPGA Bridges.
156*01950c46SEmmanuel Vadot
157*01950c46SEmmanuel Vadot  For partial reconfiguration (PR), each PR region will have an FPGA Region.
158*01950c46SEmmanuel Vadot  These FPGA regions are children of FPGA bridges which are then children of the
159*01950c46SEmmanuel Vadot  base FPGA region.  The "Full Reconfiguration to add PRR's" example below shows
160*01950c46SEmmanuel Vadot  this.
161*01950c46SEmmanuel Vadot
162*01950c46SEmmanuel Vadot  If an FPGA Region does not specify an FPGA Manager, it will inherit the FPGA
163*01950c46SEmmanuel Vadot  Manager specified by its ancestor FPGA Region.  This supports both the case
164*01950c46SEmmanuel Vadot  where the same FPGA Manager is used for all of an FPGA as well the case where
165*01950c46SEmmanuel Vadot  a different FPGA Manager is used for each region.
166*01950c46SEmmanuel Vadot
167*01950c46SEmmanuel Vadot  FPGA Regions do not inherit their ancestor FPGA regions' bridges.  This prevents
168*01950c46SEmmanuel Vadot  shutting down bridges that are upstream from the other active regions while one
169*01950c46SEmmanuel Vadot  region is getting reconfigured (see Figure 1 above).  During PR, the FPGA's
170*01950c46SEmmanuel Vadot  hardware bridges remain enabled.  The PR regions' bridges will be FPGA bridges
171*01950c46SEmmanuel Vadot  within the static image of the FPGA.
172*01950c46SEmmanuel Vadot
173*01950c46SEmmanuel Vadot
174*01950c46SEmmanuel Vadot  Supported Use Models
175*01950c46SEmmanuel Vadot  ====================
176*01950c46SEmmanuel Vadot
177*01950c46SEmmanuel Vadot  In all cases the live DT must have the FPGA Manager, FPGA Bridges (if any), and
178*01950c46SEmmanuel Vadot  a FPGA Region.  The target of the Device Tree Overlay is the FPGA Region.  Some
179*01950c46SEmmanuel Vadot  uses are specific to an FPGA device.
180*01950c46SEmmanuel Vadot
181*01950c46SEmmanuel Vadot   * No FPGA Bridges
182*01950c46SEmmanuel Vadot     In this case, the FPGA Manager which programs the FPGA also handles the
183*01950c46SEmmanuel Vadot     bridges behind the scenes.  No FPGA Bridge devices are needed for full
184*01950c46SEmmanuel Vadot     reconfiguration.
185*01950c46SEmmanuel Vadot
186*01950c46SEmmanuel Vadot   * Full reconfiguration with hardware bridges
187*01950c46SEmmanuel Vadot     In this case, there are hardware bridges between the processor and FPGA that
188*01950c46SEmmanuel Vadot     need to be controlled during full reconfiguration.  Before the overlay is
189*01950c46SEmmanuel Vadot     applied, the live DT must include the FPGA Manager, FPGA Bridges, and a
190*01950c46SEmmanuel Vadot     FPGA Region.  The FPGA Region is the child of the bridge that allows
191*01950c46SEmmanuel Vadot     register access to the FPGA.  Additional bridges may be listed in a
192*01950c46SEmmanuel Vadot     fpga-bridges property in the FPGA region or in the device tree overlay.
193*01950c46SEmmanuel Vadot
194*01950c46SEmmanuel Vadot   * Partial reconfiguration with bridges in the FPGA
195*01950c46SEmmanuel Vadot     In this case, the FPGA will have one or more PRR's that may be programmed
196*01950c46SEmmanuel Vadot     separately while the rest of the FPGA can remain active.  To manage this,
197*01950c46SEmmanuel Vadot     bridges need to exist in the FPGA that can gate the buses going to each FPGA
198*01950c46SEmmanuel Vadot     region while the buses are enabled for other sections.  Before any partial
199*01950c46SEmmanuel Vadot     reconfiguration can be done, a base FPGA image must be loaded which includes
200*01950c46SEmmanuel Vadot     PRR's with FPGA bridges.  The device tree should have an FPGA region for each
201*01950c46SEmmanuel Vadot     PRR.
202*01950c46SEmmanuel Vadot
203*01950c46SEmmanuel Vadot  Constraints
204*01950c46SEmmanuel Vadot  ===========
205*01950c46SEmmanuel Vadot
206*01950c46SEmmanuel Vadot  It is beyond the scope of this document to fully describe all the FPGA design
207*01950c46SEmmanuel Vadot  constraints required to make partial reconfiguration work[1] [2] [3], but a few
208*01950c46SEmmanuel Vadot  deserve quick mention.
209*01950c46SEmmanuel Vadot
210*01950c46SEmmanuel Vadot  A persona must have boundary connections that line up with those of the partition
211*01950c46SEmmanuel Vadot  or region it is designed to go into.
212*01950c46SEmmanuel Vadot
213*01950c46SEmmanuel Vadot  During programming, transactions through those connections must be stopped and
214*01950c46SEmmanuel Vadot  the connections must be held at a fixed logic level.  This can be achieved by
215*01950c46SEmmanuel Vadot  FPGA Bridges that exist on the FPGA fabric prior to the partial reconfiguration.
216*01950c46SEmmanuel Vadot
217*01950c46SEmmanuel Vadot  --
218*01950c46SEmmanuel Vadot  [1] www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_partrecon.pdf
219*01950c46SEmmanuel Vadot  [2] tspace.library.utoronto.ca/bitstream/1807/67932/1/Byma_Stuart_A_201411_MAS_thesis.pdf
220*01950c46SEmmanuel Vadot  [3] https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_1/ug702.pdf
221*01950c46SEmmanuel Vadot
222*01950c46SEmmanuel Vadotproperties:
223*01950c46SEmmanuel Vadot  $nodename:
224*01950c46SEmmanuel Vadot    pattern: "^fpga-region(@.*|-([0-9]|[1-9][0-9]+))?$"
225*01950c46SEmmanuel Vadot
226*01950c46SEmmanuel Vadot  compatible:
227*01950c46SEmmanuel Vadot    const: fpga-region
228*01950c46SEmmanuel Vadot
229*01950c46SEmmanuel Vadot  reg:
230*01950c46SEmmanuel Vadot    maxItems: 1
231*01950c46SEmmanuel Vadot
232*01950c46SEmmanuel Vadot  ranges: true
233*01950c46SEmmanuel Vadot  "#address-cells": true
234*01950c46SEmmanuel Vadot  "#size-cells": true
235*01950c46SEmmanuel Vadot
236*01950c46SEmmanuel Vadot  config-complete-timeout-us:
237*01950c46SEmmanuel Vadot    description:
238*01950c46SEmmanuel Vadot      The maximum time in microseconds time for the FPGA to go to operating
239*01950c46SEmmanuel Vadot      mode after the region has been programmed.
240*01950c46SEmmanuel Vadot
241*01950c46SEmmanuel Vadot  encrypted-fpga-config:
242*01950c46SEmmanuel Vadot    type: boolean
243*01950c46SEmmanuel Vadot    description:
244*01950c46SEmmanuel Vadot      Set if the bitstream is encrypted.
245*01950c46SEmmanuel Vadot
246*01950c46SEmmanuel Vadot  external-fpga-config:
247*01950c46SEmmanuel Vadot    type: boolean
248*01950c46SEmmanuel Vadot    description:
249*01950c46SEmmanuel Vadot      Set if the FPGA has already been configured prior to OS boot up.
250*01950c46SEmmanuel Vadot
251*01950c46SEmmanuel Vadot  firmware-name:
252*01950c46SEmmanuel Vadot    maxItems: 1
253*01950c46SEmmanuel Vadot    description:
254*01950c46SEmmanuel Vadot      Should contain the name of an FPGA image file located on the firmware
255*01950c46SEmmanuel Vadot      search path. If this property shows up in a live device tree it indicates
256*01950c46SEmmanuel Vadot      that the FPGA has already been programmed with this image.
257*01950c46SEmmanuel Vadot      If this property is in an overlay targeting an FPGA region, it is
258*01950c46SEmmanuel Vadot      a request to program the FPGA with that image.
259*01950c46SEmmanuel Vadot
260*01950c46SEmmanuel Vadot  fpga-bridges:
261*01950c46SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
262*01950c46SEmmanuel Vadot    description:
263*01950c46SEmmanuel Vadot      Should contain a list of phandles to FPGA Bridges that must be
264*01950c46SEmmanuel Vadot      controlled during FPGA programming along with the parent FPGA bridge.
265*01950c46SEmmanuel Vadot      This property is optional if the FPGA Manager handles the bridges.
266*01950c46SEmmanuel Vadot      If the fpga-region is  the child of an fpga-bridge, the list should not
267*01950c46SEmmanuel Vadot      contain the parent bridge.
268*01950c46SEmmanuel Vadot
269*01950c46SEmmanuel Vadot  fpga-mgr:
270*01950c46SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
271*01950c46SEmmanuel Vadot    description:
272*01950c46SEmmanuel Vadot      Should contain a phandle to an FPGA Manager.  Child FPGA Regions
273*01950c46SEmmanuel Vadot      inherit this property from their ancestor regions.  An fpga-mgr property
274*01950c46SEmmanuel Vadot      in a region will override any inherited FPGA manager.
275*01950c46SEmmanuel Vadot
276*01950c46SEmmanuel Vadot  partial-fpga-config:
277*01950c46SEmmanuel Vadot    type: boolean
278*01950c46SEmmanuel Vadot    description:
279*01950c46SEmmanuel Vadot      Set if partial reconfiguration is to be done, otherwise full
280*01950c46SEmmanuel Vadot      reconfiguration is done.
281*01950c46SEmmanuel Vadot
282*01950c46SEmmanuel Vadot  region-freeze-timeout-us:
283*01950c46SEmmanuel Vadot    description:
284*01950c46SEmmanuel Vadot      The maximum time in microseconds to wait for bridges to successfully
285*01950c46SEmmanuel Vadot      become disabled before the region has been programmed.
286*01950c46SEmmanuel Vadot
287*01950c46SEmmanuel Vadot  region-unfreeze-timeout-us:
288*01950c46SEmmanuel Vadot    description:
289*01950c46SEmmanuel Vadot      The maximum time in microseconds to wait for bridges to successfully
290*01950c46SEmmanuel Vadot      become enabled after the region has been programmed.
291*01950c46SEmmanuel Vadot
292*01950c46SEmmanuel Vadotrequired:
293*01950c46SEmmanuel Vadot  - compatible
294*01950c46SEmmanuel Vadot  - fpga-mgr
295*01950c46SEmmanuel Vadot
296*01950c46SEmmanuel VadotadditionalProperties:
297*01950c46SEmmanuel Vadot  type: object
298*01950c46SEmmanuel Vadot
299*01950c46SEmmanuel Vadotexamples:
300*01950c46SEmmanuel Vadot  - |
301*01950c46SEmmanuel Vadot    /*
302*01950c46SEmmanuel Vadot     * Full Reconfiguration without Bridges with DT overlay
303*01950c46SEmmanuel Vadot     */
304*01950c46SEmmanuel Vadot    fpga_region0: fpga-region@0 {
305*01950c46SEmmanuel Vadot      compatible = "fpga-region";
306*01950c46SEmmanuel Vadot      reg = <0 0>;
307*01950c46SEmmanuel Vadot      #address-cells = <1>;
308*01950c46SEmmanuel Vadot      #size-cells = <1>;
309*01950c46SEmmanuel Vadot      fpga-mgr = <&fpga_mgr0>;
310*01950c46SEmmanuel Vadot      ranges = <0x10000000 0x20000000 0x10000000>;
311*01950c46SEmmanuel Vadot
312*01950c46SEmmanuel Vadot      /* DT Overlay contains: &fpga_region0 */
313*01950c46SEmmanuel Vadot      firmware-name = "zynq-gpio.bin";
314*01950c46SEmmanuel Vadot      gpio@40000000 {
315*01950c46SEmmanuel Vadot        compatible = "xlnx,xps-gpio-1.00.a";
316*01950c46SEmmanuel Vadot        reg = <0x40000000 0x10000>;
317*01950c46SEmmanuel Vadot        gpio-controller;
318*01950c46SEmmanuel Vadot        #gpio-cells = <2>;
319*01950c46SEmmanuel Vadot      };
320*01950c46SEmmanuel Vadot    };
321*01950c46SEmmanuel Vadot
322*01950c46SEmmanuel Vadot  - |
323*01950c46SEmmanuel Vadot    /*
324*01950c46SEmmanuel Vadot     * Partial reconfiguration with bridge
325*01950c46SEmmanuel Vadot     */
326*01950c46SEmmanuel Vadot    fpga_region1: fpga-region@0 {
327*01950c46SEmmanuel Vadot      compatible = "fpga-region";
328*01950c46SEmmanuel Vadot      reg = <0 0>;
329*01950c46SEmmanuel Vadot      ranges;
330*01950c46SEmmanuel Vadot      #address-cells = <1>;
331*01950c46SEmmanuel Vadot      #size-cells = <1>;
332*01950c46SEmmanuel Vadot      fpga-mgr = <&fpga_mgr1>;
333*01950c46SEmmanuel Vadot      fpga-bridges = <&fpga_bridge1>;
334*01950c46SEmmanuel Vadot      partial-fpga-config;
335*01950c46SEmmanuel Vadot
336*01950c46SEmmanuel Vadot      /* DT Overlay contains: &fpga_region1 */
337*01950c46SEmmanuel Vadot      firmware-name = "zynq-gpio-partial.bin";
338*01950c46SEmmanuel Vadot      clk: clock {
339*01950c46SEmmanuel Vadot        compatible = "fixed-factor-clock";
340*01950c46SEmmanuel Vadot        clocks = <&parentclk>;
341*01950c46SEmmanuel Vadot        #clock-cells = <0>;
342*01950c46SEmmanuel Vadot        clock-div = <2>;
343*01950c46SEmmanuel Vadot        clock-mult = <1>;
344*01950c46SEmmanuel Vadot      };
345*01950c46SEmmanuel Vadot      axi {
346*01950c46SEmmanuel Vadot        compatible = "simple-bus";
347*01950c46SEmmanuel Vadot        #address-cells = <1>;
348*01950c46SEmmanuel Vadot        #size-cells = <1>;
349*01950c46SEmmanuel Vadot        ranges;
350*01950c46SEmmanuel Vadot        gpio@40000000 {
351*01950c46SEmmanuel Vadot          compatible = "xlnx,xps-gpio-1.00.a";
352*01950c46SEmmanuel Vadot          reg = <0x40000000 0x10000>;
353*01950c46SEmmanuel Vadot          #gpio-cells = <2>;
354*01950c46SEmmanuel Vadot          gpio-controller;
355*01950c46SEmmanuel Vadot          clocks = <&clk>;
356*01950c46SEmmanuel Vadot        };
357*01950c46SEmmanuel Vadot      };
358*01950c46SEmmanuel Vadot    };
359