if ARCH_OMAP

menu "TI OMAP Implementations"

config ARCH_OMAP_OTG
	bool

choice
	prompt "OMAP System Type"
	default ARCH_OMAP1

config ARCH_OMAP1
	bool "TI OMAP1"
	select COMMON_CLKDEV

config ARCH_OMAP2
	bool "TI OMAP2"
	select CPU_V6
	select COMMON_CLKDEV

config ARCH_OMAP3
	bool "TI OMAP3"
	select CPU_V7
	select COMMON_CLKDEV

config ARCH_OMAP4
	bool "TI OMAP4"
	select CPU_V7
	select ARM_GIC

endchoice

comment "OMAP Feature Selections"

config OMAP_DEBUG_DEVICES
	bool
	help
	  For debug cards on TI reference boards.

config OMAP_DEBUG_LEDS
	bool
	depends on OMAP_DEBUG_DEVICES
	default y if LEDS || LEDS_OMAP_DEBUG

config OMAP_DEBUG_POWERDOMAIN
	bool "Emit debug messages from powerdomain layer"
	depends on ARCH_OMAP2 || ARCH_OMAP3
	help
	  Say Y here if you want to compile in powerdomain layer
	  debugging messages for OMAP2/3.   These messages can
	  provide more detail as to why some powerdomain calls
	  may be failing, and will also emit a descriptive message
	  for every powerdomain register write.  However, the
	  extra detail costs some memory.

config OMAP_DEBUG_CLOCKDOMAIN
	bool "Emit debug messages from clockdomain layer"
	depends on ARCH_OMAP2 || ARCH_OMAP3
	help
	  Say Y here if you want to compile in clockdomain layer
	  debugging messages for OMAP2/3.   These messages can
	  provide more detail as to why some clockdomain calls
	  may be failing, and will also emit a descriptive message
	  for every clockdomain register write.  However, the
	  extra detail costs some memory.

config OMAP_RESET_CLOCKS
	bool "Reset unused clocks during boot"
	depends on ARCH_OMAP
	help
	  Say Y if you want to reset unused clocks during boot.
	  This option saves power, but assumes all drivers are
	  using the clock framework. Broken drivers that do not
	  yet use clock framework may not work with this option.
	  If you are booting from another operating system, you
	  probably do not want this option enabled until your
	  device drivers work properly.

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.

config OMAP_MCBSP
	bool "McBSP support"
	depends on ARCH_OMAP
	default y
	help
	  Say Y here if you want support for the OMAP Multichannel
	  Buffered Serial Port.

config OMAP_MBOX_FWK
	tristate "Mailbox framework support"
	depends on ARCH_OMAP
	help
	  Say Y here if you want to use OMAP Mailbox framework support for
	  DSP, IVA1.0 and IVA2 in OMAP1/2/3.

config OMAP_IOMMU
	tristate

choice
        prompt "System timer"
	default OMAP_MPU_TIMER

config OMAP_MPU_TIMER
	bool "Use mpu timer"
	help
	  Select this option if you want to use the OMAP mpu timer. This
	  timer provides more intra-tick resolution than the 32KHz timer,
	  but consumes more power.

config OMAP_32K_TIMER
	bool "Use 32KHz timer"
	depends on ARCH_OMAP16XX || ARCH_OMAP24XX || ARCH_OMAP34XX || ARCH_OMAP4
	help
	  Select this option if you want to enable the OMAP 32KHz timer.
	  This timer saves power compared to the OMAP_MPU_TIMER, and has
	  support for no tick during idle. The 32KHz timer provides less
	  intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
	  currently only available for OMAP16XX, 24XX, 34XX and OMAP4.

endchoice

config OMAP_32K_TIMER_HZ
       int "Kernel internal timer frequency for 32KHz timer"
       range 32 1024
       depends on OMAP_32K_TIMER
       default "128"
       help
	  Kernel internal timer frequency should be a divisor of 32768,
	  such as 64 or 128.

config OMAP_DM_TIMER
	bool "Use dual-mode timer"
	depends on ARCH_OMAP16XX || ARCH_OMAP24XX || ARCH_OMAP34XX || ARCH_OMAP4
	help
	 Select this option if you want to use OMAP Dual-Mode timers.

choice
	prompt "Low-level debug console UART"
	depends on ARCH_OMAP
	default OMAP_LL_DEBUG_UART1

config OMAP_LL_DEBUG_UART1
	bool "UART1"

config OMAP_LL_DEBUG_UART2
	bool "UART2"

config OMAP_LL_DEBUG_UART3
	bool "UART3"

endchoice

config OMAP_SERIAL_WAKE
	bool "Enable wake-up events for serial ports"
	depends on ARCH_OMAP1 && OMAP_MUX
	default y
	help
	  Select this option if you want to have your system wake up
	  to data on the serial RX line. This allows you to wake the
	  system from serial console.

endmenu

endif
