1 //------------------------------------------------------------------------------ 2 // Copyright 2012 (c) Silicon Laboratories Inc. 3 // 4 // SPDX-License-Identifier: Zlib 5 // 6 // This siHAL software is provided 'as-is', without any express or implied 7 // warranty. In no event will the authors be held liable for any damages 8 // arising from the use of this software. 9 // 10 // Permission is granted to anyone to use this software for any purpose, 11 // including commercial applications, and to alter it and redistribute it 12 // freely, subject to the following restrictions: 13 // 14 // 1. The origin of this software must not be misrepresented; you must not 15 // claim that you wrote the original software. If you use this software 16 // in a product, an acknowledgment in the product documentation would be 17 // appreciated but is not required. 18 // 2. Altered source versions must be plainly marked as such, and must not be 19 // misrepresented as being the original software. 20 // 3. This notice may not be removed or altered from any source distribution. 21 //------------------------------------------------------------------------------ 22 23 #ifndef __SI32_DMADESC_A_SUPPORT_H__ 24 #define __SI32_DMADESC_A_SUPPORT_H__ 25 26 // register definitions 27 #include "SI32_DMADESC_A_Registers.h" 28 29 30 //----------------------------------------------------------------------------- 31 // Define constants for aligning the primary and alternate descriptor arrays. 32 33 #define SI32_DMADESC_ALT_STRIDE 16 34 35 #define SI32_DMADESC_PRI_ALIGN (2 * SI32_DMADESC_ALT_STRIDE * sizeof(SI32_DMADESC_A_Type)) 36 #define SI32_DMADESC_ALT_ALIGN (SI32_DMADESC_ALT_STRIDE * sizeof(SI32_DMADESC_A_Type)) 37 38 39 //----------------------------------------------------------------------------- 40 // Define constants for the DMA descriptor config parameter. 41 42 #define SI32_DMADESC_A_CONFIG_RPOWER(rpower) \ 43 (((rpower) << SI32_DMADESC_A_CONFIG_RPOWER_SHIFT) & SI32_DMADESC_A_CONFIG_RPOWER_MASK) 44 45 #define SI32_DMADESC_A_CONFIG_NCOUNT(ncount) \ 46 (((ncount) << SI32_DMADESC_A_CONFIG_NCOUNT_SHIFT) & SI32_DMADESC_A_CONFIG_NCOUNT_MASK) 47 48 #define SI32_DMADESC_A_CONFIG_MOVE(SIZE, MODE) \ 49 ( SI32_DMADESC_A_CONFIG_DSTAIMD_## SIZE ##_U32 | SI32_DMADESC_A_CONFIG_DSTSIZE_## SIZE ##_U32 \ 50 | SI32_DMADESC_A_CONFIG_SRCAIMD_## SIZE ##_U32 | SI32_DMADESC_A_CONFIG_SRCSIZE_## SIZE ##_U32 \ 51 | SI32_DMADESC_A_CONFIG_TMD_## MODE ##_U32 ) 52 53 #define SI32_DMADESC_A_CONFIG_RX(SIZE, MODE) \ 54 ( SI32_DMADESC_A_CONFIG_DSTAIMD_## SIZE ##_U32 | SI32_DMADESC_A_CONFIG_DSTSIZE_## SIZE ##_U32 \ 55 | SI32_DMADESC_A_CONFIG_SRCAIMD_NO_INCREMENT_U32 | SI32_DMADESC_A_CONFIG_SRCSIZE_## SIZE ##_U32 \ 56 | SI32_DMADESC_A_CONFIG_TMD_## MODE ##_U32 ) 57 58 #define SI32_DMADESC_A_CONFIG_TX(SIZE, MODE) \ 59 ( SI32_DMADESC_A_CONFIG_DSTAIMD_NO_INCREMENT_U32 | SI32_DMADESC_A_CONFIG_DSTSIZE_## SIZE ##_U32 \ 60 | SI32_DMADESC_A_CONFIG_SRCAIMD_## SIZE ##_U32 | SI32_DMADESC_A_CONFIG_SRCSIZE_## SIZE ##_U32 \ 61 | SI32_DMADESC_A_CONFIG_TMD_## MODE ##_U32 ) 62 63 #define SI32_DMADESC_A_CONFIG_PIPE(SIZE, MODE) \ 64 ( SI32_DMADESC_A_CONFIG_DSTAIMD_NO_INCREMENT_U32 | SI32_DMADESC_A_CONFIG_DSTSIZE_## SIZE ##_U32 \ 65 | SI32_DMADESC_A_CONFIG_SRCAIMD_NO_INCREMENT_U32 | SI32_DMADESC_A_CONFIG_SRCSIZE_## SIZE ##_U32 \ 66 | SI32_DMADESC_A_CONFIG_TMD_## MODE ##_U32 ) 67 68 #define SI32_DMADESC_A_CONFIG_BYTE_MOVE_AUTO SI32_DMADESC_A_CONFIG_MOVE(BYTE, AUTO_REQUEST) 69 #define SI32_DMADESC_A_CONFIG_BYTE_MOVE_AUTO_SG SI32_DMADESC_A_CONFIG_MOVE(BYTE, MEMORY_SCATTER_GATHER_A) 70 #define SI32_DMADESC_A_CONFIG_BYTE_RX SI32_DMADESC_A_CONFIG_RX(BYTE, BASIC) 71 #define SI32_DMADESC_A_CONFIG_BYTE_RX_PP SI32_DMADESC_A_CONFIG_RX(BYTE, PING_PONG) 72 #define SI32_DMADESC_A_CONFIG_BYTE_RX_SG SI32_DMADESC_A_CONFIG_RX(BYTE, PERIPHERAL_SCATTER_GATHER_A) 73 #define SI32_DMADESC_A_CONFIG_BYTE_TX SI32_DMADESC_A_CONFIG_TX(BYTE, BASIC) 74 #define SI32_DMADESC_A_CONFIG_BYTE_TX_AUTO SI32_DMADESC_A_CONFIG_TX(BYTE, AUTO_REQUEST) 75 #define SI32_DMADESC_A_CONFIG_BYTE_TX_PP SI32_DMADESC_A_CONFIG_TX(BYTE, PING_PONG) 76 #define SI32_DMADESC_A_CONFIG_BYTE_TX_SG SI32_DMADESC_A_CONFIG_TX(BYTE, PERIPHERAL_SCATTER_GATHER_A) 77 #define SI32_DMADESC_A_CONFIG_BYTE_PIPE SI32_DMADESC_A_CONFIG_PIPE(BYTE, BASIC) 78 #define SI32_DMADESC_A_CONFIG_BYTE_PIPE_SG SI32_DMADESC_A_CONFIG_PIPE(BYTE, PERIPHERAL_SCATTER_GATHER_A) 79 80 #define SI32_DMADESC_A_CONFIG_HWORD_MOVE_AUTO SI32_DMADESC_A_CONFIG_MOVE(HALF_WORD, AUTO_REQUEST) 81 #define SI32_DMADESC_A_CONFIG_HWORD_MOVE_AUTO_SG SI32_DMADESC_A_CONFIG_MOVE(HALF_WORD, MEMORY_SCATTER_GATHER_A) 82 #define SI32_DMADESC_A_CONFIG_HWORD_RX SI32_DMADESC_A_CONFIG_RX(HALF_WORD, BASIC) 83 #define SI32_DMADESC_A_CONFIG_HWORD_RX_PP SI32_DMADESC_A_CONFIG_RX(HALF_WORD, PING_PONG) 84 #define SI32_DMADESC_A_CONFIG_HWORD_RX_SG SI32_DMADESC_A_CONFIG_RX(HALF_WORD, PERIPHERAL_SCATTER_GATHER_A) 85 #define SI32_DMADESC_A_CONFIG_HWORD_TX SI32_DMADESC_A_CONFIG_TX(HALF_WORD, BASIC) 86 #define SI32_DMADESC_A_CONFIG_HWORD_TX_AUTO SI32_DMADESC_A_CONFIG_TX(HALF_WORD, AUTO_REQUEST) 87 #define SI32_DMADESC_A_CONFIG_HWORD_TX_PP SI32_DMADESC_A_CONFIG_TX(HALF_WORD, PING_PONG) 88 #define SI32_DMADESC_A_CONFIG_HWORD_TX_SG SI32_DMADESC_A_CONFIG_TX(HALF_WORD, PERIPHERAL_SCATTER_GATHER_A) 89 #define SI32_DMADESC_A_CONFIG_HWORD_PIPE SI32_DMADESC_A_CONFIG_PIPE(HALF_WORD, BASIC) 90 #define SI32_DMADESC_A_CONFIG_HWORD_PIPE_SG SI32_DMADESC_A_CONFIG_PIPE(HALF_WORD, PERIPHERAL_SCATTER_GATHER_A) 91 92 #define SI32_DMADESC_A_CONFIG_WORD_MOVE_AUTO SI32_DMADESC_A_CONFIG_MOVE(WORD, AUTO_REQUEST) 93 #define SI32_DMADESC_A_CONFIG_WORD_MOVE_AUTO_SG SI32_DMADESC_A_CONFIG_MOVE(WORD, MEMORY_SCATTER_GATHER_A) 94 #define SI32_DMADESC_A_CONFIG_WORD_RX SI32_DMADESC_A_CONFIG_RX(WORD, BASIC) 95 #define SI32_DMADESC_A_CONFIG_WORD_RX_PP SI32_DMADESC_A_CONFIG_RX(WORD, PING_PONG) 96 #define SI32_DMADESC_A_CONFIG_WORD_RX_SG SI32_DMADESC_A_CONFIG_RX(WORD, PERIPHERAL_SCATTER_GATHER_A) 97 #define SI32_DMADESC_A_CONFIG_WORD_TX SI32_DMADESC_A_CONFIG_TX(WORD, BASIC) 98 #define SI32_DMADESC_A_CONFIG_WORD_TX_AUTO SI32_DMADESC_A_CONFIG_TX(WORD, AUTO_REQUEST) 99 #define SI32_DMADESC_A_CONFIG_WORD_TX_PP SI32_DMADESC_A_CONFIG_TX(WORD, PING_PONG) 100 #define SI32_DMADESC_A_CONFIG_WORD_TX_SG SI32_DMADESC_A_CONFIG_TX(WORD, PERIPHERAL_SCATTER_GATHER_A) 101 #define SI32_DMADESC_A_CONFIG_WORD_PIPE SI32_DMADESC_A_CONFIG_PIPE(WORD, BASIC) 102 #define SI32_DMADESC_A_CONFIG_WORD_PIPE_SG SI32_DMADESC_A_CONFIG_PIPE(WORD, PERIPHERAL_SCATTER_GATHER_A) 103 104 #define SI32_DMADESC_A_CONFIG_MEMORY_SG \ 105 (SI32_DMADESC_A_CONFIG_MOVE(WORD, MEMORY_SCATTER_GATHER_P) | SI32_DMADESC_A_CONFIG_RPOWER(2)) 106 107 #define SI32_DMADESC_A_CONFIG_PERIPHERAL_SG \ 108 (SI32_DMADESC_A_CONFIG_MOVE(WORD, PERIPHERAL_SCATTER_GATHER_P) | SI32_DMADESC_A_CONFIG_RPOWER(2)) 109 110 111 #endif // __SI32_DMADESC_A_SUPPORT_H__ 112 113 //-eof-------------------------------------------------------------------------- 114