-locks.git/.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogblamecommitdiffstats
path: root/include/linux/dmaengine.h
blob: eee7addec28269c2dabd3d6901941bcc7eeeecc4 (plain) (tree)





















                                                                               
 

                         
                              

   
                                              



                                                                         

                               






                                                       
                                     




                                 
                   



                  
                                                            


                                                                        



                           
               

                    
                   
                      
               
                    
                     
                  
                   


                                                                 
                                        
 

   
                                                                    
                                               
                                                                           
                    
                                                                             

                                                                           

                                                                                



                                                                                   




                                                                             

                                                                      
   
                     
                                      
                                

                                             

                                               


                                         
                                  


   




                                                                      




                                                                             

                                                                             




                          
                         
                              


   


















                                                                      





                                                                         
                                                               




                                     






                                                                  
                                                                          
                                                
                                 
                               

                                                         
                                                         
                                                                         
                                                                 

                 




                                  
                                 
 
                                     
                                               
                         
                        
                      

  



                                                                           

                                                                  



                              

                          

  
































































                                                                     



                                                              
 

                                         
   






                                                                               

                                                                               
   
                                                                         
 





                                                                  

                                                                          
                                            

                                                                          


                                                                     
                                              
                                                                
                                              


                                
                                                                         
                        

                                                                      

                                       
                                            
                                             

                                               
      

  
                                             
























































                                                                                                       
   














                                                               

                                                                
                                                                          

                                                     

                                                              
                                                                   



                                                     
                            
                                                    


                                                                  

                                                       
                                                                

                                                           

                                                                           
                                                        


                                                                               

                                                                           

                                                                   
                                                                             
                                             
                                                               



                             
                                

                                     
                                 

                               



                      
                                             
 
                   
                           
 
                                                                  
                                                                  

                                                                  
                                                                       
                                                 
                                                               
                                                                        
                                                                       
                                                                   
                                                                             
                                                                               







                                                                           
                                                                  
                                                                              
                                     
                                                                     
                                                            




                                                                   
 



                                                                       


                                                                           

                                                                           
 


                                                                          
                                                            

  




























                                                                          
                                                                                 



                                     



































                                                                                        
























                                                                             
                                                                     



























                                                                              

                                   
                        

                         








                                      











                                               


                                               
                                             

                                                                   
                                                           
                                                  











                                                      
                                
 








                                                                         
 
                                                                   
 


                                  




                                                                         
                                                                        
 
                                                          

 

                                                             
 


                                                             
 




                                                                   

 


                                                                      
 

                                     
 






                                                                        





                                                       




                                                                      

 




                                                    
   
                                                             
                            



                                                       
                                                                 
 
                                                 

 

                                                                          
   
                                                             








                                                                        
                                                                             

                                                                    








                                                                      

 


                                                            






                                                                 
                                                                          













                                                                           









                                                                                            
                                                                          

                                                                          
                                 

                                                                                               




                                                                                       

                                              







                                                                               
 
      




                                                            
                                                              
                                                                     
                                                                            
 


                                          
                                  

















                                                                               
                        
/*
 * Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59
 * Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * The full GNU General Public License is included in this distribution in the
 * file called COPYING.
 */
#ifndef DMAENGINE_H
#define DMAENGINE_H

#include <linux/device.h>
#include <linux/uio.h>
#include <linux/dma-mapping.h>

/**
 * typedef dma_cookie_t - an opaque DMA cookie
 *
 * if dma_cookie_t is >0 it's a DMA request cookie, <0 it's an error code
 */
typedef s32 dma_cookie_t;
#define DMA_MIN_COOKIE	1
#define DMA_MAX_COOKIE	INT_MAX

#define dma_submit_error(cookie) ((cookie) < 0 ? 1 : 0)

/**
 * enum dma_status - DMA transaction status
 * @DMA_SUCCESS: transaction completed successfully
 * @DMA_IN_PROGRESS: transaction not yet processed
 * @DMA_PAUSED: transaction is paused
 * @DMA_ERROR: transaction failed
 */
enum dma_status {
	DMA_SUCCESS,
	DMA_IN_PROGRESS,
	DMA_PAUSED,
	DMA_ERROR,
};

/**
 * enum dma_transaction_type - DMA transaction types/indexes
 *
 * Note: The DMA_ASYNC_TX capability is not to be set by drivers.  It is
 * automatically set as dma devices are registered.
 */
enum dma_transaction_type {
	DMA_MEMCPY,
	DMA_XOR,
	DMA_PQ,
	DMA_XOR_VAL,
	DMA_PQ_VAL,
	DMA_MEMSET,
	DMA_INTERRUPT,
	DMA_SG,
	DMA_PRIVATE,
	DMA_ASYNC_TX,
	DMA_SLAVE,
	DMA_CYCLIC,
};

/* last transaction type for creation of the capabilities mask */
#define DMA_TX_TYPE_END (DMA_CYCLIC + 1)


/**
 * enum dma_ctrl_flags - DMA flags to augment operation preparation,
 *  control completion, and communicate status.
 * @DMA_PREP_INTERRUPT - trigger an interrupt (callback) upon completion of
 *  this transaction
 * @DMA_CTRL_ACK - if clear, the descriptor cannot be reused until the client
 *  acknowledges receipt, i.e. has has a chance to establish any dependency
 *  chains
 * @DMA_COMPL_SKIP_SRC_UNMAP - set to disable dma-unmapping the source buffer(s)
 * @DMA_COMPL_SKIP_DEST_UNMAP - set to disable dma-unmapping the destination(s)
 * @DMA_COMPL_SRC_UNMAP_SINGLE - set to do the source dma-unmapping as single
 * 	(if not set, do the source dma-unmapping as page)
 * @DMA_COMPL_DEST_UNMAP_SINGLE - set to do the destination dma-unmapping as single
 * 	(if not set, do the destination dma-unmapping as page)
 * @DMA_PREP_PQ_DISABLE_P - prevent generation of P while generating Q
 * @DMA_PREP_PQ_DISABLE_Q - prevent generation of Q while generating P
 * @DMA_PREP_CONTINUE - indicate to a driver that it is reusing buffers as