mbox series

[v6,0/4] dmaengine: sf-pdma: Add platform dma driver

Message ID 20191107084955.7580-1-green.wan@sifive.com (mailing list archive)
Headers show
Series dmaengine: sf-pdma: Add platform dma driver | expand

Message

Green Wan Nov. 7, 2019, 8:49 a.m. UTC
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.

[Changelog]
 - v6 patch
   . Remove incorrect reviewer and fix commit number
   . Revise sf_pdma_desc_residue() to report residue according to cookie. The tx
     could be in completed, in-progress state or still in pending list.
   . Refer to fsl-edma.c to free irq and kill tasklet before exit.
   . Minor fixes include left-justisfied, empty line and unnecessary line.

[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                 | 621 ++++++++++++++++++
 drivers/dma/sf-pdma/sf-pdma.h                 | 122 ++++
 9 files changed, 821 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


base-commit: 4dd58158254c8a027f2bf5060b72ef64cafa3b9d

Comments

Vinod Koul Nov. 14, 2019, 7:15 a.m. UTC | #1
On 07-11-19, 16:49, Green Wan wrote:
> 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.

I have applied this expect dt change. I see some warns due to missing
kernel-doc style comments with W=1, please fix that and send update on
top of these

Thanks
Green Wan Nov. 14, 2019, 10:53 a.m. UTC | #2
Thanks, Vinod,

I found there are "/**" in the beginning of files but not for
commenting function purpose. Those comments cause kernel-doc W=1
warning. I've fixed them and rebased to latest source. will send the
patch after running regression tests soon.

--
Green

On Thu, Nov 14, 2019 at 3:15 PM Vinod Koul <vkoul@kernel.org> wrote:
>
> On 07-11-19, 16:49, Green Wan wrote:
> > 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.
>
> I have applied this expect dt change. I see some warns due to missing
> kernel-doc style comments with W=1, please fix that and send update on
> top of these
>
> Thanks
> --
> ~Vinod