if ARCH_OMAP1

menu "TI OMAP1 specific features"

comment "OMAP Core Type"
	depends on ARCH_OMAP1

config ARCH_OMAP730
	depends on ARCH_OMAP1
	bool "OMAP730 Based System"
	select ARCH_OMAP_OTG
	select CPU_ARM926T
	select OMAP_MPU_TIMER

config ARCH_OMAP850
	depends on ARCH_OMAP1
	bool "OMAP850 Based System"
	select ARCH_OMAP_OTG
	select CPU_ARM926T

config ARCH_OMAP15XX
	depends on ARCH_OMAP1
	default y
	bool "OMAP15xx Based System"
	select CPU_ARM925T
	select OMAP_MPU_TIMER

config ARCH_OMAP16XX
	depends on ARCH_OMAP1
	bool "OMAP16xx Based System"
	select ARCH_OMAP_OTG
	select CPU_ARM926T

config OMAP_MUX
	bool "OMAP multiplexing support"
	depends on ARCH_OMAP
	default y
	help
	  Pin multiplexing support for OMAP boards. If your bootloader
	  sets the multiplexing correctly, say N. Otherwise, or if unsure,
	  say Y.

config OMAP_MUX_DEBUG
	bool "Multiplexing debug output"
	depends on OMAP_MUX
	help
	  Makes the multiplexing functions print out a lot of debug info.
	  This is useful if you want to find out the correct values of the
	  multiplexing registers.

config OMAP_MUX_WARNINGS
	bool "Warn about pins the bootloader didn't set up"
	depends on OMAP_MUX
	default y
	help
	  Choose Y here to warn whenever driver initialization logic needs
	  to change the pin multiplexing setup.	 When there are no warnings
	  printed, it's safe to deselect OMAP_MUX for your product.

comment "OMAP Board Type"
	depends on ARCH_OMAP1

config MACH_OMAP_INNOVATOR
	bool "TI Innovator"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX)
	help
          TI OMAP 1510 or 1610 Innovator board support. Say Y here if you
          have such a board.

config MACH_OMAP_H2
	bool "TI H2 Support"
	depends on ARCH_OMAP1 && ARCH_OMAP16XX
    	help
	  TI OMAP 1610/1611B H2 board support. Say Y here if you have such
	  a board.

config MACH_OMAP_H3
	bool "TI H3 Support"
	depends on ARCH_OMAP1 && ARCH_OMAP16XX
    	help
	  TI OMAP 1710 H3 board support. Say Y here if you have such
	  a board.

config MACH_HERALD
	bool "HTC Herald"
	depends on ARCH_OMAP850
	help
	  HTC Herald smartphone support (AKA T-Mobile Wing, ...)

config MACH_OMAP_OSK
	bool "TI OSK Support"
	depends on ARCH_OMAP1 && ARCH_OMAP16XX
    	help
	  TI OMAP 5912 OSK (OMAP Starter Kit) board support. Say Y here
          if you have such a board.

config OMAP_OSK_MISTRAL
	bool "Mistral QVGA board Support"
	depends on MACH_OMAP_OSK
    	help
	  The OSK supports an optional add-on board with a Quarter-VGA
	  touchscreen, PDA-ish buttons, a resume button, bicolor LED,
	  and camera connector.  Say Y here if you have this board.

config MACH_OMAP_PERSEUS2
	bool "TI Perseus2"
	depends on ARCH_OMAP1 && ARCH_OMAP730
    	help
	  Support for TI OMAP 730 Perseus2 board. Say Y here if you have such
	  a board.

config MACH_OMAP_FSAMPLE
	bool "TI F-Sample"
	depends on ARCH_OMAP1 && ARCH_OMAP730
    	help
	  Support for TI OMAP 850 F-Sample board. Say Y here if you have such
	  a board.

config MACH_OMAP_PALMTE
	bool "Palm Tungsten E"
	depends on ARCH_OMAP1 && ARCH_OMAP15XX
	help
	  Support for the Palm Tungsten E PDA.  To boot the kernel, you'll
	  need a PalmOS compatible bootloader; check out
	  http://palmtelinux.sourceforge.net/ for more information.
	  Say Y here if you have this PDA model, say N otherwise.

config MACH_OMAP_PALMZ71
	bool "Palm Zire71"
	depends on ARCH_OMAP1 && ARCH_OMAP15XX
	help
	 Support for the Palm Zire71 PDA. To boot the kernel,
	 you'll need a PalmOS compatible bootloader; check out
	 http://hackndev.com/palm/z71 for more information.
	 Say Y here if you have such a PDA, say N otherwise.

config MACH_OMAP_PALMTT
	bool "Palm Tungsten|T"
	depends on ARCH_OMAP1 && ARCH_OMAP15XX
	help
	  Support for the Palm Tungsten|T PDA. To boot the kernel, you'll
	  need a PalmOS compatible bootloader (Garux); check out
	  http://garux.sourceforge.net/ for more information.
	  Say Y here if you have this PDA model, say N otherwise.

config MACH_SX1
	bool "Siemens SX1"
	depends on ARCH_OMAP1 && ARCH_OMAP15XX
	select I2C
	help
	  Support for the Siemens SX1 phone. To boot the kernel,
	  you'll need a SX1 compatible bootloader; check out
	  http://forum.oslik.ru and
	  http://www.handhelds.org/moin/moin.cgi/SiemensSX1
	  for more information.
	  Say Y here if you have such a phone, say NO otherwise.

config MACH_NOKIA770
	bool "Nokia 770"
	depends on ARCH_OMAP1 && ARCH_OMAP16XX
	help
	  Support for the Nokia 770 Internet Tablet. Say Y here if you
	  have such a device.

config MACH_AMS_DELTA
	bool "Amstrad E3 (Delta)"
	depends on ARCH_OMAP1 && ARCH_OMAP15XX
	select FIQ
	select GPIO_GENERIC_PLATFORM
	select LEDS_GPIO_REGISTER
	select REGULATOR
	select REGULATOR_FIXED_VOLTAGE
	help
	  Support for the Amstrad E3 (codename Delta) videophone. Say Y here
	  if you have such a device.

config MACH_OMAP_GENERIC
	bool "Generic OMAP board"
	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX)
	help
          Support for generic OMAP-1510, 1610 or 1710 board with
          no FPGA. Can be used as template for porting Linux to
          custom OMAP boards. Say Y here if you have a custom
          board.

endmenu

endif
