1 /**
2   ******************************************************************************
3   * @file    stm32l4xx_ll_dma2d.h
4   * @author  MCD Application Team
5   * @brief   Header file of DMA2D LL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2017 STMicroelectronics.
10   * All rights reserved.
11   *
12   * This software is licensed under terms that can be found in the LICENSE file
13   * in the root directory of this software component.
14   * If no LICENSE file comes with this software, it is provided AS-IS.
15   *
16   ******************************************************************************
17   */
18 
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef STM32L4xx_LL_DMA2D_H
21 #define STM32L4xx_LL_DMA2D_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32l4xx.h"
29 
30 /** @addtogroup STM32L4xx_LL_Driver
31   * @{
32   */
33 
34 #if defined (DMA2D)
35 
36 /** @defgroup DMA2D_LL DMA2D
37   * @{
38   */
39 
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
43 /* Private macros ------------------------------------------------------------*/
44 #if defined(USE_FULL_LL_DRIVER)
45 /** @defgroup DMA2D_LL_Private_Macros DMA2D Private Macros
46   * @{
47   */
48 
49 /**
50   * @}
51   */
52 #endif /*USE_FULL_LL_DRIVER*/
53 
54 /* Exported types ------------------------------------------------------------*/
55 #if defined(USE_FULL_LL_DRIVER)
56 /** @defgroup DMA2D_LL_ES_Init_Struct DMA2D Exported Init structures
57   * @{
58   */
59 
60 /**
61   * @brief LL DMA2D Init Structure Definition
62   */
63 typedef struct
64 {
65   uint32_t Mode;                 /*!< Specifies the DMA2D transfer mode.
66                                       - This parameter can be one value of @ref DMA2D_LL_EC_MODE.
67 
68                                       This parameter can be modified afterwards,
69                                       using unitary function @ref LL_DMA2D_SetMode(). */
70 
71   uint32_t ColorMode;            /*!< Specifies the color format of the output image.
72                                       - This parameter can be one value of @ref DMA2D_LL_EC_OUTPUT_COLOR_MODE.
73 
74                                       This parameter can be modified afterwards using,
75                                       unitary function @ref LL_DMA2D_SetOutputColorMode(). */
76 
77   uint32_t OutputBlue;           /*!< Specifies the Blue value of the output image.
78                                       - This parameter must be a number between:
79                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
80                                       - This parameter must be a number between:
81                                         Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
82                                       - This parameter must be a number between:
83                                         Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
84                                       - This parameter must be a number between:
85                                         Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
86                                       - This parameter must be a number between:
87                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
88 
89                                       This parameter can be modified afterwards,
90                                       using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
91                                       function @ref LL_DMA2D_ConfigOutputColor(). */
92 
93   uint32_t OutputGreen;          /*!< Specifies the Green value of the output image.
94                                       - This parameter must be a number between:
95                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
96                                       - This parameter must be a number between:
97                                         Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
98                                       - This parameter must be a number between:
99                                         Min_Data = 0x00 and Max_Data = 0x3F if RGB565 color mode is selected.
100                                       - This parameter must be a number between:
101                                         Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
102                                       - This parameter must be a number between:
103                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
104 
105                                       This parameter can be modified afterwards
106                                       using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
107                                       function @ref LL_DMA2D_ConfigOutputColor(). */
108 
109   uint32_t OutputRed;            /*!< Specifies the Red value of the output image.
110                                       - This parameter must be a number between:
111                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
112                                       - This parameter must be a number between:
113                                         Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
114                                       - This parameter must be a number between:
115                                         Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
116                                       - This parameter must be a number between:
117                                         Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
118                                       - This parameter must be a number between:
119                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
120 
121                                       This parameter can be modified afterwards
122                                       using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
123                                       function @ref LL_DMA2D_ConfigOutputColor(). */
124 
125   uint32_t OutputAlpha;          /*!< Specifies the Alpha channel of the output image.
126                                       - This parameter must be a number between:
127                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
128                                       - This parameter must be a number between:
129                                         Min_Data = 0x00 and Max_Data = 0x01 if ARGB1555 color mode is selected.
130                                       - This parameter must be a number between:
131                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
132                                       - This parameter is not considered if RGB888 or RGB565 color mode is selected.
133 
134                                       This parameter can be modified afterwards using,
135                                       unitary function @ref LL_DMA2D_SetOutputColor() or configuration
136                                       function @ref LL_DMA2D_ConfigOutputColor(). */
137 
138   uint32_t OutputMemoryAddress;  /*!< Specifies the memory address.
139                                       - This parameter must be a number between:
140                                         Min_Data = 0x0000 and Max_Data = 0xFFFFFFFF.
141 
142                                       This parameter can be modified afterwards,
143                                       using unitary function @ref LL_DMA2D_SetOutputMemAddr(). */
144 
145 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
146   uint32_t OutputSwapMode;             /*!< Specifies the output swap mode color format of the output image.
147                                       - This parameter can be one value of @ref DMA2D_LL_EC_OUTPUT_SWAP_MODE.
148 
149                                       This parameter can be modified afterwards,
150                                       using unitary function @ref LL_DMA2D_SetOutputSwapMode(). */
151 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
152 
153 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
154   uint32_t LineOffsetMode;       /*!< Specifies the output line offset mode.
155                                       - This parameter can be one value of @ref DMA2D_LL_EC_LINE_OFFSET_MODE.
156 
157                                       This parameter can be modified afterwards,
158                                       using unitary function @ref LL_DMA2D_SetLineOffsetMode(). */
159 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
160 
161   uint32_t LineOffset;           /*!< Specifies the output line offset value.
162                                       - This parameter must be a number between:
163                                       Min_Data = 0x0000 and Max_Data = 0x3FFF on devices
164                                       where the Line Offset Mode feature is available.
165                                       else between Min_Data = 0x0000 and Max_Data = 0xFFFF on other devices.
166 
167                                       This parameter can be modified afterwards,
168                                       using unitary function @ref LL_DMA2D_SetLineOffset(). */
169 
170   uint32_t NbrOfLines;           /*!< Specifies the number of lines of the area to be transferred.
171                                       - This parameter must be a number between:
172                                         Min_Data = 0x0000 and Max_Data = 0xFFFF.
173 
174                                       This parameter can be modified afterwards,
175                                       using unitary function @ref LL_DMA2D_SetNbrOfLines(). */
176 
177   uint32_t NbrOfPixelsPerLines;  /*!< Specifies the number of pixels per lines of the area to be transferred.
178                                       - This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x3FFF.
179 
180                                       This parameter can be modified afterwards using,
181                                       unitary function @ref LL_DMA2D_SetNbrOfPixelsPerLines(). */
182 
183   uint32_t AlphaInversionMode;   /*!< Specifies the output alpha inversion mode.
184                                       - This parameter can be one value of @ref DMA2D_LL_EC_ALPHA_INVERSION.
185 
186                                       This parameter can be modified afterwards,
187                                       using unitary function @ref LL_DMA2D_SetOutputAlphaInvMode(). */
188 
189   uint32_t RBSwapMode;           /*!< Specifies the output Red Blue swap mode.
190                                       - This parameter can be one value of @ref DMA2D_LL_EC_RED_BLUE_SWAP.
191 
192                                       This parameter can be modified afterwards,
193                                       using unitary function @ref LL_DMA2D_SetOutputRBSwapMode(). */
194 
195 } LL_DMA2D_InitTypeDef;
196 
197 /**
198   * @brief LL DMA2D Layer Configuration Structure Definition
199   */
200 typedef struct
201 {
202   uint32_t MemoryAddress;        /*!< Specifies the foreground or background memory address.
203                                       - This parameter must be a number between:
204                                         Min_Data = 0x0000 and Max_Data = 0xFFFFFFFF.
205 
206                                       This parameter can be modified afterwards using unitary functions
207                                       - @ref LL_DMA2D_FGND_SetMemAddr() for foreground layer,
208                                       - @ref LL_DMA2D_BGND_SetMemAddr() for background layer. */
209 
210   uint32_t LineOffset;           /*!< Specifies the foreground or background line offset value.
211                                       - This parameter must be a number between Min_Data = 0x0000 and Max_Data = 0x3FFF.
212 
213                                       This parameter can be modified afterwards using unitary functions
214                                       - @ref LL_DMA2D_FGND_SetLineOffset() for foreground layer,
215                                       - @ref LL_DMA2D_BGND_SetLineOffset() for background layer. */
216 
217   uint32_t ColorMode;            /*!< Specifies the foreground or background color mode.
218                                       - This parameter can be one value of @ref DMA2D_LL_EC_INPUT_COLOR_MODE.
219 
220                                       This parameter can be modified afterwards using unitary functions
221                                       - @ref LL_DMA2D_FGND_SetColorMode() for foreground layer,
222                                       - @ref LL_DMA2D_BGND_SetColorMode() for background layer. */
223 
224   uint32_t CLUTColorMode;        /*!< Specifies the foreground or background CLUT color mode.
225                                        - This parameter can be one value of @ref DMA2D_LL_EC_CLUT_COLOR_MODE.
226 
227                                       This parameter can be modified afterwards using unitary functions
228                                       - @ref LL_DMA2D_FGND_SetCLUTColorMode() for foreground layer,
229                                       - @ref LL_DMA2D_BGND_SetCLUTColorMode() for background layer. */
230 
231   uint32_t CLUTSize;             /*!< Specifies the foreground or background CLUT size.
232                                       - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
233 
234                                       This parameter can be modified afterwards using unitary functions
235                                       - @ref LL_DMA2D_FGND_SetCLUTSize() for foreground layer,
236                                       - @ref LL_DMA2D_BGND_SetCLUTSize() for background layer. */
237 
238   uint32_t AlphaMode;            /*!< Specifies the foreground or background alpha mode.
239                                        - This parameter can be one value of @ref DMA2D_LL_EC_ALPHA_MODE.
240 
241                                       This parameter can be modified afterwards using unitary functions
242                                       - @ref LL_DMA2D_FGND_SetAlphaMode() for foreground layer,
243                                       - @ref LL_DMA2D_BGND_SetAlphaMode() for background layer. */
244 
245   uint32_t Alpha;                /*!< Specifies the foreground or background Alpha value.
246                                       - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
247 
248                                       This parameter can be modified afterwards using unitary functions
249                                       - @ref LL_DMA2D_FGND_SetAlpha() for foreground layer,
250                                       - @ref LL_DMA2D_BGND_SetAlpha() for background layer. */
251 
252   uint32_t Blue;                 /*!< Specifies the foreground or background Blue color value.
253                                       - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
254 
255                                       This parameter can be modified afterwards using unitary functions
256                                       - @ref LL_DMA2D_FGND_SetBlueColor() for foreground layer,
257                                       - @ref LL_DMA2D_BGND_SetBlueColor() for background layer. */
258 
259   uint32_t Green;                /*!< Specifies the foreground or background Green color value.
260                                       - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
261 
262                                       This parameter can be modified afterwards using unitary functions
263                                       - @ref LL_DMA2D_FGND_SetGreenColor() for foreground layer,
264                                       - @ref LL_DMA2D_BGND_SetGreenColor() for background layer. */
265 
266   uint32_t Red;                  /*!< Specifies the foreground or background Red color value.
267                                       - This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF.
268 
269                                       This parameter can be modified afterwards using unitary functions
270                                       - @ref LL_DMA2D_FGND_SetRedColor() for foreground layer,
271                                       - @ref LL_DMA2D_BGND_SetRedColor() for background layer. */
272 
273   uint32_t CLUTMemoryAddress;    /*!< Specifies the foreground or background CLUT memory address.
274                                       - This parameter must be a number between:
275                                         Min_Data = 0x0000 and Max_Data = 0xFFFFFFFF.
276 
277                                       This parameter can be modified afterwards using unitary functions
278                                       - @ref LL_DMA2D_FGND_SetCLUTMemAddr() for foreground layer,
279                                       - @ref LL_DMA2D_BGND_SetCLUTMemAddr() for background layer. */
280 
281   uint32_t AlphaInversionMode;   /*!< Specifies the foreground or background alpha inversion mode.
282                                       - This parameter can be one value of @ref DMA2D_LL_EC_ALPHA_INVERSION.
283 
284                                       This parameter can be modified afterwards using unitary functions
285                                       - @ref LL_DMA2D_FGND_SetAlphaInvMode() for foreground layer,
286                                       - @ref LL_DMA2D_BGND_SetAlphaInvMode() for background layer. */
287 
288   uint32_t RBSwapMode;           /*!< Specifies the foreground or background Red Blue swap mode.
289                                       This parameter can be one value of @ref DMA2D_LL_EC_RED_BLUE_SWAP .
290 
291                                       This parameter can be modified afterwards using unitary functions
292                                       - @ref LL_DMA2D_FGND_SetRBSwapMode() for foreground layer,
293                                       - @ref LL_DMA2D_BGND_SetRBSwapMode() for background layer. */
294 
295 
296 } LL_DMA2D_LayerCfgTypeDef;
297 
298 /**
299   * @brief LL DMA2D Output Color Structure Definition
300   */
301 typedef struct
302 {
303   uint32_t ColorMode;            /*!< Specifies the color format of the output image.
304                                       - This parameter can be one value of @ref DMA2D_LL_EC_OUTPUT_COLOR_MODE.
305 
306                                       This parameter can be modified afterwards using
307                     unitary function @ref LL_DMA2D_SetOutputColorMode(). */
308 
309   uint32_t OutputBlue;           /*!< Specifies the Blue value of the output image.
310                                       - This parameter must be a number between:
311                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
312                                       - This parameter must be a number between:
313                                         Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
314                                       - This parameter must be a number between:
315                                         Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
316                                       - This parameter must be a number between:
317                                         Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
318                                       - This parameter must be a number between:
319                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
320 
321                                       This parameter can be modified afterwards using,
322                                       unitary function @ref LL_DMA2D_SetOutputColor() or configuration
323                                       function @ref LL_DMA2D_ConfigOutputColor(). */
324 
325   uint32_t OutputGreen;          /*!< Specifies the Green value of the output image.
326                                       - This parameter must be a number between:
327                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
328                                       - This parameter must be a number between
329                                         Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
330                                       - This parameter must be a number between:
331                                         Min_Data = 0x00 and Max_Data = 0x3F if RGB565 color mode is selected.
332                                       - This parameter must be a number between:
333                                         Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
334                                       - This parameter must be a number between:
335                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
336 
337                                       This parameter can be modified afterwards,
338                                       using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
339                                       function @ref LL_DMA2D_ConfigOutputColor(). */
340 
341   uint32_t OutputRed;            /*!< Specifies the Red value of the output image.
342                                       - This parameter must be a number between:
343                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
344                                       - This parameter must be a number between:
345                                         Min_Data = 0x00 and Max_Data = 0xFF if RGB888 color mode is selected.
346                                       - This parameter must be a number between:
347                                         Min_Data = 0x00 and Max_Data = 0x1F if RGB565 color mode is selected.
348                                       - This parameter must be a number between:
349                                         Min_Data = 0x00 and Max_Data = 0x1F if ARGB1555 color mode is selected.
350                                       - This parameter must be a number between:
351                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
352 
353                                       This parameter can be modified afterwards,
354                                       using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
355                                       function @ref LL_DMA2D_ConfigOutputColor(). */
356 
357   uint32_t OutputAlpha;          /*!< Specifies the Alpha channel of the output image.
358                                       - This parameter must be a number between:
359                                         Min_Data = 0x00 and Max_Data = 0xFF if ARGB8888 color mode is selected.
360                                       - This parameter must be a number between:
361                                         Min_Data = 0x00 and Max_Data = 0x01 if ARGB1555 color mode is selected.
362                                       - This parameter must be a number between:
363                                         Min_Data = 0x00 and Max_Data = 0x0F if ARGB4444 color mode is selected.
364                                       - This parameter is not considered if RGB888 or RGB565 color mode is selected.
365 
366                                       This parameter can be modified afterwards,
367                                       using unitary function @ref LL_DMA2D_SetOutputColor() or configuration
368                                       function @ref LL_DMA2D_ConfigOutputColor(). */
369 
370 } LL_DMA2D_ColorTypeDef;
371 
372 /**
373   * @}
374   */
375 #endif /* USE_FULL_LL_DRIVER */
376 
377 /* Exported constants --------------------------------------------------------*/
378 /** @defgroup DMA2D_LL_Exported_Constants DMA2D Exported Constants
379   * @{
380   */
381 
382 /** @defgroup DMA2D_LL_EC_GET_FLAG Get Flags Defines
383   * @brief    Flags defines which can be used with LL_DMA2D_ReadReg function
384   * @{
385   */
386 #define LL_DMA2D_FLAG_CEIF          DMA2D_ISR_CEIF     /*!< Configuration Error Interrupt Flag */
387 #define LL_DMA2D_FLAG_CTCIF         DMA2D_ISR_CTCIF    /*!< CLUT Transfer Complete Interrupt Flag */
388 #define LL_DMA2D_FLAG_CAEIF         DMA2D_ISR_CAEIF    /*!< CLUT Access Error Interrupt Flag */
389 #define LL_DMA2D_FLAG_TWIF          DMA2D_ISR_TWIF     /*!< Transfer Watermark Interrupt Flag */
390 #define LL_DMA2D_FLAG_TCIF          DMA2D_ISR_TCIF     /*!< Transfer Complete Interrupt Flag */
391 #define LL_DMA2D_FLAG_TEIF          DMA2D_ISR_TEIF     /*!< Transfer Error Interrupt Flag */
392 /**
393   * @}
394   */
395 
396 /** @defgroup DMA2D_LL_EC_IT IT Defines
397   * @brief    IT defines which can be used with LL_DMA2D_ReadReg and  LL_DMA2D_WriteReg functions
398   * @{
399   */
400 #define LL_DMA2D_IT_CEIE             DMA2D_CR_CEIE    /*!< Configuration Error Interrupt */
401 #define LL_DMA2D_IT_CTCIE            DMA2D_CR_CTCIE   /*!< CLUT Transfer Complete Interrupt */
402 #define LL_DMA2D_IT_CAEIE            DMA2D_CR_CAEIE   /*!< CLUT Access Error Interrupt */
403 #define LL_DMA2D_IT_TWIE             DMA2D_CR_TWIE    /*!< Transfer Watermark Interrupt */
404 #define LL_DMA2D_IT_TCIE             DMA2D_CR_TCIE    /*!< Transfer Complete Interrupt */
405 #define LL_DMA2D_IT_TEIE             DMA2D_CR_TEIE    /*!< Transfer Error Interrupt */
406 /**
407   * @}
408   */
409 
410 /** @defgroup DMA2D_LL_EC_MODE Mode
411   * @{
412   */
413 #define LL_DMA2D_MODE_M2M                       0x00000000U                       /*!< DMA2D memory to memory transfer mode */
414 #define LL_DMA2D_MODE_M2M_PFC                   DMA2D_CR_MODE_0                   /*!< DMA2D memory to memory with pixel format conversion transfer mode */
415 #define LL_DMA2D_MODE_M2M_BLEND                 DMA2D_CR_MODE_1                   /*!< DMA2D memory to memory with blending transfer mode */
416 #define LL_DMA2D_MODE_R2M                       (DMA2D_CR_MODE_0|DMA2D_CR_MODE_1) /*!< DMA2D register to memory transfer mode */
417 #if defined(DMA2D_M2M_BLEND_FIXED_COLOR_FG_BG_SUPPORT)
418 #define LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG  DMA2D_CR_MODE_2                   /*!< DMA2D memory to memory with blending transfer mode and fixed color foreground */
419 #define LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG  (DMA2D_CR_MODE_0|DMA2D_CR_MODE_2) /*!< DMA2D memory to memory with blending transfer mode and fixed color background */
420 #endif /* DMA2D_M2M_BLEND_FIXED_COLOR_FG_BG_SUPPORT */
421 /**
422   * @}
423   */
424 
425 /** @defgroup DMA2D_LL_EC_OUTPUT_COLOR_MODE Output Color Mode
426   * @{
427   */
428 #define LL_DMA2D_OUTPUT_MODE_ARGB8888     0x00000000U                           /*!< ARGB8888 */
429 #define LL_DMA2D_OUTPUT_MODE_RGB888       DMA2D_OPFCCR_CM_0                     /*!< RGB888   */
430 #define LL_DMA2D_OUTPUT_MODE_RGB565       DMA2D_OPFCCR_CM_1                     /*!< RGB565   */
431 #define LL_DMA2D_OUTPUT_MODE_ARGB1555     (DMA2D_OPFCCR_CM_0|DMA2D_OPFCCR_CM_1) /*!< ARGB1555 */
432 #define LL_DMA2D_OUTPUT_MODE_ARGB4444     DMA2D_OPFCCR_CM_2                     /*!< ARGB4444 */
433 /**
434   * @}
435   */
436 
437 /** @defgroup DMA2D_LL_EC_INPUT_COLOR_MODE Input Color Mode
438   * @{
439   */
440 #define LL_DMA2D_INPUT_MODE_ARGB8888      0x00000000U                                                /*!< ARGB8888 */
441 #define LL_DMA2D_INPUT_MODE_RGB888        DMA2D_FGPFCCR_CM_0                                         /*!< RGB888   */
442 #define LL_DMA2D_INPUT_MODE_RGB565        DMA2D_FGPFCCR_CM_1                                         /*!< RGB565   */
443 #define LL_DMA2D_INPUT_MODE_ARGB1555      (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_1)                    /*!< ARGB1555 */
444 #define LL_DMA2D_INPUT_MODE_ARGB4444      DMA2D_FGPFCCR_CM_2                                         /*!< ARGB4444 */
445 #define LL_DMA2D_INPUT_MODE_L8            (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_2)                    /*!< L8       */
446 #define LL_DMA2D_INPUT_MODE_AL44          (DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_2)                    /*!< AL44     */
447 #define LL_DMA2D_INPUT_MODE_AL88          (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_2) /*!< AL88     */
448 #define LL_DMA2D_INPUT_MODE_L4            DMA2D_FGPFCCR_CM_3                                         /*!< L4       */
449 #define LL_DMA2D_INPUT_MODE_A8            (DMA2D_FGPFCCR_CM_0|DMA2D_FGPFCCR_CM_3)                    /*!< A8       */
450 #define LL_DMA2D_INPUT_MODE_A4            (DMA2D_FGPFCCR_CM_1|DMA2D_FGPFCCR_CM_3)                    /*!< A4       */
451 /**
452   * @}
453   */
454 
455 /** @defgroup DMA2D_LL_EC_ALPHA_MODE Alpha Mode
456   * @{
457   */
458 #define LL_DMA2D_ALPHA_MODE_NO_MODIF       0x00000000U             /*!< No modification of the alpha channel value */
459 #define LL_DMA2D_ALPHA_MODE_REPLACE        DMA2D_FGPFCCR_AM_0      /*!< Replace original alpha channel value by
460                                                                         programmed alpha value                     */
461 #define LL_DMA2D_ALPHA_MODE_COMBINE        DMA2D_FGPFCCR_AM_1      /*!< Replace original alpha channel value by
462                                                                         programmed alpha value with,
463                                                                         original alpha channel value               */
464 /**
465   * @}
466   */
467 
468 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
469 /** @defgroup DMA2D_LL_EC_OUTPUT_SWAP_MODE Swap Mode
470   * @{
471   */
472 #define LL_DMA2D_SWAP_MODE_REGULAR        0x00000000U                      /*!< Regular order */
473 #define LL_DMA2D_SWAP_MODE_TWO_BY_TWO     DMA2D_OPFCCR_SB                  /*!< Bytes swapped two by two */
474 /**
475   * @}
476   */
477 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
478 
479 /** @defgroup DMA2D_LL_EC_RED_BLUE_SWAP Red Blue Swap
480   * @{
481   */
482 #define LL_DMA2D_RB_MODE_REGULAR          0x00000000U                      /*!< RGB or ARGB */
483 #define LL_DMA2D_RB_MODE_SWAP             DMA2D_FGPFCCR_RBS                /*!< BGR or ABGR */
484 /**
485   * @}
486   */
487 
488 /** @defgroup DMA2D_LL_EC_ALPHA_INVERSION Alpha Inversion
489   * @{
490   */
491 #define LL_DMA2D_ALPHA_REGULAR          0x00000000U                     /*!< Regular alpha  */
492 #define LL_DMA2D_ALPHA_INVERTED         DMA2D_FGPFCCR_AI                /*!< Inverted alpha */
493 /**
494   * @}
495   */
496 
497 
498 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
499 /** @defgroup DMA2D_LL_EC_LINE_OFFSET_MODE Line Offset Mode
500   * @{
501   */
502 #define LL_DMA2D_LINE_OFFSET_PIXELS     0x00000000U                     /*!< Line offsets are expressed in pixels  */
503 #define LL_DMA2D_LINE_OFFSET_BYTES      DMA2D_CR_LOM                    /*!< Line offsets are expressed in bytes   */
504 /**
505   * @}
506   */
507 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
508 
509 /** @defgroup DMA2D_LL_EC_CLUT_COLOR_MODE CLUT Color Mode
510   * @{
511   */
512 #define LL_DMA2D_CLUT_COLOR_MODE_ARGB8888          0x00000000U                     /*!< ARGB8888 */
513 #define LL_DMA2D_CLUT_COLOR_MODE_RGB888            DMA2D_FGPFCCR_CCM               /*!< RGB888   */
514 /**
515   * @}
516   */
517 
518 
519 /**
520   * @}
521   */
522 
523 /* Exported macro ------------------------------------------------------------*/
524 /** @defgroup DMA2D_LL_Exported_Macros DMA2D Exported Macros
525   * @{
526   */
527 
528 /** @defgroup DMA2D_LL_EM_WRITE_READ Common Write and read registers Macros
529   * @{
530   */
531 
532 /**
533   * @brief  Write a value in DMA2D register.
534   * @param  __INSTANCE__ DMA2D Instance
535   * @param  __REG__ Register to be written
536   * @param  __VALUE__ Value to be written in the register
537   * @retval None
538   */
539 #define LL_DMA2D_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
540 
541 /**
542   * @brief  Read a value in DMA2D register.
543   * @param  __INSTANCE__ DMA2D Instance
544   * @param  __REG__ Register to be read
545   * @retval Register value
546   */
547 #define LL_DMA2D_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__)
548 /**
549   * @}
550   */
551 
552 /**
553   * @}
554   */
555 
556 /* Exported functions --------------------------------------------------------*/
557 /** @defgroup DMA2D_LL_Exported_Functions DMA2D Exported Functions
558   * @{
559   */
560 
561 /** @defgroup DMA2D_LL_EF_Configuration Configuration Functions
562   * @{
563   */
564 
565 /**
566   * @brief  Start a DMA2D transfer.
567   * @rmtoll CR          START            LL_DMA2D_Start
568   * @param  DMA2Dx DMA2D Instance
569   * @retval None
570   */
LL_DMA2D_Start(DMA2D_TypeDef * DMA2Dx)571 __STATIC_INLINE void LL_DMA2D_Start(DMA2D_TypeDef *DMA2Dx)
572 {
573   SET_BIT(DMA2Dx->CR, DMA2D_CR_START);
574 }
575 
576 /**
577   * @brief  Indicate if a DMA2D transfer is ongoing.
578   * @rmtoll CR          START            LL_DMA2D_IsTransferOngoing
579   * @param  DMA2Dx DMA2D Instance
580   * @retval State of bit (1 or 0).
581   */
LL_DMA2D_IsTransferOngoing(const DMA2D_TypeDef * DMA2Dx)582 __STATIC_INLINE uint32_t LL_DMA2D_IsTransferOngoing(const DMA2D_TypeDef *DMA2Dx)
583 {
584   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_START) == (DMA2D_CR_START)) ? 1UL : 0UL);
585 }
586 
587 /**
588   * @brief  Suspend DMA2D transfer.
589   * @note   This API can be used to suspend automatic foreground or background CLUT loading.
590   * @rmtoll CR          SUSP            LL_DMA2D_Suspend
591   * @param  DMA2Dx DMA2D Instance
592   * @retval None
593   */
LL_DMA2D_Suspend(DMA2D_TypeDef * DMA2Dx)594 __STATIC_INLINE void LL_DMA2D_Suspend(DMA2D_TypeDef *DMA2Dx)
595 {
596   MODIFY_REG(DMA2Dx->CR, DMA2D_CR_SUSP | DMA2D_CR_START, DMA2D_CR_SUSP);
597 }
598 
599 /**
600   * @brief  Resume DMA2D transfer.
601   * @note   This API can be used to resume automatic foreground or background CLUT loading.
602   * @rmtoll CR          SUSP            LL_DMA2D_Resume
603   * @param  DMA2Dx DMA2D Instance
604   * @retval None
605   */
LL_DMA2D_Resume(DMA2D_TypeDef * DMA2Dx)606 __STATIC_INLINE void LL_DMA2D_Resume(DMA2D_TypeDef *DMA2Dx)
607 {
608   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_SUSP | DMA2D_CR_START);
609 }
610 
611 /**
612   * @brief  Indicate if DMA2D transfer is suspended.
613   * @note   This API can be used to indicate whether or not automatic foreground or
614   *         background CLUT loading is suspended.
615   * @rmtoll CR          SUSP            LL_DMA2D_IsSuspended
616   * @param  DMA2Dx DMA2D Instance
617   * @retval State of bit (1 or 0).
618   */
LL_DMA2D_IsSuspended(const DMA2D_TypeDef * DMA2Dx)619 __STATIC_INLINE uint32_t LL_DMA2D_IsSuspended(const DMA2D_TypeDef *DMA2Dx)
620 {
621   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_SUSP) == (DMA2D_CR_SUSP)) ? 1UL : 0UL);
622 }
623 
624 /**
625   * @brief  Abort DMA2D transfer.
626   * @note   This API can be used to abort automatic foreground or background CLUT loading.
627   * @rmtoll CR          ABORT            LL_DMA2D_Abort
628   * @param  DMA2Dx DMA2D Instance
629   * @retval None
630   */
LL_DMA2D_Abort(DMA2D_TypeDef * DMA2Dx)631 __STATIC_INLINE void LL_DMA2D_Abort(DMA2D_TypeDef *DMA2Dx)
632 {
633   MODIFY_REG(DMA2Dx->CR, DMA2D_CR_ABORT | DMA2D_CR_START, DMA2D_CR_ABORT);
634 }
635 
636 /**
637   * @brief  Indicate if DMA2D transfer is aborted.
638   * @note   This API can be used to indicate whether or not automatic foreground or
639   *         background CLUT loading is aborted.
640   * @rmtoll CR          ABORT            LL_DMA2D_IsAborted
641   * @param  DMA2Dx DMA2D Instance
642   * @retval State of bit (1 or 0).
643   */
LL_DMA2D_IsAborted(const DMA2D_TypeDef * DMA2Dx)644 __STATIC_INLINE uint32_t LL_DMA2D_IsAborted(const DMA2D_TypeDef *DMA2Dx)
645 {
646   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_ABORT) == (DMA2D_CR_ABORT)) ? 1UL : 0UL);
647 }
648 
649 /**
650   * @brief  Set DMA2D mode.
651   * @rmtoll CR          MODE          LL_DMA2D_SetMode
652   * @param  DMA2Dx DMA2D Instance
653   * @param  Mode This parameter can be one of the following values:
654   *         @arg @ref LL_DMA2D_MODE_M2M
655   *         @arg @ref LL_DMA2D_MODE_M2M_PFC
656   *         @arg @ref LL_DMA2D_MODE_M2M_BLEND
657   *         @arg @ref LL_DMA2D_MODE_R2M
658   *         @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG (*)
659   *         @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG (*)
660   *
661   *         (*) value not defined in all devices.
662   * @retval None
663   */
LL_DMA2D_SetMode(DMA2D_TypeDef * DMA2Dx,uint32_t Mode)664 __STATIC_INLINE void LL_DMA2D_SetMode(DMA2D_TypeDef *DMA2Dx, uint32_t Mode)
665 {
666   MODIFY_REG(DMA2Dx->CR, DMA2D_CR_MODE, Mode);
667 }
668 
669 /**
670   * @brief  Return DMA2D mode
671   * @rmtoll CR          MODE         LL_DMA2D_GetMode
672   * @param  DMA2Dx DMA2D Instance
673   * @retval Returned value can be one of the following values:
674   *         @arg @ref LL_DMA2D_MODE_M2M
675   *         @arg @ref LL_DMA2D_MODE_M2M_PFC
676   *         @arg @ref LL_DMA2D_MODE_M2M_BLEND
677   *         @arg @ref LL_DMA2D_MODE_R2M
678   *         @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG (*)
679   *         @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG (*)
680   *
681   *         (*) value not defined in all devices.
682   */
LL_DMA2D_GetMode(const DMA2D_TypeDef * DMA2Dx)683 __STATIC_INLINE uint32_t LL_DMA2D_GetMode(const DMA2D_TypeDef *DMA2Dx)
684 {
685   return (uint32_t)(READ_BIT(DMA2Dx->CR, DMA2D_CR_MODE));
686 }
687 
688 /**
689   * @brief  Set DMA2D output color mode.
690   * @rmtoll OPFCCR          CM          LL_DMA2D_SetOutputColorMode
691   * @param  DMA2Dx DMA2D Instance
692   * @param  ColorMode This parameter can be one of the following values:
693   *         @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
694   *         @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
695   *         @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
696   *         @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
697   *         @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
698   * @retval None
699   */
LL_DMA2D_SetOutputColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t ColorMode)700 __STATIC_INLINE void LL_DMA2D_SetOutputColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
701 {
702   MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_CM, ColorMode);
703 }
704 
705 /**
706   * @brief  Return DMA2D output color mode.
707   * @rmtoll OPFCCR          CM         LL_DMA2D_GetOutputColorMode
708   * @param  DMA2Dx DMA2D Instance
709   * @retval Returned value can be one of the following values:
710   *         @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB8888
711   *         @arg @ref LL_DMA2D_OUTPUT_MODE_RGB888
712   *         @arg @ref LL_DMA2D_OUTPUT_MODE_RGB565
713   *         @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555
714   *         @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444
715   */
LL_DMA2D_GetOutputColorMode(const DMA2D_TypeDef * DMA2Dx)716 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputColorMode(const DMA2D_TypeDef *DMA2Dx)
717 {
718   return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_CM));
719 }
720 
721 /**
722   * @brief  Set DMA2D output Red Blue swap mode.
723   * @rmtoll OPFCCR          RBS          LL_DMA2D_SetOutputRBSwapMode
724   * @param  DMA2Dx DMA2D Instance
725   * @param  RBSwapMode This parameter can be one of the following values:
726   *         @arg @ref LL_DMA2D_RB_MODE_REGULAR
727   *         @arg @ref LL_DMA2D_RB_MODE_SWAP
728   * @retval None
729   */
LL_DMA2D_SetOutputRBSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t RBSwapMode)730 __STATIC_INLINE void LL_DMA2D_SetOutputRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t RBSwapMode)
731 {
732   MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_RBS, RBSwapMode);
733 }
734 
735 /**
736   * @brief  Return DMA2D output Red Blue swap mode.
737   * @rmtoll OPFCCR          RBS         LL_DMA2D_GetOutputRBSwapMode
738   * @param  DMA2Dx DMA2D Instance
739   * @retval Returned value can be one of the following values:
740   *         @arg @ref LL_DMA2D_RB_MODE_REGULAR
741   *         @arg @ref LL_DMA2D_RB_MODE_SWAP
742   */
LL_DMA2D_GetOutputRBSwapMode(const DMA2D_TypeDef * DMA2Dx)743 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputRBSwapMode(const DMA2D_TypeDef *DMA2Dx)
744 {
745   return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_RBS));
746 }
747 
748 /**
749   * @brief  Set DMA2D output alpha inversion mode.
750   * @rmtoll OPFCCR          AI          LL_DMA2D_SetOutputAlphaInvMode
751   * @param  DMA2Dx DMA2D Instance
752   * @param  AlphaInversionMode This parameter can be one of the following values:
753   *         @arg @ref LL_DMA2D_ALPHA_REGULAR
754   *         @arg @ref LL_DMA2D_ALPHA_INVERTED
755   * @retval None
756   */
LL_DMA2D_SetOutputAlphaInvMode(DMA2D_TypeDef * DMA2Dx,uint32_t AlphaInversionMode)757 __STATIC_INLINE void LL_DMA2D_SetOutputAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32_t AlphaInversionMode)
758 {
759   MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_AI, AlphaInversionMode);
760 }
761 
762 /**
763   * @brief  Return DMA2D output alpha inversion mode.
764   * @rmtoll OPFCCR          AI         LL_DMA2D_GetOutputAlphaInvMode
765   * @param  DMA2Dx DMA2D Instance
766   * @retval Returned value can be one of the following values:
767   *         @arg @ref LL_DMA2D_ALPHA_REGULAR
768   *         @arg @ref LL_DMA2D_ALPHA_INVERTED
769   */
LL_DMA2D_GetOutputAlphaInvMode(const DMA2D_TypeDef * DMA2Dx)770 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputAlphaInvMode(const DMA2D_TypeDef *DMA2Dx)
771 {
772   return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_AI));
773 }
774 
775 
776 #if defined(DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT)
777 /**
778   * @brief  Set DMA2D output swap mode.
779   * @rmtoll OPFCCR          SB          LL_DMA2D_SetOutputSwapMode
780   * @param  DMA2Dx DMA2D Instance
781   * @param  OutputSwapMode This parameter can be one of the following values:
782   *         @arg @ref LL_DMA2D_SWAP_MODE_REGULAR
783   *         @arg @ref LL_DMA2D_SWAP_MODE_TWO_BY_TWO
784   * @retval None
785   */
LL_DMA2D_SetOutputSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t OutputSwapMode)786 __STATIC_INLINE void LL_DMA2D_SetOutputSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t OutputSwapMode)
787 {
788   MODIFY_REG(DMA2Dx->OPFCCR, DMA2D_OPFCCR_SB, OutputSwapMode);
789 }
790 
791 /**
792   * @brief  Return DMA2D output swap mode.
793   * @rmtoll OPFCCR          SB         LL_DMA2D_GetOutputSwapMode
794   * @param  DMA2Dx DMA2D Instance
795   * @retval Returned value can be one of the following values:
796   *         @arg @ref LL_DMA2D_SWAP_MODE_REGULAR
797   *         @arg @ref LL_DMA2D_SWAP_MODE_TWO_BY_TWO
798   */
LL_DMA2D_GetOutputSwapMode(DMA2D_TypeDef * DMA2Dx)799 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputSwapMode(DMA2D_TypeDef *DMA2Dx)
800 {
801   return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_SB));
802 }
803 #endif /* DMA2D_OUTPUT_TWO_BY_TWO_SWAP_SUPPORT */
804 
805 #if defined(DMA2D_LINE_OFFSET_MODE_SUPPORT)
806 /**
807   * @brief  Set DMA2D line offset mode.
808   * @rmtoll CR          LOM          LL_DMA2D_SetLineOffsetMode
809   * @param  DMA2Dx DMA2D Instance
810   * @param  LineOffsetMode This parameter can be one of the following values:
811   *         @arg @ref LL_DMA2D_LINE_OFFSET_PIXELS
812   *         @arg @ref LL_DMA2D_LINE_OFFSET_BYTES
813   * @retval None
814   */
LL_DMA2D_SetLineOffsetMode(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffsetMode)815 __STATIC_INLINE void LL_DMA2D_SetLineOffsetMode(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffsetMode)
816 {
817   MODIFY_REG(DMA2Dx->CR, DMA2D_CR_LOM, LineOffsetMode);
818 }
819 
820 /**
821   * @brief  Return DMA2D line offset mode.
822   * @rmtoll CR          LOM         LL_DMA2D_GetLineOffsetMode
823   * @param  DMA2Dx DMA2D Instance
824   * @retval Returned value can be one of the following values:
825   *         @arg @ref LL_DMA2D_LINE_OFFSET_PIXELS
826   *         @arg @ref LL_DMA2D_LINE_OFFSET_BYTES
827   */
LL_DMA2D_GetLineOffsetMode(const DMA2D_TypeDef * DMA2Dx)828 __STATIC_INLINE uint32_t LL_DMA2D_GetLineOffsetMode(const DMA2D_TypeDef *DMA2Dx)
829 {
830   return (uint32_t)(READ_BIT(DMA2Dx->CR, DMA2D_CR_LOM));
831 }
832 #endif /* DMA2D_LINE_OFFSET_MODE_SUPPORT */
833 
834 /**
835   * @brief  Set DMA2D line offset, expressed on 14 bits ([13:0] bits).
836   * @rmtoll OOR          LO          LL_DMA2D_SetLineOffset
837   * @param  DMA2Dx DMA2D Instance
838   @if DMA2D_LINE_OFFSET_MODE_SUPPORT
839   * @param  LineOffset Value between Min_Data=0 and Max_Data=0xFFFF
840   @else
841   * @param  LineOffset Value between Min_Data=0 and Max_Data=0x3FFF
842   @endif
843   * @retval None
844   */
LL_DMA2D_SetLineOffset(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffset)845 __STATIC_INLINE void LL_DMA2D_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
846 {
847   MODIFY_REG(DMA2Dx->OOR, DMA2D_OOR_LO, LineOffset);
848 }
849 
850 /**
851   * @brief  Return DMA2D line offset, expressed on 14 bits ([13:0] bits).
852   * @rmtoll OOR          LO         LL_DMA2D_GetLineOffset
853   * @param  DMA2Dx DMA2D Instance
854   @if DMA2D_LINE_OFFSET_MODE_SUPPORT
855   * @retval Line offset value between Min_Data=0 and Max_Data=0xFFFF
856   @else
857   * @retval Line offset value between Min_Data=0 and Max_Data=0x3FFF
858   @endif
859   */
LL_DMA2D_GetLineOffset(const DMA2D_TypeDef * DMA2Dx)860 __STATIC_INLINE uint32_t LL_DMA2D_GetLineOffset(const DMA2D_TypeDef *DMA2Dx)
861 {
862   return (uint32_t)(READ_BIT(DMA2Dx->OOR, DMA2D_OOR_LO));
863 }
864 
865 /**
866   * @brief  Set DMA2D number of pixels per lines, expressed on 14 bits ([13:0] bits).
867   * @rmtoll NLR          PL          LL_DMA2D_SetNbrOfPixelsPerLines
868   * @param  DMA2Dx DMA2D Instance
869   * @param  NbrOfPixelsPerLines Value between Min_Data=0 and Max_Data=0x3FFF
870   * @retval None
871   */
LL_DMA2D_SetNbrOfPixelsPerLines(DMA2D_TypeDef * DMA2Dx,uint32_t NbrOfPixelsPerLines)872 __STATIC_INLINE void LL_DMA2D_SetNbrOfPixelsPerLines(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfPixelsPerLines)
873 {
874   MODIFY_REG(DMA2Dx->NLR, DMA2D_NLR_PL, (NbrOfPixelsPerLines << DMA2D_NLR_PL_Pos));
875 }
876 
877 /**
878   * @brief  Return DMA2D number of pixels per lines, expressed on 14 bits ([13:0] bits)
879   * @rmtoll NLR          PL          LL_DMA2D_GetNbrOfPixelsPerLines
880   * @param  DMA2Dx DMA2D Instance
881   * @retval Number of pixels per lines value between Min_Data=0 and Max_Data=0x3FFF
882   */
LL_DMA2D_GetNbrOfPixelsPerLines(const DMA2D_TypeDef * DMA2Dx)883 __STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfPixelsPerLines(const DMA2D_TypeDef *DMA2Dx)
884 {
885   return (uint32_t)(READ_BIT(DMA2Dx->NLR, DMA2D_NLR_PL) >> DMA2D_NLR_PL_Pos);
886 }
887 
888 /**
889   * @brief  Set DMA2D number of lines, expressed on 16 bits ([15:0] bits).
890   * @rmtoll NLR          NL          LL_DMA2D_SetNbrOfLines
891   * @param  DMA2Dx DMA2D Instance
892   * @param  NbrOfLines Value between Min_Data=0 and Max_Data=0xFFFF
893   * @retval None
894   */
LL_DMA2D_SetNbrOfLines(DMA2D_TypeDef * DMA2Dx,uint32_t NbrOfLines)895 __STATIC_INLINE void LL_DMA2D_SetNbrOfLines(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines)
896 {
897   MODIFY_REG(DMA2Dx->NLR, DMA2D_NLR_NL, NbrOfLines);
898 }
899 
900 /**
901   * @brief  Return DMA2D number of lines, expressed on 16 bits ([15:0] bits).
902   * @rmtoll NLR          NL          LL_DMA2D_GetNbrOfLines
903   * @param  DMA2Dx DMA2D Instance
904   * @retval Number of lines value between Min_Data=0 and Max_Data=0xFFFF
905   */
LL_DMA2D_GetNbrOfLines(const DMA2D_TypeDef * DMA2Dx)906 __STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfLines(const DMA2D_TypeDef *DMA2Dx)
907 {
908   return (uint32_t)(READ_BIT(DMA2Dx->NLR, DMA2D_NLR_NL));
909 }
910 
911 /**
912   * @brief  Set DMA2D output memory address, expressed on 32 bits ([31:0] bits).
913   * @rmtoll OMAR          MA          LL_DMA2D_SetOutputMemAddr
914   * @param  DMA2Dx DMA2D Instance
915   * @param  OutputMemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
916   * @retval None
917   */
LL_DMA2D_SetOutputMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t OutputMemoryAddress)918 __STATIC_INLINE void LL_DMA2D_SetOutputMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t OutputMemoryAddress)
919 {
920   LL_DMA2D_WriteReg(DMA2Dx, OMAR, OutputMemoryAddress);
921 }
922 
923 /**
924   * @brief  Get DMA2D output memory address, expressed on 32 bits ([31:0] bits).
925   * @rmtoll OMAR          MA          LL_DMA2D_GetOutputMemAddr
926   * @param  DMA2Dx DMA2D Instance
927   * @retval Output memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
928   */
LL_DMA2D_GetOutputMemAddr(const DMA2D_TypeDef * DMA2Dx)929 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputMemAddr(const DMA2D_TypeDef *DMA2Dx)
930 {
931   return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, OMAR));
932 }
933 
934 /**
935   * @brief  Set DMA2D output color, expressed on 32 bits ([31:0] bits).
936   * @note   Output color format depends on output color mode, ARGB8888, RGB888,
937   *         RGB565, ARGB1555 or ARGB4444.
938   * @note LL_DMA2D_ConfigOutputColor() API may be used instead if colors values formatting
939   *       with respect to color mode is not done by the user code.
940   * @rmtoll OCOLR        BLUE        LL_DMA2D_SetOutputColor\n
941   *         OCOLR        GREEN       LL_DMA2D_SetOutputColor\n
942   *         OCOLR        RED         LL_DMA2D_SetOutputColor\n
943   *         OCOLR        ALPHA       LL_DMA2D_SetOutputColor
944   * @param  DMA2Dx DMA2D Instance
945   * @param  OutputColor Value between Min_Data=0 and Max_Data=0xFFFFFFFF
946   * @retval None
947   */
LL_DMA2D_SetOutputColor(DMA2D_TypeDef * DMA2Dx,uint32_t OutputColor)948 __STATIC_INLINE void LL_DMA2D_SetOutputColor(DMA2D_TypeDef *DMA2Dx, uint32_t OutputColor)
949 {
950   WRITE_REG(DMA2Dx->OCOLR, OutputColor);
951 }
952 
953 /**
954   * @brief  Get DMA2D output color, expressed on 32 bits ([31:0] bits).
955   * @note   Alpha channel and red, green, blue color values must be retrieved from the returned
956   *         value based on the output color mode (ARGB8888, RGB888,  RGB565, ARGB1555 or ARGB4444)
957   *         as set by @ref LL_DMA2D_SetOutputColorMode.
958   * @rmtoll OCOLR        BLUE        LL_DMA2D_GetOutputColor\n
959   *         OCOLR        GREEN       LL_DMA2D_GetOutputColor\n
960   *         OCOLR        RED         LL_DMA2D_GetOutputColor\n
961   *         OCOLR        ALPHA       LL_DMA2D_GetOutputColor
962   * @param  DMA2Dx DMA2D Instance
963   * @retval Output color value between Min_Data=0 and Max_Data=0xFFFFFFFF
964   */
LL_DMA2D_GetOutputColor(const DMA2D_TypeDef * DMA2Dx)965 __STATIC_INLINE uint32_t LL_DMA2D_GetOutputColor(const DMA2D_TypeDef *DMA2Dx)
966 {
967   return (uint32_t)(READ_BIT(DMA2Dx->OCOLR, \
968                              (DMA2D_OCOLR_BLUE_1 | DMA2D_OCOLR_GREEN_1 | DMA2D_OCOLR_RED_1 | DMA2D_OCOLR_ALPHA_1)));
969 }
970 
971 /**
972   * @brief  Set DMA2D line watermark, expressed on 16 bits ([15:0] bits).
973   * @rmtoll LWR          LW          LL_DMA2D_SetLineWatermark
974   * @param  DMA2Dx DMA2D Instance
975   * @param  LineWatermark Value between Min_Data=0 and Max_Data=0xFFFF
976   * @retval None
977   */
LL_DMA2D_SetLineWatermark(DMA2D_TypeDef * DMA2Dx,uint32_t LineWatermark)978 __STATIC_INLINE void LL_DMA2D_SetLineWatermark(DMA2D_TypeDef *DMA2Dx, uint32_t LineWatermark)
979 {
980   MODIFY_REG(DMA2Dx->LWR, DMA2D_LWR_LW, LineWatermark);
981 }
982 
983 /**
984   * @brief  Return DMA2D line watermark, expressed on 16 bits ([15:0] bits).
985   * @rmtoll LWR          LW          LL_DMA2D_GetLineWatermark
986   * @param  DMA2Dx DMA2D Instance
987   * @retval Line watermark value between Min_Data=0 and Max_Data=0xFFFF
988   */
LL_DMA2D_GetLineWatermark(const DMA2D_TypeDef * DMA2Dx)989 __STATIC_INLINE uint32_t LL_DMA2D_GetLineWatermark(const DMA2D_TypeDef *DMA2Dx)
990 {
991   return (uint32_t)(READ_BIT(DMA2Dx->LWR, DMA2D_LWR_LW));
992 }
993 
994 /**
995   * @brief  Set DMA2D dead time, expressed on 8 bits ([7:0] bits).
996   * @rmtoll AMTCR          DT          LL_DMA2D_SetDeadTime
997   * @param  DMA2Dx DMA2D Instance
998   * @param  DeadTime Value between Min_Data=0 and Max_Data=0xFF
999   * @retval None
1000   */
LL_DMA2D_SetDeadTime(DMA2D_TypeDef * DMA2Dx,uint32_t DeadTime)1001 __STATIC_INLINE void LL_DMA2D_SetDeadTime(DMA2D_TypeDef *DMA2Dx, uint32_t DeadTime)
1002 {
1003   MODIFY_REG(DMA2Dx->AMTCR, DMA2D_AMTCR_DT, (DeadTime << DMA2D_AMTCR_DT_Pos));
1004 }
1005 
1006 /**
1007   * @brief  Return DMA2D dead time, expressed on 8 bits ([7:0] bits).
1008   * @rmtoll AMTCR          DT          LL_DMA2D_GetDeadTime
1009   * @param  DMA2Dx DMA2D Instance
1010   * @retval Dead time value between Min_Data=0 and Max_Data=0xFF
1011   */
LL_DMA2D_GetDeadTime(const DMA2D_TypeDef * DMA2Dx)1012 __STATIC_INLINE uint32_t LL_DMA2D_GetDeadTime(const DMA2D_TypeDef *DMA2Dx)
1013 {
1014   return (uint32_t)(READ_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_DT) >> DMA2D_AMTCR_DT_Pos);
1015 }
1016 
1017 /**
1018   * @brief  Enable DMA2D dead time functionality.
1019   * @rmtoll AMTCR          EN            LL_DMA2D_EnableDeadTime
1020   * @param  DMA2Dx DMA2D Instance
1021   * @retval None
1022   */
LL_DMA2D_EnableDeadTime(DMA2D_TypeDef * DMA2Dx)1023 __STATIC_INLINE void LL_DMA2D_EnableDeadTime(DMA2D_TypeDef *DMA2Dx)
1024 {
1025   SET_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN);
1026 }
1027 
1028 /**
1029   * @brief  Disable DMA2D dead time functionality.
1030   * @rmtoll AMTCR          EN            LL_DMA2D_DisableDeadTime
1031   * @param  DMA2Dx DMA2D Instance
1032   * @retval None
1033   */
LL_DMA2D_DisableDeadTime(DMA2D_TypeDef * DMA2Dx)1034 __STATIC_INLINE void LL_DMA2D_DisableDeadTime(DMA2D_TypeDef *DMA2Dx)
1035 {
1036   CLEAR_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN);
1037 }
1038 
1039 /**
1040   * @brief  Indicate if DMA2D dead time functionality is enabled.
1041   * @rmtoll AMTCR          EN            LL_DMA2D_IsEnabledDeadTime
1042   * @param  DMA2Dx DMA2D Instance
1043   * @retval State of bit (1 or 0).
1044   */
LL_DMA2D_IsEnabledDeadTime(const DMA2D_TypeDef * DMA2Dx)1045 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledDeadTime(const DMA2D_TypeDef *DMA2Dx)
1046 {
1047   return ((READ_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN) == (DMA2D_AMTCR_EN)) ? 1UL : 0UL);
1048 }
1049 
1050 /** @defgroup DMA2D_LL_EF_FGND_Configuration Foreground Configuration Functions
1051   * @{
1052   */
1053 
1054 /**
1055   * @brief  Set DMA2D foreground memory address, expressed on 32 bits ([31:0] bits).
1056   * @rmtoll FGMAR          MA          LL_DMA2D_FGND_SetMemAddr
1057   * @param  DMA2Dx DMA2D Instance
1058   * @param  MemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1059   * @retval None
1060   */
LL_DMA2D_FGND_SetMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t MemoryAddress)1061 __STATIC_INLINE void LL_DMA2D_FGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t MemoryAddress)
1062 {
1063   LL_DMA2D_WriteReg(DMA2Dx, FGMAR, MemoryAddress);
1064 }
1065 
1066 /**
1067   * @brief  Get DMA2D foreground memory address, expressed on 32 bits ([31:0] bits).
1068   * @rmtoll FGMAR          MA          LL_DMA2D_FGND_GetMemAddr
1069   * @param  DMA2Dx DMA2D Instance
1070   * @retval Foreground memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1071   */
LL_DMA2D_FGND_GetMemAddr(const DMA2D_TypeDef * DMA2Dx)1072 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetMemAddr(const DMA2D_TypeDef *DMA2Dx)
1073 {
1074   return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, FGMAR));
1075 }
1076 
1077 /**
1078   * @brief  Enable DMA2D foreground CLUT loading.
1079   * @rmtoll FGPFCCR          START            LL_DMA2D_FGND_EnableCLUTLoad
1080   * @param  DMA2Dx DMA2D Instance
1081   * @retval None
1082   */
LL_DMA2D_FGND_EnableCLUTLoad(DMA2D_TypeDef * DMA2Dx)1083 __STATIC_INLINE void LL_DMA2D_FGND_EnableCLUTLoad(DMA2D_TypeDef *DMA2Dx)
1084 {
1085   SET_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_START);
1086 }
1087 
1088 /**
1089   * @brief  Indicate if DMA2D foreground CLUT loading is enabled.
1090   * @rmtoll FGPFCCR          START            LL_DMA2D_FGND_IsEnabledCLUTLoad
1091   * @param  DMA2Dx DMA2D Instance
1092   * @retval State of bit (1 or 0).
1093   */
LL_DMA2D_FGND_IsEnabledCLUTLoad(const DMA2D_TypeDef * DMA2Dx)1094 __STATIC_INLINE uint32_t LL_DMA2D_FGND_IsEnabledCLUTLoad(const DMA2D_TypeDef *DMA2Dx)
1095 {
1096   return ((READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_START) == (DMA2D_FGPFCCR_START)) ? 1UL : 0UL);
1097 }
1098 
1099 /**
1100   * @brief  Set DMA2D foreground color mode.
1101   * @rmtoll FGPFCCR          CM          LL_DMA2D_FGND_SetColorMode
1102   * @param  DMA2Dx DMA2D Instance
1103   * @param  ColorMode This parameter can be one of the following values:
1104   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1105   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1106   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1107   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1108   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1109   *         @arg @ref LL_DMA2D_INPUT_MODE_L8
1110   *         @arg @ref LL_DMA2D_INPUT_MODE_AL44
1111   *         @arg @ref LL_DMA2D_INPUT_MODE_AL88
1112   *         @arg @ref LL_DMA2D_INPUT_MODE_L4
1113   *         @arg @ref LL_DMA2D_INPUT_MODE_A8
1114   *         @arg @ref LL_DMA2D_INPUT_MODE_A4
1115   * @retval None
1116   */
LL_DMA2D_FGND_SetColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t ColorMode)1117 __STATIC_INLINE void LL_DMA2D_FGND_SetColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
1118 {
1119   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CM, ColorMode);
1120 }
1121 
1122 /**
1123   * @brief  Return DMA2D foreground color mode.
1124   * @rmtoll FGPFCCR          CM         LL_DMA2D_FGND_GetColorMode
1125   * @param  DMA2Dx DMA2D Instance
1126   * @retval Returned value can be one of the following values:
1127   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1128   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1129   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1130   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1131   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1132   *         @arg @ref LL_DMA2D_INPUT_MODE_L8
1133   *         @arg @ref LL_DMA2D_INPUT_MODE_AL44
1134   *         @arg @ref LL_DMA2D_INPUT_MODE_AL88
1135   *         @arg @ref LL_DMA2D_INPUT_MODE_L4
1136   *         @arg @ref LL_DMA2D_INPUT_MODE_A8
1137   *         @arg @ref LL_DMA2D_INPUT_MODE_A4
1138   */
LL_DMA2D_FGND_GetColorMode(const DMA2D_TypeDef * DMA2Dx)1139 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetColorMode(const DMA2D_TypeDef *DMA2Dx)
1140 {
1141   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CM));
1142 }
1143 
1144 /**
1145   * @brief  Set DMA2D foreground alpha mode.
1146   * @rmtoll FGPFCCR          AM          LL_DMA2D_FGND_SetAlphaMode
1147   * @param  DMA2Dx DMA2D Instance
1148   * @param  AphaMode This parameter can be one of the following values:
1149   *         @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1150   *         @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1151   *         @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1152   * @retval None
1153   */
LL_DMA2D_FGND_SetAlphaMode(DMA2D_TypeDef * DMA2Dx,uint32_t AphaMode)1154 __STATIC_INLINE void LL_DMA2D_FGND_SetAlphaMode(DMA2D_TypeDef *DMA2Dx, uint32_t AphaMode)
1155 {
1156   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AM, AphaMode);
1157 }
1158 
1159 /**
1160   * @brief  Return DMA2D foreground alpha mode.
1161   * @rmtoll FGPFCCR          AM         LL_DMA2D_FGND_GetAlphaMode
1162   * @param  DMA2Dx DMA2D Instance
1163   * @retval Returned value can be one of the following values:
1164   *         @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1165   *         @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1166   *         @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1167   */
LL_DMA2D_FGND_GetAlphaMode(const DMA2D_TypeDef * DMA2Dx)1168 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaMode(const DMA2D_TypeDef *DMA2Dx)
1169 {
1170   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AM));
1171 }
1172 
1173 /**
1174   * @brief  Set DMA2D foreground alpha value, expressed on 8 bits ([7:0] bits).
1175   * @rmtoll FGPFCCR          ALPHA          LL_DMA2D_FGND_SetAlpha
1176   * @param  DMA2Dx DMA2D Instance
1177   * @param  Alpha Value between Min_Data=0 and Max_Data=0xFF
1178   * @retval None
1179   */
LL_DMA2D_FGND_SetAlpha(DMA2D_TypeDef * DMA2Dx,uint32_t Alpha)1180 __STATIC_INLINE void LL_DMA2D_FGND_SetAlpha(DMA2D_TypeDef *DMA2Dx, uint32_t Alpha)
1181 {
1182   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_ALPHA, (Alpha << DMA2D_FGPFCCR_ALPHA_Pos));
1183 }
1184 
1185 /**
1186   * @brief  Return DMA2D foreground alpha value, expressed on 8 bits ([7:0] bits).
1187   * @rmtoll FGPFCCR          ALPHA         LL_DMA2D_FGND_GetAlpha
1188   * @param  DMA2Dx DMA2D Instance
1189   * @retval Alpha value between Min_Data=0 and Max_Data=0xFF
1190   */
LL_DMA2D_FGND_GetAlpha(const DMA2D_TypeDef * DMA2Dx)1191 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlpha(const DMA2D_TypeDef *DMA2Dx)
1192 {
1193   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_ALPHA) >> DMA2D_FGPFCCR_ALPHA_Pos);
1194 }
1195 
1196 /**
1197   * @brief  Set DMA2D foreground Red Blue swap mode.
1198   * @rmtoll FGPFCCR          RBS          LL_DMA2D_FGND_SetRBSwapMode
1199   * @param  DMA2Dx DMA2D Instance
1200   * @param  RBSwapMode This parameter can be one of the following values:
1201   *         @arg @ref LL_DMA2D_RB_MODE_REGULAR
1202   *         @arg @ref LL_DMA2D_RB_MODE_SWAP
1203   * @retval None
1204   */
LL_DMA2D_FGND_SetRBSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t RBSwapMode)1205 __STATIC_INLINE void LL_DMA2D_FGND_SetRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t RBSwapMode)
1206 {
1207   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_RBS, RBSwapMode);
1208 }
1209 
1210 /**
1211   * @brief  Return DMA2D foreground Red Blue swap mode.
1212   * @rmtoll FGPFCCR          RBS         LL_DMA2D_FGND_GetRBSwapMode
1213   * @param  DMA2Dx DMA2D Instance
1214   * @retval Returned value can be one of the following values:
1215   *         @arg @ref LL_DMA2D_RB_MODE_REGULAR
1216   *         @arg @ref LL_DMA2D_RB_MODE_SWAP
1217   */
LL_DMA2D_FGND_GetRBSwapMode(const DMA2D_TypeDef * DMA2Dx)1218 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRBSwapMode(const DMA2D_TypeDef *DMA2Dx)
1219 {
1220   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_RBS));
1221 }
1222 
1223 /**
1224   * @brief  Set DMA2D foreground alpha inversion mode.
1225   * @rmtoll FGPFCCR          AI          LL_DMA2D_FGND_SetAlphaInvMode
1226   * @param  DMA2Dx DMA2D Instance
1227   * @param  AlphaInversionMode This parameter can be one of the following values:
1228   *         @arg @ref LL_DMA2D_ALPHA_REGULAR
1229   *         @arg @ref LL_DMA2D_ALPHA_INVERTED
1230   * @retval None
1231   */
LL_DMA2D_FGND_SetAlphaInvMode(DMA2D_TypeDef * DMA2Dx,uint32_t AlphaInversionMode)1232 __STATIC_INLINE void LL_DMA2D_FGND_SetAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32_t AlphaInversionMode)
1233 {
1234   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AI, AlphaInversionMode);
1235 }
1236 
1237 /**
1238   * @brief  Return DMA2D foreground alpha inversion mode.
1239   * @rmtoll FGPFCCR          AI         LL_DMA2D_FGND_GetAlphaInvMode
1240   * @param  DMA2Dx DMA2D Instance
1241   * @retval Returned value can be one of the following values:
1242   *         @arg @ref LL_DMA2D_ALPHA_REGULAR
1243   *         @arg @ref LL_DMA2D_ALPHA_INVERTED
1244   */
LL_DMA2D_FGND_GetAlphaInvMode(const DMA2D_TypeDef * DMA2Dx)1245 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaInvMode(const DMA2D_TypeDef *DMA2Dx)
1246 {
1247   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AI));
1248 }
1249 
1250 /**
1251   * @brief  Set DMA2D foreground line offset, expressed on 14 bits ([13:0] bits).
1252   * @rmtoll FGOR          LO          LL_DMA2D_FGND_SetLineOffset
1253   * @param  DMA2Dx DMA2D Instance
1254   * @param  LineOffset Value between Min_Data=0 and Max_Data=0x3FF
1255   * @retval None
1256   */
LL_DMA2D_FGND_SetLineOffset(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffset)1257 __STATIC_INLINE void LL_DMA2D_FGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
1258 {
1259   MODIFY_REG(DMA2Dx->FGOR, DMA2D_FGOR_LO, LineOffset);
1260 }
1261 
1262 /**
1263   * @brief  Return DMA2D foreground line offset, expressed on 14 bits ([13:0] bits).
1264   * @rmtoll FGOR          LO         LL_DMA2D_FGND_GetLineOffset
1265   * @param  DMA2Dx DMA2D Instance
1266   * @retval Foreground line offset value between Min_Data=0 and Max_Data=0x3FF
1267   */
LL_DMA2D_FGND_GetLineOffset(const DMA2D_TypeDef * DMA2Dx)1268 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetLineOffset(const DMA2D_TypeDef *DMA2Dx)
1269 {
1270   return (uint32_t)(READ_BIT(DMA2Dx->FGOR, DMA2D_FGOR_LO));
1271 }
1272 
1273 /**
1274   * @brief  Set DMA2D foreground color values, expressed on 24 bits ([23:0] bits).
1275   * @rmtoll FGCOLR          RED          LL_DMA2D_FGND_SetColor
1276   * @rmtoll FGCOLR          GREEN        LL_DMA2D_FGND_SetColor
1277   * @rmtoll FGCOLR          BLUE         LL_DMA2D_FGND_SetColor
1278   * @param  DMA2Dx DMA2D Instance
1279   * @param  Red   Value between Min_Data=0 and Max_Data=0xFF
1280   * @param  Green Value between Min_Data=0 and Max_Data=0xFF
1281   * @param  Blue  Value between Min_Data=0 and Max_Data=0xFF
1282   * @retval None
1283   */
LL_DMA2D_FGND_SetColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red,uint32_t Green,uint32_t Blue)1284 __STATIC_INLINE void LL_DMA2D_FGND_SetColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red, uint32_t Green, uint32_t Blue)
1285 {
1286   MODIFY_REG(DMA2Dx->FGCOLR, (DMA2D_FGCOLR_RED | DMA2D_FGCOLR_GREEN | DMA2D_FGCOLR_BLUE), \
1287              ((Red << DMA2D_FGCOLR_RED_Pos) | (Green << DMA2D_FGCOLR_GREEN_Pos) | Blue));
1288 }
1289 
1290 /**
1291   * @brief  Set DMA2D foreground red color value, expressed on 8 bits ([7:0] bits).
1292   * @rmtoll FGCOLR          RED          LL_DMA2D_FGND_SetRedColor
1293   * @param  DMA2Dx DMA2D Instance
1294   * @param  Red Value between Min_Data=0 and Max_Data=0xFF
1295   * @retval None
1296   */
LL_DMA2D_FGND_SetRedColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red)1297 __STATIC_INLINE void LL_DMA2D_FGND_SetRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red)
1298 {
1299   MODIFY_REG(DMA2Dx->FGCOLR, DMA2D_FGCOLR_RED, (Red << DMA2D_FGCOLR_RED_Pos));
1300 }
1301 
1302 /**
1303   * @brief  Return DMA2D foreground red color value, expressed on 8 bits ([7:0] bits).
1304   * @rmtoll FGCOLR          RED         LL_DMA2D_FGND_GetRedColor
1305   * @param  DMA2Dx DMA2D Instance
1306   * @retval Red color value between Min_Data=0 and Max_Data=0xFF
1307   */
LL_DMA2D_FGND_GetRedColor(const DMA2D_TypeDef * DMA2Dx)1308 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRedColor(const DMA2D_TypeDef *DMA2Dx)
1309 {
1310   return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_RED) >> DMA2D_FGCOLR_RED_Pos);
1311 }
1312 
1313 /**
1314   * @brief  Set DMA2D foreground green color value, expressed on 8 bits ([7:0] bits).
1315   * @rmtoll FGCOLR          GREEN          LL_DMA2D_FGND_SetGreenColor
1316   * @param  DMA2Dx DMA2D Instance
1317   * @param  Green Value between Min_Data=0 and Max_Data=0xFF
1318   * @retval None
1319   */
LL_DMA2D_FGND_SetGreenColor(DMA2D_TypeDef * DMA2Dx,uint32_t Green)1320 __STATIC_INLINE void LL_DMA2D_FGND_SetGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t Green)
1321 {
1322   MODIFY_REG(DMA2Dx->FGCOLR, DMA2D_FGCOLR_GREEN, (Green << DMA2D_FGCOLR_GREEN_Pos));
1323 }
1324 
1325 /**
1326   * @brief  Return DMA2D foreground green color value, expressed on 8 bits ([7:0] bits).
1327   * @rmtoll FGCOLR          GREEN         LL_DMA2D_FGND_GetGreenColor
1328   * @param  DMA2Dx DMA2D Instance
1329   * @retval Green color value between Min_Data=0 and Max_Data=0xFF
1330   */
LL_DMA2D_FGND_GetGreenColor(const DMA2D_TypeDef * DMA2Dx)1331 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetGreenColor(const DMA2D_TypeDef *DMA2Dx)
1332 {
1333   return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_GREEN) >> DMA2D_FGCOLR_GREEN_Pos);
1334 }
1335 
1336 /**
1337   * @brief  Set DMA2D foreground blue color value, expressed on 8 bits ([7:0] bits).
1338   * @rmtoll FGCOLR          BLUE          LL_DMA2D_FGND_SetBlueColor
1339   * @param  DMA2Dx DMA2D Instance
1340   * @param  Blue Value between Min_Data=0 and Max_Data=0xFF
1341   * @retval None
1342   */
LL_DMA2D_FGND_SetBlueColor(DMA2D_TypeDef * DMA2Dx,uint32_t Blue)1343 __STATIC_INLINE void LL_DMA2D_FGND_SetBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t Blue)
1344 {
1345   MODIFY_REG(DMA2Dx->FGCOLR, DMA2D_FGCOLR_BLUE, Blue);
1346 }
1347 
1348 /**
1349   * @brief  Return DMA2D foreground blue color value, expressed on 8 bits ([7:0] bits).
1350   * @rmtoll FGCOLR          BLUE         LL_DMA2D_FGND_GetBlueColor
1351   * @param  DMA2Dx DMA2D Instance
1352   * @retval Blue color value between Min_Data=0 and Max_Data=0xFF
1353   */
LL_DMA2D_FGND_GetBlueColor(const DMA2D_TypeDef * DMA2Dx)1354 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetBlueColor(const DMA2D_TypeDef *DMA2Dx)
1355 {
1356   return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_BLUE));
1357 }
1358 
1359 /**
1360   * @brief  Set DMA2D foreground CLUT memory address, expressed on 32 bits ([31:0] bits).
1361   * @rmtoll FGCMAR          MA          LL_DMA2D_FGND_SetCLUTMemAddr
1362   * @param  DMA2Dx DMA2D Instance
1363   * @param  CLUTMemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1364   * @retval None
1365   */
LL_DMA2D_FGND_SetCLUTMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTMemoryAddress)1366 __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTMemoryAddress)
1367 {
1368   LL_DMA2D_WriteReg(DMA2Dx, FGCMAR, CLUTMemoryAddress);
1369 }
1370 
1371 /**
1372   * @brief  Get DMA2D foreground CLUT memory address, expressed on 32 bits ([31:0] bits).
1373   * @rmtoll FGCMAR          MA          LL_DMA2D_FGND_GetCLUTMemAddr
1374   * @param  DMA2Dx DMA2D Instance
1375   * @retval Foreground CLUT memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1376   */
LL_DMA2D_FGND_GetCLUTMemAddr(const DMA2D_TypeDef * DMA2Dx)1377 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTMemAddr(const DMA2D_TypeDef *DMA2Dx)
1378 {
1379   return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, FGCMAR));
1380 }
1381 
1382 /**
1383   * @brief  Set DMA2D foreground CLUT size, expressed on 8 bits ([7:0] bits).
1384   * @rmtoll FGPFCCR          CS          LL_DMA2D_FGND_SetCLUTSize
1385   * @param  DMA2Dx DMA2D Instance
1386   * @param  CLUTSize Value between Min_Data=0 and Max_Data=0xFF
1387   * @retval None
1388   */
LL_DMA2D_FGND_SetCLUTSize(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTSize)1389 __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTSize(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTSize)
1390 {
1391   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CS, (CLUTSize << DMA2D_FGPFCCR_CS_Pos));
1392 }
1393 
1394 /**
1395   * @brief  Get DMA2D foreground CLUT size, expressed on 8 bits ([7:0] bits).
1396   * @rmtoll FGPFCCR          CS          LL_DMA2D_FGND_GetCLUTSize
1397   * @param  DMA2Dx DMA2D Instance
1398   * @retval Foreground CLUT size value between Min_Data=0 and Max_Data=0xFF
1399   */
LL_DMA2D_FGND_GetCLUTSize(const DMA2D_TypeDef * DMA2Dx)1400 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTSize(const DMA2D_TypeDef *DMA2Dx)
1401 {
1402   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CS) >> DMA2D_FGPFCCR_CS_Pos);
1403 }
1404 
1405 /**
1406   * @brief  Set DMA2D foreground CLUT color mode.
1407   * @rmtoll FGPFCCR          CCM          LL_DMA2D_FGND_SetCLUTColorMode
1408   * @param  DMA2Dx DMA2D Instance
1409   * @param  CLUTColorMode This parameter can be one of the following values:
1410   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1411   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1412   * @retval None
1413   */
LL_DMA2D_FGND_SetCLUTColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTColorMode)1414 __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTColorMode)
1415 {
1416   MODIFY_REG(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CCM, CLUTColorMode);
1417 }
1418 
1419 /**
1420   * @brief  Return DMA2D foreground CLUT color mode.
1421   * @rmtoll FGPFCCR          CCM         LL_DMA2D_FGND_GetCLUTColorMode
1422   * @param  DMA2Dx DMA2D Instance
1423   * @retval Returned value can be one of the following values:
1424   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1425   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1426   */
LL_DMA2D_FGND_GetCLUTColorMode(const DMA2D_TypeDef * DMA2Dx)1427 __STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTColorMode(const DMA2D_TypeDef *DMA2Dx)
1428 {
1429   return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CCM));
1430 }
1431 
1432 /**
1433   * @}
1434   */
1435 
1436 /** @defgroup DMA2D_LL_EF_BGND_Configuration Background Configuration Functions
1437   * @{
1438   */
1439 
1440 /**
1441   * @brief  Set DMA2D background memory address, expressed on 32 bits ([31:0] bits).
1442   * @rmtoll BGMAR          MA          LL_DMA2D_BGND_SetMemAddr
1443   * @param  DMA2Dx DMA2D Instance
1444   * @param  MemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1445   * @retval None
1446   */
LL_DMA2D_BGND_SetMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t MemoryAddress)1447 __STATIC_INLINE void LL_DMA2D_BGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t MemoryAddress)
1448 {
1449   LL_DMA2D_WriteReg(DMA2Dx, BGMAR, MemoryAddress);
1450 }
1451 
1452 /**
1453   * @brief  Get DMA2D background memory address, expressed on 32 bits ([31:0] bits).
1454   * @rmtoll BGMAR          MA          LL_DMA2D_BGND_GetMemAddr
1455   * @param  DMA2Dx DMA2D Instance
1456   * @retval Background memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1457   */
LL_DMA2D_BGND_GetMemAddr(const DMA2D_TypeDef * DMA2Dx)1458 __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetMemAddr(const DMA2D_TypeDef *DMA2Dx)
1459 {
1460   return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, BGMAR));
1461 }
1462 
1463 /**
1464   * @brief  Enable DMA2D background CLUT loading.
1465   * @rmtoll BGPFCCR          START            LL_DMA2D_BGND_EnableCLUTLoad
1466   * @param  DMA2Dx DMA2D Instance
1467   * @retval None
1468   */
LL_DMA2D_BGND_EnableCLUTLoad(DMA2D_TypeDef * DMA2Dx)1469 __STATIC_INLINE void LL_DMA2D_BGND_EnableCLUTLoad(DMA2D_TypeDef *DMA2Dx)
1470 {
1471   SET_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_START);
1472 }
1473 
1474 /**
1475   * @brief  Indicate if DMA2D background CLUT loading is enabled.
1476   * @rmtoll BGPFCCR          START            LL_DMA2D_BGND_IsEnabledCLUTLoad
1477   * @param  DMA2Dx DMA2D Instance
1478   * @retval State of bit (1 or 0).
1479   */
LL_DMA2D_BGND_IsEnabledCLUTLoad(const DMA2D_TypeDef * DMA2Dx)1480 __STATIC_INLINE uint32_t LL_DMA2D_BGND_IsEnabledCLUTLoad(const DMA2D_TypeDef *DMA2Dx)
1481 {
1482   return ((READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_START) == (DMA2D_BGPFCCR_START)) ? 1UL : 0UL);
1483 }
1484 
1485 /**
1486   * @brief  Set DMA2D background color mode.
1487   * @rmtoll BGPFCCR          CM          LL_DMA2D_BGND_SetColorMode
1488   * @param  DMA2Dx DMA2D Instance
1489   * @param  ColorMode This parameter can be one of the following values:
1490   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1491   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1492   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1493   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1494   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1495   *         @arg @ref LL_DMA2D_INPUT_MODE_L8
1496   *         @arg @ref LL_DMA2D_INPUT_MODE_AL44
1497   *         @arg @ref LL_DMA2D_INPUT_MODE_AL88
1498   *         @arg @ref LL_DMA2D_INPUT_MODE_L4
1499   *         @arg @ref LL_DMA2D_INPUT_MODE_A8
1500   *         @arg @ref LL_DMA2D_INPUT_MODE_A4
1501   * @retval None
1502   */
LL_DMA2D_BGND_SetColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t ColorMode)1503 __STATIC_INLINE void LL_DMA2D_BGND_SetColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode)
1504 {
1505   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CM, ColorMode);
1506 }
1507 
1508 /**
1509   * @brief  Return DMA2D background color mode.
1510   * @rmtoll BGPFCCR          CM          LL_DMA2D_BGND_GetColorMode
1511   * @param  DMA2Dx DMA2D Instance
1512   * @retval Returned value can be one of the following values:
1513   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB8888
1514   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB888
1515   *         @arg @ref LL_DMA2D_INPUT_MODE_RGB565
1516   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB1555
1517   *         @arg @ref LL_DMA2D_INPUT_MODE_ARGB4444
1518   *         @arg @ref LL_DMA2D_INPUT_MODE_L8
1519   *         @arg @ref LL_DMA2D_INPUT_MODE_AL44
1520   *         @arg @ref LL_DMA2D_INPUT_MODE_AL88
1521   *         @arg @ref LL_DMA2D_INPUT_MODE_L4
1522   *         @arg @ref LL_DMA2D_INPUT_MODE_A8
1523   *         @arg @ref LL_DMA2D_INPUT_MODE_A4
1524   */
LL_DMA2D_BGND_GetColorMode(const DMA2D_TypeDef * DMA2Dx)1525 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetColorMode(const DMA2D_TypeDef *DMA2Dx)
1526 {
1527   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CM));
1528 }
1529 
1530 /**
1531   * @brief  Set DMA2D background alpha mode.
1532   * @rmtoll BGPFCCR          AM         LL_DMA2D_BGND_SetAlphaMode
1533   * @param  DMA2Dx DMA2D Instance
1534   * @param  AphaMode This parameter can be one of the following values:
1535   *         @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1536   *         @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1537   *         @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1538   * @retval None
1539   */
LL_DMA2D_BGND_SetAlphaMode(DMA2D_TypeDef * DMA2Dx,uint32_t AphaMode)1540 __STATIC_INLINE void LL_DMA2D_BGND_SetAlphaMode(DMA2D_TypeDef *DMA2Dx, uint32_t AphaMode)
1541 {
1542   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AM, AphaMode);
1543 }
1544 
1545 /**
1546   * @brief  Return DMA2D background alpha mode.
1547   * @rmtoll BGPFCCR          AM          LL_DMA2D_BGND_GetAlphaMode
1548   * @param  DMA2Dx DMA2D Instance
1549   * @retval Returned value can be one of the following values:
1550   *         @arg @ref LL_DMA2D_ALPHA_MODE_NO_MODIF
1551   *         @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE
1552   *         @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE
1553   */
LL_DMA2D_BGND_GetAlphaMode(const DMA2D_TypeDef * DMA2Dx)1554 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetAlphaMode(const DMA2D_TypeDef *DMA2Dx)
1555 {
1556   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AM));
1557 }
1558 
1559 /**
1560   * @brief  Set DMA2D background alpha value, expressed on 8 bits ([7:0] bits).
1561   * @rmtoll BGPFCCR          ALPHA         LL_DMA2D_BGND_SetAlpha
1562   * @param  DMA2Dx DMA2D Instance
1563   * @param  Alpha Value between Min_Data=0 and Max_Data=0xFF
1564   * @retval None
1565   */
LL_DMA2D_BGND_SetAlpha(DMA2D_TypeDef * DMA2Dx,uint32_t Alpha)1566 __STATIC_INLINE void LL_DMA2D_BGND_SetAlpha(DMA2D_TypeDef *DMA2Dx, uint32_t Alpha)
1567 {
1568   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_ALPHA, (Alpha << DMA2D_BGPFCCR_ALPHA_Pos));
1569 }
1570 
1571 /**
1572   * @brief  Return DMA2D background alpha value, expressed on 8 bits ([7:0] bits).
1573   * @rmtoll BGPFCCR          ALPHA          LL_DMA2D_BGND_GetAlpha
1574   * @param  DMA2Dx DMA2D Instance
1575   * @retval Alpha value between Min_Data=0 and Max_Data=0xFF
1576   */
LL_DMA2D_BGND_GetAlpha(const DMA2D_TypeDef * DMA2Dx)1577 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetAlpha(const DMA2D_TypeDef *DMA2Dx)
1578 {
1579   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_ALPHA) >> DMA2D_BGPFCCR_ALPHA_Pos);
1580 }
1581 
1582 /**
1583   * @brief  Set DMA2D background Red Blue swap mode.
1584   * @rmtoll BGPFCCR          RBS         LL_DMA2D_BGND_SetRBSwapMode
1585   * @param  DMA2Dx DMA2D Instance
1586   * @param  RBSwapMode This parameter can be one of the following values:
1587   *         @arg @ref LL_DMA2D_RB_MODE_REGULAR
1588   *         @arg @ref LL_DMA2D_RB_MODE_SWAP
1589   * @retval None
1590   */
LL_DMA2D_BGND_SetRBSwapMode(DMA2D_TypeDef * DMA2Dx,uint32_t RBSwapMode)1591 __STATIC_INLINE void LL_DMA2D_BGND_SetRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t RBSwapMode)
1592 {
1593   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_RBS, RBSwapMode);
1594 }
1595 
1596 /**
1597   * @brief  Return DMA2D background Red Blue swap mode.
1598   * @rmtoll BGPFCCR          RBS          LL_DMA2D_BGND_GetRBSwapMode
1599   * @param  DMA2Dx DMA2D Instance
1600   * @retval Returned value can be one of the following values:
1601   *         @arg @ref LL_DMA2D_RB_MODE_REGULAR
1602   *         @arg @ref LL_DMA2D_RB_MODE_SWAP
1603   */
LL_DMA2D_BGND_GetRBSwapMode(const DMA2D_TypeDef * DMA2Dx)1604 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetRBSwapMode(const DMA2D_TypeDef *DMA2Dx)
1605 {
1606   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_RBS));
1607 }
1608 
1609 /**
1610   * @brief  Set DMA2D background alpha inversion mode.
1611   * @rmtoll BGPFCCR          AI         LL_DMA2D_BGND_SetAlphaInvMode
1612   * @param  DMA2Dx DMA2D Instance
1613   * @param  AlphaInversionMode This parameter can be one of the following values:
1614   *         @arg @ref LL_DMA2D_ALPHA_REGULAR
1615   *         @arg @ref LL_DMA2D_ALPHA_INVERTED
1616   * @retval None
1617   */
LL_DMA2D_BGND_SetAlphaInvMode(DMA2D_TypeDef * DMA2Dx,uint32_t AlphaInversionMode)1618 __STATIC_INLINE void LL_DMA2D_BGND_SetAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32_t AlphaInversionMode)
1619 {
1620   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AI, AlphaInversionMode);
1621 }
1622 
1623 /**
1624   * @brief  Return DMA2D background alpha inversion mode.
1625   * @rmtoll BGPFCCR          AI          LL_DMA2D_BGND_GetAlphaInvMode
1626   * @param  DMA2Dx DMA2D Instance
1627   * @retval Returned value can be one of the following values:
1628   *         @arg @ref LL_DMA2D_ALPHA_REGULAR
1629   *         @arg @ref LL_DMA2D_ALPHA_INVERTED
1630   */
LL_DMA2D_BGND_GetAlphaInvMode(const DMA2D_TypeDef * DMA2Dx)1631 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetAlphaInvMode(const DMA2D_TypeDef *DMA2Dx)
1632 {
1633   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AI));
1634 }
1635 
1636 /**
1637   * @brief  Set DMA2D background line offset, expressed on 14 bits ([13:0] bits).
1638   * @rmtoll BGOR          LO         LL_DMA2D_BGND_SetLineOffset
1639   * @param  DMA2Dx DMA2D Instance
1640   * @param  LineOffset Value between Min_Data=0 and Max_Data=0x3FF
1641   * @retval None
1642   */
LL_DMA2D_BGND_SetLineOffset(DMA2D_TypeDef * DMA2Dx,uint32_t LineOffset)1643 __STATIC_INLINE void LL_DMA2D_BGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t LineOffset)
1644 {
1645   MODIFY_REG(DMA2Dx->BGOR, DMA2D_BGOR_LO, LineOffset);
1646 }
1647 
1648 /**
1649   * @brief  Return DMA2D background line offset, expressed on 14 bits ([13:0] bits).
1650   * @rmtoll BGOR          LO          LL_DMA2D_BGND_GetLineOffset
1651   * @param  DMA2Dx DMA2D Instance
1652   * @retval Background line offset value between Min_Data=0 and Max_Data=0x3FF
1653   */
LL_DMA2D_BGND_GetLineOffset(const DMA2D_TypeDef * DMA2Dx)1654 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetLineOffset(const DMA2D_TypeDef *DMA2Dx)
1655 {
1656   return (uint32_t)(READ_BIT(DMA2Dx->BGOR, DMA2D_BGOR_LO));
1657 }
1658 
1659 /**
1660   * @brief  Set DMA2D background color values, expressed on 24 bits ([23:0] bits).
1661   * @rmtoll BGCOLR          RED          LL_DMA2D_BGND_SetColor
1662   * @rmtoll BGCOLR          GREEN        LL_DMA2D_BGND_SetColor
1663   * @rmtoll BGCOLR          BLUE         LL_DMA2D_BGND_SetColor
1664   * @param  DMA2Dx DMA2D Instance
1665   * @param  Red   Value between Min_Data=0 and Max_Data=0xFF
1666   * @param  Green Value between Min_Data=0 and Max_Data=0xFF
1667   * @param  Blue  Value between Min_Data=0 and Max_Data=0xFF
1668   * @retval None
1669   */
LL_DMA2D_BGND_SetColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red,uint32_t Green,uint32_t Blue)1670 __STATIC_INLINE void LL_DMA2D_BGND_SetColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red, uint32_t Green, uint32_t Blue)
1671 {
1672   MODIFY_REG(DMA2Dx->BGCOLR, (DMA2D_BGCOLR_RED | DMA2D_BGCOLR_GREEN | DMA2D_BGCOLR_BLUE), \
1673              ((Red << DMA2D_BGCOLR_RED_Pos) | (Green << DMA2D_BGCOLR_GREEN_Pos) | Blue));
1674 }
1675 
1676 /**
1677   * @brief  Set DMA2D background red color value, expressed on 8 bits ([7:0] bits).
1678   * @rmtoll BGCOLR          RED         LL_DMA2D_BGND_SetRedColor
1679   * @param  DMA2Dx DMA2D Instance
1680   * @param  Red Value between Min_Data=0 and Max_Data=0xFF
1681   * @retval None
1682   */
LL_DMA2D_BGND_SetRedColor(DMA2D_TypeDef * DMA2Dx,uint32_t Red)1683 __STATIC_INLINE void LL_DMA2D_BGND_SetRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t Red)
1684 {
1685   MODIFY_REG(DMA2Dx->BGCOLR, DMA2D_BGCOLR_RED, (Red << DMA2D_BGCOLR_RED_Pos));
1686 }
1687 
1688 /**
1689   * @brief  Return DMA2D background red color value, expressed on 8 bits ([7:0] bits).
1690   * @rmtoll BGCOLR          RED          LL_DMA2D_BGND_GetRedColor
1691   * @param  DMA2Dx DMA2D Instance
1692   * @retval Red color value between Min_Data=0 and Max_Data=0xFF
1693   */
LL_DMA2D_BGND_GetRedColor(const DMA2D_TypeDef * DMA2Dx)1694 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetRedColor(const DMA2D_TypeDef *DMA2Dx)
1695 {
1696   return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_RED) >> DMA2D_BGCOLR_RED_Pos);
1697 }
1698 
1699 /**
1700   * @brief  Set DMA2D background green color value, expressed on 8 bits ([7:0] bits).
1701   * @rmtoll BGCOLR          GREEN         LL_DMA2D_BGND_SetGreenColor
1702   * @param  DMA2Dx DMA2D Instance
1703   * @param  Green Value between Min_Data=0 and Max_Data=0xFF
1704   * @retval None
1705   */
LL_DMA2D_BGND_SetGreenColor(DMA2D_TypeDef * DMA2Dx,uint32_t Green)1706 __STATIC_INLINE void LL_DMA2D_BGND_SetGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t Green)
1707 {
1708   MODIFY_REG(DMA2Dx->BGCOLR, DMA2D_BGCOLR_GREEN, (Green << DMA2D_BGCOLR_GREEN_Pos));
1709 }
1710 
1711 /**
1712   * @brief  Return DMA2D background green color value, expressed on 8 bits ([7:0] bits).
1713   * @rmtoll BGCOLR          GREEN          LL_DMA2D_BGND_GetGreenColor
1714   * @param  DMA2Dx DMA2D Instance
1715   * @retval Green color value between Min_Data=0 and Max_Data=0xFF
1716   */
LL_DMA2D_BGND_GetGreenColor(const DMA2D_TypeDef * DMA2Dx)1717 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetGreenColor(const DMA2D_TypeDef *DMA2Dx)
1718 {
1719   return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_GREEN) >> DMA2D_BGCOLR_GREEN_Pos);
1720 }
1721 
1722 /**
1723   * @brief  Set DMA2D background blue color value, expressed on 8 bits ([7:0] bits).
1724   * @rmtoll BGCOLR          BLUE         LL_DMA2D_BGND_SetBlueColor
1725   * @param  DMA2Dx DMA2D Instance
1726   * @param  Blue Value between Min_Data=0 and Max_Data=0xFF
1727   * @retval None
1728   */
LL_DMA2D_BGND_SetBlueColor(DMA2D_TypeDef * DMA2Dx,uint32_t Blue)1729 __STATIC_INLINE void LL_DMA2D_BGND_SetBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t Blue)
1730 {
1731   MODIFY_REG(DMA2Dx->BGCOLR, DMA2D_BGCOLR_BLUE, Blue);
1732 }
1733 
1734 /**
1735   * @brief  Return DMA2D background blue color value, expressed on 8 bits ([7:0] bits).
1736   * @rmtoll BGCOLR          BLUE          LL_DMA2D_BGND_GetBlueColor
1737   * @param  DMA2Dx DMA2D Instance
1738   * @retval Blue color value between Min_Data=0 and Max_Data=0xFF
1739   */
LL_DMA2D_BGND_GetBlueColor(const DMA2D_TypeDef * DMA2Dx)1740 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetBlueColor(const DMA2D_TypeDef *DMA2Dx)
1741 {
1742   return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_BLUE));
1743 }
1744 
1745 /**
1746   * @brief  Set DMA2D background CLUT memory address, expressed on 32 bits ([31:0] bits).
1747   * @rmtoll BGCMAR          MA         LL_DMA2D_BGND_SetCLUTMemAddr
1748   * @param  DMA2Dx DMA2D Instance
1749   * @param  CLUTMemoryAddress Value between Min_Data=0 and Max_Data=0xFFFFFFFF
1750   * @retval None
1751   */
LL_DMA2D_BGND_SetCLUTMemAddr(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTMemoryAddress)1752 __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTMemoryAddress)
1753 {
1754   LL_DMA2D_WriteReg(DMA2Dx, BGCMAR, CLUTMemoryAddress);
1755 }
1756 
1757 /**
1758   * @brief  Get DMA2D background CLUT memory address, expressed on 32 bits ([31:0] bits).
1759   * @rmtoll BGCMAR          MA           LL_DMA2D_BGND_GetCLUTMemAddr
1760   * @param  DMA2Dx DMA2D Instance
1761   * @retval Background CLUT memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF
1762   */
LL_DMA2D_BGND_GetCLUTMemAddr(const DMA2D_TypeDef * DMA2Dx)1763 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetCLUTMemAddr(const DMA2D_TypeDef *DMA2Dx)
1764 {
1765   return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, BGCMAR));
1766 }
1767 
1768 /**
1769   * @brief  Set DMA2D background CLUT size, expressed on 8 bits ([7:0] bits).
1770   * @rmtoll BGPFCCR          CS         LL_DMA2D_BGND_SetCLUTSize
1771   * @param  DMA2Dx DMA2D Instance
1772   * @param  CLUTSize Value between Min_Data=0 and Max_Data=0xFF
1773   * @retval None
1774   */
LL_DMA2D_BGND_SetCLUTSize(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTSize)1775 __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTSize(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTSize)
1776 {
1777   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CS, (CLUTSize << DMA2D_BGPFCCR_CS_Pos));
1778 }
1779 
1780 /**
1781   * @brief  Get DMA2D background CLUT size, expressed on 8 bits ([7:0] bits).
1782   * @rmtoll BGPFCCR          CS           LL_DMA2D_BGND_GetCLUTSize
1783   * @param  DMA2Dx DMA2D Instance
1784   * @retval Background CLUT size value between Min_Data=0 and Max_Data=0xFF
1785   */
LL_DMA2D_BGND_GetCLUTSize(const DMA2D_TypeDef * DMA2Dx)1786 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetCLUTSize(const DMA2D_TypeDef *DMA2Dx)
1787 {
1788   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CS) >> DMA2D_BGPFCCR_CS_Pos);
1789 }
1790 
1791 /**
1792   * @brief  Set DMA2D background CLUT color mode.
1793   * @rmtoll BGPFCCR          CCM         LL_DMA2D_BGND_SetCLUTColorMode
1794   * @param  DMA2Dx DMA2D Instance
1795   * @param  CLUTColorMode This parameter can be one of the following values:
1796   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1797   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1798   * @retval None
1799   */
LL_DMA2D_BGND_SetCLUTColorMode(DMA2D_TypeDef * DMA2Dx,uint32_t CLUTColorMode)1800 __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t CLUTColorMode)
1801 {
1802   MODIFY_REG(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CCM, CLUTColorMode);
1803 }
1804 
1805 /**
1806   * @brief  Return DMA2D background CLUT color mode.
1807   * @rmtoll BGPFCCR          CCM          LL_DMA2D_BGND_GetCLUTColorMode
1808   * @param  DMA2Dx DMA2D Instance
1809   * @retval Returned value can be one of the following values:
1810   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888
1811   *         @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888
1812   */
LL_DMA2D_BGND_GetCLUTColorMode(const DMA2D_TypeDef * DMA2Dx)1813 __STATIC_INLINE uint32_t  LL_DMA2D_BGND_GetCLUTColorMode(const DMA2D_TypeDef *DMA2Dx)
1814 {
1815   return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CCM));
1816 }
1817 
1818 /**
1819   * @}
1820   */
1821 
1822 /**
1823   * @}
1824   */
1825 
1826 
1827 /** @defgroup DMA2D_LL_EF_FLAG_MANAGEMENT Flag Management
1828   * @{
1829   */
1830 
1831 /**
1832   * @brief  Check if the DMA2D Configuration Error Interrupt Flag is set or not
1833   * @rmtoll ISR          CEIF            LL_DMA2D_IsActiveFlag_CE
1834   * @param  DMA2Dx DMA2D Instance
1835   * @retval State of bit (1 or 0).
1836   */
LL_DMA2D_IsActiveFlag_CE(const DMA2D_TypeDef * DMA2Dx)1837 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CE(const DMA2D_TypeDef *DMA2Dx)
1838 {
1839   return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CEIF) == (DMA2D_ISR_CEIF)) ? 1UL : 0UL);
1840 }
1841 
1842 /**
1843   * @brief  Check if the DMA2D CLUT Transfer Complete Interrupt Flag is set or not
1844   * @rmtoll ISR          CTCIF            LL_DMA2D_IsActiveFlag_CTC
1845   * @param  DMA2Dx DMA2D Instance
1846   * @retval State of bit (1 or 0).
1847   */
LL_DMA2D_IsActiveFlag_CTC(const DMA2D_TypeDef * DMA2Dx)1848 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CTC(const DMA2D_TypeDef *DMA2Dx)
1849 {
1850   return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CTCIF) == (DMA2D_ISR_CTCIF)) ? 1UL : 0UL);
1851 }
1852 
1853 /**
1854   * @brief  Check if the DMA2D CLUT Access Error Interrupt Flag is set or not
1855   * @rmtoll ISR          CAEIF            LL_DMA2D_IsActiveFlag_CAE
1856   * @param  DMA2Dx DMA2D Instance
1857   * @retval State of bit (1 or 0).
1858   */
LL_DMA2D_IsActiveFlag_CAE(const DMA2D_TypeDef * DMA2Dx)1859 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CAE(const DMA2D_TypeDef *DMA2Dx)
1860 {
1861   return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CAEIF) == (DMA2D_ISR_CAEIF)) ? 1UL : 0UL);
1862 }
1863 
1864 /**
1865   * @brief  Check if the DMA2D Transfer Watermark Interrupt Flag is set or not
1866   * @rmtoll ISR          TWIF            LL_DMA2D_IsActiveFlag_TW
1867   * @param  DMA2Dx DMA2D Instance
1868   * @retval State of bit (1 or 0).
1869   */
LL_DMA2D_IsActiveFlag_TW(const DMA2D_TypeDef * DMA2Dx)1870 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TW(const DMA2D_TypeDef *DMA2Dx)
1871 {
1872   return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TWIF) == (DMA2D_ISR_TWIF)) ? 1UL : 0UL);
1873 }
1874 
1875 /**
1876   * @brief  Check if the DMA2D Transfer Complete Interrupt Flag is set or not
1877   * @rmtoll ISR          TCIF            LL_DMA2D_IsActiveFlag_TC
1878   * @param  DMA2Dx DMA2D Instance
1879   * @retval State of bit (1 or 0).
1880   */
LL_DMA2D_IsActiveFlag_TC(const DMA2D_TypeDef * DMA2Dx)1881 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TC(const DMA2D_TypeDef *DMA2Dx)
1882 {
1883   return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TCIF) == (DMA2D_ISR_TCIF)) ? 1UL : 0UL);
1884 }
1885 
1886 /**
1887   * @brief  Check if the DMA2D Transfer Error Interrupt Flag is set or not
1888   * @rmtoll ISR          TEIF            LL_DMA2D_IsActiveFlag_TE
1889   * @param  DMA2Dx DMA2D Instance
1890   * @retval State of bit (1 or 0).
1891   */
LL_DMA2D_IsActiveFlag_TE(const DMA2D_TypeDef * DMA2Dx)1892 __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TE(const DMA2D_TypeDef *DMA2Dx)
1893 {
1894   return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TEIF) == (DMA2D_ISR_TEIF)) ? 1UL : 0UL);
1895 }
1896 
1897 /**
1898   * @brief  Clear DMA2D Configuration Error Interrupt Flag
1899   * @rmtoll IFCR          CCEIF          LL_DMA2D_ClearFlag_CE
1900   * @param  DMA2Dx DMA2D Instance
1901   * @retval None
1902   */
LL_DMA2D_ClearFlag_CE(DMA2D_TypeDef * DMA2Dx)1903 __STATIC_INLINE void LL_DMA2D_ClearFlag_CE(DMA2D_TypeDef *DMA2Dx)
1904 {
1905   WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CCEIF);
1906 }
1907 
1908 /**
1909   * @brief  Clear DMA2D CLUT Transfer Complete Interrupt Flag
1910   * @rmtoll IFCR          CCTCIF          LL_DMA2D_ClearFlag_CTC
1911   * @param  DMA2Dx DMA2D Instance
1912   * @retval None
1913   */
LL_DMA2D_ClearFlag_CTC(DMA2D_TypeDef * DMA2Dx)1914 __STATIC_INLINE void LL_DMA2D_ClearFlag_CTC(DMA2D_TypeDef *DMA2Dx)
1915 {
1916   WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CCTCIF);
1917 }
1918 
1919 /**
1920   * @brief  Clear DMA2D CLUT Access Error Interrupt Flag
1921   * @rmtoll IFCR          CAECIF          LL_DMA2D_ClearFlag_CAE
1922   * @param  DMA2Dx DMA2D Instance
1923   * @retval None
1924   */
LL_DMA2D_ClearFlag_CAE(DMA2D_TypeDef * DMA2Dx)1925 __STATIC_INLINE void LL_DMA2D_ClearFlag_CAE(DMA2D_TypeDef *DMA2Dx)
1926 {
1927   WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CAECIF);
1928 }
1929 
1930 /**
1931   * @brief  Clear DMA2D Transfer Watermark Interrupt Flag
1932   * @rmtoll IFCR          CTWIF          LL_DMA2D_ClearFlag_TW
1933   * @param  DMA2Dx DMA2D Instance
1934   * @retval None
1935   */
LL_DMA2D_ClearFlag_TW(DMA2D_TypeDef * DMA2Dx)1936 __STATIC_INLINE void LL_DMA2D_ClearFlag_TW(DMA2D_TypeDef *DMA2Dx)
1937 {
1938   WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CTWIF);
1939 }
1940 
1941 /**
1942   * @brief  Clear DMA2D Transfer Complete Interrupt Flag
1943   * @rmtoll IFCR          CTCIF          LL_DMA2D_ClearFlag_TC
1944   * @param  DMA2Dx DMA2D Instance
1945   * @retval None
1946   */
LL_DMA2D_ClearFlag_TC(DMA2D_TypeDef * DMA2Dx)1947 __STATIC_INLINE void LL_DMA2D_ClearFlag_TC(DMA2D_TypeDef *DMA2Dx)
1948 {
1949   WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CTCIF);
1950 }
1951 
1952 /**
1953   * @brief  Clear DMA2D Transfer Error Interrupt Flag
1954   * @rmtoll IFCR          CTEIF          LL_DMA2D_ClearFlag_TE
1955   * @param  DMA2Dx DMA2D Instance
1956   * @retval None
1957   */
LL_DMA2D_ClearFlag_TE(DMA2D_TypeDef * DMA2Dx)1958 __STATIC_INLINE void LL_DMA2D_ClearFlag_TE(DMA2D_TypeDef *DMA2Dx)
1959 {
1960   WRITE_REG(DMA2Dx->IFCR, DMA2D_IFCR_CTEIF);
1961 }
1962 
1963 /**
1964   * @}
1965   */
1966 
1967 /** @defgroup DMA2D_LL_EF_IT_MANAGEMENT Interruption Management
1968   * @{
1969   */
1970 
1971 /**
1972   * @brief  Enable Configuration Error Interrupt
1973   * @rmtoll CR          CEIE        LL_DMA2D_EnableIT_CE
1974   * @param  DMA2Dx DMA2D Instance
1975   * @retval None
1976   */
LL_DMA2D_EnableIT_CE(DMA2D_TypeDef * DMA2Dx)1977 __STATIC_INLINE void LL_DMA2D_EnableIT_CE(DMA2D_TypeDef *DMA2Dx)
1978 {
1979   SET_BIT(DMA2Dx->CR, DMA2D_CR_CEIE);
1980 }
1981 
1982 /**
1983   * @brief  Enable CLUT Transfer Complete Interrupt
1984   * @rmtoll CR          CTCIE        LL_DMA2D_EnableIT_CTC
1985   * @param  DMA2Dx DMA2D Instance
1986   * @retval None
1987   */
LL_DMA2D_EnableIT_CTC(DMA2D_TypeDef * DMA2Dx)1988 __STATIC_INLINE void LL_DMA2D_EnableIT_CTC(DMA2D_TypeDef *DMA2Dx)
1989 {
1990   SET_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE);
1991 }
1992 
1993 /**
1994   * @brief  Enable CLUT Access Error Interrupt
1995   * @rmtoll CR          CAEIE        LL_DMA2D_EnableIT_CAE
1996   * @param  DMA2Dx DMA2D Instance
1997   * @retval None
1998   */
LL_DMA2D_EnableIT_CAE(DMA2D_TypeDef * DMA2Dx)1999 __STATIC_INLINE void LL_DMA2D_EnableIT_CAE(DMA2D_TypeDef *DMA2Dx)
2000 {
2001   SET_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE);
2002 }
2003 
2004 /**
2005   * @brief  Enable Transfer Watermark Interrupt
2006   * @rmtoll CR          TWIE        LL_DMA2D_EnableIT_TW
2007   * @param  DMA2Dx DMA2D Instance
2008   * @retval None
2009   */
LL_DMA2D_EnableIT_TW(DMA2D_TypeDef * DMA2Dx)2010 __STATIC_INLINE void LL_DMA2D_EnableIT_TW(DMA2D_TypeDef *DMA2Dx)
2011 {
2012   SET_BIT(DMA2Dx->CR, DMA2D_CR_TWIE);
2013 }
2014 
2015 /**
2016   * @brief  Enable Transfer Complete Interrupt
2017   * @rmtoll CR          TCIE        LL_DMA2D_EnableIT_TC
2018   * @param  DMA2Dx DMA2D Instance
2019   * @retval None
2020   */
LL_DMA2D_EnableIT_TC(DMA2D_TypeDef * DMA2Dx)2021 __STATIC_INLINE void LL_DMA2D_EnableIT_TC(DMA2D_TypeDef *DMA2Dx)
2022 {
2023   SET_BIT(DMA2Dx->CR, DMA2D_CR_TCIE);
2024 }
2025 
2026 /**
2027   * @brief  Enable Transfer Error Interrupt
2028   * @rmtoll CR          TEIE        LL_DMA2D_EnableIT_TE
2029   * @param  DMA2Dx DMA2D Instance
2030   * @retval None
2031   */
LL_DMA2D_EnableIT_TE(DMA2D_TypeDef * DMA2Dx)2032 __STATIC_INLINE void LL_DMA2D_EnableIT_TE(DMA2D_TypeDef *DMA2Dx)
2033 {
2034   SET_BIT(DMA2Dx->CR, DMA2D_CR_TEIE);
2035 }
2036 
2037 /**
2038   * @brief  Disable Configuration Error Interrupt
2039   * @rmtoll CR          CEIE        LL_DMA2D_DisableIT_CE
2040   * @param  DMA2Dx DMA2D Instance
2041   * @retval None
2042   */
LL_DMA2D_DisableIT_CE(DMA2D_TypeDef * DMA2Dx)2043 __STATIC_INLINE void LL_DMA2D_DisableIT_CE(DMA2D_TypeDef *DMA2Dx)
2044 {
2045   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_CEIE);
2046 }
2047 
2048 /**
2049   * @brief  Disable CLUT Transfer Complete Interrupt
2050   * @rmtoll CR          CTCIE        LL_DMA2D_DisableIT_CTC
2051   * @param  DMA2Dx DMA2D Instance
2052   * @retval None
2053   */
LL_DMA2D_DisableIT_CTC(DMA2D_TypeDef * DMA2Dx)2054 __STATIC_INLINE void LL_DMA2D_DisableIT_CTC(DMA2D_TypeDef *DMA2Dx)
2055 {
2056   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE);
2057 }
2058 
2059 /**
2060   * @brief  Disable CLUT Access Error Interrupt
2061   * @rmtoll CR          CAEIE        LL_DMA2D_DisableIT_CAE
2062   * @param  DMA2Dx DMA2D Instance
2063   * @retval None
2064   */
LL_DMA2D_DisableIT_CAE(DMA2D_TypeDef * DMA2Dx)2065 __STATIC_INLINE void LL_DMA2D_DisableIT_CAE(DMA2D_TypeDef *DMA2Dx)
2066 {
2067   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE);
2068 }
2069 
2070 /**
2071   * @brief  Disable Transfer Watermark Interrupt
2072   * @rmtoll CR          TWIE        LL_DMA2D_DisableIT_TW
2073   * @param  DMA2Dx DMA2D Instance
2074   * @retval None
2075   */
LL_DMA2D_DisableIT_TW(DMA2D_TypeDef * DMA2Dx)2076 __STATIC_INLINE void LL_DMA2D_DisableIT_TW(DMA2D_TypeDef *DMA2Dx)
2077 {
2078   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_TWIE);
2079 }
2080 
2081 /**
2082   * @brief  Disable Transfer Complete Interrupt
2083   * @rmtoll CR          TCIE        LL_DMA2D_DisableIT_TC
2084   * @param  DMA2Dx DMA2D Instance
2085   * @retval None
2086   */
LL_DMA2D_DisableIT_TC(DMA2D_TypeDef * DMA2Dx)2087 __STATIC_INLINE void LL_DMA2D_DisableIT_TC(DMA2D_TypeDef *DMA2Dx)
2088 {
2089   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_TCIE);
2090 }
2091 
2092 /**
2093   * @brief  Disable Transfer Error Interrupt
2094   * @rmtoll CR          TEIE        LL_DMA2D_DisableIT_TE
2095   * @param  DMA2Dx DMA2D Instance
2096   * @retval None
2097   */
LL_DMA2D_DisableIT_TE(DMA2D_TypeDef * DMA2Dx)2098 __STATIC_INLINE void LL_DMA2D_DisableIT_TE(DMA2D_TypeDef *DMA2Dx)
2099 {
2100   CLEAR_BIT(DMA2Dx->CR, DMA2D_CR_TEIE);
2101 }
2102 
2103 /**
2104   * @brief  Check if the DMA2D Configuration Error interrupt source is enabled or disabled.
2105   * @rmtoll CR          CEIE        LL_DMA2D_IsEnabledIT_CE
2106   * @param  DMA2Dx DMA2D Instance
2107   * @retval State of bit (1 or 0).
2108   */
LL_DMA2D_IsEnabledIT_CE(const DMA2D_TypeDef * DMA2Dx)2109 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CE(const DMA2D_TypeDef *DMA2Dx)
2110 {
2111   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CEIE) == (DMA2D_CR_CEIE)) ? 1UL : 0UL);
2112 }
2113 
2114 /**
2115   * @brief  Check if the DMA2D CLUT Transfer Complete interrupt source is enabled or disabled.
2116   * @rmtoll CR          CTCIE        LL_DMA2D_IsEnabledIT_CTC
2117   * @param  DMA2Dx DMA2D Instance
2118   * @retval State of bit (1 or 0).
2119   */
LL_DMA2D_IsEnabledIT_CTC(const DMA2D_TypeDef * DMA2Dx)2120 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CTC(const DMA2D_TypeDef *DMA2Dx)
2121 {
2122   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE) == (DMA2D_CR_CTCIE)) ? 1UL : 0UL);
2123 }
2124 
2125 /**
2126   * @brief  Check if the DMA2D CLUT Access Error interrupt source is enabled or disabled.
2127   * @rmtoll CR          CAEIE        LL_DMA2D_IsEnabledIT_CAE
2128   * @param  DMA2Dx DMA2D Instance
2129   * @retval State of bit (1 or 0).
2130   */
LL_DMA2D_IsEnabledIT_CAE(const DMA2D_TypeDef * DMA2Dx)2131 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CAE(const DMA2D_TypeDef *DMA2Dx)
2132 {
2133   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE) == (DMA2D_CR_CAEIE)) ? 1UL : 0UL);
2134 }
2135 
2136 /**
2137   * @brief  Check if the DMA2D Transfer Watermark interrupt source is enabled or disabled.
2138   * @rmtoll CR          TWIE        LL_DMA2D_IsEnabledIT_TW
2139   * @param  DMA2Dx DMA2D Instance
2140   * @retval State of bit (1 or 0).
2141   */
LL_DMA2D_IsEnabledIT_TW(const DMA2D_TypeDef * DMA2Dx)2142 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TW(const DMA2D_TypeDef *DMA2Dx)
2143 {
2144   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TWIE) == (DMA2D_CR_TWIE)) ? 1UL : 0UL);
2145 }
2146 
2147 /**
2148   * @brief  Check if the DMA2D Transfer Complete interrupt source is enabled or disabled.
2149   * @rmtoll CR          TCIE        LL_DMA2D_IsEnabledIT_TC
2150   * @param  DMA2Dx DMA2D Instance
2151   * @retval State of bit (1 or 0).
2152   */
LL_DMA2D_IsEnabledIT_TC(const DMA2D_TypeDef * DMA2Dx)2153 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TC(const DMA2D_TypeDef *DMA2Dx)
2154 {
2155   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TCIE) == (DMA2D_CR_TCIE)) ? 1UL : 0UL);
2156 }
2157 
2158 /**
2159   * @brief  Check if the DMA2D Transfer Error interrupt source is enabled or disabled.
2160   * @rmtoll CR          TEIE        LL_DMA2D_IsEnabledIT_TE
2161   * @param  DMA2Dx DMA2D Instance
2162   * @retval State of bit (1 or 0).
2163   */
LL_DMA2D_IsEnabledIT_TE(const DMA2D_TypeDef * DMA2Dx)2164 __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TE(const DMA2D_TypeDef *DMA2Dx)
2165 {
2166   return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TEIE) == (DMA2D_CR_TEIE)) ? 1UL : 0UL);
2167 }
2168 
2169 
2170 
2171 /**
2172   * @}
2173   */
2174 
2175 #if defined(USE_FULL_LL_DRIVER)
2176 /** @defgroup DMA2D_LL_EF_Init_Functions Initialization and De-initialization Functions
2177   * @{
2178   */
2179 
2180 ErrorStatus LL_DMA2D_DeInit(const DMA2D_TypeDef *DMA2Dx);
2181 ErrorStatus LL_DMA2D_Init(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_InitTypeDef *DMA2D_InitStruct);
2182 void LL_DMA2D_StructInit(LL_DMA2D_InitTypeDef *DMA2D_InitStruct);
2183 void LL_DMA2D_ConfigLayer(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg, uint32_t LayerIdx);
2184 void LL_DMA2D_LayerCfgStructInit(LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg);
2185 void LL_DMA2D_ConfigOutputColor(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_ColorTypeDef *DMA2D_ColorStruct);
2186 uint32_t LL_DMA2D_GetOutputBlueColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2187 uint32_t LL_DMA2D_GetOutputGreenColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2188 uint32_t LL_DMA2D_GetOutputRedColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2189 uint32_t LL_DMA2D_GetOutputAlphaColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode);
2190 void LL_DMA2D_ConfigSize(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines, uint32_t NbrOfPixelsPerLines);
2191 
2192 /**
2193   * @}
2194   */
2195 #endif /* USE_FULL_LL_DRIVER */
2196 
2197 /**
2198   * @}
2199   */
2200 
2201 /**
2202   * @}
2203   */
2204 
2205 #endif /* defined (DMA2D) */
2206 
2207 /**
2208   * @}
2209   */
2210 
2211 #ifdef __cplusplus
2212 }
2213 #endif
2214 
2215 #endif /* STM32L4xx_LL_DMA2D_H */
2216