if ARCH_SA1100

menu "SA11x0 Implementations"

config SA1100_ASSABET
	bool "Assabet"
	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"
	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"
	select SHARP_LOCOMO
	select SHARP_SCOOP
	select SHARP_PARAM
	help
	  Say Y here to support the Sharp Zaurus SL5500 PDAs.

config SA1100_H3100
	bool "Compaq iPAQ H3100"
	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>
	  <http://www.compaq.com/products/handhelds/pocketpc/>

config SA1100_H3600
	bool "Compaq iPAQ H3600/H3700"
	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>
	  <http://www.compaq.com/products/handhelds/pocketpc/>

config SA1100_H3800
	bool "Compaq iPAQ H3800"
	help
	  Say Y here if you intend to run this kernel on the Compaq iPAQ H3800
	  series 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_H3800>
	  <http://www.compaq.com/products/handhelds/pocketpc/>

config SA1100_H3XXX
	bool
	depends on SA1100_H3100 || SA1100_H3600 || SA1100_H3800
	default y

config SA1100_BADGE4
	bool "HP Labs BadgePAD 4"
	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"
	select SA1111
	help
	  Say Y here if you want to build a kernel for the HP Jornada 720
	  handheld computer.  See <http://www.hp.com/jornada/products/720>
	  for details.

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

config SA1100_LART
	bool "LART"
	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_PLEB
	bool "PLEB"
	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"
	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"
	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.my-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, or Jornada
	  720 touchscreen support.

config H3600_SLEEVE
	tristate "Compaq iPAQ Handheld sleeve support"
	depends on SA1100_H3100 || SA1100_H3600
	help
	  Choose this option to enable support for extension packs (sleeves)
	  for the Compaq iPAQ H3XXX series of handheld computers.  This option
	  is required for the CF, PCMCIA, Bluetooth and GSM/GPRS extension
	  packs.

endmenu

endif
