spi: Add SPI Flash controller
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 5 Jun 2020 01:32:08 +0000 (11:32 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 12 Jun 2020 14:01:48 +0000 (00:01 +1000)
commitcc4dcb3597914bcf6730cdbabc7fbe3605c80c94
treed8b3d59c901074fe3d9f18a60aa9c1e0c6823099
parent15467fe536e6d757c8790b0171adde2c549d3596
spi: Add SPI Flash controller

This adds an SPI flash controller which supports direct
memory-mapped access to the flash along with a manual
mode to send commands.

The direct mode can be set via generic to default to single
wire or quad mode. The controller supports normal, dual and quad
accesses with configurable commands, clock divider, dummy clocks
etc...

The SPI clock can be an even divider of sys_clk starting at 2
(so max 50Mhz with our typical Arty designs).

A flash offset is carried via generics to syscon to tell SW about
which portion of the flash is reserved for the FPGA bitfile. There
is currently no plumbing to make the CPU reset past that address (TBD).

Note: Operating at 50Mhz has proven unreliable without adding some
delay to the sampling of the input data. I'm working in improving
this, in the meantime, I'm leaving the default set at 25 Mhz.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
12 files changed:
core_tb.vhdl
fpga/arty_a7.xdc
fpga/nexys-video.xdc
fpga/top-arty.vhdl
fpga/top-generic.vhdl
fpga/top-nexys-video.vhdl
include/microwatt_soc.h
microwatt.core
soc.vhdl
spi_flash_ctrl.vhdl [new file with mode: 0644]
spi_rxtx.vhdl [new file with mode: 0644]
syscon.vhdl