# arch/arm/plat-samsung/Kconfig
#
# Copyright 2009 Simtec Electronics
#
# Licensed under GPLv2

config PLAT_SAMSUNG
	bool
	depends on PLAT_S3C24XX || ARCH_S3C64XX || PLAT_S5P
	default y
	select GENERIC_IRQ_CHIP
	select NO_IOPORT
	help
	  Base platform code for all Samsung SoC based systems

config PLAT_S5P
	bool
	depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS)
	default y
	select ARCH_REQUIRE_GPIOLIB
	select ARM_GIC if ARCH_EXYNOS
	select ARM_VIC if !ARCH_EXYNOS
	select GIC_NON_BANKED if ARCH_EXYNOS4
	select NO_IOPORT
	select PLAT_SAMSUNG
	select S3C_GPIO_TRACK
	select S5P_GPIO_DRVSTR
	select SAMSUNG_CLKSRC if !COMMON_CLK
	select SAMSUNG_GPIOLIB_4BIT
	select SAMSUNG_IRQ_VIC_TIMER
	help
	  Base platform code for Samsung's S5P series SoC.

if PLAT_SAMSUNG

# boot configurations

comment "Boot options"

config S3C_BOOT_ERROR_RESET
	bool "S3C Reboot on decompression error"
	help
	  Say y here to use the watchdog to reset the system if the
	  kernel decompressor detects an error during decompression.

config S3C_BOOT_UART_FORCE_FIFO
       bool "Force UART FIFO on during boot process"
       default y
       help
         Say Y here to force the UART FIFOs on during the kernel
	 uncompressor


config S3C_LOWLEVEL_UART_PORT
	int "S3C UART to use for low-level messages"
	default 0
	help
	  Choice of which UART port to use for the low-level messages,
	  such as the `Uncompressing...` at start time. The value of
	  this configuration should be between zero and two. The port
	  must have been initialised by the boot-loader before use.

# timer options

config SAMSUNG_HRT
	bool
	select SAMSUNG_DEV_PWM
	help
	  Use the High Resolution timer support

# clock options

config SAMSUNG_CLOCK
	bool
	default y if !COMMON_CLK

config SAMSUNG_CLKSRC
	bool
	help
	  Select the clock code for the clksrc implementation
	  used by newer systems such as the S3C64XX.

config S5P_CLOCK
	def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210)
	help
	  Support common clock part for ARCH_S5P and ARCH_EXYNOS SoCs

# options for IRQ support

config SAMSUNG_IRQ_VIC_TIMER
       bool
       help
         Internal configuration to build the VIC timer interrupt code.

config S5P_IRQ
	def_bool (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210)
	help
	  Support common interrupt part for ARCH_S5P SoCs

config S5P_EXT_INT
	bool
	help
	  Use the external interrupts (other than GPIO interrupts.)
	  Note: Do not choose this for S5P6440 and S5P6450.

config S5P_GPIO_INT
	bool
	help
	  Common code for the GPIO interrupts (other than external interrupts.)

# options for gpio configuration support

config SAMSUNG_GPIOLIB_4BIT
	bool
	help
	  GPIOlib file contains the 4 bit modification functions for gpio
	  configuration. GPIOlib shall be compiled only for S3C64XX and S5P
	  series of processors.

config S5P_GPIO_DRVSTR
	bool
	help
	  Internal configuration to get and set correct GPIO driver strength
	  helper

config SAMSUNG_GPIO_EXTRA
	int "Number of additional GPIO pins"
	default 128 if SAMSUNG_GPIO_EXTRA128
	default 64 if SAMSUNG_GPIO_EXTRA64
	default 0
	help
	  Use additional GPIO space in addition to the GPIO's the SOC
	  provides. This allows expanding the GPIO space for use with
	  GPIO expanders.

config SAMSUNG_GPIO_EXTRA64
	bool

config SAMSUNG_GPIO_EXTRA128
	bool

config S3C_GPIO_SPACE
	int "Space between gpio banks"
	default 0
	help
	  Add a number of spare GPIO entries between each bank for debugging
	  purposes. This allows any problems where an counter overflows from
	  one bank to another to be caught, at the expense of using a little
	  more memory.

config S3C_GPIO_TRACK
	bool
	help
	  Internal configuration option to enable the s3c specific gpio
	  chip tracking if the platform requires it.

# uart options

config S5P_DEV_UART
	def_bool y
	depends on (ARCH_S5P64X0 || ARCH_S5PC100 || ARCH_S5PV210)

# ADC driver

config S3C_ADC
	bool "ADC common driver support"
	help
	  Core support for the ADC block found in the Samsung SoC systems
	  for drivers such as the touchscreen and hwmon to use to share
	  this resource.

# device definitions to compile in

config S3C_DEV_HSMMC
	bool
	help
	  Compile in platform device definitions for HSMMC code

config S3C_DEV_HSMMC1
	bool
	help
	  Compile in platform device definitions for HSMMC channel 1

config S3C_DEV_HSMMC2
	bool
	help
	  Compile in platform device definitions for HSMMC channel 2

config S3C_DEV_HSMMC3
	bool
	help
	  Compile in platform device definitions for HSMMC channel 3

config S3C_DEV_HWMON
	bool
	help
	    Compile in platform device definitions for HWMON

config S3C_DEV_I2C1
	bool
	help
	  Compile in platform device definitions for I2C channel 1

config S3C_DEV_I2C2
	bool
	help
	  Compile in platform device definitions for I2C channel 2

config S3C_DEV_I2C3
	bool
	help
	  Compile in platform device definition for I2C controller 3

config S3C_DEV_I2C4
	bool
	help
	  Compile in platform device definition for I2C controller 4

config S3C_DEV_I2C5
	bool
	help
	  Compile in platform device definition for I2C controller 5

config S3C_DEV_I2C6
	bool
	help
	  Compile in platform device definition for I2C controller 6

config S3C_DEV_I2C7
	bool
	help
	  Compile in platform device definition for I2C controller 7

config S3C_DEV_FB
	bool
	help
	  Compile in platform device definition for framebuffer

config S3C_DEV_USB_HOST
	bool
	help
	  Compile in platform device definition for USB host.

config S3C_DEV_USB_HSOTG
	bool
	help
	  Compile in platform device definition for USB high-speed OtG

config S3C_DEV_WDT
	bool
	default y if ARCH_S3C24XX
	help
	  Complie in platform device definition for Watchdog Timer

config S3C_DEV_NAND
	bool
	help
	  Compile in platform device definition for NAND controller

config S3C_DEV_ONENAND
	bool
	help
	  Compile in platform device definition for OneNAND controller

config S3C_DEV_RTC
	bool
	help
	  Complie in platform device definition for RTC

config SAMSUNG_DEV_ADC
	bool
	help
	  Compile in platform device definition for ADC controller

config SAMSUNG_DEV_IDE
	bool
	help
	  Compile in platform device definitions for IDE

config S3C64XX_DEV_SPI0
	bool
	help
	  Compile in platform device definitions for S3C64XX's type
	  SPI controller 0

config S3C64XX_DEV_SPI1
	bool
	help
	  Compile in platform device definitions for S3C64XX's type
	  SPI controller 1

config S3C64XX_DEV_SPI2
	bool
	help
	  Compile in platform device definitions for S3C64XX's type
	  SPI controller 2

config SAMSUNG_DEV_TS
	bool
	help
	    Common in platform device definitions for touchscreen device

config SAMSUNG_DEV_KEYPAD
	bool
	help
	  Compile in platform device definitions for keypad

config SAMSUNG_DEV_PWM
	bool
	default y if ARCH_S3C24XX
	help
	  Compile in platform device definition for PWM Timer

config SAMSUNG_DEV_BACKLIGHT
	bool
	depends on SAMSUNG_DEV_PWM
	help
	  Compile in platform device definition LCD backlight with PWM Timer

config S5P_DEV_CSIS0
	bool
	help
	  Compile in platform device definitions for MIPI-CSIS channel 0

config S5P_DEV_CSIS1
	bool
	help
	  Compile in platform device definitions for MIPI-CSIS channel 1

config S5P_DEV_FIMC0
	bool
	help
	  Compile in platform device definitions for FIMC controller 0

config S5P_DEV_FIMC1
	bool
	help
	  Compile in platform device definitions for FIMC controller 1

config S5P_DEV_FIMC2
	bool
	help
	  Compile in platform device definitions for FIMC controller 2

config S5P_DEV_FIMC3
	bool
	help
	  Compile in platform device definitions for FIMC controller 3

config S5P_DEV_FIMD0
	bool
	help
	  Compile in platform device definitions for FIMD controller 0

config S5P_DEV_G2D
	bool
	help
	  Compile in platform device definitions for G2D device

config S5P_DEV_I2C_HDMIPHY
	bool
	help
	  Compile in platform device definitions for I2C HDMIPHY controller

config S5P_DEV_JPEG
	bool
	help
	  Compile in platform device definitions for JPEG codec

config S5P_DEV_MFC
	bool
	help
	  Compile in setup memory (init) code for MFC

config S5P_DEV_ONENAND
	bool
	help
	  Compile in platform device definition for OneNAND controller

config S5P_DEV_TV
	bool
	help
	  Compile in platform device definition for TV interface

config S5P_DEV_USB_EHCI
	bool
	help
	  Compile in platform device definition for USB EHCI

config S3C24XX_PWM
	bool "PWM device support"
	select PWM
	select PWM_SAMSUNG
	help
	  Support for exporting the PWM timer blocks via the pwm device
	  system

config S5P_SETUP_MIPIPHY
	bool
	help
	  Compile in common setup code for MIPI-CSIS and MIPI-DSIM devices

config S3C_SETUP_CAMIF
	bool
	help
	  Compile in common setup code for S3C CAMIF devices

# DMA

config S3C_DMA
	bool
	help
	  Internal configuration for S3C DMA core

config SAMSUNG_DMADEV
	bool
	select ARM_AMBA
	select DMADEVICES
	select PL330_DMA if (ARCH_EXYNOS5 || ARCH_EXYNOS4 || CPU_S5PV210 || CPU_S5PC100 || \
					CPU_S5P6450 || CPU_S5P6440)
	help
	  Use DMA device engine for PL330 DMAC.

comment "Power management"

config SAMSUNG_PM_DEBUG
	bool "S3C2410 PM Suspend debug"
	depends on PM
	select DEBUG_LL
	help
	  Say Y here if you want verbose debugging from the PM Suspend and
	  Resume code. See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>
	  for more information.

config S3C_PM_DEBUG_LED_SMDK
       bool "SMDK LED suspend/resume debugging"
       depends on PM && (MACH_SMDK6410)
       help
         Say Y here to enable the use of the SMDK LEDs on the baseboard
	 for debugging of the state of the suspend and resume process.

	 Note, this currently only works for S3C64XX based SMDK boards.

config SAMSUNG_PM_CHECK
	bool "S3C2410 PM Suspend Memory CRC"
	depends on PM && CRC32
	help
	  Enable the PM code's memory area checksum over sleep. This option
	  will generate CRCs of all blocks of memory, and store them before
	  going to sleep. The blocks are then checked on resume for any
	  errors.

	  Note, this can take several seconds depending on memory size
	  and CPU speed.

	  See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>

config SAMSUNG_PM_CHECK_CHUNKSIZE
	int "S3C2410 PM Suspend CRC Chunksize (KiB)"
	depends on PM && SAMSUNG_PM_CHECK
	default 64
	help
	  Set the chunksize in Kilobytes of the CRC for checking memory
	  corruption over suspend and resume. A smaller value will mean that
	  the CRC data block will take more memory, but wil identify any
	  faults with better precision.

	  See <file:Documentation/arm/Samsung-S3C24XX/Suspend.txt>

config SAMSUNG_WAKEMASK
	bool
	depends on PM
	help
	  Compile support for wakeup-mask controls found on the S3C6400
	  and above. This code allows a set of interrupt to wakeup-mask
	  mappings. See <plat/wakeup-mask.h>

config S5P_PM
	bool
	help
	  Common code for power management support on S5P and newer SoCs
	  Note: Do not select this for S5P6440 and S5P6450.

config S5P_SLEEP
	bool
	help
	  Internal config node to apply common S5P sleep management code.
	  Can be selected by S5P and newer SoCs with similar sleep procedure.

config DEBUG_S3C_UART
	depends on PLAT_SAMSUNG
	int
	default "0" if DEBUG_S3C_UART0
	default "1" if DEBUG_S3C_UART1
	default "2" if DEBUG_S3C_UART2
	default "3" if DEBUG_S3C_UART3

endif
