1 /*
2  * Copyright (c) 2022 TOKITA Hiroshi <tokita.hiroshi@gmail.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GD32_DMA_H_
8 #define ZEPHYR_INCLUDE_DT_BINDINGS_GD32_DMA_H_
9 
10 /* macros for channel-cfg */
11 
12 /* direction defined on bits 6-7 */
13 #define GD32_DMA_CH_CFG_DIRECTION(val) ((val & 0x3) << 6)
14 #define GD32_DMA_MEMORY_TO_MEMORY      GD32_DMA_CH_CFG_DIRECTION(0)
15 #define GD32_DMA_MEMORY_TO_PERIPH      GD32_DMA_CH_CFG_DIRECTION(1)
16 #define GD32_DMA_PERIPH_TO_MEMORY      GD32_DMA_CH_CFG_DIRECTION(2)
17 
18 /* periph increase defined on bit 9 as true/false */
19 #define GD32_DMA_CH_CFG_PERIPH_ADDR_INC(val) ((val & 0x1) << 9)
20 #define GD32_DMA_NO_PERIPH_ADDR_INC	     GD32_DMA_CH_CFG_PERIPH_ADDR_INC(0)
21 #define GD32_DMA_PERIPH_ADDR_INC	     GD32_DMA_CH_CFG_PERIPH_ADDR_INC(1)
22 
23 /* memory increase defined on bit 10 as true/false */
24 #define GD32_DMA_CH_CFG_MEMORY_ADDR_INC(val) ((val & 0x1) << 10)
25 #define GD32_DMA_NO_MEMORY_ADDR_INC	     GD32_DMA_CH_CFG_MEMORY_ADDR_INC(0)
26 #define GD32_DMA_MEMORY_ADDR_INC	     GD32_DMA_CH_CFG_MEMORY_ADDR_INC(1)
27 
28 /* periph data size defined on bits 11-12 */
29 #define GD32_DMA_CH_CFG_PERIPH_WIDTH(val) ((val & 0x3) << 11)
30 #define GD32_DMA_PERIPH_WIDTH_8BIT	  GD32_DMA_CH_CFG_PERIPH_WIDTH(0)
31 #define GD32_DMA_PERIPH_WIDTH_16BIT	  GD32_DMA_CH_CFG_PERIPH_WIDTH(1)
32 #define GD32_DMA_PERIPH_WIDTH_32BIT	  GD32_DMA_CH_CFG_PERIPH_WIDTH(2)
33 
34 /* memory data size defined on bits 13-14 */
35 #define GD32_DMA_CH_CFG_MEMORY_WIDTH(val) ((val & 0x3) << 13)
36 #define GD32_DMA_MEMORY_WIDTH_8BIT	  GD32_DMA_CH_CFG_PERIPH_WIDTH(0)
37 #define GD32_DMA_MEMORY_WIDTH_16BIT	  GD32_DMA_CH_CFG_PERIPH_WIDTH(1)
38 #define GD32_DMA_MEMORY_WIDTH_32BIT	  GD32_DMA_CH_CFG_PERIPH_WIDTH(2)
39 
40 /* priority increment offset defined on bit 15 */
41 #define GD32_DMA_CH_CFG_PERIPH_INC_FIXED(val) ((val & 0x1) << 15)
42 
43 /* priority defined on bits 16-17 as 0, 1, 2, 3 */
44 #define GD32_DMA_CH_CFG_PRIORITY(val) ((val & 0x3) << 16)
45 #define GD32_DMA_PRIORITY_LOW	      GD32_DMA_CH_CFG_PRIORITY(0)
46 #define GD32_DMA_PRIORITY_MEDIUM      GD32_DMA_CH_CFG_PRIORITY(1)
47 #define GD32_DMA_PRIORITY_HIGH	      GD32_DMA_CH_CFG_PRIORITY(2)
48 #define GD32_DMA_PRIORITY_VERY_HIGH   GD32_DMA_CH_CFG_PRIORITY(3)
49 
50 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GD32_DMA_H_ */
51