blob: f306b6c3dc129251624f154ca17d8ff8d8a2db5a [file] [log] [blame]
# 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>;