| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2008-08-02 10:55:55 +01:00
										 |  |  |  *  arch/arm/include/asm/mach/dma.h | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  * | 
					
						
							|  |  |  |  *  Copyright (C) 1998-2000 Russell King | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License version 2 as | 
					
						
							|  |  |  |  * published by the Free Software Foundation. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *  This header file describes the interface between the generic DMA handler | 
					
						
							|  |  |  |  *  (dma.c) and the architecture-specific DMA backends (dma-*.c) | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct dma_struct; | 
					
						
							|  |  |  | typedef struct dma_struct dma_t; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct dma_ops { | 
					
						
							| 
									
										
										
										
											2008-12-08 15:58:50 +00:00
										 |  |  | 	int	(*request)(unsigned int, dma_t *);		/* optional */ | 
					
						
							|  |  |  | 	void	(*free)(unsigned int, dma_t *);			/* optional */ | 
					
						
							|  |  |  | 	void	(*enable)(unsigned int, dma_t *);		/* mandatory */ | 
					
						
							|  |  |  | 	void 	(*disable)(unsigned int, dma_t *);		/* mandatory */ | 
					
						
							|  |  |  | 	int	(*residue)(unsigned int, dma_t *);		/* optional */ | 
					
						
							|  |  |  | 	int	(*setspeed)(unsigned int, dma_t *, int);	/* optional */ | 
					
						
							| 
									
										
										
										
											2008-12-11 14:50:39 +00:00
										 |  |  | 	const char *type; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct dma_struct { | 
					
						
							| 
									
										
										
										
											2006-01-04 15:08:30 +00:00
										 |  |  | 	void		*addr;		/* single DMA address		*/ | 
					
						
							|  |  |  | 	unsigned long	count;		/* single DMA size		*/ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	struct scatterlist buf;		/* single DMA			*/ | 
					
						
							|  |  |  | 	int		sgcount;	/* number of DMA SG		*/ | 
					
						
							|  |  |  | 	struct scatterlist *sg;		/* DMA Scatter-Gather List	*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int	active:1;	/* Transfer active		*/ | 
					
						
							|  |  |  | 	unsigned int	invalid:1;	/* Address/Count changed	*/ | 
					
						
							| 
									
										
										
										
											2006-01-04 15:08:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-02 12:34:55 +00:00
										 |  |  | 	unsigned int	dma_mode;	/* DMA mode			*/ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	int		speed;		/* DMA speed			*/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	unsigned int	lock;		/* Device is allocated		*/ | 
					
						
							|  |  |  | 	const char	*device_id;	/* Device name			*/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-11 14:50:39 +00:00
										 |  |  | 	const struct dma_ops *d_ops; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 16:33:30 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * isa_dma_add - add an ISA-style DMA channel | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-12-08 16:33:30 +00:00
										 |  |  | extern int isa_dma_add(unsigned int, dma_t *dma); | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 16:33:30 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Add the ISA DMA controller.  Always takes channels 0-7. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | extern void isa_init_dma(void); |