mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Sep 18 14:00:17 2014 +0100
Revision:
324:406fd2029f23
Parent:
149:1fb5f62b92bd
Synchronized with git revision a73f28e6fbca9559fbed2726410eeb4c0534a4a5

Full URL: https://github.com/mbedmicro/mbed/commit/a73f28e6fbca9559fbed2726410eeb4c0534a4a5/

Extended #476, which does not break ethernet for K64F

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 146:f64d43ff0c18 1 /*
mbed_official 146:f64d43ff0c18 2 * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
mbed_official 146:f64d43ff0c18 3 * All rights reserved.
mbed_official 146:f64d43ff0c18 4 *
mbed_official 146:f64d43ff0c18 5 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 146:f64d43ff0c18 6 * are permitted provided that the following conditions are met:
mbed_official 146:f64d43ff0c18 7 *
mbed_official 146:f64d43ff0c18 8 * o Redistributions of source code must retain the above copyright notice, this list
mbed_official 146:f64d43ff0c18 9 * of conditions and the following disclaimer.
mbed_official 146:f64d43ff0c18 10 *
mbed_official 146:f64d43ff0c18 11 * o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 146:f64d43ff0c18 12 * list of conditions and the following disclaimer in the documentation and/or
mbed_official 146:f64d43ff0c18 13 * other materials provided with the distribution.
mbed_official 146:f64d43ff0c18 14 *
mbed_official 146:f64d43ff0c18 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 146:f64d43ff0c18 16 * contributors may be used to endorse or promote products derived from this
mbed_official 146:f64d43ff0c18 17 * software without specific prior written permission.
mbed_official 146:f64d43ff0c18 18 *
mbed_official 146:f64d43ff0c18 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 146:f64d43ff0c18 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 146:f64d43ff0c18 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 146:f64d43ff0c18 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 146:f64d43ff0c18 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 146:f64d43ff0c18 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 146:f64d43ff0c18 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 146:f64d43ff0c18 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 146:f64d43ff0c18 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 146:f64d43ff0c18 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 146:f64d43ff0c18 29 */
mbed_official 146:f64d43ff0c18 30 #include "fsl_edma_hal.h"
mbed_official 146:f64d43ff0c18 31
mbed_official 146:f64d43ff0c18 32 /*******************************************************************************
mbed_official 146:f64d43ff0c18 33 * Code
mbed_official 146:f64d43ff0c18 34 ******************************************************************************/
mbed_official 146:f64d43ff0c18 35
mbed_official 146:f64d43ff0c18 36 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 37 *
mbed_official 324:406fd2029f23 38 * Function Name : EDMA_HAL_Init
mbed_official 324:406fd2029f23 39 * Description : Initializes eDMA module to known state.
mbed_official 324:406fd2029f23 40 *
mbed_official 324:406fd2029f23 41 *END**************************************************************************/
mbed_official 324:406fd2029f23 42 void EDMA_HAL_Init(uint32_t baseAddr)
mbed_official 324:406fd2029f23 43 {
mbed_official 324:406fd2029f23 44 uint32_t i;
mbed_official 324:406fd2029f23 45
mbed_official 324:406fd2029f23 46 /* Risk there, in SoCs with more than 1 group, we can't set the CR
mbed_official 324:406fd2029f23 47 * register to 0, or fault may happens. Stange that in K70 spec,
mbed_official 324:406fd2029f23 48 * the RM tell the reset value is 0. */
mbed_official 324:406fd2029f23 49 HW_DMA_CR_WR(baseAddr, 0U);
mbed_official 324:406fd2029f23 50
mbed_official 324:406fd2029f23 51 for (i = 0; i < FSL_FEATURE_EDMA_MODULE_CHANNEL; i++)
mbed_official 324:406fd2029f23 52 {
mbed_official 324:406fd2029f23 53 EDMA_HAL_HTCDClearReg(baseAddr, i);
mbed_official 324:406fd2029f23 54 }
mbed_official 324:406fd2029f23 55 }
mbed_official 324:406fd2029f23 56
mbed_official 324:406fd2029f23 57 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 58 *
mbed_official 324:406fd2029f23 59 * Function Name : EDMA_HAL_CancelTransfer
mbed_official 324:406fd2029f23 60 * Description : Cancels the remaining data transfer.
mbed_official 146:f64d43ff0c18 61 *
mbed_official 146:f64d43ff0c18 62 *END**************************************************************************/
mbed_official 324:406fd2029f23 63 void EDMA_HAL_CancelTransfer(uint32_t baseAddr)
mbed_official 146:f64d43ff0c18 64 {
mbed_official 324:406fd2029f23 65 BW_DMA_CR_CX(baseAddr, 1U);
mbed_official 324:406fd2029f23 66 while (BR_DMA_CR_CX(baseAddr))
mbed_official 324:406fd2029f23 67 {}
mbed_official 324:406fd2029f23 68 }
mbed_official 146:f64d43ff0c18 69
mbed_official 324:406fd2029f23 70 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 71 *
mbed_official 324:406fd2029f23 72 * Function Name : EDMA_HAL_ErrorCancelTransfer
mbed_official 324:406fd2029f23 73 * Description : Cancels the remaining data transfer and treat it as error.
mbed_official 324:406fd2029f23 74 *
mbed_official 324:406fd2029f23 75 *END**************************************************************************/
mbed_official 324:406fd2029f23 76 void EDMA_HAL_ErrorCancelTransfer(uint32_t baseAddr)
mbed_official 324:406fd2029f23 77 {
mbed_official 324:406fd2029f23 78 BW_DMA_CR_ECX(baseAddr, 1U);
mbed_official 324:406fd2029f23 79 while (BR_DMA_CR_ECX(baseAddr))
mbed_official 324:406fd2029f23 80 {}
mbed_official 324:406fd2029f23 81 }
mbed_official 324:406fd2029f23 82
mbed_official 324:406fd2029f23 83 #if (FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT > 0x1U)
mbed_official 324:406fd2029f23 84 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 85 *
mbed_official 324:406fd2029f23 86 * Function Name : EDMA_HAL_SetGroupPriority
mbed_official 324:406fd2029f23 87 * Description :
mbed_official 324:406fd2029f23 88 *
mbed_official 324:406fd2029f23 89 *END**************************************************************************/
mbed_official 324:406fd2029f23 90 void EDMA_HAL_SetGroupPriority(uint32_t baseAddr, edma_group_priority_t groupPriority)
mbed_official 324:406fd2029f23 91 {
mbed_official 324:406fd2029f23 92
mbed_official 324:406fd2029f23 93 if (groupPriority == kEDMAGroup0PriorityLowGroup1PriorityHigh)
mbed_official 146:f64d43ff0c18 94 {
mbed_official 324:406fd2029f23 95 BW_DMA_CR_GRP0PRI(baseAddr, 0U);
mbed_official 324:406fd2029f23 96 BW_DMA_CR_GRP1PRI(baseAddr, 1U);
mbed_official 146:f64d43ff0c18 97 }
mbed_official 146:f64d43ff0c18 98 else
mbed_official 146:f64d43ff0c18 99 {
mbed_official 324:406fd2029f23 100 BW_DMA_CR_GRP0PRI(baseAddr, 1U);
mbed_official 324:406fd2029f23 101 BW_DMA_CR_GRP1PRI(baseAddr, 0U);
mbed_official 146:f64d43ff0c18 102 }
mbed_official 146:f64d43ff0c18 103
mbed_official 324:406fd2029f23 104 }
mbed_official 324:406fd2029f23 105 #endif
mbed_official 324:406fd2029f23 106 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 107 *
mbed_official 324:406fd2029f23 108 * Function Name : EDMA_HAL_SetErrorIntCmd
mbed_official 324:406fd2029f23 109 * Description : Enable/Disable error interrupt for channels.
mbed_official 324:406fd2029f23 110 *
mbed_official 324:406fd2029f23 111 *END**************************************************************************/
mbed_official 324:406fd2029f23 112 void EDMA_HAL_SetErrorIntCmd(uint32_t baseAddr, bool enable, edma_channel_indicator_t channel)
mbed_official 324:406fd2029f23 113 {
mbed_official 324:406fd2029f23 114
mbed_official 324:406fd2029f23 115 if (enable)
mbed_official 146:f64d43ff0c18 116 {
mbed_official 324:406fd2029f23 117 HW_DMA_SEEI_WR(baseAddr, channel);
mbed_official 146:f64d43ff0c18 118 }
mbed_official 146:f64d43ff0c18 119 else
mbed_official 146:f64d43ff0c18 120 {
mbed_official 324:406fd2029f23 121 HW_DMA_CEEI_WR(baseAddr, channel);
mbed_official 324:406fd2029f23 122 }
mbed_official 324:406fd2029f23 123 }
mbed_official 324:406fd2029f23 124 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 125 *
mbed_official 324:406fd2029f23 126 * Function Name : EDMA_HAL_SetDmaRequestCmd
mbed_official 324:406fd2029f23 127 * Description : Enable/Disable dma request for channel or all channels.
mbed_official 324:406fd2029f23 128 *
mbed_official 324:406fd2029f23 129 *END**************************************************************************/
mbed_official 324:406fd2029f23 130 void EDMA_HAL_SetDmaRequestCmd(uint32_t baseAddr, edma_channel_indicator_t channel,bool enable)
mbed_official 324:406fd2029f23 131 {
mbed_official 324:406fd2029f23 132
mbed_official 324:406fd2029f23 133 if (enable)
mbed_official 324:406fd2029f23 134 {
mbed_official 324:406fd2029f23 135 HW_DMA_SERQ_WR(baseAddr, channel);
mbed_official 324:406fd2029f23 136 }
mbed_official 324:406fd2029f23 137 else
mbed_official 324:406fd2029f23 138 {
mbed_official 324:406fd2029f23 139 HW_DMA_CERQ_WR(baseAddr, channel);
mbed_official 146:f64d43ff0c18 140 }
mbed_official 324:406fd2029f23 141 }
mbed_official 324:406fd2029f23 142
mbed_official 324:406fd2029f23 143 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 144 *
mbed_official 324:406fd2029f23 145 * Function Name : EDMA_HAL_GetErrorIntCmd
mbed_official 324:406fd2029f23 146 * Description : Gets eDMA channel error interrupt enable status.
mbed_official 324:406fd2029f23 147 *
mbed_official 324:406fd2029f23 148 *END**************************************************************************/
mbed_official 324:406fd2029f23 149 bool EDMA_HAL_GetErrorIntCmd(uint32_t baseAddr, uint32_t channel)
mbed_official 324:406fd2029f23 150 {
mbed_official 324:406fd2029f23 151 return (bool)((HW_DMA_EEI_RD(baseAddr) >> channel) & 1U);
mbed_official 324:406fd2029f23 152 }
mbed_official 324:406fd2029f23 153
mbed_official 324:406fd2029f23 154 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 155 *
mbed_official 324:406fd2029f23 156 * Function Name : EDMA_HAL_HTCDClearReg
mbed_official 324:406fd2029f23 157 * Description : Set registers to 0 for hardware TCD of eDMA channel.
mbed_official 324:406fd2029f23 158 *
mbed_official 324:406fd2029f23 159 *END**************************************************************************/
mbed_official 324:406fd2029f23 160 void EDMA_HAL_HTCDClearReg(uint32_t baseAddr,uint32_t channel)
mbed_official 324:406fd2029f23 161 {
mbed_official 324:406fd2029f23 162 HW_DMA_TCDn_SADDR_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 163 HW_DMA_TCDn_SOFF_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 164 HW_DMA_TCDn_ATTR_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 165 HW_DMA_TCDn_NBYTES_MLNO_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 166 HW_DMA_TCDn_SLAST_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 167 HW_DMA_TCDn_DADDR_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 168 HW_DMA_TCDn_DOFF_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 169 HW_DMA_TCDn_CITER_ELINKNO_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 170 HW_DMA_TCDn_DLASTSGA_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 171 HW_DMA_TCDn_CSR_WR(baseAddr, channel, 0U);
mbed_official 324:406fd2029f23 172 HW_DMA_TCDn_BITER_ELINKNO_WR(baseAddr, channel, 0U);
mbed_official 146:f64d43ff0c18 173 }
mbed_official 146:f64d43ff0c18 174
mbed_official 146:f64d43ff0c18 175 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 176 *
mbed_official 324:406fd2029f23 177 * Function Name : EDMA_HAL_HTCDSetAttribute
mbed_official 324:406fd2029f23 178 * Description : Configures the transfer attribute for eDMA channel.
mbed_official 324:406fd2029f23 179 *
mbed_official 324:406fd2029f23 180 *END**************************************************************************/
mbed_official 324:406fd2029f23 181 void EDMA_HAL_HTCDSetAttribute(
mbed_official 324:406fd2029f23 182 uint32_t baseAddr, uint32_t channel,
mbed_official 324:406fd2029f23 183 edma_modulo_t srcModulo, edma_modulo_t destModulo,
mbed_official 324:406fd2029f23 184 edma_transfer_size_t srcTransferSize, edma_transfer_size_t destTransferSize)
mbed_official 324:406fd2029f23 185 {
mbed_official 324:406fd2029f23 186 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 187
mbed_official 324:406fd2029f23 188 HW_DMA_TCDn_ATTR_WR(baseAddr, channel,
mbed_official 324:406fd2029f23 189 BF_DMA_TCDn_ATTR_SMOD(srcModulo) | BF_DMA_TCDn_ATTR_DMOD(destModulo) |
mbed_official 324:406fd2029f23 190 BF_DMA_TCDn_ATTR_SSIZE(srcTransferSize) | BF_DMA_TCDn_ATTR_DSIZE(destTransferSize));
mbed_official 324:406fd2029f23 191
mbed_official 324:406fd2029f23 192 }
mbed_official 324:406fd2029f23 193 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 194 *
mbed_official 324:406fd2029f23 195 * Function Name : EDMA_HAL_SetNbytes
mbed_official 324:406fd2029f23 196 * Description : Configures the nbytes for eDMA channel.
mbed_official 146:f64d43ff0c18 197 *
mbed_official 146:f64d43ff0c18 198 *END**************************************************************************/
mbed_official 324:406fd2029f23 199 void EDMA_HAL_HTCDSetNbytes(uint32_t baseAddr, uint32_t channel, uint32_t nbytes)
mbed_official 146:f64d43ff0c18 200 {
mbed_official 324:406fd2029f23 201 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 146:f64d43ff0c18 202
mbed_official 324:406fd2029f23 203 if (BR_DMA_CR_EMLM(baseAddr))
mbed_official 324:406fd2029f23 204 {
mbed_official 324:406fd2029f23 205 if (!(BR_DMA_TCDn_NBYTES_MLOFFNO_SMLOE(baseAddr, channel) ||
mbed_official 324:406fd2029f23 206 BR_DMA_TCDn_NBYTES_MLOFFNO_DMLOE(baseAddr, channel)))
mbed_official 324:406fd2029f23 207 {
mbed_official 324:406fd2029f23 208 BW_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(baseAddr, channel, nbytes);
mbed_official 324:406fd2029f23 209 }
mbed_official 324:406fd2029f23 210 else
mbed_official 324:406fd2029f23 211 {
mbed_official 324:406fd2029f23 212 BW_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(baseAddr, channel, nbytes);
mbed_official 324:406fd2029f23 213 }
mbed_official 324:406fd2029f23 214
mbed_official 324:406fd2029f23 215 }
mbed_official 324:406fd2029f23 216 else
mbed_official 324:406fd2029f23 217 {
mbed_official 324:406fd2029f23 218 BW_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(baseAddr, channel, nbytes);
mbed_official 324:406fd2029f23 219 }
mbed_official 146:f64d43ff0c18 220 }
mbed_official 146:f64d43ff0c18 221
mbed_official 146:f64d43ff0c18 222 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 223 *
mbed_official 324:406fd2029f23 224 * Function Name : EDMA_HAL_GetHTCDNbytes
mbed_official 146:f64d43ff0c18 225 * Description : Get nbytes configuration data.
mbed_official 146:f64d43ff0c18 226 *
mbed_official 146:f64d43ff0c18 227 *END**************************************************************************/
mbed_official 324:406fd2029f23 228 uint32_t EDMA_HAL_HTCDGetNbytes(uint32_t baseAddr, uint32_t channel)
mbed_official 146:f64d43ff0c18 229 {
mbed_official 324:406fd2029f23 230 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 146:f64d43ff0c18 231
mbed_official 324:406fd2029f23 232 if (BR_DMA_CR_EMLM(baseAddr))
mbed_official 146:f64d43ff0c18 233 {
mbed_official 324:406fd2029f23 234 if (BR_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(baseAddr, channel) ||
mbed_official 324:406fd2029f23 235 BR_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(baseAddr, channel))
mbed_official 146:f64d43ff0c18 236 {
mbed_official 324:406fd2029f23 237 return BR_DMA_TCDn_NBYTES_MLOFFYES_NBYTES(baseAddr, channel);
mbed_official 146:f64d43ff0c18 238 }
mbed_official 146:f64d43ff0c18 239 else
mbed_official 146:f64d43ff0c18 240 {
mbed_official 324:406fd2029f23 241 return BR_DMA_TCDn_NBYTES_MLOFFNO_NBYTES(baseAddr, channel);
mbed_official 146:f64d43ff0c18 242 }
mbed_official 146:f64d43ff0c18 243 }
mbed_official 146:f64d43ff0c18 244 else
mbed_official 146:f64d43ff0c18 245 {
mbed_official 324:406fd2029f23 246 return BR_DMA_TCDn_NBYTES_MLNO_NBYTES(baseAddr, channel);
mbed_official 324:406fd2029f23 247 }
mbed_official 324:406fd2029f23 248 }
mbed_official 324:406fd2029f23 249
mbed_official 324:406fd2029f23 250 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 251 *
mbed_official 324:406fd2029f23 252 * Function Name : EDMA_HAL_HTCD_SetMinorLoopOffset
mbed_official 324:406fd2029f23 253 * Description : Configures the minorloop offset for the hardware TCD.
mbed_official 324:406fd2029f23 254 *
mbed_official 324:406fd2029f23 255 *END**************************************************************************/
mbed_official 324:406fd2029f23 256 void EDMA_HAL_HTCDSetMinorLoopOffset(
mbed_official 324:406fd2029f23 257 uint32_t baseAddr, uint32_t channel, edma_minorloop_offset_config_t *config)
mbed_official 324:406fd2029f23 258 {
mbed_official 324:406fd2029f23 259 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 260 if ((config->enableSrcMinorloop == true) || (config->enableDestMinorloop == true))
mbed_official 324:406fd2029f23 261 {
mbed_official 324:406fd2029f23 262 BW_DMA_CR_EMLM(baseAddr, true);
mbed_official 324:406fd2029f23 263 BW_DMA_TCDn_NBYTES_MLOFFYES_SMLOE(baseAddr, channel, config->enableSrcMinorloop);
mbed_official 324:406fd2029f23 264 BW_DMA_TCDn_NBYTES_MLOFFYES_DMLOE(baseAddr, channel, config->enableDestMinorloop);
mbed_official 324:406fd2029f23 265 BW_DMA_TCDn_NBYTES_MLOFFYES_MLOFF(baseAddr, channel, config->offset);
mbed_official 324:406fd2029f23 266 }
mbed_official 324:406fd2029f23 267 }
mbed_official 324:406fd2029f23 268 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 269 *
mbed_official 324:406fd2029f23 270 * Function Name : EDMA_HAL_HTCDSetScatterGatherLink
mbed_official 324:406fd2029f23 271 * Description : Configures the memory address for the next transfer TCD for the hardware TCD.
mbed_official 324:406fd2029f23 272 *
mbed_official 324:406fd2029f23 273 *END**************************************************************************/
mbed_official 324:406fd2029f23 274 void EDMA_HAL_HTCDSetScatterGatherLink(
mbed_official 324:406fd2029f23 275 uint32_t baseAddr, uint32_t channel, edma_software_tcd_t *stcd)
mbed_official 324:406fd2029f23 276 {
mbed_official 324:406fd2029f23 277 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 278 BW_DMA_TCDn_CSR_ESG(baseAddr, channel, true);
mbed_official 324:406fd2029f23 279 BW_DMA_TCDn_DLASTSGA_DLASTSGA(baseAddr, channel, (uint32_t)stcd);
mbed_official 324:406fd2029f23 280 }
mbed_official 324:406fd2029f23 281 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 282 *
mbed_official 324:406fd2029f23 283 * Function Name : EDMA_HAL_HTCD_SetChannelMinorLink
mbed_official 324:406fd2029f23 284 * Description : Set Channel minor link for hardware TCD.
mbed_official 324:406fd2029f23 285 *
mbed_official 324:406fd2029f23 286 *END**************************************************************************/
mbed_official 324:406fd2029f23 287 void EDMA_HAL_HTCDSetChannelMinorLink(
mbed_official 324:406fd2029f23 288 uint32_t baseAddr, uint32_t channel, uint32_t linkChannel, bool enable)
mbed_official 324:406fd2029f23 289 {
mbed_official 324:406fd2029f23 290 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 291
mbed_official 324:406fd2029f23 292 if (enable)
mbed_official 324:406fd2029f23 293 {
mbed_official 324:406fd2029f23 294 BW_DMA_TCDn_BITER_ELINKYES_ELINK(baseAddr, channel, enable);
mbed_official 324:406fd2029f23 295 BW_DMA_TCDn_BITER_ELINKYES_LINKCH(baseAddr, channel, linkChannel);
mbed_official 324:406fd2029f23 296 BW_DMA_TCDn_CITER_ELINKYES_ELINK(baseAddr, channel, enable);
mbed_official 324:406fd2029f23 297 BW_DMA_TCDn_CITER_ELINKYES_LINKCH(baseAddr, channel, linkChannel);
mbed_official 324:406fd2029f23 298 }
mbed_official 324:406fd2029f23 299 else
mbed_official 324:406fd2029f23 300 {
mbed_official 324:406fd2029f23 301 BW_DMA_TCDn_BITER_ELINKNO_ELINK(baseAddr, channel, enable);
mbed_official 324:406fd2029f23 302 BW_DMA_TCDn_CITER_ELINKNO_ELINK(baseAddr, channel, enable);
mbed_official 324:406fd2029f23 303 }
mbed_official 324:406fd2029f23 304 }
mbed_official 324:406fd2029f23 305 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 306 *
mbed_official 324:406fd2029f23 307 * Function Name : EDMA_HAL_HTCD_HTCDSetMajorCount
mbed_official 324:406fd2029f23 308 * Description : Sets the major iteration count according to minor loop channel link setting.
mbed_official 324:406fd2029f23 309 *
mbed_official 324:406fd2029f23 310 *END**************************************************************************/
mbed_official 324:406fd2029f23 311 void EDMA_HAL_HTCDSetMajorCount(uint32_t baseAddr, uint32_t channel, uint32_t count)
mbed_official 324:406fd2029f23 312 {
mbed_official 324:406fd2029f23 313 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 314
mbed_official 324:406fd2029f23 315 if (BR_DMA_TCDn_BITER_ELINKNO_ELINK(baseAddr, channel))
mbed_official 324:406fd2029f23 316 {
mbed_official 324:406fd2029f23 317 BW_DMA_TCDn_BITER_ELINKYES_BITER(baseAddr, channel, count);
mbed_official 324:406fd2029f23 318 BW_DMA_TCDn_CITER_ELINKYES_CITER(baseAddr, channel, count);
mbed_official 324:406fd2029f23 319 }
mbed_official 324:406fd2029f23 320 else
mbed_official 324:406fd2029f23 321 {
mbed_official 324:406fd2029f23 322 BW_DMA_TCDn_BITER_ELINKNO_BITER(baseAddr, channel, count);
mbed_official 324:406fd2029f23 323 BW_DMA_TCDn_CITER_ELINKNO_CITER(baseAddr, channel, count);
mbed_official 146:f64d43ff0c18 324 }
mbed_official 146:f64d43ff0c18 325 }
mbed_official 146:f64d43ff0c18 326
mbed_official 146:f64d43ff0c18 327 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 328 *
mbed_official 324:406fd2029f23 329 * Function Name : EDMA_HAL_HTCD_HTCDSetMajorCount
mbed_official 324:406fd2029f23 330 * Description : Gets the begin major iteration count according to minor loop channel link setting.
mbed_official 146:f64d43ff0c18 331 *
mbed_official 146:f64d43ff0c18 332 *END**************************************************************************/
mbed_official 324:406fd2029f23 333 uint32_t EDMA_HAL_HTCDGetBeginMajorCount(uint32_t baseAddr, uint32_t channel)
mbed_official 146:f64d43ff0c18 334 {
mbed_official 324:406fd2029f23 335 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 146:f64d43ff0c18 336
mbed_official 324:406fd2029f23 337 if (BR_DMA_TCDn_BITER_ELINKNO_ELINK(baseAddr, channel))
mbed_official 146:f64d43ff0c18 338 {
mbed_official 324:406fd2029f23 339 return BR_DMA_TCDn_BITER_ELINKYES_BITER(baseAddr, channel);
mbed_official 146:f64d43ff0c18 340 }
mbed_official 146:f64d43ff0c18 341 else
mbed_official 146:f64d43ff0c18 342 {
mbed_official 324:406fd2029f23 343 return BR_DMA_TCDn_BITER_ELINKNO_BITER(baseAddr, channel);
mbed_official 324:406fd2029f23 344 }
mbed_official 324:406fd2029f23 345 }
mbed_official 324:406fd2029f23 346
mbed_official 324:406fd2029f23 347 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 348 *
mbed_official 324:406fd2029f23 349 * Function Name : EDMA_HAL_HTCD_HTCDGetCurrentMajorCount
mbed_official 324:406fd2029f23 350 * Description : Gets the current major iteration count according to minor loop channel link setting.
mbed_official 324:406fd2029f23 351 *
mbed_official 324:406fd2029f23 352 *END**************************************************************************/
mbed_official 324:406fd2029f23 353 uint32_t EDMA_HAL_HTCDGetCurrentMajorCount(uint32_t baseAddr, uint32_t channel)
mbed_official 324:406fd2029f23 354 {
mbed_official 324:406fd2029f23 355 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 356
mbed_official 324:406fd2029f23 357 if (BR_DMA_TCDn_BITER_ELINKNO_ELINK(baseAddr, channel))
mbed_official 324:406fd2029f23 358 {
mbed_official 324:406fd2029f23 359 return BR_DMA_TCDn_CITER_ELINKYES_CITER(baseAddr, channel);
mbed_official 324:406fd2029f23 360 }
mbed_official 324:406fd2029f23 361 else
mbed_official 324:406fd2029f23 362 {
mbed_official 324:406fd2029f23 363 return BR_DMA_TCDn_CITER_ELINKNO_CITER(baseAddr, channel);
mbed_official 324:406fd2029f23 364 }
mbed_official 324:406fd2029f23 365 }
mbed_official 324:406fd2029f23 366
mbed_official 324:406fd2029f23 367 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 368 *
mbed_official 324:406fd2029f23 369 * Function Name : EDMA_HAL_HTCDGetUnfinishedBytes
mbed_official 324:406fd2029f23 370 * Description : Get the bytes number of bytes haven't been transferred for this hardware TCD.
mbed_official 324:406fd2029f23 371 *
mbed_official 324:406fd2029f23 372 *END**************************************************************************/
mbed_official 324:406fd2029f23 373 uint32_t EDMA_HAL_HTCDGetUnfinishedBytes(uint32_t baseAddr, uint32_t channel)
mbed_official 324:406fd2029f23 374 {
mbed_official 324:406fd2029f23 375 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 376
mbed_official 324:406fd2029f23 377 uint32_t nbytes;
mbed_official 324:406fd2029f23 378
mbed_official 324:406fd2029f23 379 nbytes = EDMA_HAL_HTCDGetNbytes(baseAddr, channel);
mbed_official 324:406fd2029f23 380
mbed_official 324:406fd2029f23 381 if (BR_DMA_TCDn_BITER_ELINKNO_ELINK(baseAddr, channel))
mbed_official 324:406fd2029f23 382 {
mbed_official 324:406fd2029f23 383 return (BR_DMA_TCDn_CITER_ELINKYES_CITER(baseAddr, channel) * nbytes);
mbed_official 324:406fd2029f23 384
mbed_official 324:406fd2029f23 385 }
mbed_official 324:406fd2029f23 386 else
mbed_official 324:406fd2029f23 387 {
mbed_official 324:406fd2029f23 388 return (BR_DMA_TCDn_CITER_ELINKNO_CITER(baseAddr, channel) * nbytes);
mbed_official 324:406fd2029f23 389
mbed_official 146:f64d43ff0c18 390 }
mbed_official 146:f64d43ff0c18 391 }
mbed_official 146:f64d43ff0c18 392
mbed_official 146:f64d43ff0c18 393 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 394 *
mbed_official 324:406fd2029f23 395 * Function Name : EDMA_HAL_HTCDGetFinishedBytes
mbed_official 324:406fd2029f23 396 * Description : Get the bytes number of bytes already be transferred for this hardware TCD.
mbed_official 324:406fd2029f23 397 *
mbed_official 324:406fd2029f23 398 *END**************************************************************************/
mbed_official 324:406fd2029f23 399 uint32_t EDMA_HAL_HTCDGetFinishedBytes(uint32_t baseAddr, uint32_t channel)
mbed_official 324:406fd2029f23 400 {
mbed_official 324:406fd2029f23 401 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 402
mbed_official 324:406fd2029f23 403 uint32_t nbytes, begin_majorcount, current_majorcount;
mbed_official 324:406fd2029f23 404
mbed_official 324:406fd2029f23 405 nbytes = EDMA_HAL_HTCDGetNbytes(baseAddr, channel);
mbed_official 324:406fd2029f23 406 begin_majorcount = EDMA_HAL_HTCDGetBeginMajorCount(baseAddr,channel);
mbed_official 324:406fd2029f23 407 current_majorcount = EDMA_HAL_HTCDGetCurrentMajorCount(baseAddr,channel);
mbed_official 324:406fd2029f23 408
mbed_official 324:406fd2029f23 409 return ((begin_majorcount - current_majorcount) * nbytes);
mbed_official 324:406fd2029f23 410 }
mbed_official 324:406fd2029f23 411
mbed_official 324:406fd2029f23 412 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 413 *
mbed_official 324:406fd2029f23 414 * Function Name : EDMA_HAL_STCDSetAttribute
mbed_official 324:406fd2029f23 415 * Description : Configures the transfer attribute for software TCD.
mbed_official 146:f64d43ff0c18 416 *
mbed_official 146:f64d43ff0c18 417 *END**************************************************************************/
mbed_official 324:406fd2029f23 418 void EDMA_HAL_STCDSetAttribute(
mbed_official 324:406fd2029f23 419 edma_software_tcd_t *stcd,
mbed_official 324:406fd2029f23 420 edma_modulo_t srcModulo, edma_modulo_t destModulo,
mbed_official 324:406fd2029f23 421 edma_transfer_size_t srcTransferSize, edma_transfer_size_t destTransferSize)
mbed_official 146:f64d43ff0c18 422 {
mbed_official 324:406fd2029f23 423 assert(stcd);
mbed_official 324:406fd2029f23 424
mbed_official 324:406fd2029f23 425 stcd->ATTR = DMA_ATTR_SMOD(srcModulo) | DMA_ATTR_DMOD(destModulo) |
mbed_official 324:406fd2029f23 426 DMA_ATTR_SSIZE(srcTransferSize) | DMA_ATTR_DSIZE(destTransferSize);
mbed_official 324:406fd2029f23 427 }
mbed_official 146:f64d43ff0c18 428
mbed_official 324:406fd2029f23 429 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 430 *
mbed_official 324:406fd2029f23 431 * Function Name : EDMA_HAL_STCDSetNbytes
mbed_official 324:406fd2029f23 432 * Description : Configures the nbytes for software TCD
mbed_official 324:406fd2029f23 433 *
mbed_official 324:406fd2029f23 434 *END**************************************************************************/
mbed_official 324:406fd2029f23 435 void EDMA_HAL_STCDSetNbytes(uint32_t baseAddr, edma_software_tcd_t *stcd, uint32_t nbytes)
mbed_official 324:406fd2029f23 436 {
mbed_official 324:406fd2029f23 437 assert(stcd);
mbed_official 324:406fd2029f23 438
mbed_official 324:406fd2029f23 439 if (BR_DMA_CR_EMLM(baseAddr))
mbed_official 146:f64d43ff0c18 440 {
mbed_official 324:406fd2029f23 441 if (stcd->NBYTES.MLOFFNO | (DMA_NBYTES_MLOFFNO_SMLOE_MASK | DMA_NBYTES_MLOFFNO_DMLOE_MASK))
mbed_official 324:406fd2029f23 442 {
mbed_official 324:406fd2029f23 443 stcd->NBYTES.MLOFFYES = (stcd->NBYTES.MLOFFYES & ~DMA_NBYTES_MLOFFYES_NBYTES_MASK) |
mbed_official 324:406fd2029f23 444 DMA_NBYTES_MLOFFYES_NBYTES(nbytes);
mbed_official 324:406fd2029f23 445 }
mbed_official 324:406fd2029f23 446 else
mbed_official 324:406fd2029f23 447 {
mbed_official 324:406fd2029f23 448 stcd->NBYTES.MLOFFNO = (stcd->NBYTES.MLOFFNO & ~DMA_NBYTES_MLOFFNO_NBYTES_MASK) |
mbed_official 324:406fd2029f23 449 DMA_NBYTES_MLOFFNO_NBYTES(nbytes);
mbed_official 324:406fd2029f23 450 }
mbed_official 146:f64d43ff0c18 451 }
mbed_official 146:f64d43ff0c18 452 else
mbed_official 146:f64d43ff0c18 453 {
mbed_official 324:406fd2029f23 454 stcd->NBYTES.MLNO = (stcd->NBYTES.MLNO & ~DMA_NBYTES_MLNO_NBYTES_MASK) |
mbed_official 324:406fd2029f23 455 DMA_NBYTES_MLNO_NBYTES(nbytes);
mbed_official 324:406fd2029f23 456 }
mbed_official 324:406fd2029f23 457
mbed_official 324:406fd2029f23 458 }
mbed_official 324:406fd2029f23 459
mbed_official 324:406fd2029f23 460 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 461 *
mbed_official 324:406fd2029f23 462 * Function Name : EDMA_HAL_STCDSetMinorLoopOffset
mbed_official 324:406fd2029f23 463 * Description :
mbed_official 324:406fd2029f23 464 *
mbed_official 324:406fd2029f23 465 *END**************************************************************************/
mbed_official 324:406fd2029f23 466 void EDMA_HAL_STCDSetMinorLoopOffset(
mbed_official 324:406fd2029f23 467 uint32_t baseAddr, edma_software_tcd_t *stcd, edma_minorloop_offset_config_t *config)
mbed_official 324:406fd2029f23 468 {
mbed_official 324:406fd2029f23 469 assert(stcd);
mbed_official 324:406fd2029f23 470 stcd->NBYTES.MLOFFYES = (stcd->NBYTES.MLOFFYES &
mbed_official 324:406fd2029f23 471 ~(DMA_NBYTES_MLOFFYES_SMLOE_MASK | DMA_NBYTES_MLOFFYES_DMLOE_MASK)) |
mbed_official 324:406fd2029f23 472 (((uint32_t)config->enableSrcMinorloop << DMA_NBYTES_MLOFFYES_SMLOE_SHIFT) |
mbed_official 324:406fd2029f23 473 ((uint32_t)config->enableDestMinorloop << DMA_NBYTES_MLOFFYES_DMLOE_SHIFT));
mbed_official 324:406fd2029f23 474
mbed_official 324:406fd2029f23 475 if ((config->enableSrcMinorloop == true) || (config->enableDestMinorloop == true))
mbed_official 324:406fd2029f23 476 {
mbed_official 324:406fd2029f23 477 BW_DMA_CR_EMLM(baseAddr, true);
mbed_official 324:406fd2029f23 478 stcd->NBYTES.MLOFFYES = (stcd->NBYTES.MLOFFYES & ~DMA_NBYTES_MLOFFYES_MLOFF_MASK) |
mbed_official 324:406fd2029f23 479 DMA_NBYTES_MLOFFYES_MLOFF(config->offset);
mbed_official 146:f64d43ff0c18 480 }
mbed_official 146:f64d43ff0c18 481 }
mbed_official 146:f64d43ff0c18 482
mbed_official 146:f64d43ff0c18 483 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 484 *
mbed_official 324:406fd2029f23 485 * Function Name :
mbed_official 324:406fd2029f23 486 * Description :
mbed_official 324:406fd2029f23 487 *
mbed_official 324:406fd2029f23 488 *END**************************************************************************/
mbed_official 324:406fd2029f23 489 void EDMA_HAL_STCDSetScatterGatherLink(
mbed_official 324:406fd2029f23 490 edma_software_tcd_t *stcd, edma_software_tcd_t *nextStcd)
mbed_official 324:406fd2029f23 491 {
mbed_official 324:406fd2029f23 492 assert(stcd);
mbed_official 324:406fd2029f23 493 assert(nextStcd);
mbed_official 324:406fd2029f23 494 EDMA_HAL_STCDSetScatterGatherCmd(stcd, true);
mbed_official 324:406fd2029f23 495 stcd->DLAST_SGA = DMA_DLAST_SGA_DLASTSGA((uint32_t)nextStcd);
mbed_official 324:406fd2029f23 496 }
mbed_official 324:406fd2029f23 497
mbed_official 324:406fd2029f23 498 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 499 *
mbed_official 324:406fd2029f23 500 * Function Name : EDMA_HAL_STCDSetChannelMinorLink
mbed_official 324:406fd2029f23 501 * Description :
mbed_official 146:f64d43ff0c18 502 *
mbed_official 146:f64d43ff0c18 503 *END**************************************************************************/
mbed_official 324:406fd2029f23 504 void EDMA_HAL_STCDSetChannelMinorLink(
mbed_official 324:406fd2029f23 505 edma_software_tcd_t *stcd, uint32_t linkChannel, bool enable)
mbed_official 146:f64d43ff0c18 506 {
mbed_official 324:406fd2029f23 507 assert(stcd);
mbed_official 146:f64d43ff0c18 508
mbed_official 324:406fd2029f23 509 if (enable)
mbed_official 324:406fd2029f23 510 {
mbed_official 324:406fd2029f23 511 stcd->BITER.ELINKYES = (stcd->BITER.ELINKYES & ~DMA_BITER_ELINKYES_ELINK_MASK) |
mbed_official 324:406fd2029f23 512 ((uint32_t)enable << DMA_BITER_ELINKYES_ELINK_SHIFT);
mbed_official 324:406fd2029f23 513 stcd->BITER.ELINKYES = (stcd->BITER.ELINKYES & ~DMA_BITER_ELINKYES_LINKCH_MASK) |
mbed_official 324:406fd2029f23 514 DMA_BITER_ELINKYES_LINKCH(linkChannel);
mbed_official 324:406fd2029f23 515 stcd->CITER.ELINKYES = (stcd->CITER.ELINKYES & ~DMA_CITER_ELINKYES_ELINK_MASK) |
mbed_official 324:406fd2029f23 516 ((uint32_t)enable << DMA_CITER_ELINKYES_ELINK_SHIFT);
mbed_official 324:406fd2029f23 517 stcd->CITER.ELINKYES = (stcd->CITER.ELINKYES & ~DMA_CITER_ELINKYES_LINKCH_MASK) |
mbed_official 324:406fd2029f23 518 DMA_CITER_ELINKYES_LINKCH(linkChannel);
mbed_official 324:406fd2029f23 519 }
mbed_official 324:406fd2029f23 520 else
mbed_official 324:406fd2029f23 521 {
mbed_official 324:406fd2029f23 522 stcd->BITER.ELINKNO = (stcd->BITER.ELINKNO & ~DMA_BITER_ELINKNO_ELINK_MASK) |
mbed_official 324:406fd2029f23 523 ((uint32_t)enable << DMA_BITER_ELINKNO_ELINK_SHIFT);
mbed_official 324:406fd2029f23 524 stcd->CITER.ELINKNO = (stcd->CITER.ELINKNO & ~DMA_CITER_ELINKNO_ELINK_MASK) |
mbed_official 324:406fd2029f23 525 ((uint32_t)enable << DMA_CITER_ELINKNO_ELINK_SHIFT);
mbed_official 324:406fd2029f23 526 }
mbed_official 324:406fd2029f23 527 }
mbed_official 324:406fd2029f23 528 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 529 *
mbed_official 324:406fd2029f23 530 * Function Name : EDMA_HAL_STCDSetMajorCount
mbed_official 324:406fd2029f23 531 * Description : Sets the major iteration count according to minor loop channel link setting.
mbed_official 324:406fd2029f23 532 *
mbed_official 324:406fd2029f23 533 *END**************************************************************************/
mbed_official 324:406fd2029f23 534 void EDMA_HAL_STCDSetMajorCount(edma_software_tcd_t *stcd, uint32_t count)
mbed_official 324:406fd2029f23 535 {
mbed_official 324:406fd2029f23 536 assert(stcd);
mbed_official 324:406fd2029f23 537
mbed_official 324:406fd2029f23 538 if (stcd->BITER.ELINKNO & DMA_BITER_ELINKNO_ELINK_MASK)
mbed_official 324:406fd2029f23 539 {
mbed_official 324:406fd2029f23 540 stcd->BITER.ELINKYES = (stcd->BITER.ELINKYES & ~DMA_BITER_ELINKYES_BITER_MASK) |
mbed_official 324:406fd2029f23 541 DMA_BITER_ELINKYES_BITER(count);
mbed_official 324:406fd2029f23 542 stcd->CITER.ELINKYES = (stcd->CITER.ELINKYES & ~DMA_CITER_ELINKYES_CITER_MASK) |
mbed_official 324:406fd2029f23 543 DMA_CITER_ELINKYES_CITER(count);
mbed_official 324:406fd2029f23 544 }
mbed_official 324:406fd2029f23 545 else
mbed_official 324:406fd2029f23 546 {
mbed_official 324:406fd2029f23 547 stcd->BITER.ELINKNO = (stcd->BITER.ELINKNO & ~DMA_BITER_ELINKNO_BITER_MASK) |
mbed_official 324:406fd2029f23 548 DMA_BITER_ELINKNO_BITER(count);
mbed_official 324:406fd2029f23 549 stcd->CITER.ELINKNO = (stcd->CITER.ELINKNO & ~DMA_CITER_ELINKNO_CITER_MASK) |
mbed_official 324:406fd2029f23 550 DMA_CITER_ELINKNO_CITER(count);
mbed_official 324:406fd2029f23 551 }
mbed_official 146:f64d43ff0c18 552 }
mbed_official 146:f64d43ff0c18 553
mbed_official 146:f64d43ff0c18 554 /*FUNCTION**********************************************************************
mbed_official 146:f64d43ff0c18 555 *
mbed_official 324:406fd2029f23 556 * Function Name : EDMA_HAL_PushSTCDToHTCD
mbed_official 324:406fd2029f23 557 * Description : Copy the configuration data from the software TCD to hardware TCD.
mbed_official 324:406fd2029f23 558 *
mbed_official 324:406fd2029f23 559 *END**************************************************************************/
mbed_official 324:406fd2029f23 560 void EDMA_HAL_PushSTCDToHTCD(uint32_t baseAddr, uint32_t channel, edma_software_tcd_t *stcd)
mbed_official 324:406fd2029f23 561 {
mbed_official 324:406fd2029f23 562 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 563 assert(stcd);
mbed_official 324:406fd2029f23 564
mbed_official 324:406fd2029f23 565 HW_DMA_TCDn_SADDR_WR(baseAddr, channel, stcd->SADDR);
mbed_official 324:406fd2029f23 566 HW_DMA_TCDn_SOFF_WR(baseAddr, channel, stcd->SOFF);
mbed_official 324:406fd2029f23 567 HW_DMA_TCDn_ATTR_WR(baseAddr, channel, stcd->ATTR);
mbed_official 324:406fd2029f23 568 HW_DMA_TCDn_NBYTES_MLNO_WR(baseAddr, channel, stcd->NBYTES.MLNO);
mbed_official 324:406fd2029f23 569 HW_DMA_TCDn_SLAST_WR(baseAddr, channel, stcd->SLAST);
mbed_official 324:406fd2029f23 570 HW_DMA_TCDn_DADDR_WR(baseAddr, channel, stcd->DADDR);
mbed_official 324:406fd2029f23 571 HW_DMA_TCDn_DOFF_WR(baseAddr, channel, stcd->DOFF);
mbed_official 324:406fd2029f23 572 HW_DMA_TCDn_CITER_ELINKYES_WR(baseAddr, channel, stcd->CITER.ELINKYES);
mbed_official 324:406fd2029f23 573 HW_DMA_TCDn_DLASTSGA_WR(baseAddr, channel, stcd->DLAST_SGA);
mbed_official 324:406fd2029f23 574 HW_DMA_TCDn_CSR_WR(baseAddr, channel, stcd->CSR);
mbed_official 324:406fd2029f23 575 HW_DMA_TCDn_BITER_ELINKYES_WR(baseAddr, channel, stcd->BITER.ELINKYES);
mbed_official 324:406fd2029f23 576 }
mbed_official 324:406fd2029f23 577
mbed_official 324:406fd2029f23 578 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 579 *
mbed_official 324:406fd2029f23 580 * Function Name : EDMA_HAL_SetSTCDBasicTransfer
mbed_official 324:406fd2029f23 581 * Description : Set the basic transfer for software TCD.
mbed_official 146:f64d43ff0c18 582 *
mbed_official 146:f64d43ff0c18 583 *END**************************************************************************/
mbed_official 324:406fd2029f23 584 edma_status_t EDMA_HAL_STCDSetBasicTransfer(
mbed_official 324:406fd2029f23 585 uint32_t baseAddr, edma_software_tcd_t *stcd, edma_transfer_config_t *config,
mbed_official 324:406fd2029f23 586 bool enableInt, bool disableDmaRequest)
mbed_official 146:f64d43ff0c18 587 {
mbed_official 324:406fd2029f23 588 assert(stcd);
mbed_official 324:406fd2029f23 589
mbed_official 324:406fd2029f23 590 EDMA_HAL_STCDSetSrcAddr(stcd, config->srcAddr);
mbed_official 324:406fd2029f23 591 EDMA_HAL_STCDSetDestAddr(stcd, config->destAddr);
mbed_official 324:406fd2029f23 592
mbed_official 324:406fd2029f23 593 EDMA_HAL_STCDSetSrcOffset(stcd, config->srcOffset);
mbed_official 324:406fd2029f23 594 EDMA_HAL_STCDSetDestOffset(stcd, config->destOffset);
mbed_official 324:406fd2029f23 595
mbed_official 324:406fd2029f23 596 EDMA_HAL_STCDSetAttribute(stcd, config->srcModulo, config->destModulo,
mbed_official 324:406fd2029f23 597 config->srcTransferSize, config->destTransferSize);
mbed_official 324:406fd2029f23 598
mbed_official 324:406fd2029f23 599 EDMA_HAL_STCDSetSrcLastAdjust(stcd, config->srcLastAddrAdjust);
mbed_official 324:406fd2029f23 600 EDMA_HAL_STCDSetDestLastAdjust(stcd, config->destLastAddrAdjust);
mbed_official 324:406fd2029f23 601 EDMA_HAL_STCDSetNbytes(baseAddr, stcd, config->minorLoopCount);
mbed_official 324:406fd2029f23 602 EDMA_HAL_STCDSetMajorCount(stcd, config->majorLoopCount);
mbed_official 146:f64d43ff0c18 603
mbed_official 324:406fd2029f23 604 EDMA_HAL_STCDSetIntCmd(stcd, enableInt);
mbed_official 324:406fd2029f23 605 EDMA_HAL_STCDSetDisableDmaRequestAfterTCDDoneCmd(stcd, disableDmaRequest);
mbed_official 324:406fd2029f23 606 return kStatus_EDMA_Success;
mbed_official 146:f64d43ff0c18 607 }
mbed_official 324:406fd2029f23 608
mbed_official 324:406fd2029f23 609 #if (FSL_FEATURE_EDMA_ASYNCHRO_REQUEST_CHANNEL_COUNT > 0x0U)
mbed_official 324:406fd2029f23 610 /*FUNCTION**********************************************************************
mbed_official 324:406fd2029f23 611 *
mbed_official 324:406fd2029f23 612 * Function Name : EDMA_HAL_SetAsyncRequestInStopModeCmd
mbed_official 324:406fd2029f23 613 * Description : Enables/Disables an asynchronous request in stop mode.
mbed_official 324:406fd2029f23 614 *
mbed_official 324:406fd2029f23 615 *END**************************************************************************/
mbed_official 324:406fd2029f23 616 void EDMA_HAL_SetAsyncRequestInStopModeCmd(uint32_t baseAddr, uint32_t channel, bool enable)
mbed_official 324:406fd2029f23 617 {
mbed_official 324:406fd2029f23 618 assert(channel < FSL_FEATURE_EDMA_MODULE_CHANNEL);
mbed_official 324:406fd2029f23 619
mbed_official 324:406fd2029f23 620 if(enable)
mbed_official 324:406fd2029f23 621 {
mbed_official 324:406fd2029f23 622 HW_DMA_EARS_SET(baseAddr, 1U << channel);
mbed_official 324:406fd2029f23 623 }
mbed_official 324:406fd2029f23 624 else
mbed_official 324:406fd2029f23 625 {
mbed_official 324:406fd2029f23 626 HW_DMA_EARS_CLR(baseAddr, 1U << channel);
mbed_official 324:406fd2029f23 627 }
mbed_official 324:406fd2029f23 628 }
mbed_official 324:406fd2029f23 629 #endif
mbed_official 146:f64d43ff0c18 630 /*******************************************************************************
mbed_official 146:f64d43ff0c18 631 * EOF
mbed_official 146:f64d43ff0c18 632 ******************************************************************************/
mbed_official 146:f64d43ff0c18 633