2005-06-23 22:01:26 -07:00
/*
* include / asm - xtensa / dma . h
*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
* Copyright ( C ) 2003 - 2005 Tensilica Inc .
*/
# ifndef _XTENSA_DMA_H
# define _XTENSA_DMA_H
# include <asm/io.h> /* need byte IO */
/*
* This is only to be defined if we have PC - like DMA .
* By default this is not true on an Xtensa processor ,
* however on boards with a PCI bus , such functionality
* might be emulated externally .
*
* NOTE : there still exists driver code that assumes
* this is defined , eg . drivers / sound / soundcard . c ( as of 2.4 ) .
*/
# define MAX_DMA_CHANNELS 8
/*
* The maximum virtual address to which DMA transfers
* can be performed on this platform .
*
* NOTE : This is board ( platform ) specific , not processor - specific !
*
* NOTE : This assumes DMA transfers can only be performed on
* the section of physical memory contiguously mapped in virtual
* space for the kernel . For the Xtensa architecture , this
* means the maximum possible size of this DMA area is
* the size of the statically mapped kernel segment
* ( XCHAL_KSEG_ { CACHED , BYPASS } _SIZE ) , ie . 128 MB .
*
2011-03-30 22:57:33 -03:00
* NOTE : When the entire KSEG area is DMA capable , we subtract
2005-06-23 22:01:26 -07:00
* one from the max address so that the virt_to_phys ( ) macro
* works correctly on the address ( otherwise the address
* enters another area , and virt_to_phys ( ) may not return
* the value desired ) .
*/
2006-12-10 02:18:48 -08:00
2009-03-04 16:21:31 +01:00
# ifndef MAX_DMA_ADDRESS
2006-12-10 02:18:48 -08:00
# define MAX_DMA_ADDRESS (PAGE_OFFSET + XCHAL_KIO_SIZE - 1)
2009-03-04 16:21:31 +01:00
# endif
2005-06-23 22:01:26 -07:00
/* Reserve and release a DMA channel */
extern int request_dma ( unsigned int dmanr , const char * device_id ) ;
extern void free_dma ( unsigned int dmanr ) ;
# ifdef CONFIG_PCI
extern int isa_dma_bridge_buggy ;
# else
# define isa_dma_bridge_buggy (0)
# endif
# endif