# Copyright (c) 2022 Meta
# SPDX-License-Identifier: Apache-2.0

description: Lattice iCE40 FPGA

compatible: "lattice,ice40-fpga"

include: spi-device.yaml

properties:
  load-mode:
    type: int
    required: true
    description: |
      Configure the method used to load the bitstream.
      The bitstream may be loaded via 2 separate methods:
      0 := load the FPGA via SPI transfer
      1 := load the FPGA via bit-banged GPIO
      Option 0 may be suitable for some high-end microcontrollers.
      Option 1 is suitable for low-end microcontrollers. This option
      requires clk-gpios, pico-gpios, gpios-set-reg, and gpios-clear-reg
      to be defined.
      Example usage:
      load-mode = <0>;
  cdone-gpios:
    type: phandle-array
    required: true
    description: |
      Configuration Done output from iCE40.
      Example usage:
      cdone-gpios = <&gpio0 0 0>;
  creset-gpios:
    type: phandle-array
    required: true
    description: |
      Configuration Reset input on iCE40.
      Example usage:
      creset-gpios = <&gpio0 1 GPIO_PUSH_PULL);
  clk-gpios:
    type: phandle-array
    description: |
      SPI Clock GPIO input on iCE40.
      Example usage:
      clk-gpios = <&gpio0 5 GPIO_PUSH_PULL>;
  pico-gpios:
    type: phandle-array
    description: |
      Peripheral-In Controller-Out GPIO input on iCE40.
      Example usage:
      pico-gpios = <&gpio0 7 GPIO_PUSH_PULL>;
  gpios-set-reg:
    type: int
    description: |
      Register address for setting a GPIO.
      Example usage:
      gpios-set-reg = <0x60004008>;
  gpios-clear-reg:
    type: int
    description: |
      Register address for clearing a GPIO.
      Example usage:
      gpios-clear-reg = <0x6000400c>;
  mhz-delay-count:
    type: int
    description: |
      in order to create a 1 MHz square wave in the following
      process.
      while(true) {
        *gpios_set_reg |= BIT(n);
        for(int i = mhz_delay_count; i > 0; --i);
        *gpios_clear_reg |= BIT(n);
        for(int i = mhz_delay_count; i > 0; --i);
      }
      Example usage / default:
      mhz-delay-count = <0>;
  creset-delay-ns:
    type: int
    description: |
      Delay (in nanoseconds) between asserting CRESET_B and releasing CRESET_B.
      Example usage / default:
      creset-delay-ns = <200>;
  config-delay-us:
    type: int
    description: |
      Delay (in microseconds) after releasing CRESET_B to clear internal configuration memory.
      Example usage / default:
      config-delay-us = <300>;
  leading-clocks:
    type: int
    description: |
      Prior to sending the bitstream, issue this number of leading clocks with SPI_CS pulled high.
      Example usage / default:
      leading-clocks = <8>;
  trailing-clocks:
    type: int
    description: |
      After sending the bitstream, issue this number of trailing clocks with SPI_CS pulled high.
      Example usage / default:
      trailing-clocks = <49>;
