2007-06-06 14:52:38 +08:00
/*
* 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 ) 2006 , 07 Ralf Baechle < ralf @ linux - mips . org >
* Copyright ( C ) 2007 Lemote , Inc . & Institute of Computing Technology
* Author : Fuxin Zhang , zhangfx @ lemote . com
*
*/
2009-07-02 23:26:08 +08:00
# ifndef __ASM_MACH_LOONGSON_DMA_COHERENCE_H
# define __ASM_MACH_LOONGSON_DMA_COHERENCE_H
2007-06-06 14:52:38 +08:00
struct device ;
static inline dma_addr_t plat_map_dma_mem ( struct device * dev , void * addr ,
size_t size )
{
return virt_to_phys ( addr ) | 0x80000000 ;
}
static inline dma_addr_t plat_map_dma_mem_page ( struct device * dev ,
struct page * page )
{
return page_to_phys ( page ) | 0x80000000 ;
}
2009-04-23 17:25:12 -07:00
static inline unsigned long plat_dma_addr_to_phys ( struct device * dev ,
dma_addr_t dma_addr )
2007-06-06 14:52:38 +08:00
{
2009-11-06 18:45:05 +08:00
# if defined(CONFIG_CPU_LOONGSON2F) && defined(CONFIG_64BIT)
return ( dma_addr > 0x8fffffff ) ? dma_addr : ( dma_addr & 0x0fffffff ) ;
# else
2007-06-06 14:52:38 +08:00
return dma_addr & 0x7fffffff ;
2009-11-06 18:45:05 +08:00
# endif
2007-06-06 14:52:38 +08:00
}
2009-04-23 17:03:43 -07:00
static inline void plat_unmap_dma_mem ( struct device * dev , dma_addr_t dma_addr ,
size_t size , enum dma_data_direction direction )
2007-06-06 14:52:38 +08:00
{
}
2008-12-11 15:33:36 -08:00
static inline int plat_dma_supported ( struct device * dev , u64 mask )
{
/*
* we fall back to GFP_DMA when the mask isn ' t all 1 s ,
* so we can ' t guarantee allocations that must be
* within a tighter range than GFP_DMA . .
*/
if ( mask < DMA_BIT_MASK ( 24 ) )
return 0 ;
return 1 ;
}
static inline void plat_extra_sync_for_device ( struct device * dev )
{
return ;
}
static inline int plat_dma_mapping_error ( struct device * dev ,
dma_addr_t dma_addr )
{
return 0 ;
}
2007-06-06 14:52:38 +08:00
static inline int plat_device_is_coherent ( struct device * dev )
{
return 0 ;
}
2009-07-02 23:26:08 +08:00
# endif /* __ASM_MACH_LOONGSON_DMA_COHERENCE_H */