Modules/UDI - Moved UDI headers to /UDI/include
[tpg/acess2.git] / UDI / include / physio / dma.h
1 /*
2  */
3 #ifndef _UDI_PHYSIO_DMA_H_
4 #define _UDI_PHYSIO_DMA_H_
5
6 //typedef struct udi_dma_handle_s       *udi_dma_handle_t;
7 //#define UDI_NULL_DMA_HANDLE   NULL
8
9 extern void udi_dma_limits(udi_dma_limits_t *dma_limits);
10
11 typedef void udi_dma_prepare_call_t(udi_cb_t *gcb, udi_dma_handle_t new_dma_handle);
12 typedef void udi_dma_buf_map_call_t(udi_cb_t *gcb, udi_scgth_t *scgth, udi_boolean_t complete, udi_status_t status);
13 typedef void udi_dma_mem_alloc_call_t(udi_cb_t *gcb, udi_dma_handle_t new_dma_handle, void *mem_ptr, udi_size_t actual_gap, udi_boolean_t single_element, udi_scgth_t *scgth, udi_boolean_t must_swap);
14 typedef void udi_dma_sync_call_t(udi_cb_t *gcb);
15 typedef void udi_dma_scgth_sync_call_t(udi_cb_t *gcb);
16 typedef void udi_dma_mem_to_buf_call_t(udi_cb_t *gcb, udi_buf_t *new_dst_buf);
17
18 /**
19  * \name Values for flags (udi_dma_prepare, udi_dma_buf_map)
20  * \{
21  */
22 #define UDI_DMA_OUT     (1U<<2)
23 #define UDI_DMA_IN      (1U<<3)
24 #define UDI_DMA_REWIND  (1U<<4)
25 #define UDI_DMA_BIG_ENDIAN      (1U<<5)
26 #define UDI_DMA_LITTLE_ENDIAN   (1U<<6)
27 #define UDI_DMA_NEVERSWAP       (1U<<7)
28 /**
29  * \}
30  */
31
32 extern void udi_dma_prepare(udi_dma_prepare_call_t *callback, udi_cb_t *gcb,
33         udi_dma_constraints_t constraints, udi_ubit8_t flags);
34
35 extern void udi_dma_buf_map(udi_dma_buf_map_call_t *callback, udi_cb_t *gcb, udi_dma_handle_t dma_handle,
36         udi_buf_t *buf, udi_size_t offset, udi_size_t len, udi_ubit8_t flags);
37
38 extern udi_buf_t *udi_dma_buf_unmap(udi_dma_handle_t dma_handle, udi_size_t new_buf_size);
39
40 extern void udi_dma_mem_alloc(udi_dma_mem_alloc_call_t *callback, udi_cb_t *gcb,
41         udi_dma_constraints_t constraints, udi_ubit8_t flags,
42         udi_ubit16_t nelements, udi_size_t element_size, udi_size_t max_gap);
43
44 extern void udi_dma_sync(udi_dma_sync_call_t *callback, udi_cb_t *gcb, udi_dma_handle_t dma_handle,
45         udi_size_t offset, udi_size_t len, udi_ubit8_t flags);
46
47 extern void udi_dma_scgth_sync(udi_dma_scgth_sync_call_t *callback, udi_cb_t *gcb, udi_dma_handle_t dma_handle);
48
49 extern void udi_dma_mem_barrier(udi_dma_handle_t dma_handle);
50
51 extern void udi_dma_free(udi_dma_handle_t dma_handle);
52
53 extern void udi_dma_mem_to_buf(udi_dma_mem_to_buf_call_t *callback, udi_cb_t *gcb, udi_dma_handle_t dma_handle,
54         udi_size_t src_off, udi_size_t src_len, udi_buf_t *dst_buf);
55
56 #endif
57

UCC git Repository :: git.ucc.asn.au