menu "Android"

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

if ANDROID

config ANDROID_BINDER_IPC
	bool "Android Binder IPC Driver"
	default n

config ANDROID_LOGGER
	tristate "Android log driver"
	default n

config ANDROID_RAM_CONSOLE
	bool "Android RAM buffer console"
	default n

config ANDROID_RAM_CONSOLE_ENABLE_VERBOSE
	bool "Enable verbose console messages on Android RAM console"
	default y
	depends on ANDROID_RAM_CONSOLE

menuconfig ANDROID_RAM_CONSOLE_ERROR_CORRECTION
	bool "Android RAM Console Enable error correction"
	default n
	depends on ANDROID_RAM_CONSOLE
	depends on !ANDROID_RAM_CONSOLE_EARLY_INIT
	select REED_SOLOMON
	select REED_SOLOMON_ENC8
	select REED_SOLOMON_DEC8

if ANDROID_RAM_CONSOLE_ERROR_CORRECTION

config ANDROID_RAM_CONSOLE_ERROR_CORRECTION_DATA_SIZE
	int "Android RAM Console Data data size"
	default 128
	help
	  Must be a power of 2.

config ANDROID_RAM_CONSOLE_ERROR_CORRECTION_ECC_SIZE
	int "Android RAM Console ECC size"
	default 16

config ANDROID_RAM_CONSOLE_ERROR_CORRECTION_SYMBOL_SIZE
	int "Android RAM Console Symbol size"
	default 8

config ANDROID_RAM_CONSOLE_ERROR_CORRECTION_POLYNOMIAL
	hex "Android RAM Console Polynomial"
	default 0x19 if (ANDROID_RAM_CONSOLE_ERROR_CORRECTION_SYMBOL_SIZE = 4)
	default 0x29 if (ANDROID_RAM_CONSOLE_ERROR_CORRECTION_SYMBOL_SIZE = 5)
	default 0x61 if (ANDROID_RAM_CONSOLE_ERROR_CORRECTION_SYMBOL_SIZE = 6)
	default 0x89 if (ANDROID_RAM_CONSOLE_ERROR_CORRECTION_SYMBOL_SIZE = 7)
	default 0x11d if (ANDROID_RAM_CONSOLE_ERROR_CORRECTION_SYMBOL_SIZE = 8)

endif # ANDROID_RAM_CONSOLE_ERROR_CORRECTION

config ANDROID_RAM_CONSOLE_EARLY_INIT
	bool "Start Android RAM console early"
	default n
	depends on ANDROID_RAM_CONSOLE

config ANDROID_RAM_CONSOLE_EARLY_ADDR
	hex "Android RAM console virtual address"
	default 0
	depends on ANDROID_RAM_CONSOLE_EARLY_INIT

config ANDROID_RAM_CONSOLE_EARLY_SIZE
	hex "Android RAM console buffer size"
	default 0
	depends on ANDROID_RAM_CONSOLE_EARLY_INIT

config ANDROID_TIMED_OUTPUT
	bool "Timed output class driver"
	default y

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

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

endif # if ANDROID

endmenu
