[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20191003090945.29210-1-green.wan@sifive.com>
Date: Thu, 3 Oct 2019 17:09:00 +0800
From: Green Wan <green.wan@...ive.com>
To: linux-hackers@...ive.com
Cc: Green Wan <green.wan@...ive.com>, Vinod Koul <vkoul@...nel.org>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Paul Walmsley <paul.walmsley@...ive.com>,
Palmer Dabbelt <palmer@...ive.com>,
Albert Ou <aou@...s.berkeley.edu>,
Dan Williams <dan.j.williams@...el.com>,
Mauro Carvalho Chehab <mchehab+samsung@...nel.org>,
"David S. Miller" <davem@...emloft.net>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>,
"Paul E. McKenney" <paulmck@...ux.ibm.com>,
Yash Shah <yash.shah@...ive.com>,
Bin Meng <bmeng.cn@...il.com>,
Sagar Kadam <sagar.kadam@...ive.com>,
dmaengine@...r.kernel.org, devicetree@...r.kernel.org,
linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: [PATCH v4 0/4] dmaengine: sf-pdma: Add platform dma driver
Add PDMA driver support for SiFive HiFive Unleashed RevA00 board. Mainly follows
DMAengine controller doc[1] to implement and take other DMA drivers as reference.
Such as
- drivers/dma/fsl-edma.c
- drivers/dma/dw-edma/
- drivers/dma/pxa-dma.c
Using DMA test client[2] to test. Detailed datasheet is doc[3]. Driver supports:
- 4 physical DMA channels, share same DONE and error interrupt handler.
- Support MEM_TO_MEM
- Tested by DMA test client
- patches include DT Bindgins document and dts for fu450-c000 SoC. Separate dts
patch for easier review and apply to different branch or SoC platform.
- retry 1 time if DMA error occurs.
[Reference Doc]
[1] ./Documentation/driver-api/dmaengine/provider.rst
[2] ./Documentation/driver-api/dmaengine/dmatest.rst
[3] https://static.dev.sifive.com/FU540-C000-v1.0.pdf
[Simple steps to test of DMA Test client]
$ echo 1 > /sys/module/dmatest/parameters/iterations
$ echo dma0chan0 > /sys/module/dmatest/parameters/channel
$ echo dma0chan1 > /sys/module/dmatest/parameters/channel
$ echo dma0chan2 > /sys/module/dmatest/parameters/channel
$ echo dma0chan3 > /sys/module/dmatest/parameters/channel
$ echo 1 > /sys/module/dmatest/parameters/run
[Expected test result]
[ 267.563323] dmatest: dma0chan0-copy0: summary 45629 tests, 0 failures 38769.01 iops 309661 KB/s (0)
[ 267.572427] dmatest: dma0chan1-copy0: summary 45863 tests, 0 failures 40286.85 iops 321643 KB/s (0)
[ 267.581392] dmatest: dma0chan2-copy0: summary 45975 tests, 0 failures 41178.48 iops 328740 KB/s (0)
[ 267.590542] dmatest: dma0chan3-copy0: summary 44768 tests, 0 failures 38560.29 iops 307726 KB/s (0)
Green Wan (4):
dt-bindings: dmaengine: sf-pdma: add bindins for SiFive PDMA
riscv: dts: add support for PDMA device of HiFive Unleashed Rev A00
dmaengine: sf-pdma: add platform DMA support for HiFive Unleashed A00
MAINTAINERS: Add Green as SiFive PDMA driver maintainer
.../bindings/dma/sifive,fu540-c000-pdma.yaml | 55 ++
MAINTAINERS | 6 +
arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 7 +
drivers/dma/Kconfig | 2 +
drivers/dma/Makefile | 1 +
drivers/dma/sf-pdma/Kconfig | 6 +
drivers/dma/sf-pdma/Makefile | 1 +
drivers/dma/sf-pdma/sf-pdma.c | 601 ++++++++++++++++++
drivers/dma/sf-pdma/sf-pdma.h | 124 ++++
9 files changed, 803 insertions(+)
create mode 100644 Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
create mode 100644 drivers/dma/sf-pdma/Kconfig
create mode 100644 drivers/dma/sf-pdma/Makefile
create mode 100644 drivers/dma/sf-pdma/sf-pdma.c
create mode 100644 drivers/dma/sf-pdma/sf-pdma.h
--
2.17.1
Powered by blists - more mailing lists