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_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.

endmenu

endif
