[Sound-open-firmware] [PATCH] cnl: Add missing host and link DMA init
CONFIG_DMA_GW is set for Cannonlake, so add host and link initializations to avoid FW crash.
Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com --- src/platform/cannonlake/dma.c | 13 +++++++++---- src/platform/cannonlake/platform.c | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/src/platform/cannonlake/dma.c b/src/platform/cannonlake/dma.c index beac6cf..a47ce9f 100644 --- a/src/platform/cannonlake/dma.c +++ b/src/platform/cannonlake/dma.c @@ -32,6 +32,7 @@
#include <reef/dma.h> #include <reef/dw-dma.h> +#include <reef/hd-dma.h> #include <platform/memory.h> #include <platform/interrupt.h> #include <platform/dma.h> @@ -133,33 +134,37 @@ static struct dma dma[] = { .plat_data = { .id = DMA_HOST_IN_DMAC, .base = GTW_HOST_IN_STREAM_BASE(0), - .channels = 7, + .channels = 9, .irq = IRQ_EXT_HOST_DMA_IN_LVL3(0, 0), }, + .ops = &hda_host_dma_ops, }, { /* Host out DMAC */ .plat_data = { .id = DMA_HOST_OUT_DMAC, .base = GTW_HOST_OUT_STREAM_BASE(0), - .channels = 6, + .channels = 7, .irq = IRQ_EXT_HOST_DMA_OUT_LVL3(0, 0), }, + .ops = &hda_host_dma_ops, }, { /* Link In DMAC */ .plat_data = { .id = DMA_LINK_IN_DMAC, .base = GTW_LINK_IN_STREAM_BASE(0), - .channels = 8, + .channels = 9, .irq = IRQ_EXT_LINK_DMA_IN_LVL4(0, 0), }, + .ops = &hda_link_dma_ops, }, { /* Link out DMAC */ .plat_data = { .id = DMA_LINK_OUT_DMAC, .base = GTW_LINK_OUT_STREAM_BASE(0), - .channels = 8, + .channels = 7, .irq = IRQ_EXT_LINK_DMA_OUT_LVL4(0, 0), }, + .ops = &hda_link_dma_ops, },};
struct dma *dma_get(int dmac_id) diff --git a/src/platform/cannonlake/platform.c b/src/platform/cannonlake/platform.c index f387109..1a9b88a 100644 --- a/src/platform/cannonlake/platform.c +++ b/src/platform/cannonlake/platform.c @@ -253,6 +253,21 @@ int platform_init(struct reef *reef) return -ENODEV; dma_probe(dmac);
+ dmac = dma_get(DMA_GP_LP_DMAC1); + if (!dmac) + return -ENODEV; + dma_probe(dmac); + + dmac = dma_get(DMA_HOST_OUT_DMAC); + if (!dmac) + return -ENODEV; + dma_probe(dmac); + + dmac = dma_get(DMA_HOST_IN_DMAC); + if (!dmac) + return -ENODEV; + dma_probe(dmac); + /* init SSP ports */ trace_point(TRACE_BOOT_PLATFORM_SSP); for(i = 0; i < PLATFORM_SSP_COUNT; i++) {
On Tue, 2018-02-20 at 12:13 +0100, Tomasz Lauda wrote:
CONFIG_DMA_GW is set for Cannonlake, so add host and link initializations to avoid FW crash.
Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com
Applied.
Thanks
Liam
participants (2)
-
Liam Girdwood
-
Tomasz Lauda