1/* 2 * This file is subject to the terms and conditions of the GNU General Public 3 * License. See the file "COPYING" in the main directory of this archive 4 * for more details. 5 * 6 * Copyright (C) 2006 Ralf Baechle <ralf@linux-mips.org> 7 * 8 */ 9#ifndef __ASM_DMA_COHERENCE_H 10#define __ASM_DMA_COHERENCE_H 11 12enum coherent_io_user_state { 13 IO_COHERENCE_DEFAULT, 14 IO_COHERENCE_ENABLED, 15 IO_COHERENCE_DISABLED, 16}; 17 18#if defined(CONFIG_DMA_PERDEV_COHERENT) 19/* Don't provide (hw_)coherentio to avoid misuse */ 20#elif defined(CONFIG_DMA_MAYBE_COHERENT) 21extern enum coherent_io_user_state coherentio; 22extern int hw_coherentio; 23 24static inline bool dev_is_dma_coherent(struct device *dev) 25{ 26 return coherentio == IO_COHERENCE_ENABLED || 27 (coherentio == IO_COHERENCE_DEFAULT && hw_coherentio); 28} 29#else 30#ifdef CONFIG_DMA_NONCOHERENT 31#define coherentio IO_COHERENCE_DISABLED 32#else 33#define coherentio IO_COHERENCE_ENABLED 34#endif 35#define hw_coherentio 0 36#endif /* CONFIG_DMA_MAYBE_COHERENT */ 37 38#endif 39