xref: /linux/Documentation/devicetree/bindings/fpga/lattice,sysconfig.yaml (revision cbdb1f163af2bb90d01be1f0263df1d8d5c9d9d3)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/fpga/lattice,sysconfig.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Lattice Slave SPI sysCONFIG FPGA manager
8
9maintainers:
10  - Ivan Bornyakov <i.bornyakov@metrotek.ru>
11
12description: |
13  Lattice sysCONFIG port, which is used for FPGA configuration, among others,
14  have Slave Serial Peripheral Interface. Only full reconfiguration is
15  supported.
16
17  Programming of ECP5 is done by writing uncompressed bitstream image in .bit
18  format into FPGA's SRAM configuration memory.
19
20properties:
21  compatible:
22    enum:
23      - lattice,sysconfig-ecp5
24
25  reg:
26    maxItems: 1
27
28  program-gpios:
29    description:
30      A GPIO line connected to PROGRAMN (active low) pin of the device.
31      Initiates configuration sequence.
32    maxItems: 1
33
34  init-gpios:
35    description:
36      A GPIO line connected to INITN (active low) pin of the device.
37      Indicates that the FPGA is ready to be configured.
38    maxItems: 1
39
40  done-gpios:
41    description:
42      A GPIO line connected to DONE (active high) pin of the device.
43      Indicates that the configuration sequence is complete.
44    maxItems: 1
45
46required:
47  - compatible
48  - reg
49
50allOf:
51  - $ref: /schemas/spi/spi-peripheral-props.yaml
52
53  - if:
54      properties:
55        compatible:
56          contains:
57            const: lattice,sysconfig-ecp5
58    then:
59      properties:
60        spi-max-frequency:
61          maximum: 60000000
62
63unevaluatedProperties: false
64
65examples:
66  - |
67    #include <dt-bindings/gpio/gpio.h>
68
69    spi {
70        #address-cells = <1>;
71        #size-cells = <0>;
72
73        fpga-mgr@0 {
74            compatible = "lattice,sysconfig-ecp5";
75            reg = <0>;
76            spi-max-frequency = <20000000>;
77            program-gpios = <&gpio3 4 GPIO_ACTIVE_LOW>;
78            init-gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
79            done-gpios = <&gpio3 2 GPIO_ACTIVE_HIGH>;
80        };
81    };
82