Edit online

Hall 层接口设计

HAL 层的函数接口声明存放在 hal_dma.h 中,主要接口有:
int hal_dma_chan_prep_memset(struct aic_dma_chan *chan,
                             uint32_t p_dest,
                             uint32_t value,
                             uint32_t len);
int hal_dma_chan_prep_memcpy(struct aic_dma_chan *chan,
                             uint32_t p_dest,
                             uint32_t p_src,
                             uint32_t len);
int hal_dma_chan_prep_device(struct aic_dma_chan *chan,
                             uint32_t p_dest,
                             uint32_t p_src,
                             uint32_t len,
                             enum dma_transfer_direction dir);
int hal_dma_chan_prep_cyclic(struct aic_dma_chan *chan,
                             uint32_t p_buf_addr,
                             uint32_t buf_len,
                             uint32_t period_len,
                             enum dma_transfer_direction dir);
int hal_dma_chan_tx_status(struct aic_dma_chan *chan, uint32_t *left_size);
int hal_dma_chan_start(struct aic_dma_chan *chan);
int hal_dma_chan_stop(struct aic_dma_chan *chan);
int hal_dma_chan_pause(struct aic_dma_chan *chan);
int hal_dma_chan_resume(struct aic_dma_chan *chan);
int hal_dma_chan_terminate_all(struct aic_dma_chan *chan);
int hal_dma_chan_register_cb(struct aic_dma_chan *chan,
                             dma_async_callback callback,
                             void *callback_param);
int hal_dma_chan_config(struct aic_dma_chan *chan,
                        struct dma_slave_config *config);
int hal_release_dma_chan(struct aic_dma_chan *chan);
struct aic_dma_chan * hal_request_dma_chan(void);
int hal_dma_init(void);
int hal_dma_deinit(void);
int hal_dma_chan_dump(int ch_nr);

irqreturn_t hal_dma_irq(int irq, void *arg);