if ARCH_OMAP2PLUS

menu "TI OMAP2/3/4 Specific Features"

config ARCH_OMAP2PLUS_TYPICAL
	bool "Typical OMAP configuration"
	default y
	select AEABI
	select REGULATOR
	select PM_RUNTIME
	select VFP
	select NEON if ARCH_OMAP3 || ARCH_OMAP4
	select SERIAL_OMAP
	select SERIAL_OMAP_CONSOLE
	select I2C
	select I2C_OMAP
	select MENELAUS if ARCH_OMAP2
	select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
	select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4
	help
	  Compile a kernel suitable for booting most boards

config ARCH_OMAP2
	bool "TI OMAP2"
	depends on ARCH_OMAP2PLUS
	default y
	select CPU_V6
	select MULTI_IRQ_HANDLER

config ARCH_OMAP3
	bool "TI OMAP3"
	depends on ARCH_OMAP2PLUS
	default y
	select CPU_V7
	select USB_ARCH_HAS_EHCI if USB_SUPPORT
	select ARCH_HAS_OPP
	select PM_OPP if PM
	select ARM_CPU_SUSPEND if PM
	select MULTI_IRQ_HANDLER

config ARCH_OMAP4
	bool "TI OMAP4"
	default y
	depends on ARCH_OMAP2PLUS
	select CACHE_L2X0
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
	select LOCAL_TIMERS if SMP
	select PL310_ERRATA_588369
	select PL310_ERRATA_727915
	select ARM_ERRATA_720789
	select ARCH_HAS_OPP
	select PM_OPP if PM
	select USB_ARCH_HAS_EHCI if USB_SUPPORT
	select ARM_CPU_SUSPEND if PM

comment "OMAP Core Type"
	depends on ARCH_OMAP2

config SOC_OMAP2420
	bool "OMAP2420 support"
	depends on ARCH_OMAP2
	default y
	select OMAP_DM_TIMER
	select ARCH_OMAP_OTG

config SOC_OMAP2430
	bool "OMAP2430 support"
	depends on ARCH_OMAP2
	default y
	select ARCH_OMAP_OTG

config SOC_OMAP3430
	bool "OMAP3430 support"
	depends on ARCH_OMAP3
	default y
	select ARCH_OMAP_OTG

config SOC_OMAPTI81XX
	bool "TI81XX support"
	depends on ARCH_OMAP3
	default y

config SOC_OMAPAM33XX
	bool "AM33XX support"
	depends on ARCH_OMAP3
	default y

config OMAP_PACKAGE_ZAF
       bool

config OMAP_PACKAGE_ZAC
       bool

config OMAP_PACKAGE_CBC
       bool

config OMAP_PACKAGE_CBB
       bool

config OMAP_PACKAGE_CUS
       bool

config OMAP_PACKAGE_CBP
       bool

config OMAP_PACKAGE_CBL
       bool

config OMAP_PACKAGE_CBS
       bool

comment "OMAP Board Type"
	depends on ARCH_OMAP2PLUS

config MACH_OMAP_GENERIC
	bool "Generic OMAP2+ board"
	depends on ARCH_OMAP2PLUS
	default y
	help
	  Support for generic TI OMAP2+ boards using Flattened Device Tree.
	  More information at Documentation/devicetree

config MACH_OMAP2_TUSB6010
	bool
	depends on ARCH_OMAP2 && SOC_OMAP2420
	default y if MACH_NOKIA_N8X0

config MACH_OMAP_H4
	bool "OMAP 2420 H4 board"
	depends on SOC_OMAP2420
	default y
	select OMAP_PACKAGE_ZAF
	select OMAP_DEBUG_DEVICES

config MACH_OMAP_APOLLON
	bool "OMAP 2420 Apollon board"
	depends on SOC_OMAP2420
	default y
	select OMAP_PACKAGE_ZAC

config MACH_OMAP_2430SDP
	bool "OMAP 2430 SDP board"
	depends on SOC_OMAP2430
	default y
	select OMAP_PACKAGE_ZAC

config MACH_OMAP3_BEAGLE
	bool "OMAP3 BEAGLE board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_DEVKIT8000
	bool "DEVKIT8000 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CUS

config MACH_OMAP_LDP
	bool "OMAP3 LDP board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_OMAP3530_LV_SOM
	bool "OMAP3 Logic 3530 LV SOM board"
	depends on ARCH_OMAP3
	select OMAP_PACKAGE_CBB
	default y
	help
	 Support for the LogicPD OMAP3530 SOM Development kit
	 for full description please see the products webpage at
	 http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%84%A2-omap35x-development-kit

config MACH_OMAP3_TORPEDO
	bool "OMAP3 Logic 35x Torpedo board"
	depends on ARCH_OMAP3
	select OMAP_PACKAGE_CBB
	default y
	help
	 Support for the LogicPD OMAP35x Torpedo Development kit
	 for full description please see the products webpage at
	 http://www.logicpd.com/products/development-kits/zoom-omap35x-torpedo-development-kit

config MACH_OVERO
	bool "Gumstix Overo board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_OMAP3EVM
	bool "OMAP 3530 EVM board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_OMAP3517EVM
	bool "OMAP3517/ AM3517 EVM board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_CRANEBOARD
	bool "AM3517/05 CRANE board"
	depends on ARCH_OMAP3
	select OMAP_PACKAGE_CBB

config MACH_OMAP3_PANDORA
	bool "OMAP3 Pandora"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

config MACH_OMAP3_TOUCHBOOK
	bool "OMAP3 Touch Book"
	depends on ARCH_OMAP3
	default y

config MACH_OMAP_3430SDP
	bool "OMAP 3430 SDP board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_NOKIA_N800
       bool

config MACH_NOKIA_N810
       bool

config MACH_NOKIA_N810_WIMAX
       bool

config MACH_NOKIA_N8X0
	bool "Nokia N800/N810"
	depends on SOC_OMAP2420
	default y
	select OMAP_PACKAGE_ZAC
	select MACH_NOKIA_N800
	select MACH_NOKIA_N810
	select MACH_NOKIA_N810_WIMAX

config MACH_NOKIA_RM680
	bool "Nokia RM-680/696 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB
	select MACH_NOKIA_RM696

config MACH_NOKIA_RX51
	bool "Nokia RX-51 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_OMAP_ZOOM2
	bool "OMAP3 Zoom2 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB
	select SERIAL_8250
	select SERIAL_CORE_CONSOLE
	select SERIAL_8250_CONSOLE
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

config MACH_OMAP_ZOOM3
	bool "OMAP3630 Zoom3 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBP
	select SERIAL_8250
	select SERIAL_CORE_CONSOLE
	select SERIAL_8250_CONSOLE
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

config MACH_CM_T35
	bool "CompuLab CM-T35/CM-T3730 modules"
	depends on ARCH_OMAP3
	default y
	select MACH_CM_T3730
	select OMAP_PACKAGE_CUS

config MACH_CM_T3517
	bool "CompuLab CM-T3517 module"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_CM_T3730
       bool

config MACH_IGEP0020
	bool "IGEP v2 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

config MACH_IGEP0030
	bool "IGEP OMAP3 module"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB
	select MACH_IGEP0020

config MACH_SBC3530
	bool "OMAP3 SBC STALKER board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CUS

config MACH_OMAP_3630SDP
	bool "OMAP3630 SDP board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBP

config MACH_TI8168EVM
	bool "TI8168 Evaluation Module"
	depends on SOC_OMAPTI81XX
	default y

config MACH_TI8148EVM
	bool "TI8148 Evaluation Module"
	depends on SOC_OMAPTI81XX
	default y

config MACH_OMAP_4430SDP
	bool "OMAP 4430 SDP board"
	default y
	depends on ARCH_OMAP4
	select OMAP_PACKAGE_CBL
	select OMAP_PACKAGE_CBS
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

config MACH_OMAP4_PANDA
	bool "OMAP4 Panda Board"
	default y
	depends on ARCH_OMAP4
	select OMAP_PACKAGE_CBL
	select OMAP_PACKAGE_CBS
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

config OMAP3_EMU
	bool "OMAP3 debugging peripherals"
	depends on ARCH_OMAP3
	select ARM_AMBA
	select OC_ETM
	help
	  Say Y here to enable debugging hardware of omap3

config OMAP3_SDRC_AC_TIMING
	bool "Enable SDRC AC timing register changes"
	depends on ARCH_OMAP3
	default n
	help
	  If you know that none of your system initiators will attempt to
	  access SDRAM during CORE DVFS, select Y here.  This should boost
	  SDRAM performance at lower CORE OPPs.  There are relatively few
	  users who will wish to say yes at this point - almost everyone will
	  wish to say no.  Selecting yes without understanding what is
	  going on could result in system crashes;

config OMAP4_ERRATA_I688
	bool "OMAP4 errata: Async Bridge Corruption"
	depends on ARCH_OMAP4
	select ARCH_HAS_BARRIERS
	help
	  If a data is stalled inside asynchronous bridge because of back
	  pressure, it may be accepted multiple times, creating pointer
	  misalignment that will corrupt next transfers on that data path
	  until next reset of the system (No recovery procedure once the
	  issue is hit, the path remains consistently broken). Async bridge
	  can be found on path between MPU to EMIF and MPU to L3 interconnect.
	  This situation can happen only when the idle is initiated by a
	  Master Request Disconnection (which is trigged by software when
	  executing WFI on CPU).
	  The work-around for this errata needs all the initiators connected
	  through async bridge must ensure that data path is properly drained
	  before issuing WFI. This condition will be met if one Strongly ordered
	  access is performed to the target right before executing the WFI.
	  In MPU case, L3 T2ASYNC FIFO and DDR T2ASYNC FIFO needs to be drained.
	  IO barrier ensure that there is no synchronisation loss on initiators
	  operating on both interconnect port simultaneously.
endmenu

endif
