From 7b3dce65c11ff1953c3daa8dc1e27cd3203365d1 Mon Sep 17 00:00:00 2001 From: Joey Bushagour Date: Wed, 28 Jul 2021 10:34:02 -0500 Subject: [PATCH] Add option for different Fomu SPI chips. Signed-off-by: Joey Bushagour --- litex_boards/targets/kosagi_fomu.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/litex_boards/targets/kosagi_fomu.py b/litex_boards/targets/kosagi_fomu.py index 79f75c7..f75e5e3 100755 --- a/litex_boards/targets/kosagi_fomu.py +++ b/litex_boards/targets/kosagi_fomu.py @@ -69,7 +69,8 @@ class _CRG(Module): class BaseSoC(SoCCore): mem_map = {**SoCCore.mem_map, **{"spiflash": 0x80000000}} - def __init__(self, bios_flash_offset, sys_clk_freq=int(12e6), with_led_chaser=True, **kwargs): + def __init__(self, bios_flash_offset, spi_chip='AT25SF161', sys_clk_freq=int(12e6), + with_led_chaser=True, **kwargs): kwargs["uart_name"] = "usb_acm" # Enforce UART to USB-ACM platform = fomu_pvt.Platform() @@ -99,9 +100,18 @@ class BaseSoC(SoCCore): self.bus.add_slave("sram", self.spram.bus, SoCRegion(size=128*kB)) # SPI Flash -------------------------------------------------------------------------------- - from litespi.modules import AT25SF161 + from litespi.modules import AT25SF161, GD25Q16C, MX25R1635F, W25Q128JV from litespi.opcodes import SpiNorFlashOpCodes as Codes - self.add_spi_flash(mode="4x", module=AT25SF161(Codes.READ_1_1_4), with_master=False) + + # lambdas for lazy module instantiation. + spi_provider = { + 'AT25SF161': lambda: AT25SF161(Codes.READ_1_1_4), + 'GD25Q16C': lambda: GD25Q16C(Codes.READ_1_1_1), + 'MX25R1635F': lambda: MX25R1635F(Codes.READ_1_1_4), + 'W25Q128JV': lambda: W25Q128JV(Codes.READ_1_1_4), + } + + self.add_spi_flash(mode="4x", module=spi_provider[spi_chip](), with_master=False) #self.add_spi_flash(mode="1x", dummy_cycles=8) # LiteX SPI Flash Core. # Add ROM linker region --------------------------------------------------------------------