# SPDX-License-Identifier: GPL-2.0-only
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
	select OMAP_DM_TIMER

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
