dmadrv.c File Reference

DMADRV API implementation.

License

Copyright 2018 Silicon Laboratories Inc. www.silabs.com

The licensor of this software is Silicon Laboratories Inc. Your use of this software is governed by the terms of Silicon Labs Master Software License Agreement (MSLA) available at www.silabs.com/about-us/legal/master-software-license-agreement. This software is distributed to you in Source Code format and is governed by the sections of the MSLA applicable to Source Code.

Definition in file dmadrv.c.

#include <stdbool.h>
#include <stddef.h>
#include "em_device.h"
#include "em_cmu.h"
#include "em_core.h"
#include "dmadrv.h"

Functions

Ecode_t DMADRV_AllocateChannel (unsigned int *channelId, void *capabilities)
 Allocate (reserve) a DMA channel.
 
Ecode_t DMADRV_DeInit (void)
 Deinitialize DMADRV.
 
Ecode_t DMADRV_FreeChannel (unsigned int channelId)
 Free an allocated (reserved) DMA channel.
 
Ecode_t DMADRV_Init (void)
 Initialize DMADRV.
 
Ecode_t DMADRV_LdmaStartTransfer (int channelId, LDMA_TransferCfg_t *transfer, LDMA_Descriptor_t *descriptor, DMADRV_Callback_t callback, void *cbUserParam)
 Start an LDMA transfer.
 
Ecode_t DMADRV_MemoryPeripheral (unsigned int channelId, DMADRV_PeripheralSignal_t peripheralSignal, void *dst, void *src, bool srcInc, int len, DMADRV_DataSize_t size, DMADRV_Callback_t callback, void *cbUserParam)
 Start a memory to a peripheral DMA transfer.
 
Ecode_t DMADRV_MemoryPeripheralPingPong (unsigned int channelId, DMADRV_PeripheralSignal_t peripheralSignal, void *dst, void *src0, void *src1, bool srcInc, int len, DMADRV_DataSize_t size, DMADRV_Callback_t callback, void *cbUserParam)
 Start a memory to a peripheral ping-pong DMA transfer.
 
Ecode_t DMADRV_PauseTransfer (unsigned int channelId)
 Pause an ongoing DMA transfer.
 
Ecode_t DMADRV_PeripheralMemory (unsigned int channelId, DMADRV_PeripheralSignal_t peripheralSignal, void *dst, void *src, bool dstInc, int len, DMADRV_DataSize_t size, DMADRV_Callback_t callback, void *cbUserParam)
 Start a peripheral to memory DMA transfer.
 
Ecode_t DMADRV_PeripheralMemoryPingPong (unsigned int channelId, DMADRV_PeripheralSignal_t peripheralSignal, void *dst0, void *dst1, void *src, bool dstInc, int len, DMADRV_DataSize_t size, DMADRV_Callback_t callback, void *cbUserParam)
 Start a peripheral to memory ping-pong DMA transfer.
 
Ecode_t DMADRV_ResumeTransfer (unsigned int channelId)
 Resume an ongoing DMA transfer.
 
Ecode_t DMADRV_StopTransfer (unsigned int channelId)
 Stop an ongoing DMA transfer.
 
Ecode_t DMADRV_TransferActive (unsigned int channelId, bool *active)
 Check if a transfer is running.
 
Ecode_t DMADRV_TransferCompletePending (unsigned int channelId, bool *pending)
 Check if a transfer complete is pending.
 
Ecode_t DMADRV_TransferDone (unsigned int channelId, bool *done)
 Check if a transfer has completed.
 
Ecode_t DMADRV_TransferRemainingCount (unsigned int channelId, int *remaining)
 Get number of items remaining in a transfer.