
config HAS_DMA
	bool
	depends on !NO_DMA
	default y

config NEED_SG_DMA_LENGTH
	bool

config NEED_DMA_MAP_STATE
	bool

config ARCH_DMA_ADDR_T_64BIT
	def_bool 64BIT || PHYS_ADDR_T_64BIT

config ARCH_HAS_DMA_COHERENCE_H
	bool

config HAVE_GENERIC_DMA_COHERENT
	bool

config ARCH_HAS_SYNC_DMA_FOR_DEVICE
	bool

config ARCH_HAS_SYNC_DMA_FOR_CPU
	bool
	select NEED_DMA_MAP_STATE

config ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
	bool

config ARCH_HAS_DMA_COHERENT_TO_PFN
	bool

config ARCH_HAS_DMA_MMAP_PGPROT
	bool

config DMA_NONCOHERENT_CACHE_SYNC
	bool

config DMA_VIRT_OPS
	bool
	depends on HAS_DMA

config SWIOTLB
	bool
	select NEED_DMA_MAP_STATE

config DMA_REMAP
	depends on MMU
	bool

config DMA_DIRECT_REMAP
	bool
	select DMA_REMAP

config DMA_API_DEBUG
	bool "Enable debugging of DMA-API usage"
	select NEED_DMA_MAP_STATE
	help
	  Enable this option to debug the use of the DMA API by device drivers.
	  With this option you will be able to detect common bugs in device
	  drivers like double-freeing of DMA mappings or freeing mappings that
	  were never allocated.

	  This also attempts to catch cases where a page owned by DMA is
	  accessed by the cpu in a way that could cause data corruption.  For
	  example, this enables cow_user_page() to check that the source page is
	  not undergoing DMA.

	  This option causes a performance degradation.  Use only if you want to
	  debug device drivers and dma interactions.

	  If unsure, say N.

config DMA_API_DEBUG_SG
	bool "Debug DMA scatter-gather usage"
	default y
	depends on DMA_API_DEBUG
	help
	  Perform extra checking that callers of dma_map_sg() have respected the
	  appropriate segment length/boundary limits for the given device when
	  preparing DMA scatterlists.

	  This is particularly likely to have been overlooked in cases where the
	  dma_map_sg() API is used for general bulk mapping of pages rather than
	  preparing literal scatter-gather descriptors, where there is a risk of
	  unexpected behaviour from DMA API implementations if the scatterlist
	  is technically out-of-spec.

	  If unsure, say N.
