From 999c59c1ec627a6fff7db23b569aa602f0d56bc9 Mon Sep 17 00:00:00 2001 From: Hake Huang Date: Wed, 6 May 2020 23:41:04 +0800 Subject: [PATCH] dma: add error check on peripheral to peripheral add dma direction check for dma_sam0 Signed-off-by: Hake Huang --- drivers/dma/dma_sam0.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/dma/dma_sam0.c b/drivers/dma/dma_sam0.c index b7002794f08..9eac3a0c09c 100644 --- a/drivers/dma/dma_sam0.c +++ b/drivers/dma/dma_sam0.c @@ -149,10 +149,14 @@ static int dma_sam0_config(struct device *dev, uint32_t channel, */ chcfg->CHCTRLA.reg = DMAC_CHCTRLA_TRIGACT_TRANSACTION | DMAC_CHCTRLA_TRIGSRC(config->dma_slot); - } else { + } else if ((config->channel_direction == MEMORY_TO_PERIPHERAL) || + (config->channel_direction == PERIPHERAL_TO_MEMORY)) { /* One peripheral trigger per beat */ chcfg->CHCTRLA.reg = DMAC_CHCTRLA_TRIGACT_BURST | DMAC_CHCTRLA_TRIGSRC(config->dma_slot); + } else { + LOG_ERR("Direction error. %d", config->channel_direction); + goto inval; } /* Set the priority */