|  | /* | 
|  | * Copyright (C) 2008 Advanced Micro Devices, Inc. | 
|  | * | 
|  | * Author: Joerg Roedel <joerg.roedel@amd.com> | 
|  | * | 
|  | * 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 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 | 
|  | */ | 
|  |  | 
|  | #ifndef __DMA_DEBUG_H | 
|  | #define __DMA_DEBUG_H | 
|  |  | 
|  | #include <linux/types.h> | 
|  |  | 
|  | struct device; | 
|  | struct scatterlist; | 
|  | struct bus_type; | 
|  |  | 
|  | #ifdef CONFIG_DMA_API_DEBUG | 
|  |  | 
|  | extern void dma_debug_add_bus(struct bus_type *bus); | 
|  |  | 
|  | extern void dma_debug_init(u32 num_entries); | 
|  |  | 
|  | extern int dma_debug_resize_entries(u32 num_entries); | 
|  |  | 
|  | extern void debug_dma_map_page(struct device *dev, struct page *page, | 
|  | size_t offset, size_t size, | 
|  | int direction, dma_addr_t dma_addr, | 
|  | bool map_single); | 
|  |  | 
|  | extern void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr); | 
|  |  | 
|  | extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, | 
|  | size_t size, int direction, bool map_single); | 
|  |  | 
|  | extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, | 
|  | int nents, int mapped_ents, int direction); | 
|  |  | 
|  | extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, | 
|  | int nelems, int dir); | 
|  |  | 
|  | extern void debug_dma_alloc_coherent(struct device *dev, size_t size, | 
|  | dma_addr_t dma_addr, void *virt); | 
|  |  | 
|  | extern void debug_dma_free_coherent(struct device *dev, size_t size, | 
|  | void *virt, dma_addr_t addr); | 
|  |  | 
|  | extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr, | 
|  | size_t size, int direction, | 
|  | dma_addr_t dma_addr); | 
|  |  | 
|  | extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr, | 
|  | size_t size, int direction); | 
|  |  | 
|  | extern void debug_dma_sync_single_for_cpu(struct device *dev, | 
|  | dma_addr_t dma_handle, size_t size, | 
|  | int direction); | 
|  |  | 
|  | extern void debug_dma_sync_single_for_device(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | size_t size, int direction); | 
|  |  | 
|  | extern void debug_dma_sync_single_range_for_cpu(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | unsigned long offset, | 
|  | size_t size, | 
|  | int direction); | 
|  |  | 
|  | extern void debug_dma_sync_single_range_for_device(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | unsigned long offset, | 
|  | size_t size, int direction); | 
|  |  | 
|  | extern void debug_dma_sync_sg_for_cpu(struct device *dev, | 
|  | struct scatterlist *sg, | 
|  | int nelems, int direction); | 
|  |  | 
|  | extern void debug_dma_sync_sg_for_device(struct device *dev, | 
|  | struct scatterlist *sg, | 
|  | int nelems, int direction); | 
|  |  | 
|  | extern void debug_dma_dump_mappings(struct device *dev); | 
|  |  | 
|  | extern void debug_dma_assert_idle(struct page *page); | 
|  |  | 
|  | #else /* CONFIG_DMA_API_DEBUG */ | 
|  |  | 
|  | static inline void dma_debug_add_bus(struct bus_type *bus) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void dma_debug_init(u32 num_entries) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline int dma_debug_resize_entries(u32 num_entries) | 
|  | { | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_map_page(struct device *dev, struct page *page, | 
|  | size_t offset, size_t size, | 
|  | int direction, dma_addr_t dma_addr, | 
|  | bool map_single) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_mapping_error(struct device *dev, | 
|  | dma_addr_t dma_addr) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, | 
|  | size_t size, int direction, | 
|  | bool map_single) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, | 
|  | int nents, int mapped_ents, int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_unmap_sg(struct device *dev, | 
|  | struct scatterlist *sglist, | 
|  | int nelems, int dir) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_alloc_coherent(struct device *dev, size_t size, | 
|  | dma_addr_t dma_addr, void *virt) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_free_coherent(struct device *dev, size_t size, | 
|  | void *virt, dma_addr_t addr) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_map_resource(struct device *dev, phys_addr_t addr, | 
|  | size_t size, int direction, | 
|  | dma_addr_t dma_addr) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_unmap_resource(struct device *dev, | 
|  | dma_addr_t dma_addr, size_t size, | 
|  | int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_sync_single_for_cpu(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | size_t size, int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_sync_single_for_device(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | size_t size, int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_sync_single_range_for_cpu(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | unsigned long offset, | 
|  | size_t size, | 
|  | int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_sync_single_range_for_device(struct device *dev, | 
|  | dma_addr_t dma_handle, | 
|  | unsigned long offset, | 
|  | size_t size, | 
|  | int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_sync_sg_for_cpu(struct device *dev, | 
|  | struct scatterlist *sg, | 
|  | int nelems, int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_sync_sg_for_device(struct device *dev, | 
|  | struct scatterlist *sg, | 
|  | int nelems, int direction) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_dump_mappings(struct device *dev) | 
|  | { | 
|  | } | 
|  |  | 
|  | static inline void debug_dma_assert_idle(struct page *page) | 
|  | { | 
|  | } | 
|  |  | 
|  | #endif /* CONFIG_DMA_API_DEBUG */ | 
|  |  | 
|  | #endif /* __DMA_DEBUG_H */ |