[258] | 1 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 2 | // File : dma_driver.h |
---|
| 3 | // Date : 01/11/2013 |
---|
| 4 | // Author : alain greiner |
---|
| 5 | // Copyright (c) UPMC-LIP6 |
---|
| 6 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 7 | |
---|
| 8 | #ifndef _GIET_DMA_DRIVER_H_ |
---|
| 9 | #define _GIET_DMA_DRIVER_H_ |
---|
| 10 | |
---|
| 11 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 12 | // Multi DMA registers offset |
---|
| 13 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 14 | |
---|
| 15 | enum DMA_registers |
---|
| 16 | { |
---|
| 17 | DMA_SRC = 0, |
---|
| 18 | DMA_DST = 1, |
---|
| 19 | DMA_LEN = 2, |
---|
| 20 | DMA_RESET = 3, |
---|
| 21 | DMA_IRQ_DISABLE = 4, |
---|
| 22 | DMA_SRC_EXT = 5, |
---|
| 23 | DMA_DST_EXT = 6, |
---|
| 24 | /**/ |
---|
| 25 | DMA_END = 7, |
---|
| 26 | DMA_SPAN = 8, |
---|
| 27 | }; |
---|
| 28 | |
---|
| 29 | enum SoclibDmaStatus |
---|
| 30 | { |
---|
| 31 | DMA_SUCCESS = 0, |
---|
| 32 | DMA_READ_ERROR = 1, |
---|
| 33 | DMA_IDLE = 2, |
---|
| 34 | DMA_WRITE_ERROR = 3, |
---|
| 35 | DMA_BUSY = 4, |
---|
| 36 | }; |
---|
| 37 | |
---|
| 38 | |
---|
| 39 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 40 | // Multi DMA variables and access functions (vci_multi_dma) |
---|
| 41 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 42 | |
---|
| 43 | // low level access functions |
---|
[263] | 44 | extern unsigned int _dma_init( unsigned int cluster_xy, |
---|
[258] | 45 | unsigned int channel_id ); |
---|
| 46 | |
---|
[263] | 47 | extern unsigned int _dma_reset( unsigned int cluster_xy, |
---|
[258] | 48 | unsigned int channel_id ); |
---|
| 49 | |
---|
[263] | 50 | extern unsigned int _dma_get_status( unsigned int cluster_xy, |
---|
[258] | 51 | unsigned int channel_id ); |
---|
| 52 | |
---|
[343] | 53 | extern void _dma_start_transfer( unsigned int cluster_xy, |
---|
| 54 | unsigned int channel_id, |
---|
| 55 | unsigned long long dst_paddr, |
---|
| 56 | unsigned long long src_paddr, |
---|
| 57 | unsigned int size ); |
---|
[258] | 58 | |
---|
| 59 | // higher level access function |
---|
[343] | 60 | extern void _dma_physical_copy( unsigned int cluster_xy, |
---|
| 61 | unsigned int channel_id, |
---|
| 62 | unsigned long long dst_paddr, |
---|
| 63 | unsigned long long src_paddr, |
---|
| 64 | unsigned int size ); |
---|
| 65 | |
---|
| 66 | extern void _dma_copy( unsigned int cluster_xy, |
---|
| 67 | unsigned int channel_id, |
---|
| 68 | unsigned int vspace_id, |
---|
| 69 | unsigned int dst_vaddr, |
---|
| 70 | unsigned int src_vaddr, |
---|
[258] | 71 | unsigned int size ); |
---|
| 72 | |
---|
[320] | 73 | extern void _dma_isr( unsigned int irq_type, |
---|
| 74 | unsigned int irq_id, |
---|
| 75 | unsigned int channel ); |
---|
| 76 | |
---|
[258] | 77 | /////////////////////////////////////////////////////////////////////////////////// |
---|
| 78 | |
---|
| 79 | #endif |
---|
| 80 | |
---|
| 81 | // Local Variables: |
---|
| 82 | // tab-width: 4 |
---|
| 83 | // c-basic-offset: 4 |
---|
| 84 | // c-file-offsets:((innamespace . 0)(inline-open . 0)) |
---|
| 85 | // indent-tabs-mode: nil |
---|
| 86 | // End: |
---|
| 87 | // vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4 |
---|
| 88 | |
---|