# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Board configuration file: the Earl Grey chip on a Nexys Video FPGA board

source [find interface/nexysvideo-ft2232.cfg]
source [find target/lowrisc-earlgrey.cfg]

# FIXME: use srst and trst
reset_config none
