STM32H735xx HAL User Manual
stm32h7xx_ll_mdma.c
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_ll_mdma.c
00004   * @author  MCD Application Team
00005   * @brief   MDMA LL module driver.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 #if defined(USE_FULL_LL_DRIVER)
00019 
00020 /* Includes ------------------------------------------------------------------*/
00021 #include "stm32h7xx_ll_mdma.h"
00022 #include "stm32h7xx_ll_bus.h"
00023 #ifdef  USE_FULL_ASSERT
00024 #include "stm32_assert.h"
00025 #else
00026 #define assert_param(expr) ((void)0U)
00027 #endif
00028 
00029 /** @addtogroup STM32H7xx_LL_Driver
00030   * @{
00031   */
00032 
00033 #if defined (MDMA)
00034 
00035 /** @defgroup MDMA_LL MDMA
00036   * @{
00037   */
00038 
00039 /* Private types -------------------------------------------------------------*/
00040 /* Private variables ---------------------------------------------------------*/
00041 /* Private constants ---------------------------------------------------------*/
00042 /* Private macros ------------------------------------------------------------*/
00043 /** @addtogroup MDMA_LL_Private_Macros
00044   * @{
00045   */
00046 
00047 #define IS_LL_MDMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) (((INSTANCE) == MDMA) && \
00048                                                             (((CHANNEL) == LL_MDMA_CHANNEL_0) || \
00049                                                              ((CHANNEL) == LL_MDMA_CHANNEL_1) || \
00050                                                              ((CHANNEL) == LL_MDMA_CHANNEL_2) || \
00051                                                              ((CHANNEL) == LL_MDMA_CHANNEL_3) || \
00052                                                              ((CHANNEL) == LL_MDMA_CHANNEL_4) || \
00053                                                              ((CHANNEL) == LL_MDMA_CHANNEL_5) || \
00054                                                              ((CHANNEL) == LL_MDMA_CHANNEL_6) || \
00055                                                              ((CHANNEL) == LL_MDMA_CHANNEL_7) || \
00056                                                              ((CHANNEL) == LL_MDMA_CHANNEL_8) || \
00057                                                              ((CHANNEL) == LL_MDMA_CHANNEL_9) || \
00058                                                              ((CHANNEL) == LL_MDMA_CHANNEL_10)|| \
00059                                                              ((CHANNEL) == LL_MDMA_CHANNEL_11)|| \
00060                                                              ((CHANNEL) == LL_MDMA_CHANNEL_12)|| \
00061                                                              ((CHANNEL) == LL_MDMA_CHANNEL_13)|| \
00062                                                              ((CHANNEL) == LL_MDMA_CHANNEL_14)|| \
00063                                                              ((CHANNEL) == LL_MDMA_CHANNEL_15)|| \
00064                                                              ((CHANNEL) == LL_MDMA_CHANNEL_ALL)))
00065 
00066 #define IS_LL_MDMA_BLK_DATALENGTH(__VALUE__)              ((__VALUE__)  <= 0x00010000U)
00067 
00068 #define IS_LL_MDMA_BLK_REPEATCOUNT(__VALUE__)             ((__VALUE__)  <= 0x00000FFFU)
00069 
00070 #define IS_LL_MDMA_WORDENDIANESS(__VALUE__)               (((__VALUE__) == LL_MDMA_WORD_ENDIANNESS_PRESERVE) || \
00071                                                            ((__VALUE__) == LL_MDMA_WORD_ENDIANNESS_EXCHANGE))
00072 
00073 #define IS_LL_MDMA_HALFWORDENDIANESS(__VALUE__)           (((__VALUE__) == LL_MDMA_HALFWORD_ENDIANNESS_PRESERVE) || \
00074                                                            ((__VALUE__) == LL_MDMA_HALFWORD_ENDIANNESS_EXCHANGE))
00075 
00076 #define IS_LL_MDMA_BYTEENDIANESS(__VALUE__)               (((__VALUE__) == LL_MDMA_BYTE_ENDIANNESS_PRESERVE) || \
00077                                                            ((__VALUE__) == LL_MDMA_BYTE_ENDIANNESS_EXCHANGE))
00078 
00079 #define IS_LL_MDMA_PRIORITY(__VALUE__)                    (((__VALUE__) == LL_MDMA_PRIORITY_LOW)    || \
00080                                                            ((__VALUE__) == LL_MDMA_PRIORITY_MEDIUM) || \
00081                                                            ((__VALUE__) == LL_MDMA_PRIORITY_HIGH)   || \
00082                                                            ((__VALUE__) == LL_MDMA_PRIORITY_VERYHIGH))
00083 
00084 #define IS_LL_MDMA_BUFFWRITEMODE(__VALUE__)               (((__VALUE__) == LL_MDMA_BUFF_WRITE_DISABLE) || \
00085                                                            ((__VALUE__) == LL_MDMA_BUFF_WRITE_ENABLE))
00086 
00087 #define IS_LL_MDMA_REQUESTMODE(__VALUE__)                 (((__VALUE__) == LL_MDMA_REQUEST_MODE_HW) || \
00088                                                            ((__VALUE__) == LL_MDMA_REQUEST_MODE_SW))
00089 
00090 #define IS_LL_MDMA_TRIGGERMODE(__VALUE__)                 (((__VALUE__) == LL_MDMA_BUFFER_TRANSFER)       || \
00091                                                            ((__VALUE__) == LL_MDMA_BLOCK_TRANSFER)        || \
00092                                                            ((__VALUE__) == LL_MDMA_REPEAT_BLOCK_TRANSFER) || \
00093                                                            ((__VALUE__) == LL_MDMA_FULL_TRANSFER))
00094 
00095 #define IS_LL_MDMA_PADDINGALIGNEMENT(__VALUE__)           (((__VALUE__) == LL_MDMA_DATAALIGN_RIGHT)        || \
00096                                                            ((__VALUE__) == LL_MDMA_DATAALIGN_RIGHT_SIGNED) || \
00097                                                            ((__VALUE__) == LL_MDMA_DATAALIGN_LEFT))
00098 
00099 #define IS_LL_MDMA_PACKMODE(__VALUE__)                    (((__VALUE__) == LL_MDMA_PACK_DISABLE) || \
00100                                                            ((__VALUE__) == LL_MDMA_PACK_ENABLE))
00101 
00102 #define IS_LL_MDMA_BUFFER_XFERLENGTH(__VALUE__)           ((__VALUE__)  <= 0x0000007FU)
00103 
00104 #define IS_LL_MDMA_DESTBURST(__VALUE__)                   (((__VALUE__) == LL_MDMA_DEST_BURST_SINGLE) || \
00105                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_2BEATS) || \
00106                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_4BEATS) || \
00107                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_8BEATS) || \
00108                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_16BEATS)|| \
00109                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_32BEATS)|| \
00110                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_64BEATS)|| \
00111                                                            ((__VALUE__) == LL_MDMA_DEST_BURST_128BEATS))
00112 
00113 #define IS_LL_MDMA_SRCTBURST(__VALUE__)                   (((__VALUE__) == LL_MDMA_SRC_BURST_SINGLE) || \
00114                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_2BEATS) || \
00115                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_4BEATS) || \
00116                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_8BEATS) || \
00117                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_16BEATS)|| \
00118                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_32BEATS)|| \
00119                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_64BEATS)|| \
00120                                                            ((__VALUE__) == LL_MDMA_SRC_BURST_128BEATS))
00121 
00122 #define IS_LL_MDMA_DESTINCSIZE(__VALUE__)                 (((__VALUE__) == LL_MDMA_DEST_INC_OFFSET_BYTE) || \
00123                                                            ((__VALUE__) == LL_MDMA_DEST_INC_OFFSET_HALFWORD) || \
00124                                                            ((__VALUE__) == LL_MDMA_DEST_INC_OFFSET_WORD) || \
00125                                                            ((__VALUE__) == LL_MDMA_DEST_INC_OFFSET_DOUBLEWORD))
00126 
00127 #define IS_LL_MDMA_SRCINCSIZE(__VALUE__)                  (((__VALUE__) == LL_MDMA_SRC_INC_OFFSET_BYTE)     || \
00128                                                            ((__VALUE__) == LL_MDMA_SRC_INC_OFFSET_HALFWORD) || \
00129                                                            ((__VALUE__) == LL_MDMA_SRC_INC_OFFSET_WORD)     || \
00130                                                            ((__VALUE__) == LL_MDMA_SRC_INC_OFFSET_DOUBLEWORD))
00131 
00132 #define IS_LL_MDMA_DESTDATASIZE(__VALUE__)                (((__VALUE__) == LL_MDMA_DEST_DATA_SIZE_BYTE) || \
00133                                                            ((__VALUE__) == LL_MDMA_DEST_DATA_SIZE_HALFWORD) || \
00134                                                            ((__VALUE__) == LL_MDMA_DEST_DATA_SIZE_WORD) || \
00135                                                            ((__VALUE__) == LL_MDMA_DEST_DATA_SIZE_DOUBLEWORD))
00136 
00137 #define IS_LL_MDMA_SRCDATASIZE(__VALUE__)                 (((__VALUE__) == LL_MDMA_SRC_DATA_SIZE_BYTE) || \
00138                                                            ((__VALUE__) == LL_MDMA_SRC_DATA_SIZE_HALFWORD) || \
00139                                                            ((__VALUE__) == LL_MDMA_SRC_DATA_SIZE_WORD) || \
00140                                                            ((__VALUE__) == LL_MDMA_SRC_DATA_SIZE_DOUBLEWORD))
00141 
00142 #define IS_LL_MDMA_DESTINCMODE(__VALUE__)                 (((__VALUE__) == LL_MDMA_DEST_FIXED) || \
00143                                                            ((__VALUE__) == LL_MDMA_DEST_INCREMENT) || \
00144                                                            ((__VALUE__) == LL_MDMA_DEST_DECREMENT))
00145 
00146 #define IS_LL_MDMA_SRCINCMODE(__VALUE__)                  (((__VALUE__) == LL_MDMA_SRC_FIXED) || \
00147                                                            ((__VALUE__) == LL_MDMA_SRC_INCREMENT) || \
00148                                                            ((__VALUE__) == LL_MDMA_SRC_DECREMENT))
00149 
00150 #define IS_LL_MDMA_BLKRPT_DEST_ADDRUPDATEMODE(__VALUE__)  (((__VALUE__) == LL_MDMA_BLK_RPT_DEST_ADDR_INCREMENT) || \
00151                                                            ((__VALUE__) == LL_MDMA_BLK_RPT_DEST_ADDR_DECREMENT))
00152 
00153 
00154 #define IS_LL_MDMA_BLKRPT_SRC_ADDRUPDATEMODE(__VALUE__)   (((__VALUE__) == LL_MDMA_BLK_RPT_SRC_ADDR_INCREMENT) || \
00155                                                            ((__VALUE__) == LL_MDMA_BLK_RPT_SRC_ADDR_DECREMENT))
00156 
00157 #define IS_LL_MDMA_BLKRPT_DEST_ADDRUPDATEVAL(__VALUE__)   ((__VALUE__)  <= 0x0000FFFFU)
00158 
00159 #define IS_LL_MDMA_BLKRPT_SRC_ADDRUPDATEVAL(__VALUE__)    ((__VALUE__)  <= 0x0000FFFFU)
00160 
00161 #define IS_LL_MDMA_DEST_BUS(__VALUE__)                    (((__VALUE__) == LL_MDMA_DEST_BUS_SYSTEM_AXI) || \
00162                                                            ((__VALUE__) == LL_MDMA_DEST_BUS_AHB_TCM))
00163 
00164 #define IS_LL_MDMA_SRC_BUS(__VALUE__)                     (((__VALUE__) == LL_MDMA_SRC_BUS_SYSTEM_AXI) || \
00165                                                            ((__VALUE__) == LL_MDMA_SRC_BUS_AHB_TCM))
00166 #if defined (QUADSPI) && defined (JPEG) && defined (DSI) /* STM32H747/57 devices */
00167 #define IS_LL_MDMA_HWTRIGGER(__VALUE__)                   (((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM0_TC)      || \
00168                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM1_TC)      || \
00169                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM2_TC)      || \
00170                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM3_TC)      || \
00171                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM4_TC)      || \
00172                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM5_TC)      || \
00173                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM6_TC)      || \
00174                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM7_TC)      || \
00175                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM0_TC)      || \
00176                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM1_TC)      || \
00177                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM2_TC)      || \
00178                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM3_TC)      || \
00179                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM4_TC)      || \
00180                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM5_TC)      || \
00181                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM6_TC)      || \
00182                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM7_TC)      || \
00183                                                            ((__VALUE__) == LL_MDMA_REQ_LTDC_LINE_IT)         || \
00184                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_INFIFO_TH)       || \
00185                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_INFIFO_NF)       || \
00186                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_OUTFIFO_TH)      || \
00187                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_OUTFIFO_NE)      || \
00188                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_END_CONVERSION)  || \
00189                                                            ((__VALUE__) == LL_MDMA_REQ_QUADSPI_FIFO_TH)      || \
00190                                                            ((__VALUE__) == LL_MDMA_REQ_QUADSPI_TC)           || \
00191                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_CLUT_TC)        || \
00192                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TC)             || \
00193                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TW)             || \
00194                                                            ((__VALUE__) == LL_MDMA_REQ_DSI_TEARING_EFFECT)   || \
00195                                                            ((__VALUE__) == LL_MDMA_REQ_DSI_END_REFRESH)      || \
00196                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_END_DATA)      || \
00197                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_DMA_ENDBUFFER) || \
00198                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_COMMAND_END))
00199 #elif defined (QUADSPI) && defined (JPEG) /* STM32H743/53/45/55 devices */
00200 #define IS_LL_MDMA_HWTRIGGER(__VALUE__)                   (((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM0_TC)      || \
00201                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM1_TC)      || \
00202                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM2_TC)      || \
00203                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM3_TC)      || \
00204                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM4_TC)      || \
00205                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM5_TC)      || \
00206                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM6_TC)      || \
00207                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM7_TC)      || \
00208                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM0_TC)      || \
00209                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM1_TC)      || \
00210                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM2_TC)      || \
00211                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM3_TC)      || \
00212                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM4_TC)      || \
00213                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM5_TC)      || \
00214                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM6_TC)      || \
00215                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM7_TC)      || \
00216                                                            ((__VALUE__) == LL_MDMA_REQ_LTDC_LINE_IT)         || \
00217                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_INFIFO_TH)       || \
00218                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_INFIFO_NF)       || \
00219                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_OUTFIFO_TH)      || \
00220                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_OUTFIFO_NE)      || \
00221                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_END_CONVERSION)  || \
00222                                                            ((__VALUE__) == LL_MDMA_REQ_QUADSPI_FIFO_TH)      || \
00223                                                            ((__VALUE__) == LL_MDMA_REQ_QUADSPI_TC)           || \
00224                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_CLUT_TC)        || \
00225                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TC)             || \
00226                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TW)             || \
00227                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_END_DATA)      || \
00228                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_DMA_ENDBUFFER) || \
00229                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_COMMAND_END))
00230 #elif defined (QUADSPI) /* STM32H742 devices */
00231 #define IS_LL_MDMA_HWTRIGGER(__VALUE__)                   (((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM0_TC)      || \
00232                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM1_TC)      || \
00233                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM2_TC)      || \
00234                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM3_TC)      || \
00235                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM4_TC)      || \
00236                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM5_TC)      || \
00237                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM6_TC)      || \
00238                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM7_TC)      || \
00239                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM0_TC)      || \
00240                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM1_TC)      || \
00241                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM2_TC)      || \
00242                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM3_TC)      || \
00243                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM4_TC)      || \
00244                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM5_TC)      || \
00245                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM6_TC)      || \
00246                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM7_TC)      || \
00247                                                            ((__VALUE__) == LL_MDMA_REQ_QUADSPI_FIFO_TH)      || \
00248                                                            ((__VALUE__) == LL_MDMA_REQ_QUADSPI_TC)           || \
00249                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_CLUT_TC)        || \
00250                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TC)             || \
00251                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TW)             || \
00252                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_END_DATA)      || \
00253                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_DMA_ENDBUFFER) || \
00254                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_COMMAND_END))
00255 
00256 #elif defined (OCTOSPI1) && defined (JPEG) /* STM32H7A3/B3 devices */
00257 #define IS_LL_MDMA_HWTRIGGER(__VALUE__)                   (((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM0_TC)      || \
00258                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM1_TC)      || \
00259                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM2_TC)      || \
00260                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM3_TC)      || \
00261                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM4_TC)      || \
00262                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM5_TC)      || \
00263                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM6_TC)      || \
00264                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM7_TC)      || \
00265                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM0_TC)      || \
00266                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM1_TC)      || \
00267                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM2_TC)      || \
00268                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM3_TC)      || \
00269                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM4_TC)      || \
00270                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM5_TC)      || \
00271                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM6_TC)      || \
00272                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM7_TC)      || \
00273                                                            ((__VALUE__) == LL_MDMA_REQ_LTDC_LINE_IT)         || \
00274                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_INFIFO_TH)       || \
00275                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_INFIFO_NF)       || \
00276                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_OUTFIFO_TH)      || \
00277                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_OUTFIFO_NE)      || \
00278                                                            ((__VALUE__) == LL_MDMA_REQ_JPEG_END_CONVERSION)  || \
00279                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI1_FIFO_TH)     || \
00280                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI1_TC)          || \
00281                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_CLUT_TC)        || \
00282                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TC)             || \
00283                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TW)             || \
00284                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_END_DATA)      || \
00285                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_DMA_ENDBUFFER) || \
00286                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_COMMAND_END)   || \
00287                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI2_FIFO_TH)     || \
00288                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI2_TC))
00289 #else /* STM32H723/25/33/35 devices */
00290 #define IS_LL_MDMA_HWTRIGGER(__VALUE__)                   (((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM0_TC)      || \
00291                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM1_TC)      || \
00292                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM2_TC)      || \
00293                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM3_TC)      || \
00294                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM4_TC)      || \
00295                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM5_TC)      || \
00296                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM6_TC)      || \
00297                                                            ((__VALUE__) == LL_MDMA_REQ_DMA1_STREAM7_TC)      || \
00298                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM0_TC)      || \
00299                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM1_TC)      || \
00300                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM2_TC)      || \
00301                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM3_TC)      || \
00302                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM4_TC)      || \
00303                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM5_TC)      || \
00304                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM6_TC)      || \
00305                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2_STREAM7_TC)      || \
00306                                                            ((__VALUE__) == LL_MDMA_REQ_LTDC_LINE_IT)         || \
00307                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI1_FIFO_TH)     || \
00308                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI1_TC)          || \
00309                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_CLUT_TC)        || \
00310                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TC)             || \
00311                                                            ((__VALUE__) == LL_MDMA_REQ_DMA2D_TW)             || \
00312                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_END_DATA)      || \
00313                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_DMA_ENDBUFFER) || \
00314                                                            ((__VALUE__) == LL_MDMA_REQ_SDMMC1_COMMAND_END)   || \
00315                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI2_FIFO_TH)     || \
00316                                                            ((__VALUE__) == LL_MDMA_REQ_OCTOSPI2_TC))
00317 #endif /* QUADSPI && JPEG && DSI */
00318 /**
00319   * @}
00320   */
00321 
00322 /* Private function prototypes -----------------------------------------------*/
00323 
00324 /* Exported functions --------------------------------------------------------*/
00325 /** @addtogroup MDMA_LL_Exported_Functions
00326   * @{
00327   */
00328 
00329 /** @addtogroup MDMA_LL_EF_Init
00330   * @{
00331   */
00332 
00333 /**
00334   * @brief  De-initialize the MDMA registers to their default reset values.
00335   * @param  MDMAx MDMAx Instance
00336   * @param  Channel This parameter can be one of the following values:
00337   *         @arg @ref LL_MDMA_CHANNEL_0
00338   *         @arg @ref LL_MDMA_CHANNEL_1
00339   *         @arg @ref LL_MDMA_CHANNEL_2
00340   *         @arg @ref LL_MDMA_CHANNEL_3
00341   *         @arg @ref LL_MDMA_CHANNEL_4
00342   *         @arg @ref LL_MDMA_CHANNEL_5
00343   *         @arg @ref LL_MDMA_CHANNEL_6
00344   *         @arg @ref LL_MDMA_CHANNEL_7
00345   *         @arg @ref LL_MDMA_CHANNEL_8
00346   *         @arg @ref LL_MDMA_CHANNEL_9
00347   *         @arg @ref LL_MDMA_CHANNEL_10
00348   *         @arg @ref LL_MDMA_CHANNEL_11
00349   *         @arg @ref LL_MDMA_CHANNEL_12
00350   *         @arg @ref LL_MDMA_CHANNEL_13
00351   *         @arg @ref LL_MDMA_CHANNEL_14
00352   *         @arg @ref LL_MDMA_CHANNEL_15
00353   *         @arg @ref LL_MDMA_CHANNEL_ALL
00354   * @retval An ErrorStatus enumeration value:
00355   *          - SUCCESS: MDMA registers are de-initialized
00356   *          - ERROR: Not applicable
00357   */
00358 uint32_t LL_MDMA_DeInit(MDMA_TypeDef *MDMAx, uint32_t Channel)
00359 {
00360   MDMA_Channel_TypeDef *tmp;
00361   ErrorStatus status = SUCCESS;
00362 
00363   /* Check the MDMA Instance MDMAx and Channel parameters*/
00364   assert_param(IS_LL_MDMA_ALL_CHANNEL_INSTANCE(MDMAx, Channel));
00365 
00366   if (Channel == LL_MDMA_CHANNEL_ALL)
00367   {
00368     LL_AHB3_GRP1_ForceReset(LL_AHB3_GRP1_PERIPH_MDMA);
00369     LL_AHB3_GRP1_ReleaseReset(LL_AHB3_GRP1_PERIPH_MDMA);
00370   }
00371   else
00372   {
00373     /* Disable the selected Channel */
00374     LL_MDMA_DisableChannel(MDMAx,Channel);
00375 
00376     /* Get the MDMA Channel Instance */
00377     tmp = (MDMA_Channel_TypeDef *)(LL_MDMA_GET_CHANNEL_INSTANCE(MDMAx, Channel));
00378 
00379     /* Reset MDMAx_Channely control register */
00380     LL_MDMA_WriteReg(tmp, CCR, 0U);
00381 
00382     /* Reset MDMAx_Channely Configuration register */
00383     LL_MDMA_WriteReg(tmp, CTCR, 0U);
00384 
00385     /* Reset MDMAx_Channely block number of data register */
00386     LL_MDMA_WriteReg(tmp, CBNDTR, 0U);
00387 
00388     /* Reset MDMAx_Channely source address register */
00389     LL_MDMA_WriteReg(tmp, CSAR, 0U);
00390 
00391     /* Reset MDMAx_Channely destination address register */
00392     LL_MDMA_WriteReg(tmp, CDAR, 0U);
00393 
00394     /* Reset MDMAx_Channely Block Repeat address Update register */
00395     LL_MDMA_WriteReg(tmp, CBRUR, 0U);
00396 
00397     /* Reset MDMAx_Channely Link Address register */
00398     LL_MDMA_WriteReg(tmp, CLAR, 0U);
00399 
00400     /* Reset MDMAx_Channely Trigger and Bus selection register */
00401     LL_MDMA_WriteReg(tmp, CTBR, 0U);
00402 
00403     /* Reset MDMAx_Channely Mask address register */
00404     LL_MDMA_WriteReg(tmp, CMAR, 0U);
00405 
00406     /* Reset MDMAx_Channely Mask Data register */
00407     LL_MDMA_WriteReg(tmp, CMDR, 0U);
00408 
00409     /* Reset the Channel pending flags */
00410     LL_MDMA_WriteReg(tmp, CIFCR, 0x0000001FU);
00411   }
00412 
00413   return (uint32_t)status;
00414 }
00415 
00416 /**
00417   * @brief  Initialize the MDMA registers according to the specified parameters in MDMA_InitStruct.
00418   * @note   To convert MDMAx_Channely Instance to MDMAx Instance and Channely, use helper macros :
00419   *         @arg @ref LL_MDMA_GET_INSTANCE
00420   *         @arg @ref LL_MDMA_GET_CHANNEL
00421   * @param  MDMAx MDMAx Instance
00422   * @param  Channel This parameter can be one of the following values:
00423   *         @arg @ref LL_MDMA_CHANNEL_0
00424   *         @arg @ref LL_MDMA_CHANNEL_1
00425   *         @arg @ref LL_MDMA_CHANNEL_2
00426   *         @arg @ref LL_MDMA_CHANNEL_3
00427   *         @arg @ref LL_MDMA_CHANNEL_4
00428   *         @arg @ref LL_MDMA_CHANNEL_5
00429   *         @arg @ref LL_MDMA_CHANNEL_6
00430   *         @arg @ref LL_MDMA_CHANNEL_7
00431   *         @arg @ref LL_MDMA_CHANNEL_8
00432   *         @arg @ref LL_MDMA_CHANNEL_9
00433   *         @arg @ref LL_MDMA_CHANNEL_10
00434   *         @arg @ref LL_MDMA_CHANNEL_11
00435   *         @arg @ref LL_MDMA_CHANNEL_12
00436   *         @arg @ref LL_MDMA_CHANNEL_13
00437   *         @arg @ref LL_MDMA_CHANNEL_14
00438   *         @arg @ref LL_MDMA_CHANNEL_15
00439   * @param  MDMA_InitStruct pointer to a @ref LL_MDMA_InitTypeDef structure.
00440   * @retval An ErrorStatus enumeration value:
00441   *          - SUCCESS: MDMA registers are initialized
00442   *          - ERROR: Not applicable
00443   */
00444 uint32_t LL_MDMA_Init(MDMA_TypeDef *MDMAx, uint32_t Channel, LL_MDMA_InitTypeDef *MDMA_InitStruct)
00445 {
00446   /* Check the MDMA Instance MDMAx and Channel parameters*/
00447   assert_param(IS_LL_MDMA_ALL_CHANNEL_INSTANCE(MDMAx, Channel));
00448 
00449   /* Check the MDMA parameters from MDMA_InitStruct */
00450   assert_param(IS_LL_MDMA_BLK_DATALENGTH(MDMA_InitStruct->BlockDataLength));
00451   assert_param(IS_LL_MDMA_BLK_REPEATCOUNT(MDMA_InitStruct->BlockRepeatCount));
00452   assert_param(IS_LL_MDMA_WORDENDIANESS(MDMA_InitStruct->WordEndianess));
00453   assert_param(IS_LL_MDMA_HALFWORDENDIANESS(MDMA_InitStruct->HalfWordEndianess));
00454   assert_param(IS_LL_MDMA_BYTEENDIANESS(MDMA_InitStruct->ByteEndianess));
00455   assert_param(IS_LL_MDMA_PRIORITY(MDMA_InitStruct->Priority));
00456   assert_param(IS_LL_MDMA_BUFFWRITEMODE(MDMA_InitStruct->BufferableWriteMode));
00457   assert_param(IS_LL_MDMA_REQUESTMODE(MDMA_InitStruct->RequestMode));
00458   assert_param(IS_LL_MDMA_TRIGGERMODE(MDMA_InitStruct->TriggerMode));
00459   assert_param(IS_LL_MDMA_PADDINGALIGNEMENT(MDMA_InitStruct->PaddingAlignment));
00460   assert_param(IS_LL_MDMA_PACKMODE(MDMA_InitStruct->PackMode));
00461   assert_param(IS_LL_MDMA_BUFFER_XFERLENGTH(MDMA_InitStruct->BufferTransferLength));
00462   assert_param(IS_LL_MDMA_DESTBURST(MDMA_InitStruct->DestBurst));
00463   assert_param(IS_LL_MDMA_SRCTBURST(MDMA_InitStruct->SrctBurst));
00464   assert_param(IS_LL_MDMA_DESTINCSIZE(MDMA_InitStruct->DestIncSize));
00465   assert_param(IS_LL_MDMA_SRCINCSIZE(MDMA_InitStruct->SrcIncSize));
00466   assert_param(IS_LL_MDMA_DESTDATASIZE(MDMA_InitStruct->DestDataSize));
00467   assert_param(IS_LL_MDMA_SRCDATASIZE(MDMA_InitStruct->SrcDataSize));
00468   assert_param(IS_LL_MDMA_DESTINCMODE(MDMA_InitStruct->DestIncMode));
00469   assert_param(IS_LL_MDMA_SRCINCMODE(MDMA_InitStruct->SrcIncMode));
00470   assert_param(IS_LL_MDMA_BLKRPT_DEST_ADDRUPDATEMODE(MDMA_InitStruct->BlockRepeatDestAddrUpdateMode));
00471   assert_param(IS_LL_MDMA_BLKRPT_SRC_ADDRUPDATEMODE(MDMA_InitStruct->BlockRepeatSrcAddrUpdateMode));
00472   assert_param(IS_LL_MDMA_BLKRPT_DEST_ADDRUPDATEVAL(MDMA_InitStruct->BlockRepeatDestAddrUpdateVal));
00473   assert_param(IS_LL_MDMA_BLKRPT_SRC_ADDRUPDATEVAL(MDMA_InitStruct->BlockRepeatSrcAddrUpdateVal));
00474   assert_param(IS_LL_MDMA_DEST_BUS(MDMA_InitStruct->DestBus));
00475   assert_param(IS_LL_MDMA_SRC_BUS(MDMA_InitStruct->SrcBus));
00476   assert_param(IS_LL_MDMA_HWTRIGGER(MDMA_InitStruct->HWTrigger));
00477 
00478 
00479   /*-------------------------- MDMAx CCR Configuration --------------------------
00480    * Configure the Transfer endianness na priority with parameter :
00481    * - WordEndianess:     MDMA_CCR_WEX[14] bit
00482    * - HalfWordEndianess: MDMA_CCR_HEX[13] bit
00483    * - WordEndianess:     MDMA_CCR_BEX[12] bit
00484    * - Priority:          MDMA_CCR_BEX[7:6] bits
00485    */
00486   LL_MDMA_ConfigXferEndianness(MDMAx, Channel, MDMA_InitStruct->WordEndianess     | \
00487                                                MDMA_InitStruct->HalfWordEndianess | \
00488                                                MDMA_InitStruct->ByteEndianess);
00489 
00490   LL_MDMA_SetChannelPriorityLevel(MDMAx, Channel, MDMA_InitStruct->Priority);
00491 
00492   /*-------------------------- MDMAx CTCR Configuration --------------------------
00493    * Configure the Transfer  parameter :
00494    * - BufferableWriteMode:     MDMA_CTCR_BWM[31] bit
00495    * - RequestMode:             MDMA_CTCR_SWRM[30] bit
00496    * - TriggerMode:             MDMA_CTCR_TRGM[29:28] bits
00497    * - PaddingAlignment:       MDMA_CTCR_PAM[27:26] bits
00498    * - PackMode:                MDMA_CTCR_PKE[25] bit
00499    * - BufferTransferLength:    MDMA_CTCR_TLEN[24:18] bits
00500    * - DestBurst:               MDMA_CTCR_DBURST[17:15] bits
00501    * - SrctBurst:               MDMA_CTCR_SBURST[14:12] bits
00502    * - DestIncSize:             MDMA_CTCR_DINCOS[11:10] bits
00503    * - SrcIncSize:              MDMA_CTCR_SINCOS[9:8] bits
00504    * - DestDataSize:            MDMA_CTCR_DSIZE[7:6] bits
00505    * - SrcDataSize:             MDMA_CTCR_SSIZE[5:4] bits
00506    * - DestIncMode:             MDMA_CTCR_DINC[3:2] bits
00507    * - SrcIncMode:              MDMA_CTCR_SINC[1:0] bits
00508    */
00509   LL_MDMA_ConfigTransfer(MDMAx, Channel, MDMA_InitStruct->BufferableWriteMode | \
00510                                          MDMA_InitStruct->RequestMode         | \
00511                                          MDMA_InitStruct->TriggerMode         | \
00512                                          MDMA_InitStruct->PaddingAlignment    | \
00513                                          MDMA_InitStruct->PackMode            | \
00514                                          MDMA_InitStruct->DestBurst           | \
00515                                          MDMA_InitStruct->SrctBurst           | \
00516                                          MDMA_InitStruct->DestIncSize         | \
00517                                          MDMA_InitStruct->SrcIncSize          | \
00518                                          MDMA_InitStruct->DestDataSize        | \
00519                                          MDMA_InitStruct->SrcDataSize         | \
00520                                          MDMA_InitStruct->DestIncMode         | \
00521                                          MDMA_InitStruct->SrcIncMode, MDMA_InitStruct->BufferTransferLength);
00522 
00523   /*-------------------------- MDMAx CBNDTR Configuration --------------------------
00524    * Configure the Transfer Block counters and update mode with parameter :
00525    * - BlockRepeatCount:                MDMA_CBNDTR_BRC[31:20] bits
00526    * - BlockDataLength:                 MDMA_CBNDTR_BNDT[16:0] bits
00527    * - BlockRepeatDestAddrUpdateMode:   MDMA_CBNDTR_BRDUM[19] bit
00528    * - BlockRepeatDestAddrUpdateMode:   MDMA_CBNDTR_BRSUM[18] bit
00529    */
00530   LL_MDMA_ConfigBlkCounters(MDMAx, Channel, MDMA_InitStruct->BlockRepeatCount, MDMA_InitStruct->BlockDataLength);
00531 
00532   LL_MDMA_ConfigBlkRepeatAddrUpdate(MDMAx, Channel, MDMA_InitStruct->BlockRepeatDestAddrUpdateMode | \
00533                                                    MDMA_InitStruct->BlockRepeatSrcAddrUpdateMode);
00534 
00535 
00536 
00537   /*-------------------------- MDMAx CSAR Configuration --------------------------
00538    * Configure the Transfer source address with parameter :
00539    * - SrcAddress:     MDMA_CSAR_SAR[31:0] bits
00540    */
00541   LL_MDMA_SetSourceAddress(MDMAx, Channel, MDMA_InitStruct->SrcAddress);
00542 
00543   /*-------------------------- MDMAx CDAR Configuration --------------------------
00544    * Configure the Transfer destination address with parameter :
00545    * - DstAddress:     MDMA_CDAR_DAR[31:0] bits
00546    */
00547   LL_MDMA_SetDestinationAddress(MDMAx, Channel, MDMA_InitStruct->DstAddress);
00548 
00549   /*-------------------------- MDMAx CBRUR Configuration --------------------------
00550    * Configure the Transfer Block repeat address update value with parameter :
00551    * - BlockRepeatDestAddrUpdateVal:    MDMA_CBRUR_DUV[31:16] bits
00552    * - BlockRepeatSrcAddrUpdateVal:     MDMA_CBRUR_SUV[15:0] bits
00553    */
00554   LL_MDMA_ConfigBlkRptAddrUpdateValue(MDMAx, Channel, MDMA_InitStruct->BlockRepeatSrcAddrUpdateVal, \
00555                                                MDMA_InitStruct->BlockRepeatDestAddrUpdateVal);
00556 
00557   /*-------------------------- MDMAx CLAR Configuration --------------------------
00558    * Configure the Transfer linked list address with parameter :
00559    * - LinkAddress:     MDMA_CLAR_LAR[31:0] bits
00560    */
00561   LL_MDMA_SetLinkAddress(MDMAx, Channel, MDMA_InitStruct->LinkAddress);
00562 
00563   /*-------------------------- MDMAx CTBR Configuration --------------------------
00564    * Configure the Transfer HW trigger and bus selection with parameter :
00565    * - DestBus:     MDMA_TBR_DBUS[17] bit
00566    * - SrcBus:      MDMA_TBR_SBUS[16] bit
00567    * - HWTrigger:   MDMA_TBR_TSEL[5:0] bits
00568    */
00569   LL_MDMA_ConfigBusSelection(MDMAx, Channel, MDMA_InitStruct->DestBus | MDMA_InitStruct->SrcBus);
00570 
00571   LL_MDMA_SetHWTrigger(MDMAx, Channel, MDMA_InitStruct->HWTrigger);
00572 
00573   /*-------------------------- MDMAx CMAR Configuration --------------------------
00574    * Configure the mask address with parameter :
00575    * - MaskAddress:     MDMA_CMAR_MAR[31:0] bits
00576    */
00577   LL_MDMA_SetMaskAddress(MDMAx, Channel, MDMA_InitStruct->MaskAddress);
00578 
00579   /*-------------------------- MDMAx CMDR Configuration --------------------------
00580    * Configure the mask data with parameter :
00581    * - MaskData:     MDMA_CMDR_MDR[31:0] bits
00582    */
00583   LL_MDMA_SetMaskData(MDMAx, Channel, MDMA_InitStruct->MaskData);
00584 
00585   return (uint32_t)SUCCESS;
00586 }
00587 
00588 /**
00589   * @brief  Set each @ref LL_MDMA_InitTypeDef field to default value.
00590   * @param  MDMA_InitStruct Pointer to a @ref LL_MDMA_InitTypeDef structure.
00591   * @retval None
00592   */
00593 void LL_MDMA_StructInit(LL_MDMA_InitTypeDef *MDMA_InitStruct)
00594 {
00595   /* Set DMA_InitStruct fields to default values */
00596   MDMA_InitStruct->SrcAddress                     = 0x00000000U;
00597   MDMA_InitStruct->DstAddress                     = 0x00000000U;
00598   MDMA_InitStruct->BlockDataLength                = 0x00000000U;
00599   MDMA_InitStruct->BlockRepeatCount               = 0x00000000U;
00600   MDMA_InitStruct->WordEndianess                  = LL_MDMA_WORD_ENDIANNESS_PRESERVE;
00601   MDMA_InitStruct->HalfWordEndianess              = LL_MDMA_HALFWORD_ENDIANNESS_PRESERVE;
00602   MDMA_InitStruct->ByteEndianess                  = LL_MDMA_BYTE_ENDIANNESS_PRESERVE;
00603   MDMA_InitStruct->Priority                       = LL_MDMA_PRIORITY_LOW;
00604   MDMA_InitStruct->BufferableWriteMode            = LL_MDMA_BUFF_WRITE_DISABLE;
00605   MDMA_InitStruct->RequestMode                    = LL_MDMA_REQUEST_MODE_HW;
00606   MDMA_InitStruct->TriggerMode                    = LL_MDMA_BUFFER_TRANSFER;
00607   MDMA_InitStruct->PaddingAlignment               = LL_MDMA_DATAALIGN_RIGHT;
00608   MDMA_InitStruct->PackMode                       = LL_MDMA_PACK_DISABLE;
00609   MDMA_InitStruct->BufferTransferLength           = 0x00000000U;
00610   MDMA_InitStruct->DestBurst                      = LL_MDMA_DEST_BURST_SINGLE;
00611   MDMA_InitStruct->SrctBurst                      = LL_MDMA_SRC_BURST_SINGLE;
00612   MDMA_InitStruct->DestIncSize                    = LL_MDMA_DEST_INC_OFFSET_BYTE;
00613   MDMA_InitStruct->SrcIncSize                     = LL_MDMA_SRC_INC_OFFSET_BYTE;
00614   MDMA_InitStruct->DestDataSize                   = LL_MDMA_DEST_DATA_SIZE_BYTE;
00615   MDMA_InitStruct->SrcDataSize                    = LL_MDMA_SRC_DATA_SIZE_BYTE;
00616   MDMA_InitStruct->DestIncMode                    = LL_MDMA_DEST_FIXED;
00617   MDMA_InitStruct->SrcIncMode                     = LL_MDMA_SRC_FIXED;
00618   MDMA_InitStruct->BlockRepeatDestAddrUpdateMode  = LL_MDMA_BLK_RPT_DEST_ADDR_INCREMENT;
00619   MDMA_InitStruct->BlockRepeatSrcAddrUpdateMode   = LL_MDMA_BLK_RPT_SRC_ADDR_INCREMENT;
00620   MDMA_InitStruct->BlockRepeatDestAddrUpdateVal   = 0x00000000U;
00621   MDMA_InitStruct->BlockRepeatSrcAddrUpdateVal    = 0x00000000U;
00622   MDMA_InitStruct->LinkAddress                    = 0x00000000U;
00623   MDMA_InitStruct->DestBus                        = LL_MDMA_DEST_BUS_SYSTEM_AXI;
00624   MDMA_InitStruct->SrcBus                         = LL_MDMA_SRC_BUS_SYSTEM_AXI;
00625   MDMA_InitStruct->HWTrigger                      = LL_MDMA_REQ_DMA1_STREAM0_TC;
00626   MDMA_InitStruct->MaskAddress                    = 0x00000000U;
00627   MDMA_InitStruct->MaskData                       = 0x00000000U;
00628 }
00629 
00630 /**
00631   * @brief  Initializes MDMA linked list node according to the specified
00632   *         parameters in the MDMA_InitStruct.
00633   * @param  MDMA_InitStruct Pointer to a @ref LL_MDMA_InitTypeDef structure that contains
00634   *         linked list node registers configurations.
00635   * @param  pNode Pointer to linked list node to fill according to MDMA_InitStruct parameters.
00636   * @retval None
00637   */
00638 void LL_MDMA_CreateLinkNode(LL_MDMA_InitTypeDef *MDMA_InitStruct, LL_MDMA_LinkNodeTypeDef *pNode)
00639 {
00640 
00641   /* Check the MDMA parameters from MDMA_InitStruct */
00642   assert_param(IS_LL_MDMA_BLK_DATALENGTH(MDMA_InitStruct->BlockDataLength));
00643   assert_param(IS_LL_MDMA_BLK_REPEATCOUNT(MDMA_InitStruct->BlockRepeatCount));
00644 
00645   assert_param(IS_LL_MDMA_BUFFWRITEMODE(MDMA_InitStruct->BufferableWriteMode));
00646   assert_param(IS_LL_MDMA_REQUESTMODE(MDMA_InitStruct->RequestMode));
00647   assert_param(IS_LL_MDMA_TRIGGERMODE(MDMA_InitStruct->TriggerMode));
00648   assert_param(IS_LL_MDMA_PADDINGALIGNEMENT(MDMA_InitStruct->PaddingAlignment));
00649   assert_param(IS_LL_MDMA_PACKMODE(MDMA_InitStruct->PackMode));
00650   assert_param(IS_LL_MDMA_BUFFER_XFERLENGTH(MDMA_InitStruct->BufferTransferLength));
00651   assert_param(IS_LL_MDMA_DESTBURST(MDMA_InitStruct->DestBurst));
00652   assert_param(IS_LL_MDMA_SRCTBURST(MDMA_InitStruct->SrctBurst));
00653   assert_param(IS_LL_MDMA_DESTINCSIZE(MDMA_InitStruct->DestIncSize));
00654   assert_param(IS_LL_MDMA_SRCINCSIZE(MDMA_InitStruct->SrcIncSize));
00655   assert_param(IS_LL_MDMA_DESTDATASIZE(MDMA_InitStruct->DestDataSize));
00656   assert_param(IS_LL_MDMA_SRCDATASIZE(MDMA_InitStruct->SrcDataSize));
00657   assert_param(IS_LL_MDMA_DESTINCMODE(MDMA_InitStruct->DestIncMode));
00658   assert_param(IS_LL_MDMA_SRCINCMODE(MDMA_InitStruct->SrcIncMode));
00659   assert_param(IS_LL_MDMA_BLKRPT_DEST_ADDRUPDATEMODE(MDMA_InitStruct->BlockRepeatDestAddrUpdateMode));
00660   assert_param(IS_LL_MDMA_BLKRPT_SRC_ADDRUPDATEMODE(MDMA_InitStruct->BlockRepeatSrcAddrUpdateMode));
00661   assert_param(IS_LL_MDMA_BLKRPT_DEST_ADDRUPDATEVAL(MDMA_InitStruct->BlockRepeatDestAddrUpdateVal));
00662   assert_param(IS_LL_MDMA_BLKRPT_SRC_ADDRUPDATEVAL(MDMA_InitStruct->BlockRepeatSrcAddrUpdateVal));
00663   assert_param(IS_LL_MDMA_DEST_BUS(MDMA_InitStruct->DestBus));
00664   assert_param(IS_LL_MDMA_SRC_BUS(MDMA_InitStruct->SrcBus));
00665   assert_param(IS_LL_MDMA_HWTRIGGER(MDMA_InitStruct->HWTrigger));
00666 
00667 
00668   /*-------------------------- MDMAx CTCR Configuration --------------------------
00669    * Configure the Transfer  parameter :
00670    * - BufferableWriteMode:     MDMA_CTCR_BWM[31] bit
00671    * - RequestMode:             MDMA_CTCR_SWRM[30] bit
00672    * - TriggerMode:             MDMA_CTCR_TRGM[29:28] bits
00673    * - PaddingAlignment:       MDMA_CTCR_PAM[27:26] bits
00674    * - PackMode:                MDMA_CTCR_PKE[25] bit
00675    * - BufferTransferLength:    MDMA_CTCR_TLEN[24:18] bits
00676    * - DestBurst:               MDMA_CTCR_DBURST[17:15] bits
00677    * - SrctBurst:               MDMA_CTCR_SBURST[14:12] bits
00678    * - DestIncSize:             MDMA_CTCR_DINCOS[11:10] bits
00679    * - SrcIncSize:              MDMA_CTCR_SINCOS[9:8] bits
00680    * - DestDataSize:            MDMA_CTCR_DSIZE[7:6] bits
00681    * - SrcDataSize:             MDMA_CTCR_SSIZE[5:4] bits
00682    * - DestIncMode:             MDMA_CTCR_DINC[3:2] bits
00683    * - SrcIncMode:              MDMA_CTCR_SINC[1:0] bits
00684    */
00685   pNode->CTCR =  MDMA_InitStruct->BufferableWriteMode | \
00686                  MDMA_InitStruct->RequestMode         | \
00687                  MDMA_InitStruct->TriggerMode         | \
00688                  MDMA_InitStruct->PaddingAlignment    | \
00689                  MDMA_InitStruct->PackMode            | \
00690                  MDMA_InitStruct->DestBurst           | \
00691                  MDMA_InitStruct->SrctBurst           | \
00692                  MDMA_InitStruct->DestIncSize         | \
00693                  MDMA_InitStruct->SrcIncSize          | \
00694                  MDMA_InitStruct->DestDataSize        | \
00695                  MDMA_InitStruct->SrcDataSize         | \
00696                  MDMA_InitStruct->DestIncMode         | \
00697                  MDMA_InitStruct->SrcIncMode          | \
00698                 ((MDMA_InitStruct->BufferTransferLength << MDMA_CTCR_TLEN_Pos) & MDMA_CTCR_TLEN_Msk);
00699 
00700 
00701 
00702   /*-------------------------- MDMAx CBNDTR Configuration --------------------------
00703    * Configure the Transfer Block counters and update mode with parameter :
00704    * - BlockRepeatCount:                MDMA_CBNDTR_BRC[31:20] bits
00705    * - BlockDataLength:                 MDMA_CBNDTR_BNDT[16:0] bits
00706    * - BlockRepeatDestAddrUpdateMode:   MDMA_CBNDTR_BRDUM[19] bit
00707    * - BlockRepeatDestAddrUpdateMode:   MDMA_CBNDTR_BRSUM[18] bit
00708    */
00709   pNode->CBNDTR =  ((MDMA_InitStruct->BlockRepeatCount << MDMA_CBNDTR_BRC_Pos) & MDMA_CBNDTR_BRC_Msk) | \
00710                     MDMA_InitStruct->BlockRepeatDestAddrUpdateMode                                    | \
00711                     MDMA_InitStruct->BlockRepeatSrcAddrUpdateMode                                     | \
00712                    (MDMA_InitStruct->BlockDataLength & MDMA_CBNDTR_BNDT_Msk);
00713 
00714 
00715   /*-------------------------- MDMAx CSAR Configuration --------------------------
00716    * Configure the Transfer source address with parameter :
00717    * - SrcAddress:     MDMA_CSAR_SAR[31:0] bits
00718    */
00719   pNode->CSAR =  MDMA_InitStruct->SrcAddress;
00720 
00721 
00722   /*-------------------------- MDMAx CDAR Configuration --------------------------
00723    * Configure the Transfer destination address with parameter :
00724    * - DstAddress:     MDMA_CDAR_DAR[31:0] bits
00725    */
00726   pNode->CDAR =  MDMA_InitStruct->DstAddress;
00727 
00728   /*-------------------------- MDMAx CBRUR Configuration --------------------------
00729    * Configure the Transfer Block repeat address update value with parameter :
00730    * - BlockRepeatDestAddrUpdateVal:    MDMA_CBRUR_DUV[31:16] bits
00731    * - BlockRepeatSrcAddrUpdateVal:     MDMA_CBRUR_SUV[15:0] bits
00732    */
00733   pNode->CBRUR =  (MDMA_InitStruct->BlockRepeatSrcAddrUpdateVal & MDMA_CBRUR_SUV_Msk)  | \
00734                   ((MDMA_InitStruct->BlockRepeatDestAddrUpdateVal << MDMA_CBRUR_DUV_Pos) & MDMA_CBRUR_DUV_Msk) ;
00735 
00736   /*-------------------------- MDMAx CLAR Configuration --------------------------
00737    * Configure the Transfer linked list address with parameter :
00738    * - LinkAddress:     MDMA_CLAR_LAR[31:0] bits
00739    */
00740   pNode->CLAR = MDMA_InitStruct->LinkAddress;
00741 
00742   /*-------------------------- MDMAx CTBR Configuration --------------------------
00743    * Configure the Transfer HW trigger and bus selection with parameter :
00744    * - DestBus:     MDMA_TBR_DBUS[17] bit
00745    * - SrcBus:      MDMA_TBR_SBUS[16] bit
00746    * - HWTrigger:   MDMA_TBR_TSEL[5:0] bits
00747    */
00748   pNode->CTBR = MDMA_InitStruct->DestBus | MDMA_InitStruct->SrcBus | MDMA_InitStruct->HWTrigger;
00749 
00750   /*-------------------------- MDMAx CMAR Configuration --------------------------
00751    * Configure the mask address with parameter :
00752    * - MaskAddress:     MDMA_CMAR_MAR[31:0] bits
00753    */
00754   pNode->CMAR = MDMA_InitStruct->MaskAddress;
00755 
00756   /*-------------------------- MDMAx CMDR Configuration --------------------------
00757    * Configure the mask data with parameter :
00758    * - MaskData:     MDMA_CMDR_MDR[31:0] bits
00759    */
00760   pNode->CMDR = MDMA_InitStruct->MaskData;
00761 
00762 
00763   pNode->Reserved = 0;
00764 
00765 }
00766 
00767 /**
00768   * @brief  Connect Linked list Nodes.
00769   * @param  pPrevLinkNode Pointer to previous linked list node to be connected to new Lined list node.
00770   * @param  pNewLinkNode Pointer to new Linked list.
00771   * @retval None
00772   */
00773 void LL_MDMA_ConnectLinkNode(LL_MDMA_LinkNodeTypeDef *pPrevLinkNode, LL_MDMA_LinkNodeTypeDef *pNewLinkNode)
00774 {
00775   pPrevLinkNode->CLAR = (uint32_t)pNewLinkNode;
00776 }
00777 
00778 /**
00779   * @brief  Disconnect the next linked list node.
00780   * @param  pLinkNode Pointer to linked list node to be disconnected from the next one.
00781   * @retval None
00782   */
00783 void LL_MDMA_DisconnectNextLinkNode(LL_MDMA_LinkNodeTypeDef *pLinkNode)
00784 {
00785   pLinkNode->CLAR = 0;
00786 }
00787 
00788 /**
00789   * @}
00790   */
00791 
00792 /**
00793   * @}
00794   */
00795 
00796 /**
00797   * @}
00798   */
00799 
00800 #endif /* MDMA */
00801 
00802 /**
00803   * @}
00804   */
00805 
00806 #endif /* USE_FULL_LL_DRIVER */
00807