dmaengine: ti: edma: support sw triggered chans in of_edma_xlate()

The .of_edma_xlate() function always sets the hw_triggered flag to
true. This causes sw triggered channels consumed via the device-tree
to not function properly, as the driver incorrectly assumes they are
hw triggered. Modify the xlate() function to correctly set the
hw_triggered flag to false for channels reserved for memcpy
operation (ie, sw triggered).

Signed-off-by: Matthew Majewski <mattwmajewski@gmail.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Link: https://lore.kernel.org/r/20250216214741.207538-1-mattwmajewski@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
Matthew Majewski 2025-02-16 16:47:41 -05:00 committed by Vinod Koul
parent 566beb347e
commit e7240aba20

View File

@ -2259,8 +2259,12 @@ static struct dma_chan *of_edma_xlate(struct of_phandle_args *dma_spec,
return NULL;
out:
/* The channel is going to be used as HW synchronized */
echan->hw_triggered = true;
/*
* The channel is going to be HW synchronized, unless it was
* reserved as a memcpy channel
*/
echan->hw_triggered =
!edma_is_memcpy_channel(i, ecc->info->memcpy_channels);
return dma_get_slave_channel(chan);
}
#else