From f40a245f9593849723f0396dbbd5a1109de82b98 Mon Sep 17 00:00:00 2001 From: sorgelig Date: Mon, 8 Jun 2020 02:26:53 +0800 Subject: [PATCH] minimig: use fast io for HDD transfer. --- fpga_io.cpp | 39 +++++---------------------------------- spi.cpp | 4 ++-- 2 files changed, 7 insertions(+), 36 deletions(-) diff --git a/fpga_io.cpp b/fpga_io.cpp index d74a7f2..36987f0 100644 --- a/fpga_io.cpp +++ b/fpga_io.cpp @@ -38,29 +38,8 @@ static struct nic301_registers *nic301_regs = (nic301_registers *)SOCFPGA static uint32_t *map_base; static int fd; -static __inline void writel(uint32_t val, const void* reg) -{ -/* - if(!IS_REG(reg)) - { - printf("ERROR: Trying to write undefined address: %p\n.", reg); - fatal(-1); - } -*/ - *MAP_ADDR(reg) = val; -} - -static __inline uint32_t readl(const void* reg) -{ -/* - if (!IS_REG(reg)) - { - printf("ERROR: Trying to read undefined address: %p\n.", reg); - fatal(-1); - } -*/ - return *MAP_ADDR(reg); -} +#define writel(val, reg) *MAP_ADDR(reg) = val +#define readl(reg) *MAP_ADDR(reg) #define clrsetbits_le32(addr, clear, set) writel((readl(addr) & ~(clear)) | (set), addr) #define setbits_le32(addr, set) writel( readl(addr) | (set), addr) @@ -540,15 +519,8 @@ void inline fpga_gpo_write(uint32_t value) writel(value, (void*)(SOCFPGA_MGR_ADDRESS + 0x10)); } -uint32_t inline fpga_gpo_read() -{ - return gpo_copy; //readl((void*)(SOCFPGA_MGR_ADDRESS + 0x10)); -} - -int inline fpga_gpi_read() -{ - return readl((void*)(SOCFPGA_MGR_ADDRESS + 0x14)); -} +#define fpga_gpo_read() gpo_copy //readl((void*)(SOCFPGA_MGR_ADDRESS + 0x10)) +#define fpga_gpi_read() (int)readl((void*)(SOCFPGA_MGR_ADDRESS + 0x14)) void fpga_core_write(uint32_t offset, uint32_t value) { @@ -591,7 +563,7 @@ int fpga_core_id() int fpga_get_fio_size() { - return (fpga_gpi_read()>>16) & 1; + return (fpga_gpi_read() >> 16) & 1; } int fpga_get_io_version() @@ -720,7 +692,6 @@ uint16_t fpga_spi(uint16_t word) uint16_t fpga_spi_fast(uint16_t word) { uint32_t gpo = (fpga_gpo_read() & ~(0xFFFF | SSPI_STROBE)) | word; - fpga_gpo_write(gpo); fpga_gpo_write(gpo | SSPI_STROBE); fpga_gpo_write(gpo); diff --git a/spi.cpp b/spi.cpp index d859146..cb59be5 100644 --- a/spi.cpp +++ b/spi.cpp @@ -227,7 +227,7 @@ void spi_block_write_16be(const uint16_t *addr) while (len--) { tmp = *addr++; - spi_w(SWAPW(tmp)); + fpga_spi_fast(SWAPW(tmp)); } } @@ -237,7 +237,7 @@ void spi_block_read_16be(uint16_t *addr) uint16_t tmp; while (len--) { - tmp = spi_w(0xFFFF); + tmp = fpga_spi_fast(0xFFFF); *addr++ = SWAPW(tmp); } }