[PATCH v4 0/5] R-Car Gen2 DMA Controller driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

This patch sets adds a new driver for the DMA controller found in the R-Car
Gen2 SoCs under the name "Direct Memory Access Controller for System
(SYS-DMAC)". Support for the "Realtime Direct Memory Access Controller
(RT-DMAC)" and "Direct Memory Access Controller for Audio (Audio-DMAC)" will
be added later.

For the rationale of why a new driver is needed, and performance figures,
please see the cover letter of v1 ("[PATCH 0/7] R-Car Gen2 DMA Controller
driver") [1].

The driver is now mostly feature-complete with support for hardware
descriptors lists (included as a separate patch to ease review) and cyclic
transfers. They have been tested with both the SDHI and audio drivers.

I've pushed the patches to

	git://linuxtv.org/pinchartl/fbdev.git dma/next

My audio test branch is available at

	git://linuxtv.org/pinchartl/fbdev.git dma/audio

Known issues are

- Stub system PM implementation. I'm working on this.

- Risk of conflict with Maxime's DMA engine rework series.

I believe the first issue isn't a show stopper. I can rebase the patches if
Maxime's patches get merged first.

Vinod, I would like to get this merged in v3.19 if possible.

Changes since v3:

- Add CONFIG_RENESAS_DMA config entry common to all Renesas DMA engines
- Add support for hardware descriptors lists previously posted as a separate
  patch series, with the following changes:
  - Typo fixes
  - Use GFP_NOWAIT to allocate hardware descriptors
  - Clear descriptor stage end interrupt when halting the channel
  - Program the descriptor interrupt pointer
  - Stop the channel in the IRQ handler only at the end of the transfer
  - Align allocated hwdesc size to page size
  - Ignore allocated hwdesc memory when the transfer doesn't use hwdescs

Changes since v2: 
 
- Replace several occurrences of size_t with unsigned int
- Remove unneeded local variable initialization
- Compute maximum transfer size at runtime
- Typo fixes
- Replace WARN_ON with WARN_ON_ONCE in interrupt handler
- Validate the number of channels
- Reset the device before enabling interrupts
- Use DMA_SLAVE_BUSWIDTH_* constants instead of numerical values
- Use devm_kasprintf
- Update to the new prep_dma_cyclic API
- Filter out channels from unrelated devices
- Fix typo in register definition
- Rename rcar_dmac_hw_desc to rcar_dmac_xfer_chunk
- Ignore the deprecated dma_slave_config direction field
- Allocate memory with GFP_NOWAIT in prep handlers
- Split runtime and system PM
- Move runtime PM to channel alloc/fre

Changes since v1:

- Allocate IRQ name strings dynamically
- Only call the callback function if one is supplied
- Don't overallocate sg list entries
- Allocate sg list entries with GFP_KERNEL
- Don't manage function clock manually
- Make channel filter ignore unrelated devices
- Document why the cyclic sg list is kcalloc'ed
- Remove ch15 from interrupt names in DT
- Replace CONFIG_OF with OF in Kconfig

[1] http://www.spinics.net/lists/linux-sh/msg33768.html

Laurent Pinchart (5):
  dmaengine: Add 16 bytes, 32 bytes and 64 bytes bus widths
  dmaengine: rcar-dmac: Remove duplicate sentence from DT bindings
  dmaengine: rcar-dmac: Add Renesas R-Car Gen2 DMA Controller (DMAC)
    driver
  dmaengine: rcar-dmac: Implement support for hardware descriptor lists
  dmaengine: rcar-dmac: Cache hardware descriptors memory

 .../devicetree/bindings/dma/renesas,rcar-dmac.txt  |    3 -
 drivers/dma/Makefile                               |    2 +-
 drivers/dma/sh/Kconfig                             |   14 +-
 drivers/dma/sh/Makefile                            |    1 +
 drivers/dma/sh/rcar-dmac.c                         | 1773 ++++++++++++++++++++
 include/linux/dmaengine.h                          |    3 +
 6 files changed, 1791 insertions(+), 5 deletions(-)
 create mode 100644 drivers/dma/sh/rcar-dmac.c

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux