# Copyright 2007 Simtec Electronics
#
# Licensed under GPLv2

config CPU_S3C2412
	bool
	depends on ARCH_S3C2410
	select CPU_ARM926T
	select CPU_LLSERIAL_S3C2440
	select S3C2412_PM if PM
	select S3C2412_DMA if S3C2410_DMA
	select S3C2410_GPIO
	help
	  Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line

config CPU_S3C2412_ONLY
	bool
	depends on ARCH_S3C2410 && !CPU_S3C2400 && !CPU_S3C2410 && \
		   !CPU_S3C2416 && !CPU_S3C2440 && !CPU_S3C2442 && \
		   !CPU_S3C2443 && CPU_S3C2412
	default y if CPU_S3C2412

config S3C2412_DMA
	bool
	depends on CPU_S3C2412
	help
	  Internal config node for S3C2412 DMA support

config S3C2412_PM
	bool
	select S3C2412_PM_SLEEP
	help
	  Internal config node to apply S3C2412 power management

config S3C2412_PM_SLEEP
	bool
	help
	  Internal config node to apply sleep for S3C2412 power management.
	  Can be selected by another SoCs with similar sleep procedure.

# Note, the S3C2412 IOtiming support is in plat-s3c24xx

config S3C2412_CPUFREQ
	bool
	depends on CPU_FREQ_S3C24XX && CPU_S3C2412
	select S3C2412_IOTIMING
	default y
	help
	  CPU Frequency scaling support for S3C2412 and S3C2413 SoC CPUs.

menu "S3C2412 Machines"

config MACH_JIVE
	bool "Logitech Jive"
	select CPU_S3C2412
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
	  Say Y here if you are using the Logitech Jive.

config MACH_JIVE_SHOW_BOOTLOADER
	bool "Allow access to bootloader partitions in MTD"
	depends on MACH_JIVE && EXPERIMENTAL

config MACH_SMDK2413
	bool "SMDK2413"
	select CPU_S3C2412
	select MACH_S3C2413
	select MACH_SMDK
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
	  Say Y here if you are using an SMDK2413

config MACH_S3C2413
	bool
	help
	  Internal node for S3C2413 version of SMDK2413, so that
	  machine_is_s3c2413() will work when MACH_SMDK2413 is
	  selected

config MACH_SMDK2412
	bool "SMDK2412"
	select MACH_SMDK2413
	help
	  Say Y here if you are using an SMDK2412

	  Note, this shares support with SMDK2413, so will automatically
	  select MACH_SMDK2413.

config MACH_VSTMS
	bool "VMSTMS"
	select CPU_S3C2412
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
	  Say Y here if you are using an VSTMS board

endmenu
