schedule: zephyr_dma_domain: domain_register(): Return early for non-registrable tasks

Because DMA IRQs are not registered for non-registrable tasks,
register_dma_irq() will return 0 and not set data. This leads to
zephyr_dma_domain_register() returning -EINVAL for said tasks which
is not right.

This commit fixes this problem by returning early in the case
of non-registrable tasks. This means register_dma_irq() will not
even be attempted for such tasks.

Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
This commit is contained in:
Laurentiu Mihalcea 2023-05-09 11:04:06 +03:00 committed by Daniel Baluta
parent 2a8f6a6fc7
commit 465605f0ef
1 changed files with 10 additions and 0 deletions

View File

@ -297,6 +297,16 @@ static int zephyr_dma_domain_register(struct ll_schedule_domain *domain,
tr_info(&ll_tr, "zephyr_dma_domain_register()");
/* don't even bother trying to register DMA IRQ for
* non-registrable tasks.
*
* this is needed because zephyr_dma_domain_register() will
* return -EINVAL for non-registrable tasks because of
* register_dma_irq() which is not right.
*/
if (!pipe_task->registrable)
return 0;
/* the DMA IRQ has to be registered before the Zephyr thread is
* started.
*