menuconfig ION
	bool "Ion Memory Manager"
	depends on HAVE_MEMBLOCK && HAS_DMA && MMU
	select GENERIC_ALLOCATOR
	select DMA_SHARED_BUFFER
	---help---
	  Chose this option to enable the ION Memory Manager,
	  used by Android to efficiently allocate buffers
	  from userspace that can be shared between drivers.
	  If you're not using Android its probably safe to
	  say N here.

config ION_TEST
	tristate "Ion Test Device"
	depends on ION
	help
	  Choose this option to create a device that can be used to test the
	  kernel and device side ION functions.

config ION_DUMMY
	bool "Dummy Ion driver"
	depends on ION
	help
	  Provides a dummy ION driver that registers the
	  /dev/ion device and some basic heaps. This can
	  be used for testing the ION infrastructure if
	  one doesn't have access to hardware drivers that
	  use ION.

config ION_TEGRA
	tristate "Ion for Tegra"
	depends on ARCH_TEGRA && ION
	help
	  Choose this option if you wish to use ion on an nVidia Tegra.

config ION_HISI
	tristate "Ion for Hisilicon"
	depends on ARCH_HISI && ION
	select ION_OF
	help
	  Choose this option if you wish to use ion on Hisilicon Platform.

source "drivers/staging/android/ion/hisilicon/Kconfig"

config ION_MXC
	tristate "Ion for imx platform"
	depends on ION
	select VIDEOBUF2_DMA_CONTIG
	select ION_OF
	help
	  Choose this option if you wish to use ion on imx platform.

config ION_OF
	bool "Devicetree support for Ion"
	depends on ION && OF_ADDRESS
	help
	  Provides base support for defining Ion heaps in devicetree
	  and setting them up. Also includes functions for platforms
	  to parse the devicetree and expand for their own custom
	  extensions

	  If using Ion and devicetree, you should say Y here

config ION_UNMAPPED_HEAP
	bool "unmapped heap support in ION"
	depends on ION && (ARM || ARM64)
	default y
	help
	  ION unmapped heap is not available on some architectures.
	  If unmapped heap is supported, the default configuration enables
	  it. You should say N here only if you really do not want unmapped
	  heap support in the ION driver.

config ION_DUMMY_UNMAPPED_HEAP
	bool "ION dummy driver define an ION unmapped heap"
	depends on ION_DUMMY && ION_UNMAPPED_HEAP
	help
	  Dummy ION driver will create a unmapped heap from physical
	  location provided through CONFIG_ION_DUMMY_UNMAPPED_BASE and
	  CONFIG_ION_DUMMY_UNMAPPED_SIZE.

config ION_DUMMY_UNMAPPED_BASE
	hex "Physical base address of the ION unmapped heap"
	depends on ION_DUMMY_UNMAPPED_HEAP
	default 0
	help
	  Allows one the statically define an unmapped heap from the
	  ION dummy driver to exercice unamped heaps buffer managment.

config ION_DUMMY_UNMAPPED_SIZE
	hex "Physical byte size of the ION unmapped heap"
	depends on ION_DUMMY_UNMAPPED_HEAP
	default 0
	help
	  Allows one the statically define an unmapped heap from the
	  ION dummy driver to exercice unamped heaps buffer managment.
