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