[PATCH v3 00/24] dmaengine/ARM: Merge the edma drivers into one

From: Peter Ujfalusi
Date: Tue Sep 22 2015 - 05:55:31 EST


Hi,

Changes since v2:
- devm_kasprintf format string fixed
- Additional patch to enable dynamic paRAM slot usage when the channel mapping
is supported by the eDMA module.
On am335x we have 256 paRAM slots and 64 DMA channels, this means that we had
64 slots 'locked away' all the time. The dynamic paRAM slot logic will allow
us to use all 256 slots freely for any purpose.

Changes since v1:
- Convert edma platform device registration to use platform_device_register_full
- Moved the PM callback also to the dmaengine driver - missed in v1
- Commit message added to:
ARM/dmaengine: edma: Remove limitation on the number of eDMA controllers
- New patch which reads the flag for the channel mapping support in one place

Cover letter:

with this series the edma two driver setup will be changed to have only one
driver to support eDMA3. The legacy edma interface will be removed and eDMA can
only be used via dmaengine API from this point on.
In order to do the merge the following improvements has been done:
- One driver instance per eDMA:
- Any number of eDMA instances are supported (both legacy and DT boot)
- Not relying on global variables, arrays, etc
- Code simplification and optimizations in several places

This change will also help us to do bigger changes in the eDMA driver since,
since now we have only one driver to work with.

The series has been tested on:
da850-evm (OMAP-L138)
- with legacy and DT boot (both eDMA0 and eDMA1 is enabled)
- In code swapping the eDMA instances in legacy mode to make sure the second
instance is handled correctly.

am335x-evmsk
- DT boot

I think this series could go via the dmaengine tree. Changes are trivial under
arch/arm/

Regards,
Peter
---
Peter Ujfalusi (24):
ARM: common: edma: Fix channel parameter for irq callbacks
ARM: common: edma: Remove unused functions
dmaengine: edma: Simplify and optimize the edma_execute path
ARM: davinci/common: Convert edma driver to handle one eDMA instance
per driver
ARM/dmaengine: edma: Move of_dma_controller_register to the dmaengine
driver
ARM: common: edma: Internal API to use pointer to 'struct edma'
ARM/dmaengine: edma: Public API to use private struct pointer
ARM/dmaengine: edma: Remove limitation on the number of eDMA
controllers
ARM: davinci: Use platform_device_register_full() to create pdev for
eDMA
ARM: davinci: Add set dma_mask to eDMA devices
dmaengine: edma: Allocate memory dynamically for bitmaps and
structures
dmaengine: edma: Parameter alignment and long line fixes
dmaengine: edma: Use devm_kcalloc when possible
dmaengine: edma: Cleanup regarding the use of dev around the code
dmaengine: edma: Use dev_dbg instead pr_debug
dmaengine: edma: Use the edma_write_slot instead open coded
memcpy_toio
dmaengine: edma: Print warning when linking slots from different eDMA
dmaengine: edma: Consolidate the comments for functions
dmaengine: edma: Simplify the interrupt handling
dmaengine: edma: Move the pending error check into helper function
dmaengine: edma: Simplify and optimize ccerr interrupt handler
dmaengine: edma: Read channel mapping support only once from HW
dmaengine: edma: Rename bitfields for slot and channel usage tracking
dmaengine: edma: Dynamic paRAM slot handling if HW supports it

arch/arm/Kconfig | 1 -
arch/arm/common/Kconfig | 3 -
arch/arm/common/Makefile | 1 -
arch/arm/common/edma.c | 1876 ---------------------------------
arch/arm/mach-davinci/devices-da8xx.c | 122 +--
arch/arm/mach-davinci/dm355.c | 40 +-
arch/arm/mach-davinci/dm365.c | 25 +-
arch/arm/mach-davinci/dm644x.c | 40 +-
arch/arm/mach-davinci/dm646x.c | 44 +-
arch/arm/mach-omap2/Kconfig | 1 -
drivers/dma/Kconfig | 1 -
drivers/dma/edma.c | 1569 ++++++++++++++++++++++++---
include/linux/platform_data/edma.h | 101 --
13 files changed, 1523 insertions(+), 2301 deletions(-)
delete mode 100644 arch/arm/common/edma.c

--
2.5.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/