From 8f3833bc73a21b25ecc5e388adb678a6e845a094 Mon Sep 17 00:00:00 2001 From: Daniel Krebs Date: Tue, 15 May 2018 17:18:05 +0200 Subject: [PATCH] ips/dma: rename pingpong to memcpy and always connect loopback --- fpga/include/villas/fpga/ips/dma.hpp | 2 +- fpga/lib/ips/dma.cpp | 8 +++++++- fpga/tests/dma.cpp | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/fpga/include/villas/fpga/ips/dma.hpp b/fpga/include/villas/fpga/ips/dma.hpp index 41a1fe115..d8b609794 100644 --- a/fpga/include/villas/fpga/ips/dma.hpp +++ b/fpga/include/villas/fpga/ips/dma.hpp @@ -55,7 +55,7 @@ public: bool readComplete() { return hasScatterGather() ? readCompleteSG() : readCompleteSimple(); } - bool pingPong(const MemoryBlock& src, const MemoryBlock& dst, size_t len); + bool memcpy(const MemoryBlock& src, const MemoryBlock& dst, size_t len); inline bool hasScatterGather() const diff --git a/fpga/lib/ips/dma.cpp b/fpga/lib/ips/dma.cpp index 3a5878441..ed9f0a888 100644 --- a/fpga/lib/ips/dma.cpp +++ b/fpga/lib/ips/dma.cpp @@ -132,8 +132,14 @@ Dma::reset() bool -Dma::pingPong(const MemoryBlock& src, const MemoryBlock& dst, size_t len) +Dma::memcpy(const MemoryBlock& src, const MemoryBlock& dst, size_t len) { + if(len == 0) + return true; + + if(not connectLoopback()) + return false; + if(this->read(dst, len) == 0) return false; diff --git a/fpga/tests/dma.cpp b/fpga/tests/dma.cpp index 63c1c0470..cb6b722f6 100644 --- a/fpga/tests/dma.cpp +++ b/fpga/tests/dma.cpp @@ -55,7 +55,7 @@ Test(fpga, dma, .description = "DMA") cr_assert(len == lenRandom, "Failed to get random data"); /* Start transfer */ - cr_assert(dma.pingPong(src.getMemoryBlock(), dst.getMemoryBlock(), len), + cr_assert(dma.memcpy(src.getMemoryBlock(), dst.getMemoryBlock(), len), "DMA ping pong failed"); /* Compare data */