/* * 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 */ }; /* the table of all the dmamux channel */ struct dmamux_stm32_data { struct dmamux_stm32_channel *mux_channels; void *callback_arg; void (*dmamux_callback)(void *arg, uint32_t id, int error_code); }; /* this is the configuration of the dmamux IP */ struct dmamux_stm32_config { struct stm32_pclken pclken; uint32_t base; uint8_t channel_nb; /* total nb of channels */ uint8_t gen_nb; /* total nb of Request generator */ uint8_t req_nb; /* total nb of Peripheral Request inputs */ }; 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_so[])(DMAMUX_Channel_TypeDef *DMAMUXx) = { LL_DMAMUX_IsActiveFlag_SO0, LL_DMAMUX_IsActiveFlag_SO1, LL_DMAMUX_IsActiveFlag_SO2, LL_DMAMUX_IsActiveFlag_SO3, LL_DMAMUX_IsActiveFlag_SO4, LL_DMAMUX_IsActiveFlag_SO5, #if defined(DMAMUX_CSR_SOF6) LL_DMAMUX_IsActiveFlag_SO6, #endif /* DMAMUX_CSR_SOF6 */ #if defined(DMAMUX_CSR_SOF7) LL_DMAMUX_IsActiveFlag_SO7, #endif /* DMAMUX_CSR_SOF7 */ #if defined(DMAMUX_CSR_SOF8) LL_DMAMUX_IsActiveFlag_SO8, #endif /* DMAMUX_CSR_SOF8 */ #if defined(DMAMUX_CSR_SOF9) LL_DMAMUX_IsActiveFlag_SO9, #endif /* DMAMUX_CSR_SOF9 */ #if defined(DMAMUX_CSR_SOF10) LL_DMAMUX_IsActiveFlag_SO10, #endif /* DMAMUX_CSR_SOF10 */ #if defined(DMAMUX_CSR_SOF11) LL_DMAMUX_IsActiveFlag_SO11, #endif /* DMAMUX_CSR_SOF11 */ #if defined(DMAMUX_CSR_SOF12) LL_DMAMUX_IsActiveFlag_SO12, #endif /* DMAMUX_CSR_SOF12 */ #if defined(DMAMUX_CSR_SOF130) LL_DMAMUX_IsActiveFlag_SO13, #endif /* DMAMUX_CSR_SOF130 */ #if defined(DMAMUX_CSR_SOF14) LL_DMAMUX_IsActiveFlag_SO14, #endif /* DMAMUX_CSR_SOF14 */ #if defined(DMAMUX_CSR_SOF15) LL_DMAMUX_IsActiveFlag_SO15, #endif /* DMAMUX_CSR_SOF15 */ }; void (*func_ll_clear_so[])(DMAMUX_Channel_TypeDef *DMAMUXx) = { LL_DMAMUX_ClearFlag_SO0, LL_DMAMUX_ClearFlag_SO1, LL_DMAMUX_ClearFlag_SO2, LL_DMAMUX_ClearFlag_SO3, LL_DMAMUX_ClearFlag_SO4, LL_DMAMUX_ClearFlag_SO5, #if defined(DMAMUX_CSR_SOF6) LL_DMAMUX_ClearFlag_SO6, #endif /* DMAMUX_CSR_SOF6 */ #if defined(DMAMUX_CSR_SOF7) LL_DMAMUX_ClearFlag_SO7, #endif /* DMAMUX_CSR_SOF7 */ #if defined(DMAMUX_CSR_SOF8) LL_DMAMUX_ClearFlag_SO8, #endif /* DMAMUX_CSR_SOF8 */ #if defined(DMAMUX_CSR_SOF9) LL_DMAMUX_ClearFlag_SO9, #endif /* DMAMUX_CSR_SOF9 */ #if defined(DMAMUX_CSR_SOF10) LL_DMAMUX_ClearFlag_SO10, #endif /* DMAMUX_CSR_SOF10 */ #if defined(DMAMUX_CSR_SOF11) LL_DMAMUX_ClearFlag_SO11, #endif /* DMAMUX_CSR_SOF11 */ #if defined(DMAMUX_CSR_SOF12) LL_DMAMUX_ClearFlag_SO12, #endif /* DMAMUX_CSR_SOF12 */ #if defined(DMAMUX_CSR_SOF13) LL_DMAMUX_ClearFlag_SO13, #endif /* DMAMUX_CSR_SOF13 */ #if defined(DMAMUX_CSR_SOF14) LL_DMAMUX_ClearFlag_SO14, #endif /* DMAMUX_CSR_SOF145 */ #if defined(DMAMUX_CSR_SOF15) LL_DMAMUX_ClearFlag_SO15, #endif /* DMAMUX_CSR_SOF15 */ }; 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_*/