blob: 3bd6dc9662de9bf48b31d55369460833863bcebc [file] [log] [blame]
/**
* \file
*
* \brief Memory with DMA functionality declaration.
*
* Copyright (c) 2016-2018 Microchip Technology Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* Subject to your compliance with these terms, you may use Microchip
* software and any derivatives exclusively with Microchip products.
* It is your responsibility to comply with third party license terms applicable
* to your use of third party software (including open source software) that
* may accompany Microchip software.
*
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES,
* WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL MICROCHIP BE
* LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL
* LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
* SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
* POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT
* ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY
* RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
* THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
*
* \asf_license_stop
*
*/
#ifndef DMA_MEMORY_H_INCLUDED
#define DMA_MEMORY_H_INCLUDED
#include <hpl_dma.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* \addtogroup dma_memory
*
* \section dma_rev Revision History
* - v0.0.0.1 Initial Commit
*
*@{
*/
/**
* \brief Memory with DMA descriptor
*
* The Memory with DMA descriptor forward declaration.
*/
struct dma_memory_descriptor;
/**
* \brief memory with dma callback type
*/
typedef void (*dma_memory_cb_t)(void);
/**
* \brief Memory with DMA callback types
*/
enum dma_memory_callback_type { DMA_MEMORY_COMPLETE_CB, DMA_MEMORY_ERROR_CB };
/**
* \brief Memory with DMA callbacks
*/
struct dma_memory_callbacks {
dma_memory_cb_t complete;
dma_memory_cb_t error;
};
/**
* \brief Memory with DMA descriptor
*/
struct dma_memory_descriptor {
struct _dma_resource * resource;
struct dma_memory_callbacks memory_cb;
};
/**
* \brief Initialize Memory with DMA
*
* \return Initialization status.
*/
int32_t dma_memory_init(void);
/**
* \brief Register Memory with DMA callback
*
* \param[in] type Callback type
* \param[in] cb A callback function, passing NULL de-registers callback
*
* \return The status of callback assignment.
* \retval ERR_INVALID_ARG Passed parameters were invalid
* \retval ERR_NONE A callback is registered successfully
*/
int32_t dma_memory_register_callback(const enum dma_memory_callback_type type, dma_memory_cb_t cb);
/**
* \brief dma memory copy
*
* \param[in] dst The pointer to destination address for transfer
* \param[in] src The pointer to source address for transfer
* \param[in] size The transfer size
*
* \return the status of operation`
*/
int32_t dma_memcpy(void *dst, void *src, uint32_t size);
/**
* \brief dma memory set
*
* \param[in] dst The pointer to address to fill
* \param[in] ch The value to be filled
* \param[in] size Number of bytes to set to the value
*
* \return the status of operation
*/
int32_t dma_memset(void *dst, int32_t ch, uint32_t size);
/**@}*/
#ifdef __cplusplus
}
#endif
#endif /* DMA_MEMORY_H_INCLUDED */