# arch/arm/mach-s3c2410/Kconfig
#
# Copyright 2007 Simtec Electronics
#
# Licensed under GPLv2

config CPU_S3C2410
	bool
	depends on ARCH_S3C2410
	select S3C2410_CLOCK
	select S3C2410_GPIO
	select CPU_LLSERIAL_S3C2410
	select S3C2410_PM if PM
	help
	  Support for S3C2410 and S3C2410A family from the S3C24XX line
	  of Samsung Mobile CPUs.

config CPU_S3C2410_DMA
	bool
	depends on S3C2410_DMA && (CPU_S3C2410 || CPU_S3C2442)
	default y if CPU_S3C2410 || CPU_S3C2442
	help
	  DMA device selection for S3C2410 and compatible CPUs

config S3C2410_PM
	bool
	help
	  Power Management code common to S3C2410 and better

config S3C2410_GPIO
	bool
	help
	  GPIO code for S3C2410 and similar processors

config S3C2410_CLOCK
	bool
	help
	  Clock code for the S3C2410, and similar processors

config SIMTEC_NOR
	bool
	help
	  Internal node to specify machine has simtec NOR mapping

config MACH_BAST_IDE
	bool
	select HAVE_PATA_PLATFORM
	help
	  Internal node for machines with an BAST style IDE
	  interface

menu "S3C2410 Machines"

config ARCH_SMDK2410
	bool "SMDK2410/A9M2410"
	select CPU_S3C2410
	select MACH_SMDK
	help
	   Say Y here if you are using the SMDK2410 or the derived module A9M2410
           <http://www.fsforth.de>

config ARCH_H1940
	bool "IPAQ H1940"
	select CPU_S3C2410
	select PM_H1940 if PM
	help
	  Say Y here if you are using the HP IPAQ H1940

config PM_H1940
	bool
	help
	  Internal node for H1940 and related PM

config MACH_N30
	bool "Acer N30 family"
	select CPU_S3C2410
	help
	  Say Y here if you want suppt for the Acer N30, Acer N35,
	  Navman PiN570, Yakumo AlphaX or Airis NC05 PDAs.

config ARCH_BAST
	bool "Simtec Electronics BAST (EB2410ITX)"
	select CPU_S3C2410
	select PM_SIMTEC if PM
	select SIMTEC_NOR
	select MACH_BAST_IDE
	select ISA
	help
	  Say Y here if you are using the Simtec Electronics EB2410ITX
	  development board (also known as BAST)

config MACH_OTOM
 	bool "NexVision OTOM Board"
 	select CPU_S3C2410
	help
 	  Say Y here if you are using the Nex Vision OTOM board

config MACH_AML_M5900
	bool "AML M5900 Series"
	select CPU_S3C2410
	select PM_SIMTEC if PM
	help
	   Say Y here if you are using the American Microsystems M5900 Series
           <http://www.amltd.com>

config BAST_PC104_IRQ
	bool "BAST PC104 IRQ support"
	depends on ARCH_BAST
	default y
	help
	  Say Y	here to enable the PC104 IRQ routing on the
	  Simtec BAST (EB2410ITX)

config MACH_TCT_HAMMER
	bool "TCT Hammer Board"
	select CPU_S3C2410
	help
	   Say Y here if you are using the TinCanTools Hammer Board
           <http://www.tincantools.com>

config MACH_VR1000
	bool "Thorcom VR1000"
	select PM_SIMTEC if PM
	select SIMTEC_NOR
	select MACH_BAST_IDE
	select CPU_S3C2410
	help
	  Say Y here if you are using the Thorcom VR1000 board.

config MACH_QT2410
	bool "QT2410"
	select CPU_S3C2410
	help
	   Say Y here if you are using the Armzone QT2410

endmenu
