# 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
	help
	  Internal config node to apply S3C2412 power management

# 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
