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
	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
	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.
