40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /* AXI DMA connection. Used until qdev provides a generic way.  */ | ||
|  | typedef void (*DMAPushFn)(void *opaque, | ||
|  |                             unsigned char *buf, size_t len, uint32_t *app); | ||
|  | 
 | ||
|  | struct XilinxDMAConnection { | ||
|  |     void *dma; | ||
|  |     void *client; | ||
|  | 
 | ||
|  |     DMAPushFn to_dma; | ||
|  |     DMAPushFn to_client; | ||
|  | }; | ||
|  | 
 | ||
|  | static inline void xlx_dma_connect_client(struct XilinxDMAConnection *dmach, | ||
|  |                                           void *c, DMAPushFn f) | ||
|  | { | ||
|  |     dmach->client = c; | ||
|  |     dmach->to_client = f; | ||
|  | } | ||
|  | 
 | ||
|  | static inline void xlx_dma_connect_dma(struct XilinxDMAConnection *dmach, | ||
|  |                                        void *d, DMAPushFn f) | ||
|  | { | ||
|  |     dmach->dma = d; | ||
|  |     dmach->to_dma = f; | ||
|  | } | ||
|  | 
 | ||
|  | static inline | ||
|  | void xlx_dma_push_to_dma(struct XilinxDMAConnection *dmach, | ||
|  |                          uint8_t *buf, size_t len, uint32_t *app) | ||
|  | { | ||
|  |     dmach->to_dma(dmach->dma, buf, len, app); | ||
|  | } | ||
|  | static inline | ||
|  | void xlx_dma_push_to_client(struct XilinxDMAConnection *dmach, | ||
|  |                             uint8_t *buf, size_t len, uint32_t *app) | ||
|  | { | ||
|  |     dmach->to_client(dmach->client, buf, len, app); | ||
|  | } | ||
|  | 
 |