Staging
v0.8.1
https://github.com/torvalds/linux
Raw File
Tip revision: ce9ecca0238b140b88f43859b211c9fdfd8e5b70 authored by Linus Torvalds on 17 September 2023, 21:40:24 UTC
Linux 6.6-rc2
Tip revision: ce9ecca
lattice,sysconfig.yaml
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fpga/lattice,sysconfig.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Lattice Slave SPI sysCONFIG FPGA manager

maintainers:
  - Vladimir Georgiev <v.georgiev@metrotek.ru>

description: |
  Lattice sysCONFIG port, which is used for FPGA configuration, among others,
  have Slave Serial Peripheral Interface. Only full reconfiguration is
  supported.

  Programming of ECP5 is done by writing uncompressed bitstream image in .bit
  format into FPGA's SRAM configuration memory.

properties:
  compatible:
    enum:
      - lattice,sysconfig-ecp5

  reg:
    maxItems: 1

  program-gpios:
    description:
      A GPIO line connected to PROGRAMN (active low) pin of the device.
      Initiates configuration sequence.
    maxItems: 1

  init-gpios:
    description:
      A GPIO line connected to INITN (active low) pin of the device.
      Indicates that the FPGA is ready to be configured.
    maxItems: 1

  done-gpios:
    description:
      A GPIO line connected to DONE (active high) pin of the device.
      Indicates that the configuration sequence is complete.
    maxItems: 1

required:
  - compatible
  - reg

allOf:
  - $ref: /schemas/spi/spi-peripheral-props.yaml

  - if:
      properties:
        compatible:
          contains:
            const: lattice,sysconfig-ecp5
    then:
      properties:
        spi-max-frequency:
          maximum: 60000000

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        fpga-mgr@0 {
            compatible = "lattice,sysconfig-ecp5";
            reg = <0>;
            spi-max-frequency = <20000000>;
            program-gpios = <&gpio3 4 GPIO_ACTIVE_LOW>;
            init-gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
            done-gpios = <&gpio3 2 GPIO_ACTIVE_HIGH>;
        };
    };
back to top