if ARCH_SA1100

menu "SA11x0 Implementations"

config SA1100_ASSABET
	bool "Assabet"
	select ARM_SA1110_CPUFREQ
	help
	  Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
	  Microprocessor Development Board (also known as the Assabet).

config ASSABET_NEPONSET
	bool "Include support for Neponset"
	depends on SA1100_ASSABET
	select SA1111
	help
	  Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
	  Microprocessor Development Board (Assabet)  with the SA-1111
	  Development Board (Nepon).

config SA1100_CERF
	bool "CerfBoard"
	select ARM_SA1110_CPUFREQ
	help
	  The Intrinsyc CerfBoard is based on the StrongARM 1110 (Discontinued).
	  More information is available at:
	  <http://www.intrinsyc.com/products/cerfboard/>.

	  Say Y if configuring for an Intrinsyc CerfBoard.
	  Say N otherwise.

choice
	prompt "Cerf Flash available"
	depends on SA1100_CERF
	default SA1100_CERF_FLASH_8MB

config SA1100_CERF_FLASH_8MB
	bool "8MB"

config SA1100_CERF_FLASH_16MB
	bool "16MB"

config SA1100_CERF_FLASH_32MB
	bool "32MB"

endchoice

config SA1100_COLLIE
	bool "Sharp Zaurus SL5500"
	# FIXME: select ARM_SA11x0_CPUFREQ
	select SHARP_LOCOMO
	select SHARP_PARAM
	select SHARP_SCOOP
	help
	  Say Y here to support the Sharp Zaurus SL5500 PDAs.

config SA1100_H3100
	bool "Compaq iPAQ H3100"
	select ARM_SA1110_CPUFREQ
	select HTC_EGPIO
	select MFD_IPAQ_MICRO
	help
	  Say Y here if you intend to run this kernel on the Compaq iPAQ
	  H3100 handheld computer.  Information about this machine and the
	  Linux port to this machine can be found at:

	  <http://www.handhelds.org/Compaq/index.html#iPAQ_H3100>

config SA1100_H3600
	bool "Compaq iPAQ H3600/H3700"
	select ARM_SA1110_CPUFREQ
	select HTC_EGPIO
	select MFD_IPAQ_MICRO
	help
	  Say Y here if you intend to run this kernel on the Compaq iPAQ
	  H3600 handheld computer.  Information about this machine and the
	  Linux port to this machine can be found at:

	  <http://www.handhelds.org/Compaq/index.html#iPAQ_H3600>

config SA1100_BADGE4
	bool "HP Labs BadgePAD 4"
	select ARM_SA1100_CPUFREQ
	select SA1111
	help
	  Say Y here if you want to build a kernel for the HP Laboratories
	  BadgePAD 4.

config SA1100_JORNADA720
	bool "HP Jornada 720"
	# FIXME: select ARM_SA11x0_CPUFREQ
	select SA1111
	help
	  Say Y here if you want to build a kernel for the HP Jornada 720
	  handheld computer.  See 
	  <http://h10025.www1.hp.com/ewfrf/wc/product?product=61677&cc=us&lc=en&dlc=en&product=61677#> 

config SA1100_JORNADA720_SSP
	bool "HP Jornada 720 Extended SSP driver"
	depends on SA1100_JORNADA720
	select SA1100_SSP
	help
	  Say Y here if you have a HP Jornada 7xx handheld computer and you
	  want to access devices connected to the MCU. Those include the
	  keyboard, touchscreen, backlight and battery. This driver also activates
	  the generic SSP which it extends.

config SA1100_HACKKIT
	bool "HackKit Core CPU Board"
	select ARM_SA1100_CPUFREQ
	help
	  Say Y here to support the HackKit Core CPU Board
	  <http://hackkit.eletztrick.de>;

config SA1100_LART
	bool "LART"
	select ARM_SA1100_CPUFREQ
	help
	  Say Y here if you are using the Linux Advanced Radio Terminal
	  (also known as the LART).  See <http://www.lartmaker.nl/> for
	  information on the LART.

config SA1100_NANOENGINE
	bool "nanoEngine"
	select ARM_SA1110_CPUFREQ
	select PCI
	select PCI_NANOENGINE
	help
	  Say Y here if you are using the Bright Star Engineering nanoEngine.
	  See <http://www.brightstareng.com/arm/nanoeng.htm> for information
	  on the BSE nanoEngine.

config SA1100_PLEB
	bool "PLEB"
	select ARM_SA1100_CPUFREQ
	help
	  Say Y here if you are using version 1 of the Portable Linux
	  Embedded Board (also known as PLEB).
	  See <http://www.disy.cse.unsw.edu.au/Hardware/PLEB/>
	  for more information.

config SA1100_SHANNON
	bool "Shannon"
	select ARM_SA1100_CPUFREQ
	help
	  The Shannon (also known as a Tuxscreen, and also as a IS2630) was a
	  limited edition webphone produced by Philips. The Shannon is a SA1100
	  platform with a 640x480 LCD, touchscreen, CIR keyboard, PCMCIA slots,
	  and a telco interface.

config SA1100_SIMPAD
	bool "Simpad"
	select ARM_SA1110_CPUFREQ
	help
	  The SIEMENS webpad SIMpad is based on the StrongARM 1110. There
	  are two different versions CL4 and SL4. CL4 has 32MB RAM and 16MB
	  FLASH. The SL4 version got 64 MB RAM and 32 MB FLASH and a
	  PCMCIA-Slot. The version for the Germany Telecom (DTAG) is the same
	  like CL4 in additional it has a PCMCIA-Slot. For more information
	  visit <http://www.usa.siemens.com/> or <http://www.siemens.ch/>.

config SA1100_SSP
	tristate "Generic PIO SSP"
	help
	  Say Y here to enable support for the generic PIO SSP driver.
	  This isn't for audio support, but for attached sensors and
	  other devices, eg for BadgePAD 4 sensor support.

endmenu

endif

