# Copyright 2007 Simtec Electronics
#
# Licensed under GPLv2

config CPU_S3C2440
	bool
	select CPU_ARM920T
	select S3C_GPIO_PULL_UP
	select S3C2410_CLOCK
	select S3C2410_PM if PM
	select S3C2410_GPIO
	select S3C2440_DMA if S3C2410_DMA
	select CPU_S3C244X
	select CPU_LLSERIAL_S3C2440
	help
	  Support for S3C2440 Samsung Mobile CPU based systems.

config CPU_S3C2442
	bool
	select CPU_ARM920T
	select S3C_GPIO_PULL_DOWN
	select S3C2410_CLOCK
	select S3C2410_GPIO
	select S3C2410_PM if PM
	select CPU_S3C244X
	select CPU_LLSERIAL_S3C2440
	help
	  Support for S3C2442 Samsung Mobile CPU based systems.

config CPU_S3C244X
	bool
	depends on CPU_S3C2440 || CPU_S3C2442
	help
	  Support for S3C2440 and S3C2442 Samsung Mobile CPU based systems.



config S3C2440_CPUFREQ
	bool "S3C2440/S3C2442 CPU Frequency scaling support"
	depends on CPU_FREQ_S3C24XX && (CPU_S3C2440 || CPU_S3C2442)
	select S3C2410_CPUFREQ_UTILS
	default y
	help
	  CPU Frequency scaling support for S3C2440 and S3C2442 SoC CPUs.

config S3C2440_XTAL_12000000
	bool
	help
	  Indicate that the build needs to support 12MHz system
	  crystal.

config S3C2440_XTAL_16934400
	bool
	help
	  Indicate that the build needs to support 16.9344MHz system
	  crystal.

config S3C2440_PLL_12000000
	bool
	depends on S3C2440_CPUFREQ && S3C2440_XTAL_12000000
	default y if CPU_FREQ_S3C24XX_PLL
	help
	  PLL tables for S3C2440 or S3C2442 CPUs with 12MHz crystals.

config S3C2440_PLL_16934400
	bool
	depends on S3C2440_CPUFREQ && S3C2440_XTAL_16934400
	default y if CPU_FREQ_S3C24XX_PLL
	help
	  PLL tables for S3C2440 or S3C2442 CPUs with 16.934MHz crystals.

config S3C2440_DMA
	bool
	depends on CPU_S3C2440
	help
	  Support for S3C2440 specific DMA code5A

menu "S3C2440 and S3C2442 Machines"

config MACH_ANUBIS
	bool "Simtec Electronics ANUBIS"
	select CPU_S3C2440
	select S3C24XX_DCLK
	select PM_SIMTEC if PM
	select HAVE_PATA_PLATFORM
	select S3C24XX_GPIO_EXTRA64
	select S3C2440_XTAL_12000000
	select S3C_DEV_USB_HOST
	help
	  Say Y here if you are using the Simtec Electronics ANUBIS
	  development system

config MACH_NEO1973_GTA02
	bool "Openmoko GTA02 / Freerunner phone"
	select CPU_S3C2442
	select MFD_PCF50633
	select PCF50633_GPIO
	select I2C
	select POWER_SUPPLY
	select MACH_NEO1973
	select S3C2410_PWM
	help
	   Say Y here if you are using the Openmoko GTA02 / Freerunner GSM Phone

config MACH_OSIRIS
	bool "Simtec IM2440D20 (OSIRIS) module"
	select CPU_S3C2440
	select S3C24XX_DCLK
	select PM_SIMTEC if PM
	select S3C24XX_GPIO_EXTRA128
	select S3C2440_XTAL_12000000
	select S3C2410_IOTIMING if S3C2440_CPUFREQ
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
	  Say Y here if you are using the Simtec IM2440D20 module, also
	  known as the Osiris.

config MACH_OSIRIS_DVS
	tristate "Simtec IM2440D20 (OSIRIS) Dynamic Voltage Scaling driver"
	depends on MACH_OSIRIS
	select TPS65010
	help
	  Say Y/M here if you want to have dynamic voltage scaling support
	  on the Simtec IM2440D20 (OSIRIS) module via the TPS65011.

	  The DVS driver alters the voltage supplied to the ARM core
	  depending on the frequency it is running at. The driver itself
	  does not do any of the frequency alteration, which is left up
	  to the cpufreq driver.

config MACH_RX3715
	bool "HP iPAQ rx3715"
	select CPU_S3C2440
	select S3C2440_XTAL_16934400
	select PM_H1940 if PM
	select S3C_DEV_NAND
	help
	  Say Y here if you are using the HP iPAQ rx3715.

config ARCH_S3C2440
	bool "SMDK2440"
	select CPU_S3C2440
	select S3C2440_XTAL_16934400
	select MACH_SMDK
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
	  Say Y here if you are using the SMDK2440.

config MACH_NEXCODER_2440
 	bool "NexVision NEXCODER 2440 Light Board"
 	select CPU_S3C2440
	select S3C2440_XTAL_12000000
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
 	  Say Y here if you are using the Nex Vision NEXCODER 2440 Light Board

config SMDK2440_CPU2440
	bool "SMDK2440 with S3C2440 CPU module"
	default y if ARCH_S3C2440
	select S3C2440_XTAL_16934400
	select CPU_S3C2440

config SMDK2440_CPU2442
	bool "SMDM2440 with S3C2442 CPU module"
	select CPU_S3C2442

config MACH_AT2440EVB
	bool "Avantech AT2440EVB development board"
	select CPU_S3C2440
	select S3C_DEV_USB_HOST
	select S3C_DEV_NAND
	help
	  Say Y here if you are using the AT2440EVB development board

config MACH_MINI2440
	bool "MINI2440 development board"
	select CPU_S3C2440
	select EEPROM_AT24
	select NEW_LEDS
	select LEDS_CLASS
	select LEDS_TRIGGER
	select LEDS_TRIGGER_BACKLIGHT
	select S3C_DEV_NAND
	select S3C_DEV_USB_HOST
	help
	  Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
	  available via various sources. It can come with a 3.5" or 7" touch LCD.

config MACH_RX1950
	bool "HP iPAQ rx1950"
	select CPU_S3C2442
	select S3C24XX_DCLK
	select PM_H1940 if PM
	select I2C
	select S3C2410_PWM
	select S3C_DEV_NAND
	select S3C2410_IOTIMING if S3C2440_CPUFREQ
	select S3C2440_XTAL_16934400
	help
	   Say Y here if you're using HP iPAQ rx1950

endmenu
