[Sound-open-firmware] [PATCH] dw-dma: fix dsp local memory mapping issue
Keyon Jie
yang.jie at linux.intel.com
Thu Dec 8 14:50:27 CET 2016
for DMA controller, we need mask dsp local memory before
setting it to DMAC registers, otherwise, DMAC will locate
to wrong memory address.
Signed-off-by: Keyon Jie <yang.jie at linux.intel.com>
---
src/drivers/dw-dma.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/drivers/dw-dma.c b/src/drivers/dw-dma.c
index 8834ca3..33c0d87 100644
--- a/src/drivers/dw-dma.c
+++ b/src/drivers/dw-dma.c
@@ -633,15 +633,15 @@ static int dw_dma_set_config(struct dma *dma, int channel,
case DMA_DIR_MEM_TO_MEM:
lli_desc->ctrl_lo |= DW_CTLL_FC_M2M;
lli_desc->ctrl_lo |= DW_CTLL_SRC_INC | DW_CTLL_DST_INC;
- lli_desc->sar = (uint32_t)sg_elem->src;
- lli_desc->dar = (uint32_t)sg_elem->dest;
+ lli_desc->sar = (uint32_t)sg_elem->src | PLATFORM_HOST_DMA_MASK;
+ lli_desc->dar = (uint32_t)sg_elem->dest | PLATFORM_HOST_DMA_MASK;
break;
case DMA_DIR_MEM_TO_DEV:
lli_desc->ctrl_lo |= DW_CTLL_FC_M2P;
lli_desc->ctrl_lo |= DW_CTLL_SRC_INC | DW_CTLL_DST_FIX;
p->chan[channel].cfg_hi |=
DW_CFGH_DST_PER(config->dest_dev);
- lli_desc->sar = (uint32_t)sg_elem->src;
+ lli_desc->sar = (uint32_t)sg_elem->src | PLATFORM_HOST_DMA_MASK;
lli_desc->dar = (uint32_t)sg_elem->dest;
break;
case DMA_DIR_DEV_TO_MEM:
@@ -650,7 +650,7 @@ static int dw_dma_set_config(struct dma *dma, int channel,
p->chan[channel].cfg_hi |=
DW_CFGH_SRC_PER(config->src_dev);
lli_desc->sar = (uint32_t)sg_elem->src;
- lli_desc->dar = (uint32_t)sg_elem->dest;
+ lli_desc->dar = (uint32_t)sg_elem->dest | PLATFORM_HOST_DMA_MASK;
break;
case DMA_DIR_DEV_TO_DEV:
lli_desc->ctrl_lo |= DW_CTLL_FC_P2P;
--
2.5.0
More information about the Sound-open-firmware
mailing list