From f7d315cf49a969bd1c7b4a0bda2c279f325596eb Mon Sep 17 00:00:00 2001 From: Tahsin Mutlugun Date: Thu, 19 Dec 2024 17:31:34 +0300 Subject: [PATCH] drivers: dma: max32: Handle channel index conversion in HAL Handle SoC-level differences in channel numbering logic in HAL. Signed-off-by: Tahsin Mutlugun --- drivers/dma/dma_max32.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/dma/dma_max32.c b/drivers/dma/dma_max32.c index 8e6d8dfd123..ffbe70c1f55 100644 --- a/drivers/dma/dma_max32.c +++ b/drivers/dma/dma_max32.c @@ -69,11 +69,6 @@ static inline int max32_dma_addr_adj(uint16_t addr_adj) } } -static inline int max32_dma_ch_index(mxc_dma_regs_t *dma, uint8_t ch) -{ - return (ch + MXC_DMA_GET_IDX(dma) * (MXC_DMA_CHANNELS / MXC_DMA_INSTANCES)); -} - static int max32_dma_config(const struct device *dev, uint32_t channel, struct dma_config *config) { int ret = 0; @@ -87,7 +82,7 @@ static int max32_dma_config(const struct device *dev, uint32_t channel, struct d return -EINVAL; } - ch = max32_dma_ch_index(cfg->regs, channel); + ch = Wrap_MXC_DMA_GetChannelIndex(cfg->regs, channel); /* DMA Channel Config */ mxc_dma_config_t mxc_dma_cfg; @@ -166,7 +161,7 @@ static int max32_dma_reload(const struct device *dev, uint32_t channel, uint32_t return -EINVAL; } - channel = max32_dma_ch_index(cfg->regs, channel); + channel = Wrap_MXC_DMA_GetChannelIndex(cfg->regs, channel); flags = MXC_DMA_ChannelGetFlags(channel); if (flags & ADI_MAX32_DMA_STATUS_ST) { return -EBUSY; @@ -190,7 +185,7 @@ static int max32_dma_start(const struct device *dev, uint32_t channel) return -EINVAL; } - channel = max32_dma_ch_index(cfg->regs, channel); + channel = Wrap_MXC_DMA_GetChannelIndex(cfg->regs, channel); flags = MXC_DMA_ChannelGetFlags(channel); if (flags & ADI_MAX32_DMA_STATUS_ST) { return -EBUSY; @@ -209,7 +204,7 @@ static int max32_dma_stop(const struct device *dev, uint32_t channel) return -EINVAL; } - channel = max32_dma_ch_index(cfg->regs, channel); + channel = Wrap_MXC_DMA_GetChannelIndex(cfg->regs, channel); return MXC_DMA_Stop(channel); } @@ -227,7 +222,7 @@ static int max32_dma_get_status(const struct device *dev, uint32_t channel, stru return -EINVAL; } - channel = max32_dma_ch_index(cfg->regs, channel); + channel = Wrap_MXC_DMA_GetChannelIndex(cfg->regs, channel); txfer.ch = channel; flags = MXC_DMA_ChannelGetFlags(channel); @@ -253,7 +248,7 @@ static void max32_dma_isr(const struct device *dev) int flags; int status = 0; - uint8_t channel_base = max32_dma_ch_index(cfg->regs, 0); + uint8_t channel_base = Wrap_MXC_DMA_GetChannelIndex(cfg->regs, 0); for (ch = channel_base, c = 0; c < cfg->channels; ch++, c++) { flags = MXC_DMA_ChannelGetFlags(ch);