This set of patches proposes a new API for dma_get() that procures a DMAC based on the requested user type, copy direction and flags indicating shared/exclusive access. It also updates the existing user of dma_get() to use the new API based on the specific usage. The platform DMAC definitions have also been updated to include information about usage and copy direction to support the new API.
This has only been tested on the BYT platform with a Minnowboard Turbot board and a RT5651 codec. Further testing is required on other platforms to ensure there are no regressions. Looking for feedback on initial implementation.
The corresponding DMAC/DMAC channel definitions from topology/kernel driver need to be removed. This is still work in progress.
Ranjani Sridharan (6): platform: dma: consolidate dmac initialization dma: ops: introduce channel_status() op to retrieve number of channels in use dma: introduce new API for requesting DMAC dma: use newly defined API for request DMAC dma: remove dmac id argument from dma_copy_context() trace: remove trace dmac id definition
src/audio/dai.c | 7 ++- src/audio/host.c | 28 +++++++-- src/drivers/dw-dma.c | 19 ++++++ src/drivers/hda-dma.c | 20 ++++++ src/host/common_test.c | 2 +- src/include/sof/dma.h | 38 +++++++++++- src/ipc/apl-ipc.c | 3 +- src/ipc/byt-ipc.c | 4 +- src/ipc/cnl-ipc.c | 4 +- src/ipc/dma-copy.c | 9 ++- src/ipc/hsw-ipc.c | 4 +- src/lib/dma-trace.c | 2 +- src/platform/apollolake/dma.c | 62 +++++++++++++++++-- .../apollolake/include/platform/platform.h | 3 - src/platform/apollolake/platform.c | 21 +------ src/platform/baytrail/dma.c | 50 +++++++++++++-- .../baytrail/include/platform/platform.h | 3 - src/platform/baytrail/platform.c | 22 +------ src/platform/cannonlake/dma.c | 62 +++++++++++++++++-- .../cannonlake/include/platform/platform.h | 3 - src/platform/cannonlake/platform.c | 21 +------ src/platform/haswell/dma.c | 58 ++++++++++++++--- .../haswell/include/platform/platform.h | 3 - src/platform/haswell/platform.c | 16 +---- 24 files changed, 337 insertions(+), 127 deletions(-)