[Sound-open-firmware] [PATCH v2] cnl: Add missing host and link DMA init
Tomasz Lauda
tomasz.lauda at linux.intel.com
Tue Feb 20 15:57:21 CET 2018
CONFIG_DMA_GW is set for Cannonlake, so add host and link initialization to avoid FW crash.
Signed-off-by: Tomasz Lauda <tomasz.lauda at linux.intel.com>
---
src/drivers/hda-dma.c | 2 +-
src/platform/cannonlake/dma.c | 13 +++++++++----
src/platform/cannonlake/platform.c | 10 ++++++++++
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/drivers/hda-dma.c b/src/drivers/hda-dma.c
index 226a34e..6526b74 100644
--- a/src/drivers/hda-dma.c
+++ b/src/drivers/hda-dma.c
@@ -77,7 +77,7 @@
/* DGBS */
#define DGBS_MASK 0xfffff0
-#define HDA_DMA_MAX_CHANS 8
+#define HDA_DMA_MAX_CHANS 9
struct hda_chan_data {
uint32_t stream_id;
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..beb6582 100644
--- a/src/platform/cannonlake/platform.c
+++ b/src/platform/cannonlake/platform.c
@@ -253,6 +253,16 @@ int platform_init(struct reef *reef)
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++) {
--
2.7.4
More information about the Sound-open-firmware
mailing list