43 lines
1.1 KiB
C
Executable File
43 lines
1.1 KiB
C
Executable File
#ifndef __DMA_H__
|
|
#define __DMA_H__
|
|
|
|
#include "drivers/chip/_hal.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
typedef enum __packed
|
|
{
|
|
_DMA_DIR_MEM_TO_MEM,
|
|
_DMA_DIR_PER_TO_MEM,
|
|
_DMA_DIR_MEM_TO_PER,
|
|
} dma_dir_t;
|
|
|
|
typedef void (*dma_isr_cb_fn)(void);
|
|
|
|
void drv_dma_enable(hal_id_t id);
|
|
void drv_dma_disable(hal_id_t id);
|
|
|
|
int drv_dma_init(hal_id_t id, unsigned channel, unsigned prio_level);
|
|
int drv_dma_deinit(hal_id_t id, unsigned channel);
|
|
|
|
int drv_dma_irq_callback_enable(hal_id_t id, unsigned channel, dma_isr_cb_fn cb);
|
|
int drv_dma_irq_callback_disable(hal_id_t id, unsigned channel);
|
|
|
|
void drv_dma_irq_enable(hal_id_t id, unsigned channel, int priority);
|
|
void drv_dma_irq_disable(hal_id_t id, unsigned channel);
|
|
|
|
void drv_dma_set(hal_id_t id, unsigned channel, void *dest, unsigned dest_bit_width, bool dest_inc_mode, const void *src, unsigned src_bit_width, bool src_inc_mode, unsigned count, dma_dir_t dir);
|
|
void drv_dma_start(hal_id_t id, unsigned channel);
|
|
void drv_dma_stop(hal_id_t id, unsigned channel);
|
|
|
|
unsigned drv_dma_get_remain(hal_id_t id, unsigned channel);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|