drivers: dma: max32: check if bit other than status is set
we iterate over all the channels, and if more than one channel is active at a time. interrupt on any one of active channel was triggering callback for other active channel, because flags value is 1 (enabled). this is commit handle this behaviour and only trigger callback if bits other than status is set Signed-off-by: Anuj Pathak <anuj@croxel.com>
This commit is contained in:
parent
acc1731410
commit
2af6adc745
1 changed files with 5 additions and 0 deletions
|
@ -258,6 +258,11 @@ static void max32_dma_isr(const struct device *dev)
|
|||
continue;
|
||||
}
|
||||
|
||||
/* check if only enabled bit is set (interrupt is not there) and skip it */
|
||||
if (flags == ADI_MAX32_DMA_STATUS_ST) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Check for error interrupts */
|
||||
if (flags & (ADI_MAX32_DMA_STATUS_BUS_ERR | ADI_MAX32_DMA_STATUS_TO_IF)) {
|
||||
status = -EIO;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue