menu "Android"

config ANDROID
	bool "Android Drivers"
	default N
	---help---
	  Enable support for various drivers needed on the Android platform

if ANDROID

config ANDROID_BINDER_IPC
	bool "Android Binder IPC Driver"
	depends on MMU
	default n
	---help---
	  Binder is used in Android for both communication between processes,
	  and remote method invocation.

	  This means one Android process can call a method/routine in another
	  Android process, using Binder to identify, invoke and pass arguments
	  between said processes.

config ANDROID_BINDER_IPC_32BIT
	bool
        default y
	depends on !64BIT && ANDROID_BINDER_IPC
	---help---
	  Enable to support an old 32-bit Android user-space. Breaks the new
	  Android user-space.

config ASHMEM
	bool "Enable the Anonymous Shared Memory Subsystem"
	default n
	depends on SHMEM
	---help---
	  The ashmem subsystem is a new shared memory allocator, similar to
	  POSIX SHM but with different behavior and sporting a simpler
	  file-based API.

	  It is, in theory, a good memory allocator for low-memory devices,
	  because it can discard shared memory units when under memory pressure.

config ANDROID_LOGGER
	tristate "Android log driver"
	default n
	---help---
	  This adds support for system-wide logging using four log buffers.

	  These are:

	      1: main
	      2: events
	      3: radio
	      4: system

	  Log reading and writing is performed via normal Linux reads and
	  optimized writes. This optimization avoids logging having too
	  much overhead in the system.

config ANDROID_TIMED_OUTPUT
	bool "Timed output class driver"
	default y

config ANDROID_TIMED_GPIO
	tristate "Android timed gpio driver"
	depends on GPIOLIB && ANDROID_TIMED_OUTPUT
	default n

config ANDROID_LOW_MEMORY_KILLER
	bool "Android Low Memory Killer"
	default N
	---help---
	  Registers processes to be killed when memory is low

config ANDROID_LOW_MEMORY_KILLER_AUTODETECT_OOM_ADJ_VALUES
	bool "Android Low Memory Killer: detect oom_adj values"
	depends on ANDROID_LOW_MEMORY_KILLER
	default y
	---help---
	  Detect oom_adj values written to
	  /sys/module/lowmemorykiller/parameters/adj and convert them
	  to oom_score_adj values.

config ANDROID_INTF_ALARM_DEV
	bool "Android alarm driver"
	depends on RTC_CLASS
	default n
	---help---
	  Provides non-wakeup and rtc backed wakeup alarms based on rtc or
	  elapsed realtime, and a non-wakeup alarm on the monotonic clock.
	  Also exports the alarm interface to user-space.

config SYNC
	bool "Synchronization framework"
	default n
	select ANON_INODES
	---help---
	  This option enables the framework for synchronization between multiple
	  drivers.  Sync implementations can take advantage of hardware
	  synchronization built into devices like GPUs.

config SW_SYNC
	bool "Software synchronization objects"
	default n
	depends on SYNC
	---help---
	  A sync object driver that uses a 32bit counter to coordinate
	  syncrhronization.  Useful when there is no hardware primitive backing
	  the synchronization.

config SW_SYNC_USER
	bool "Userspace API for SW_SYNC"
	default n
	depends on SW_SYNC
	---help---
	  Provides a user space API to the sw sync object.
	  *WARNING* improper use of this can result in deadlocking kernel
	  drivers from userspace.

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

endif # if ANDROID

endmenu
