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_JORNADA720_SSP
	bool "HP Jornada 720 Extended SSP driver"
	select SA1100_SSP
	depends on SA1100_JORNADA720
	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"
	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.

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
