[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1570558807.git.a.gordeev.box@gmail.com>
Date: Wed, 9 Oct 2019 12:12:29 +0200
From: Alexander Gordeev <a.gordeev.box@...il.com>
To: linux-kernel@...r.kernel.org
Cc: Alexander Gordeev <a.gordeev.box@...il.com>,
Michael Chen <micchen@...era.com>, devel@...verdev.osuosl.org,
dmaengine@...r.kernel.org
Subject: [PATCH v2 0/2] dmaengine: avalon: Support Avalon-MM DMA Interface for PCIe
This series is against v5.4-rc2
Changes since v1:
- "avalon-dma" converted to "dmaengine" model;
- "avalon-drv" renamed to "avalon-test";
The Avalon-MM DMA Interface for PCIe is a design used in hard IPs for
Intel Arria, Cyclone or Stratix FPGAs. It transfers data between on-chip
memory and system memory.
Patch 1. This patch introduces "avalon-dma" driver that conforms to
"dmaengine" model.
Patch 2. The existing "dmatest" is not meant for DMA_SLAVE type of
transfers needed by "avalon-dma". Instead, custom "avalon-test" driver
was used to debug and stress "avalon-dma". If it could be useful for a
wider audience, I can make it optional part of "avalon-dma" sources or
leave it as separate driver. Marking patch 2 as RFC for now.
Testing was done using a custom FPGA build with Arria 10 FPGA streaming
data to target device RAM:
+----------+ +----------+ +----------+ +----------+
| Nios CPU |<-->| RAM |<-->| Avalon |<-PCIe->| Host CPU |
+----------+ +----------+ +----------+ +----------+
The RAM was examined for data integrity by examining RAM contents
from host CPU (indirectly - checking data DMAed to the system) and
from Nios CPU that has direct access to the device RAM. A companion
tool using "avalon-test" driver was used to DMA files to the device:
https://github.com/a-gordeev/avalon-tool.git
CC: Michael Chen <micchen@...era.com>
CC: devel@...verdev.osuosl.org
CC: dmaengine@...r.kernel.org
Alexander Gordeev (2):
dmaengine: avalon: Intel Avalon-MM DMA Interface for PCIe
dmaengine: avalon: Intel Avalon-MM DMA Interface for PCIe test
drivers/dma/Kconfig | 3 +
drivers/dma/Makefile | 2 +
drivers/dma/avalon-test/Kconfig | 23 +
drivers/dma/avalon-test/Makefile | 14 +
drivers/dma/avalon-test/avalon-dev.c | 65 +++
drivers/dma/avalon-test/avalon-dev.h | 33 ++
drivers/dma/avalon-test/avalon-ioctl.c | 128 +++++
drivers/dma/avalon-test/avalon-ioctl.h | 12 +
drivers/dma/avalon-test/avalon-mmap.c | 93 ++++
drivers/dma/avalon-test/avalon-mmap.h | 12 +
drivers/dma/avalon-test/avalon-sg-buf.c | 132 +++++
drivers/dma/avalon-test/avalon-sg-buf.h | 26 +
drivers/dma/avalon-test/avalon-util.c | 54 ++
drivers/dma/avalon-test/avalon-util.h | 12 +
drivers/dma/avalon-test/avalon-xfer.c | 697 ++++++++++++++++++++++++
drivers/dma/avalon-test/avalon-xfer.h | 28 +
drivers/dma/avalon/Kconfig | 88 +++
drivers/dma/avalon/Makefile | 6 +
drivers/dma/avalon/avalon-core.c | 432 +++++++++++++++
drivers/dma/avalon/avalon-core.h | 90 +++
drivers/dma/avalon/avalon-hw.c | 212 +++++++
drivers/dma/avalon/avalon-hw.h | 86 +++
drivers/dma/avalon/avalon-pci.c | 150 +++++
include/uapi/linux/avalon-ioctl.h | 32 ++
24 files changed, 2430 insertions(+)
create mode 100644 drivers/dma/avalon-test/Kconfig
create mode 100644 drivers/dma/avalon-test/Makefile
create mode 100644 drivers/dma/avalon-test/avalon-dev.c
create mode 100644 drivers/dma/avalon-test/avalon-dev.h
create mode 100644 drivers/dma/avalon-test/avalon-ioctl.c
create mode 100644 drivers/dma/avalon-test/avalon-ioctl.h
create mode 100644 drivers/dma/avalon-test/avalon-mmap.c
create mode 100644 drivers/dma/avalon-test/avalon-mmap.h
create mode 100644 drivers/dma/avalon-test/avalon-sg-buf.c
create mode 100644 drivers/dma/avalon-test/avalon-sg-buf.h
create mode 100644 drivers/dma/avalon-test/avalon-util.c
create mode 100644 drivers/dma/avalon-test/avalon-util.h
create mode 100644 drivers/dma/avalon-test/avalon-xfer.c
create mode 100644 drivers/dma/avalon-test/avalon-xfer.h
create mode 100644 drivers/dma/avalon/Kconfig
create mode 100644 drivers/dma/avalon/Makefile
create mode 100644 drivers/dma/avalon/avalon-core.c
create mode 100644 drivers/dma/avalon/avalon-core.h
create mode 100644 drivers/dma/avalon/avalon-hw.c
create mode 100644 drivers/dma/avalon/avalon-hw.h
create mode 100644 drivers/dma/avalon/avalon-pci.c
create mode 100644 include/uapi/linux/avalon-ioctl.h
--
2.23.0
Powered by blists - more mailing lists