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/stm32_clock_control.h>
|
||||
|
||||
#include "dmamux_stm32.h"
|
||||
#include "dma_stm32.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
|
||||
|
||||
/* 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 */
|
||||
struct dmamux_stm32_data {
|
||||
void *callback_arg;
|
||||
|
@ -49,8 +56,15 @@ struct dmamux_stm32_config {
|
|||
* UTIL_LISTIFY is used to generate arrays with function pointers to check
|
||||
* 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 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) = {
|
||||
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)
|
||||
};
|
||||
|
||||
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,
|
||||
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