1 /******************************************************************************
2  *
3  * Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by
4  * Analog Devices, Inc.),
5  * Copyright (C) 2023-2024 Analog Devices, Inc.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************************/
20 
21 /****** Includes *******/
22 #include <stddef.h>
23 #include <stdint.h>
24 #include "mxc_device.h"
25 #include "mxc_assert.h"
26 #include "mxc_lock.h"
27 #include "mxc_sys.h"
28 #include "dma.h"
29 #include "dma_reva.h"
30 
31 /****** Functions ******/
32 
MXC_DMA_Init(void)33 int MXC_DMA_Init(void)
34 {
35 #ifndef MSDK_NO_GPIO_CLK_INIT
36     if (!MXC_SYS_IsClockEnabled(MXC_SYS_PERIPH_CLOCK_DMA)) {
37         MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_DMA);
38         MXC_SYS_Reset_Periph(MXC_SYS_RESET0_DMA);
39     }
40 #endif
41 
42     return MXC_DMA_RevA_Init();
43 }
44 
MXC_DMA_DeInit(void)45 void MXC_DMA_DeInit(void)
46 {
47     return MXC_DMA_RevA_DeInit((mxc_dma_reva_regs_t *)MXC_DMA);
48 }
49 
MXC_DMA_AcquireChannel(void)50 int MXC_DMA_AcquireChannel(void)
51 {
52     return MXC_DMA_RevA_AcquireChannel();
53 }
54 
MXC_DMA_ReleaseChannel(int ch)55 int MXC_DMA_ReleaseChannel(int ch)
56 {
57     return MXC_DMA_RevA_ReleaseChannel(ch);
58 }
59 
MXC_DMA_ConfigChannel(mxc_dma_config_t config,mxc_dma_srcdst_t srcdst)60 int MXC_DMA_ConfigChannel(mxc_dma_config_t config, mxc_dma_srcdst_t srcdst)
61 {
62     return MXC_DMA_RevA_ConfigChannel(config, srcdst);
63 }
64 
MXC_DMA_AdvConfigChannel(mxc_dma_adv_config_t advConfig)65 int MXC_DMA_AdvConfigChannel(mxc_dma_adv_config_t advConfig)
66 {
67     return MXC_DMA_RevA_AdvConfigChannel(advConfig);
68 }
69 
MXC_DMA_SetSrcDst(mxc_dma_srcdst_t srcdst)70 int MXC_DMA_SetSrcDst(mxc_dma_srcdst_t srcdst)
71 {
72     return MXC_DMA_RevA_SetSrcDst(srcdst);
73 }
74 
MXC_DMA_GetSrcDst(mxc_dma_srcdst_t srcdst)75 int MXC_DMA_GetSrcDst(mxc_dma_srcdst_t srcdst)
76 {
77     return MXC_DMA_RevA_GetSrcDst(srcdst);
78 }
79 
MXC_DMA_SetSrcReload(mxc_dma_srcdst_t srcdst)80 int MXC_DMA_SetSrcReload(mxc_dma_srcdst_t srcdst)
81 {
82     return MXC_DMA_RevA_SetSrcReload(srcdst);
83 }
84 
MXC_DMA_GetSrcReload(mxc_dma_srcdst_t srcdst)85 int MXC_DMA_GetSrcReload(mxc_dma_srcdst_t srcdst)
86 {
87     return MXC_DMA_RevA_GetSrcReload(srcdst);
88 }
89 
MXC_DMA_SetCallback(int ch,void (* callback)(int,int))90 int MXC_DMA_SetCallback(int ch, void (*callback)(int, int))
91 {
92     return MXC_DMA_RevA_SetCallback(ch, callback);
93 }
94 
MXC_DMA_ChannelEnableInt(int ch,int flags)95 int MXC_DMA_ChannelEnableInt(int ch, int flags)
96 {
97     return MXC_DMA_RevA_ChannelEnableInt(ch, flags);
98 }
99 
MXC_DMA_ChannelDisableInt(int ch,int flags)100 int MXC_DMA_ChannelDisableInt(int ch, int flags)
101 {
102     return MXC_DMA_RevA_ChannelDisableInt(ch, flags);
103 }
104 
MXC_DMA_ChannelGetFlags(int ch)105 int MXC_DMA_ChannelGetFlags(int ch)
106 {
107     return MXC_DMA_RevA_ChannelGetFlags(ch);
108 }
109 
MXC_DMA_ChannelClearFlags(int ch,int flags)110 int MXC_DMA_ChannelClearFlags(int ch, int flags)
111 {
112     return MXC_DMA_RevA_ChannelClearFlags(ch, flags);
113 }
114 
MXC_DMA_EnableInt(int ch)115 int MXC_DMA_EnableInt(int ch)
116 {
117     return MXC_DMA_RevA_EnableInt(ch);
118 }
119 
MXC_DMA_DisableInt(int ch)120 int MXC_DMA_DisableInt(int ch)
121 {
122     return MXC_DMA_RevA_DisableInt(ch);
123 }
124 
MXC_DMA_Start(int ch)125 int MXC_DMA_Start(int ch)
126 {
127     return MXC_DMA_RevA_Start(ch);
128 }
129 
MXC_DMA_Stop(int ch)130 int MXC_DMA_Stop(int ch)
131 {
132     return MXC_DMA_RevA_Stop(ch);
133 }
134 
MXC_DMA_GetCHRegs(int ch)135 mxc_dma_ch_regs_t *MXC_DMA_GetCHRegs(int ch)
136 {
137     return MXC_DMA_RevA_GetCHRegs(ch);
138 }
139 
MXC_DMA_Handler()140 void MXC_DMA_Handler()
141 {
142     MXC_DMA_RevA_Handler();
143 }
144 
MXC_DMA_MemCpy(void * dest,void * src,int len,mxc_dma_complete_cb_t callback)145 int MXC_DMA_MemCpy(void *dest, void *src, int len, mxc_dma_complete_cb_t callback)
146 {
147     return MXC_DMA_RevA_MemCpy(dest, src, len, callback);
148 }
149 
MXC_DMA_DoTransfer(mxc_dma_config_t config,mxc_dma_srcdst_t firstSrcDst,mxc_dma_trans_chain_t callback)150 int MXC_DMA_DoTransfer(mxc_dma_config_t config, mxc_dma_srcdst_t firstSrcDst,
151                        mxc_dma_trans_chain_t callback)
152 {
153     return MXC_DMA_RevA_DoTransfer(config, firstSrcDst, callback);
154 }
155