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 GENERIC_CLOCKEVENTS

config ARCH_OMAP2
	bool "TI OMAP2"

endchoice

comment "OMAP Feature Selections"

config OMAP_DEBUG_LEDS
	bool
	help
	  For debug card leds on TI reference boards.

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.

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
	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 and 24XX.

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
	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 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
