drivers/dma: stm32 dmamux: use util_listify to gen. func/dma_chan arrays
This commit continues simplifying the generation of isActiveFlag/clearFlag funtion pointer array for the request generators and does the same for the table_ll_channel. Additionally move struct dmamux_stm32_channel to c file. Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
This commit is contained in:
parent
d7fb6fa9f1
commit
0014193193
2 changed files with 23 additions and 72 deletions
|
@ -18,7 +18,6 @@
|
||||||
#include <drivers/clock_control.h>
|
#include <drivers/clock_control.h>
|
||||||
#include <drivers/clock_control/stm32_clock_control.h>
|
#include <drivers/clock_control/stm32_clock_control.h>
|
||||||
|
|
||||||
#include "dmamux_stm32.h"
|
|
||||||
#include "dma_stm32.h"
|
#include "dma_stm32.h"
|
||||||
|
|
||||||
#include <logging/log.h>
|
#include <logging/log.h>
|
||||||
|
@ -26,6 +25,14 @@ LOG_MODULE_REGISTER(dmamux_stm32, CONFIG_DMA_LOG_LEVEL);
|
||||||
|
|
||||||
#define DT_DRV_COMPAT st_stm32_dmamux
|
#define DT_DRV_COMPAT st_stm32_dmamux
|
||||||
|
|
||||||
|
/* this is the configuration of one dmamux channel */
|
||||||
|
struct dmamux_stm32_channel {
|
||||||
|
/* pointer to the associated dma instance */
|
||||||
|
const struct device *dev_dma;
|
||||||
|
/* ref of the associated dma stream for this instance */
|
||||||
|
uint8_t dma_id;
|
||||||
|
};
|
||||||
|
|
||||||
/* the table of all the dmamux channel */
|
/* the table of all the dmamux channel */
|
||||||
struct dmamux_stm32_data {
|
struct dmamux_stm32_data {
|
||||||
void *callback_arg;
|
void *callback_arg;
|
||||||
|
@ -49,8 +56,15 @@ struct dmamux_stm32_config {
|
||||||
* UTIL_LISTIFY is used to generate arrays with function pointers to check
|
* UTIL_LISTIFY is used to generate arrays with function pointers to check
|
||||||
* and clear interrupt flags using LL functions
|
* and clear interrupt flags using LL functions
|
||||||
*/
|
*/
|
||||||
|
#define DMAMUX_CHANNEL(i, _) LL_DMAMUX_CHANNEL_ ## i,
|
||||||
#define IS_ACTIVE_FLAG_SOX(i, _) LL_DMAMUX_IsActiveFlag_SO ## i,
|
#define IS_ACTIVE_FLAG_SOX(i, _) LL_DMAMUX_IsActiveFlag_SO ## i,
|
||||||
#define CLEAR_FLAG_SOX(i, _) LL_DMAMUX_ClearFlag_SO ## i,
|
#define CLEAR_FLAG_SOX(i, _) LL_DMAMUX_ClearFlag_SO ## i,
|
||||||
|
#define IS_ACTIVE_FLAG_RGOX(i, _) LL_DMAMUX_IsActiveFlag_RGO ## i,
|
||||||
|
#define CLEAR_FLAG_RGOX(i, _) LL_DMAMUX_ClearFlag_RGO ## i,
|
||||||
|
|
||||||
|
uint32_t table_ll_channel[] = {
|
||||||
|
UTIL_LISTIFY(DT_INST_PROP(0, dma_channels), DMAMUX_CHANNEL)
|
||||||
|
};
|
||||||
|
|
||||||
uint32_t (*func_ll_is_active_so[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
uint32_t (*func_ll_is_active_so[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
||||||
UTIL_LISTIFY(DT_INST_PROP(0, dma_channels), IS_ACTIVE_FLAG_SOX)
|
UTIL_LISTIFY(DT_INST_PROP(0, dma_channels), IS_ACTIVE_FLAG_SOX)
|
||||||
|
@ -60,6 +74,14 @@ void (*func_ll_clear_so[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
||||||
UTIL_LISTIFY(DT_INST_PROP(0, dma_channels), CLEAR_FLAG_SOX)
|
UTIL_LISTIFY(DT_INST_PROP(0, dma_channels), CLEAR_FLAG_SOX)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
uint32_t (*func_ll_is_active_rgo[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
||||||
|
UTIL_LISTIFY(DT_INST_PROP(0, dma_generators), IS_ACTIVE_FLAG_RGOX)
|
||||||
|
};
|
||||||
|
|
||||||
|
void (*func_ll_clear_rgo[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
||||||
|
UTIL_LISTIFY(DT_INST_PROP(0, dma_generators), CLEAR_FLAG_RGOX)
|
||||||
|
};
|
||||||
|
|
||||||
int dmamux_stm32_configure(const struct device *dev, uint32_t id,
|
int dmamux_stm32_configure(const struct device *dev, uint32_t id,
|
||||||
struct dma_config *config)
|
struct dma_config *config)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2020 STMicroelectronics
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DMAMUX_STM32_H_
|
|
||||||
#define DMAMUX_STM32_H_
|
|
||||||
|
|
||||||
/* this is the configuration of one dmamux channel */
|
|
||||||
struct dmamux_stm32_channel {
|
|
||||||
const struct device *dev_dma; /* pointer to the associated dma instance */
|
|
||||||
uint8_t dma_id; /* ref of the associated dma stream for this instance */
|
|
||||||
};
|
|
||||||
|
|
||||||
uint32_t table_ll_channel[] = {
|
|
||||||
LL_DMAMUX_CHANNEL_0,
|
|
||||||
LL_DMAMUX_CHANNEL_1,
|
|
||||||
LL_DMAMUX_CHANNEL_2,
|
|
||||||
LL_DMAMUX_CHANNEL_3,
|
|
||||||
LL_DMAMUX_CHANNEL_4,
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_5)
|
|
||||||
LL_DMAMUX_CHANNEL_5,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_5 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_6)
|
|
||||||
LL_DMAMUX_CHANNEL_6,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_6 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_7)
|
|
||||||
LL_DMAMUX_CHANNEL_7,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_7 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_8)
|
|
||||||
LL_DMAMUX_CHANNEL_8,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_8 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_9)
|
|
||||||
LL_DMAMUX_CHANNEL_9,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_9 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_10)
|
|
||||||
LL_DMAMUX_CHANNEL_10,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_10 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_11)
|
|
||||||
LL_DMAMUX_CHANNEL_11,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_11 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_12)
|
|
||||||
LL_DMAMUX_CHANNEL_12,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_12 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_13)
|
|
||||||
LL_DMAMUX_CHANNEL_13,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_13 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_14)
|
|
||||||
LL_DMAMUX_CHANNEL_14,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_14 */
|
|
||||||
#if defined(LL_DMAMUX_CHANNEL_15)
|
|
||||||
LL_DMAMUX_CHANNEL_15,
|
|
||||||
#endif /* LL_DMAMUX_CHANNEL_15 */
|
|
||||||
};
|
|
||||||
|
|
||||||
uint32_t (*func_ll_is_active_rgo[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
|
||||||
LL_DMAMUX_IsActiveFlag_RGO0,
|
|
||||||
LL_DMAMUX_IsActiveFlag_RGO1,
|
|
||||||
LL_DMAMUX_IsActiveFlag_RGO2,
|
|
||||||
LL_DMAMUX_IsActiveFlag_RGO3,
|
|
||||||
};
|
|
||||||
|
|
||||||
void (*func_ll_clear_rgo[])(DMAMUX_Channel_TypeDef *DMAMUXx) = {
|
|
||||||
LL_DMAMUX_ClearFlag_RGO0,
|
|
||||||
LL_DMAMUX_ClearFlag_RGO1,
|
|
||||||
LL_DMAMUX_ClearFlag_RGO2,
|
|
||||||
LL_DMAMUX_ClearFlag_RGO3,
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* DMAMUX_STM32_H_*/
|
|
Loading…
Add table
Add a link
Reference in a new issue