File indexing completed on 2025-05-11 08:23:02
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 #ifndef LIBBSP_ARM_SHARED_LPC_DMA_H
0037 #define LIBBSP_ARM_SHARED_LPC_DMA_H
0038
0039 #include <bspopts.h>
0040 #include <bsp/utility.h>
0041
0042 #ifdef __cplusplus
0043 extern "C" {
0044 #endif
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 typedef struct {
0061 uint32_t src;
0062 uint32_t dest;
0063 uint32_t lli;
0064 uint32_t ctrl;
0065 } lpc_dma_descriptor;
0066
0067
0068
0069
0070 typedef struct {
0071 lpc_dma_descriptor desc;
0072 uint32_t cfg;
0073 uint32_t reserved [3];
0074 } lpc_dma_channel;
0075
0076
0077
0078
0079 typedef struct {
0080 uint32_t int_stat;
0081 uint32_t int_tc_stat;
0082 uint32_t int_tc_clear;
0083 uint32_t int_err_stat;
0084 uint32_t int_err_clear;
0085 uint32_t raw_tc_stat;
0086 uint32_t raw_err_stat;
0087 uint32_t enabled_channels;
0088 uint32_t soft_burst_req;
0089 uint32_t soft_single_req;
0090 uint32_t soft_last_burst_req;
0091 uint32_t soft_last_single_req;
0092 uint32_t cfg;
0093 uint32_t sync;
0094 uint32_t reserved [50];
0095 lpc_dma_channel channels [LPC_DMA_CHANNEL_COUNT];
0096 } lpc_dma;
0097
0098
0099
0100
0101
0102
0103
0104 #define DMA_CFG_E BSP_BIT32(0)
0105 #define DMA_CFG_M_0 BSP_BIT32(1)
0106 #define DMA_CFG_M_1 BSP_BIT32(2)
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116 #define DMA_CH_CTRL_TSZ(val) BSP_FLD32(val, 0, 11)
0117 #define DMA_CH_CTRL_TSZ_MAX DMA_CH_CTRL_TSZ(0xfff)
0118
0119 #define DMA_CH_CTRL_SB(val) BSP_FLD32(val, 12, 14)
0120 #define DMA_CH_CTRL_SB_1 DMA_CH_CTRL_SB(0)
0121 #define DMA_CH_CTRL_SB_4 DMA_CH_CTRL_SB(1)
0122 #define DMA_CH_CTRL_SB_8 DMA_CH_CTRL_SB(2)
0123 #define DMA_CH_CTRL_SB_16 DMA_CH_CTRL_SB(3)
0124 #define DMA_CH_CTRL_SB_32 DMA_CH_CTRL_SB(4)
0125 #define DMA_CH_CTRL_SB_64 DMA_CH_CTRL_SB(5)
0126 #define DMA_CH_CTRL_SB_128 DMA_CH_CTRL_SB(6)
0127 #define DMA_CH_CTRL_SB_256 DMA_CH_CTRL_SB(7)
0128
0129 #define DMA_CH_CTRL_DB(val) BSP_FLD32(val, 15, 17)
0130 #define DMA_CH_CTRL_DB_1 DMA_CH_CTRL_DB(0)
0131 #define DMA_CH_CTRL_DB_4 DMA_CH_CTRL_DB(1)
0132 #define DMA_CH_CTRL_DB_8 DMA_CH_CTRL_DB(2)
0133 #define DMA_CH_CTRL_DB_16 DMA_CH_CTRL_DB(3)
0134 #define DMA_CH_CTRL_DB_32 DMA_CH_CTRL_DB(4)
0135 #define DMA_CH_CTRL_DB_64 DMA_CH_CTRL_DB(5)
0136 #define DMA_CH_CTRL_DB_128 DMA_CH_CTRL_DB(6)
0137 #define DMA_CH_CTRL_DB_256 DMA_CH_CTRL_DB(7)
0138
0139 #define DMA_CH_CTRL_SW(val) BSP_FLD32(val, 18, 20)
0140 #define DMA_CH_CTRL_SW_8 DMA_CH_CTRL_SW(0)
0141 #define DMA_CH_CTRL_SW_16 DMA_CH_CTRL_SW(1)
0142 #define DMA_CH_CTRL_SW_32 DMA_CH_CTRL_SW(2)
0143
0144 #define DMA_CH_CTRL_DW(val) BSP_FLD32(val, 21, 23)
0145 #define DMA_CH_CTRL_DW_8 DMA_CH_CTRL_DW(0)
0146 #define DMA_CH_CTRL_DW_16 DMA_CH_CTRL_DW(1)
0147 #define DMA_CH_CTRL_DW_32 DMA_CH_CTRL_DW(2)
0148
0149 #define DMA_CH_CTRL_S BSP_BIT32(24)
0150 #define DMA_CH_CTRL_D BSP_BIT32(25)
0151 #define DMA_CH_CTRL_SI BSP_BIT32(26)
0152 #define DMA_CH_CTRL_DI BSP_BIT32(27)
0153 #define DMA_CH_CTRL_PROT(val) BSP_FLD32(val, 28, 30)
0154 #define DMA_CH_CTRL_I BSP_BIT32(31)
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164 #define DMA_CH_CFG_E BSP_BIT32(0)
0165 #define DMA_CH_CFG_SPER(val) BSP_FLD32(val, 1, 5)
0166 #define DMA_CH_CFG_DPER(val) BSP_FLD32(val, 6, 10)
0167
0168 #define DMA_CH_CFG_FLOW(val) BSP_FLD32(val, 11, 13)
0169 #define DMA_CH_CFG_FLOW_MEM_TO_MEM_DMA DMA_CH_CFG_FLOW(0)
0170 #define DMA_CH_CFG_FLOW_MEM_TO_PER_DMA DMA_CH_CFG_FLOW(1)
0171 #define DMA_CH_CFG_FLOW_PER_TO_MEM_DMA DMA_CH_CFG_FLOW(2)
0172 #define DMA_CH_CFG_FLOW_PER_TO_PER_DMA DMA_CH_CFG_FLOW(3)
0173 #define DMA_CH_CFG_FLOW_PER_TO_PER_DEST DMA_CH_CFG_FLOW(4)
0174 #define DMA_CH_CFG_FLOW_MEM_TO_PER_PER DMA_CH_CFG_FLOW(5)
0175 #define DMA_CH_CFG_FLOW_PER_TO_MEM_PER DMA_CH_CFG_FLOW(6)
0176 #define DMA_CH_CFG_FLOW_PER_TO_PER_SRC DMA_CH_CFG_FLOW(7)
0177
0178 #define DMA_CH_CFG_IE BSP_BIT32(14)
0179 #define DMA_CH_CFG_ITC BSP_BIT32(15)
0180 #define DMA_CH_CFG_L BSP_BIT32(16)
0181 #define DMA_CH_CFG_A BSP_BIT32(17)
0182 #define DMA_CH_CFG_H BSP_BIT32(18)
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192 #define LPC24XX_DMA_PER_SSP_0_TX 0
0193 #define LPC24XX_DMA_PER_SSP_0_RX 1
0194 #define LPC24XX_DMA_PER_SSP_1_TX 2
0195 #define LPC24XX_DMA_PER_SSP_1_RX 3
0196 #define LPC24XX_DMA_PER_SD_MMC 4
0197 #define LPC24XX_DMA_PER_I2S_CH_0 5
0198 #define LPC24XX_DMA_PER_I2S_CH_1 6
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208 #define LPC32XX_DMA_PER_I2S_0_CH_0 0
0209 #define LPC32XX_DMA_PER_I2S_0_CH_1 13
0210 #define LPC32XX_DMA_PER_I2S_1_CH_0 2
0211 #define LPC32XX_DMA_PER_I2S_1_CH_1 10
0212 #define LPC32XX_DMA_PER_NAND_0 1
0213 #define LPC32XX_DMA_PER_NAND_1 12
0214 #define LPC32XX_DMA_PER_SD_MMC 4
0215 #define LPC32XX_DMA_PER_SSP_0_RX 14
0216 #define LPC32XX_DMA_PER_SSP_0_TX 15
0217 #define LPC32XX_DMA_PER_SSP_1_RX 3
0218 #define LPC32XX_DMA_PER_SSP_1_TX 11
0219 #define LPC32XX_DMA_PER_UART_1_RX 6
0220 #define LPC32XX_DMA_PER_UART_1_TX 5
0221 #define LPC32XX_DMA_PER_UART_2_RX 8
0222 #define LPC32XX_DMA_PER_UART_2_TX 7
0223 #define LPC32XX_DMA_PER_UART_7_RX 10
0224 #define LPC32XX_DMA_PER_UART_7_TX 9
0225
0226
0227
0228
0229
0230 #ifdef __cplusplus
0231 }
0232 #endif
0233
0234 #endif