mirror of https://github.com/thesofproject/sof.git
audio: host-zephyr: Update DMA block configuration when re-configuring
With every copy() operation, the source and destination addresses keep getting modified. As such, for each re-configuration performed during host_copy_one_shot(), the HOST DMAC needs to be made aware of these changes. This commit changes host_copy_one_shot() such that on each dma_config() call the DMAC driver receives the updated addresses and size. Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This commit is contained in:
parent
886026ea85
commit
b0de76420e
|
@ -203,6 +203,7 @@ static uint32_t host_get_copy_bytes_one_shot(struct host_data *hd)
|
||||||
static int host_copy_one_shot(struct host_data *hd, struct comp_dev *dev, copy_callback_t cb)
|
static int host_copy_one_shot(struct host_data *hd, struct comp_dev *dev, copy_callback_t cb)
|
||||||
{
|
{
|
||||||
uint32_t copy_bytes;
|
uint32_t copy_bytes;
|
||||||
|
struct dma_sg_elem *local_elem = hd->config.elem_array.elems;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
comp_dbg(dev, "host_copy_one_shot()");
|
comp_dbg(dev, "host_copy_one_shot()");
|
||||||
|
@ -213,6 +214,13 @@ static int host_copy_one_shot(struct host_data *hd, struct comp_dev *dev, copy_c
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SRC/DEST addresses have changed so the DMAC needs
|
||||||
|
* to be re-configured.
|
||||||
|
*/
|
||||||
|
hd->z_config.head_block->source_address = local_elem->src;
|
||||||
|
hd->z_config.head_block->dest_address = local_elem->dest;
|
||||||
|
hd->z_config.head_block->block_size = local_elem->size;
|
||||||
|
|
||||||
/* reconfigure transfer */
|
/* reconfigure transfer */
|
||||||
ret = dma_config(hd->chan->dma->z_dev, hd->chan->index, &hd->z_config);
|
ret = dma_config(hd->chan->dma->z_dev, hd->chan->index, &hd->z_config);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
Loading…
Reference in New Issue