The src_width and dest_width are configured already in Bytes, here fix it, otherwise 24/32 bit copying with hda-dma may have problem.
Reported-by: Zhigang Wu zhigang.wu@linux.intel.com Signed-off-by: Keyon Jie yang.jie@linux.intel.com --- src/drivers/hda-dma.c | 6 +++--- src/include/reef/dma.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/drivers/hda-dma.c b/src/drivers/hda-dma.c index 57cb7fc..06b2d9c 100644 --- a/src/drivers/hda-dma.c +++ b/src/drivers/hda-dma.c @@ -343,11 +343,11 @@ static int hda_dma_set_config(struct dma *dma, int channel, /* firmware control buffer */ dgcs = DGCS_FWCB;
- /* set DGCS.SCS bit to 0 for 32 bit container */ + /* set DGCS.SCS bit to 1 for 16bit(2B) container */ if ((config->direction == DMA_DIR_HMEM_TO_LMEM && - config->dest_width <= 16) || + config->dest_width <= 2) || (config->direction == DMA_DIR_LMEM_TO_HMEM && - config->src_width <= 16)) + config->src_width <= 2)) dgcs |= DGCS_SCS;
/* init channel in HW */ diff --git a/src/include/reef/dma.h b/src/include/reef/dma.h index 71bce56..f82b533 100644 --- a/src/include/reef/dma.h +++ b/src/include/reef/dma.h @@ -68,8 +68,8 @@ struct dma_sg_elem {
/* DMA physical SG params */ struct dma_sg_config { - uint32_t src_width; - uint32_t dest_width; + uint32_t src_width; /* in bytes */ + uint32_t dest_width; /* in bytes */ uint32_t burst_elems; uint32_t direction; uint32_t src_dev;