From 06e9a345831a8086581fa72fdf911813ca96faee Mon Sep 17 00:00:00 2001 From: Tomasz Lauda Date: Tue, 16 Apr 2019 15:59:02 +0200 Subject: [PATCH] dw-dma: make DMA FIFO partitioning configurable from Kconfig Makes DMA FIFO partitioning configurable from Kconfig. Some platforms need to set FIFO partitions before enabling DMA controller. Signed-off-by: Tomasz Lauda --- Kconfig | 10 ++++++++++ src/drivers/dw/dma.c | 4 +--- src/platform/Kconfig | 6 ++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Kconfig b/Kconfig index a00c521d8..929c9ac71 100644 --- a/Kconfig +++ b/Kconfig @@ -80,6 +80,16 @@ config DMA_SUSPEND_DRAIN Any platforms without the ability to disable the DMA channel right away should set this. +config DMA_FIFO_PARTITION + bool + default n + help + Some platforms require to manually set DMA + FIFO partitions before starting any transfer. + + Any platforms without automatic FIFO partitions + should set this. + source "src/Kconfig" menu "Debug" diff --git a/src/drivers/dw/dma.c b/src/drivers/dw/dma.c index 96e51d695..f1e1f342f 100644 --- a/src/drivers/dw/dma.c +++ b/src/drivers/dw/dma.c @@ -191,7 +191,6 @@ #define DW_CFGH_DST_PER(x) ((x) << 4) /* FIFO Partition */ -#define DW_FIFO_PARTITION #define DW_FIFO_PART0_LO 0x0400 #define DW_FIFO_PART0_HI 0x0404 #define DW_FIFO_PART1_LO 0x0408 @@ -231,7 +230,6 @@ #endif /* FIFO Partition */ -#define DW_FIFO_PARTITION #define DW_FIFO_PART0_LO 0x0400 #define DW_FIFO_PART0_HI 0x0404 #define DW_FIFO_PART1_LO 0x0408 @@ -1163,7 +1161,7 @@ static int dw_dma_setup(struct dma *dma) dw_write(dma, DW_MASK_DST_TRAN, INT_MASK_ALL); dw_write(dma, DW_MASK_ERR, INT_MASK_ALL); -#ifdef DW_FIFO_PARTITION +#if CONFIG_DMA_FIFO_PARTITION /* TODO: we cannot config DMA FIFOs if DMAC has been already */ /* allocate FIFO partitions, 128 bytes for each ch */ dw_write(dma, DW_FIFO_PART1_LO, 0x100080); diff --git a/src/platform/Kconfig b/src/platform/Kconfig index 0e99dbcfb..392b00f73 100644 --- a/src/platform/Kconfig +++ b/src/platform/Kconfig @@ -11,6 +11,7 @@ config BAYTRAIL select TASK_HAVE_PRIORITY_MEDIUM select DMA_AGGREGATED_IRQ select DMA_SUSPEND_DRAIN + select DMA_FIFO_PARTITION help Select if your target platform is Baytrail-compatible @@ -21,6 +22,7 @@ config CHERRYTRAIL select TASK_HAVE_PRIORITY_MEDIUM select DMA_AGGREGATED_IRQ select DMA_SUSPEND_DRAIN + select DMA_FIFO_PARTITION help Select if your target platform is Cherrytrail-compatible @@ -49,6 +51,7 @@ config APOLLOLAKE select TASK_HAVE_PRIORITY_LOW select TASK_HAVE_PRIORITY_MEDIUM select HW_LLI + select DMA_FIFO_PARTITION select CAVS select CAVS_VERSION_1_5 help @@ -64,6 +67,7 @@ config CANNONLAKE select TASK_HAVE_PRIORITY_MEDIUM select HW_LLI select DMA_AGGREGATED_IRQ + select DMA_FIFO_PARTITION select CAVS select CAVS_VERSION_1_8 help @@ -80,6 +84,7 @@ config SUECREEK select DW_GPIO select HW_LLI select DMA_AGGREGATED_IRQ + select DMA_FIFO_PARTITION select CAVS select CAVS_VERSION_2_0 help @@ -95,6 +100,7 @@ config ICELAKE select TASK_HAVE_PRIORITY_MEDIUM select HW_LLI select DMA_AGGREGATED_IRQ + select DMA_FIFO_PARTITION select CAVS select CAVS_VERSION_2_0 help