The latest development version of this page may be more current than this released 2.3-beta.1 version.

DMA API Reference

DMA

wm_device_t *wm_drv_dma_init(const char *dma_name)

dma drv init

Parameters:

dma_name[in]

Returns:

dma device reference

wm_drv_dma_status_t wm_drv_dma_deinit(wm_device_t *dev)

dma drv deinit

Parameters:

dev[in] device reference

Returns:

deinit operation status

wm_drv_dma_status_t wm_drv_dma_request_ch(wm_device_t *dev, uint8_t *ch, uint32_t wait_time)

request dma channel

Parameters:
  • dev[in] device reference

  • ch[out] channel that alloced by dma drv

  • wait_time[in] channel request timeout

Returns:

dma channel request operation status

wm_drv_dma_status_t wm_drv_dma_release_ch(wm_device_t *dev, uint8_t ch, uint32_t wait_time)

release dma channel

Parameters:
  • dev[in] device reference

  • ch[in] channel that need release, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

  • wait_time[in] channel release timeout

Returns:

dma channel release operation status

wm_drv_dma_status_t wm_drv_dma_register_callback(wm_device_t *dma_dev, wm_dma_ch_t ch, wm_drv_dma_ch_callback_t dma_callback, void *user_data)

register dma done callback for user

Parameters:
  • dma_dev[in] device reference

  • ch[in] channel, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

  • dma_callback[in] done user callback

  • user_data[in] data

Returns:

callback register operation status

wm_drv_dma_status_t wm_drv_dma_unregister_callback(wm_device_t *dma_dev, wm_dma_ch_t ch)

unregister dma done callback for user

Parameters:
  • dma_dev[in] device reference

  • ch[in] channel, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

Returns:

callback unregister operation status

wm_drv_dma_status_t wm_drv_dma_config(wm_device_t *dma_dev, wm_drv_dma_desc_t *dma_desc)

config transfer param to dma, support mormal mode/list mode/warp mode/poolling mode/interrupt mode

Parameters:
  • dma_dev[in] device reference

  • dma_desc[in] config

Returns:

dma config operation status

wm_drv_dma_status_t wm_drv_dma_start(wm_device_t *dma_dev, wm_dma_ch_t ch)

start dma transfer

Parameters:
  • dma_dev[in] device reference

  • ch[in] channel to start, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

Returns:

dma start operation status

wm_drv_dma_status_t wm_drv_dma_stop(wm_device_t *dma_dev, wm_dma_ch_t ch)

stop dma transfer

Parameters:
  • dma_dev[in] device reference

  • ch[in] channel to stop, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

Returns:

dma stop operation status

wm_drv_dma_status_t wm_drv_dma_get_status(wm_device_t *dma_dev, wm_dma_ch_t ch, wm_dma_sts_info_t *dma_sts)

get dma status

Parameters:
  • dma_dev[in] device reference

  • ch[in] channel to get status, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

  • dma_sts[out] status

Returns:

get dma status operation status

wm_drv_dma_status_t wm_drv_dma_transfer(wm_device_t *dma_dev, wm_dma_ch_t ch, wm_drv_dma_xfer_cfg_t *dma_xfer)

config and start dma

Parameters:
  • dma_dev[in] device reference

  • ch[in] channel that need release, please make sure to use wm_drv_dma_request_ch to apply. If not applied, there may be exceptions

  • dma_xfer[in] xfer config

Returns:

dma transfer operation status