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
	select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4
	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
	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
	select USE_OF
	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

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

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 board"
	depends on ARCH_OMAP3
	default y
	select OMAP_PACKAGE_CBB

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

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

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

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

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 (BROKEN)"
	depends on ARCH_OMAP4 && BROKEN
	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
