# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/fpga/fpga-region.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: FPGA Region

maintainers:
  - Michal Simek <michal.simek@amd.com>

description: |
  CONTENTS
   - Introduction
   - Terminology
   - Sequence
   - FPGA Region
   - Supported Use Models
   - Constraints


  Introduction
  ============

  FPGA Regions represent FPGA's and partial reconfiguration regions of FPGA's in
  the Device Tree.  FPGA Regions provide a way to program FPGAs under device tree
  control.

  The documentation hits some of the high points of FPGA usage and
  attempts to include terminology used by both major FPGA manufacturers.  This
  document isn't a replacement for any manufacturers specifications for FPGA
  usage.


  Terminology
  ===========

  Full Reconfiguration
   * The entire FPGA is programmed.

  Partial Reconfiguration (PR)
   * A section of an FPGA is reprogrammed while the rest of the FPGA is not
     affected.
   * Not all FPGA's support PR.

  Partial Reconfiguration Region (PRR)
   * Also called a "reconfigurable partition"
   * A PRR is a specific section of an FPGA reserved for reconfiguration.
   * A base (or static) FPGA image may create a set of PRR's that later may
     be independently reprogrammed many times.
   * The size and specific location of each PRR is fixed.
   * The connections at the edge of each PRR are fixed.  The image that is loaded
     into a PRR must fit and must use a subset of the region's connections.
   * The busses within the FPGA are split such that each region gets its own
     branch that may be gated independently.

  Persona
   * Also called a "partial bit stream"
   * An FPGA image that is designed to be loaded into a PRR.  There may be
     any number of personas designed to fit into a PRR, but only one at a time
     may be loaded.
   * A persona may create more regions.

  FPGA Bridge
   * FPGA Bridges gate bus signals between a host and FPGA.
   * FPGA Bridges should be disabled while the FPGA is being programmed to
     prevent spurious signals on the cpu bus and to the soft logic.
   * FPGA bridges may be actual hardware or soft logic on an FPGA.
   * During Full Reconfiguration, hardware bridges between the host and FPGA
     will be disabled.
   * During Partial Reconfiguration of a specific region, that region's bridge
     will be used to gate the busses.  Traffic to other regions is not affected.
   * In some implementations, the FPGA Manager transparently handles gating the
     buses, eliminating the need to show the hardware FPGA bridges in the
     device tree.
   * An FPGA image may create a set of reprogrammable regions, each having its
     own bridge and its own split of the busses in the FPGA.

  FPGA Manager
   * An FPGA Manager is a hardware block that programs an FPGA under the control
     of a host processor.

  Base Image
   * Also called the "static image"
   * An FPGA image that is designed to do full reconfiguration of the FPGA.
   * A base image may set up a set of partial reconfiguration regions that may
     later be reprogrammed.

      ----------------       ----------------------------------
      |  Host CPU    |       |             FPGA               |
      |              |       |                                |
      |          ----|       |       -----------    --------  |
      |          | H |       |   |==>| Bridge0 |<==>| PRR0 |  |
      |          | W |       |   |   -----------    --------  |
      |          |   |       |   |                            |
      |          | B |<=====>|<==|   -----------    --------  |
      |          | R |       |   |==>| Bridge1 |<==>| PRR1 |  |
      |          | I |       |   |   -----------    --------  |
      |          | D |       |   |                            |
      |          | G |       |   |   -----------    --------  |
      |          | E |       |   |==>| Bridge2 |<==>| PRR2 |  |
      |          ----|       |       -----------    --------  |
      |              |       |                                |
      ----------------       ----------------------------------

  Figure 1: An FPGA set up with a base image that created three regions.  Each
  region (PRR0-2) gets its own split of the busses that is independently gated by
  a soft logic bridge (Bridge0-2) in the FPGA.  The contents of each PRR can be
  reprogrammed independently while the rest of the system continues to function.


  Sequence
  ========

  When a DT overlay that targets an FPGA Region is applied, the FPGA Region will
  do the following:

   1. Disable appropriate FPGA bridges.
   2. Program the FPGA using the FPGA manager.
   3. Enable the FPGA bridges.
   4. The Device Tree overlay is accepted into the live tree.
   5. Child devices are populated.

  When the overlay is removed, the child nodes will be removed and the FPGA Region
  will disable the bridges.


  FPGA Region
  ===========

  FPGA Regions represent FPGA's and FPGA PR regions in the device tree.  An FPGA
  Region brings together the elements needed to program on a running system and
  add the child devices:

   * FPGA Manager
   * FPGA Bridges
   * image-specific information needed to the programming.
   * child nodes

  The intended use is that a Device Tree overlay (DTO) can be used to reprogram an
  FPGA while an operating system is running.

  An FPGA Region that exists in the live Device Tree reflects the current state.
  If the live tree shows a "firmware-name" property or child nodes under an FPGA
  Region, the FPGA already has been programmed.  A DTO that targets an FPGA Region
  and adds the "firmware-name" property is taken as a request to reprogram the
  FPGA.  After reprogramming is successful, the overlay is accepted into the live
  tree.

  The base FPGA Region in the device tree represents the FPGA and supports full
  reconfiguration.  It must include a phandle to an FPGA Manager.  The base
  FPGA region will be the child of one of the hardware bridges (the bridge that
  allows register access) between the cpu and the FPGA.  If there are more than
  one bridge to control during FPGA programming, the region will also contain a
  list of phandles to the additional hardware FPGA Bridges.

  For partial reconfiguration (PR), each PR region will have an FPGA Region.
  These FPGA regions are children of FPGA bridges which are then children of the
  base FPGA region.  The "Full Reconfiguration to add PRR's" example below shows
  this.

  If an FPGA Region does not specify an FPGA Manager, it will inherit the FPGA
  Manager specified by its ancestor FPGA Region.  This supports both the case
  where the same FPGA Manager is used for all of an FPGA as well the case where
  a different FPGA Manager is used for each region.

  FPGA Regions do not inherit their ancestor FPGA regions' bridges.  This prevents
  shutting down bridges that are upstream from the other active regions while one
  region is getting reconfigured (see Figure 1 above).  During PR, the FPGA's
  hardware bridges remain enabled.  The PR regions' bridges will be FPGA bridges
  within the static image of the FPGA.


  Supported Use Models
  ====================

  In all cases the live DT must have the FPGA Manager, FPGA Bridges (if any), and
  a FPGA Region.  The target of the Device Tree Overlay is the FPGA Region.  Some
  uses are specific to an FPGA device.

   * No FPGA Bridges
     In this case, the FPGA Manager which programs the FPGA also handles the
     bridges behind the scenes.  No FPGA Bridge devices are needed for full
     reconfiguration.

   * Full reconfiguration with hardware bridges
     In this case, there are hardware bridges between the processor and FPGA that
     need to be controlled during full reconfiguration.  Before the overlay is
     applied, the live DT must include the FPGA Manager, FPGA Bridges, and a
     FPGA Region.  The FPGA Region is the child of the bridge that allows
     register access to the FPGA.  Additional bridges may be listed in a
     fpga-bridges property in the FPGA region or in the device tree overlay.

   * Partial reconfiguration with bridges in the FPGA
     In this case, the FPGA will have one or more PRR's that may be programmed
     separately while the rest of the FPGA can remain active.  To manage this,
     bridges need to exist in the FPGA that can gate the buses going to each FPGA
     region while the buses are enabled for other sections.  Before any partial
     reconfiguration can be done, a base FPGA image must be loaded which includes
     PRR's with FPGA bridges.  The device tree should have an FPGA region for each
     PRR.

  Constraints
  ===========

  It is beyond the scope of this document to fully describe all the FPGA design
  constraints required to make partial reconfiguration work[1] [2] [3], but a few
  deserve quick mention.

  A persona must have boundary connections that line up with those of the partition
  or region it is designed to go into.

  During programming, transactions through those connections must be stopped and
  the connections must be held at a fixed logic level.  This can be achieved by
  FPGA Bridges that exist on the FPGA fabric prior to the partial reconfiguration.

  --
  [1] www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_partrecon.pdf
  [2] tspace.library.utoronto.ca/bitstream/1807/67932/1/Byma_Stuart_A_201411_MAS_thesis.pdf
  [3] https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_1/ug702.pdf

properties:
  $nodename:
    pattern: "^fpga-region(@.*|-([0-9]|[1-9][0-9]+))?$"

  compatible:
    const: fpga-region

  reg:
    maxItems: 1

  ranges: true
  "#address-cells": true
  "#size-cells": true

  config-complete-timeout-us:
    description:
      The maximum time in microseconds time for the FPGA to go to operating
      mode after the region has been programmed.

  encrypted-fpga-config:
    type: boolean
    description:
      Set if the bitstream is encrypted.

  external-fpga-config:
    type: boolean
    description:
      Set if the FPGA has already been configured prior to OS boot up.

  firmware-name:
    maxItems: 1
    description:
      Should contain the name of an FPGA image file located on the firmware
      search path. If this property shows up in a live device tree it indicates
      that the FPGA has already been programmed with this image.
      If this property is in an overlay targeting an FPGA region, it is
      a request to program the FPGA with that image.

  fpga-bridges:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description:
      Should contain a list of phandles to FPGA Bridges that must be
      controlled during FPGA programming along with the parent FPGA bridge.
      This property is optional if the FPGA Manager handles the bridges.
      If the fpga-region is  the child of an fpga-bridge, the list should not
      contain the parent bridge.

  fpga-mgr:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Should contain a phandle to an FPGA Manager.  Child FPGA Regions
      inherit this property from their ancestor regions.  An fpga-mgr property
      in a region will override any inherited FPGA manager.

  partial-fpga-config:
    type: boolean
    description:
      Set if partial reconfiguration is to be done, otherwise full
      reconfiguration is done.

  region-freeze-timeout-us:
    description:
      The maximum time in microseconds to wait for bridges to successfully
      become disabled before the region has been programmed.

  region-unfreeze-timeout-us:
    description:
      The maximum time in microseconds to wait for bridges to successfully
      become enabled after the region has been programmed.

required:
  - compatible
  - fpga-mgr

additionalProperties:
  type: object

examples:
  - |
    /*
     * Full Reconfiguration without Bridges with DT overlay
     */
    fpga_region0: fpga-region@0 {
      compatible = "fpga-region";
      reg = <0 0>;
      #address-cells = <1>;
      #size-cells = <1>;
      fpga-mgr = <&fpga_mgr0>;
      ranges = <0x10000000 0x20000000 0x10000000>;

      /* DT Overlay contains: &fpga_region0 */
      firmware-name = "zynq-gpio.bin";
      gpio@40000000 {
        compatible = "xlnx,xps-gpio-1.00.a";
        reg = <0x40000000 0x10000>;
        gpio-controller;
        #gpio-cells = <2>;
      };
    };

  - |
    /*
     * Partial reconfiguration with bridge
     */
    fpga_region1: fpga-region@0 {
      compatible = "fpga-region";
      reg = <0 0>;
      ranges;
      #address-cells = <1>;
      #size-cells = <1>;
      fpga-mgr = <&fpga_mgr1>;
      fpga-bridges = <&fpga_bridge1>;
      partial-fpga-config;

      /* DT Overlay contains: &fpga_region1 */
      firmware-name = "zynq-gpio-partial.bin";
      clk: clock {
        compatible = "fixed-factor-clock";
        clocks = <&parentclk>;
        #clock-cells = <0>;
        clock-div = <2>;
        clock-mult = <1>;
      };
      axi {
        compatible = "simple-bus";
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;
        gpio@40000000 {
          compatible = "xlnx,xps-gpio-1.00.a";
          reg = <0x40000000 0x10000>;
          #gpio-cells = <2>;
          gpio-controller;
          clocks = <&clk>;
        };
      };
    };
