| /* |
| * 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_*/ |