if ARCH_DAVINCI

config AINTC
	bool

config CP_INTC
	bool

config ARCH_DAVINCI_DMx
	bool

menu "TI DaVinci Implementations"

comment "DaVinci Core Type"

config ARCH_DAVINCI_DM644x
	bool "DaVinci 644x based system"
	select AINTC
	select ARCH_DAVINCI_DMx

config ARCH_DAVINCI_DM355
        bool "DaVinci 355 based system"
	select AINTC
	select ARCH_DAVINCI_DMx

config ARCH_DAVINCI_DM646x
        bool "DaVinci 646x based system"
	select AINTC
	select ARCH_DAVINCI_DMx

config ARCH_DAVINCI_DA830
        bool "DA830/OMAP-L137 based system"
	select CP_INTC
	select ARCH_DAVINCI_DA8XX
	select CPU_DCACHE_WRITETHROUGH # needed on silicon revs 1.0, 1.1

config ARCH_DAVINCI_DA850
	bool "DA850/OMAP-L138 based system"
	select CP_INTC
	select ARCH_DAVINCI_DA8XX
	select ARCH_HAS_CPUFREQ

config ARCH_DAVINCI_DA8XX
	bool

config ARCH_DAVINCI_DM365
	bool "DaVinci 365 based system"
	select AINTC
	select ARCH_DAVINCI_DMx

comment "DaVinci Board Type"

config MACH_DAVINCI_EVM
	bool "TI DM644x EVM"
	default ARCH_DAVINCI_DM644x
	depends on ARCH_DAVINCI_DM644x
	help
	  Configure this option to specify the whether the board used
	  for development is a DM644x EVM

config MACH_SFFSDR
	bool "Lyrtech SFFSDR"
	depends on ARCH_DAVINCI_DM644x
	help
	  Say Y here to select the Lyrtech Small Form Factor
	  Software Defined Radio (SFFSDR) board.

config MACH_DAVINCI_DM355_EVM
	bool "TI DM355 EVM"
	default ARCH_DAVINCI_DM355
	depends on ARCH_DAVINCI_DM355
	help
	  Configure this option to specify the whether the board used
	  for development is a DM355 EVM

config MACH_DM355_LEOPARD
	bool "DM355 Leopard board"
	depends on ARCH_DAVINCI_DM355
	help
	  Configure this option to specify the whether the board used
	  for development is a DM355 Leopard board.

config MACH_DAVINCI_DM6467_EVM
	bool "TI DM6467 EVM"
	default ARCH_DAVINCI_DM646x
	depends on ARCH_DAVINCI_DM646x
	help
	  Configure this option to specify the whether the board used
	  for development is a DM6467 EVM

config MACH_DAVINCI_DM365_EVM
	bool "TI DM365 EVM"
	default ARCH_DAVINCI_DM365
	depends on ARCH_DAVINCI_DM365
	help
	  Configure this option to specify whether the board used
	  for development is a DM365 EVM

config MACH_DAVINCI_DA830_EVM
	bool "TI DA830/OMAP-L137 Reference Platform"
	default ARCH_DAVINCI_DA830
	depends on ARCH_DAVINCI_DA830
	select GPIO_PCF857X
	help
	  Say Y here to select the TI DA830/OMAP-L137 Evaluation Module.

choice
	prompt "Select DA830/OMAP-L137 UI board peripheral"
	depends on MACH_DAVINCI_DA830_EVM
	help
	  The presence of UI card on the DA830/OMAP-L137 EVM is detected
	  automatically based on successful probe of the I2C based GPIO
	  expander on that board. This option selected in this menu has
	  an effect only in case of a successful UI card detection.

config DA830_UI_LCD
	bool "LCD"
	help
	  Say Y here to use the LCD as a framebuffer or simple character
	  display.

config DA830_UI_NAND
	bool "NAND flash"
	help
	  Say Y here to use the NAND flash.  Do not forget to setup
	  the switch correctly.
endchoice

config MACH_DAVINCI_DA850_EVM
	bool "TI DA850/OMAP-L138 Reference Platform"
	default ARCH_DAVINCI_DA850
	depends on ARCH_DAVINCI_DA850
	help
	  Say Y here to select the TI DA850/OMAP-L138 Evaluation Module.

config DA850_UI_EXP
	bool "DA850/OMAP-L138 UI (User Interface) board expander configuration"
	depends on MACH_DAVINCI_DA850_EVM
	select GPIO_PCA953X
	help
	  Say Y here if you have the DA850/OMAP-L138 UI
	  (User Interface) board installed and you want to
	  enable the peripherals located on User Interface
	  board contorlled by TCA6416 expander.

choice
	prompt "Select peripherals connected to expander on UI board"
	depends on DA850_UI_EXP

config DA850_UI_NONE
	bool "No peripheral is enabled"
	help
	  Say Y if you do not want to enable any of the peripherals connected
	  to TCA6416 expander on DA850/OMAP-L138 EVM UI card

config DA850_UI_RMII
	bool "RMII Ethernet PHY"
	help
	  Say Y if you want to use the RMII PHY on the DA850/OMAP-L138 EVM.
	  This PHY is found on the UI daughter card that is supplied with
	  the EVM.
	  NOTE: Please take care while choosing this option, MII PHY will
	  not be functional if RMII mode is selected.

endchoice

config DAVINCI_MUX
	bool "DAVINCI multiplexing support"
	depends on ARCH_DAVINCI
	default y
	help
	  Pin multiplexing support for DAVINCI boards. If your bootloader
	  sets the multiplexing correctly, say N. Otherwise, or if unsure,
	  say Y.

config DAVINCI_MUX_DEBUG
        bool "Multiplexing debug output"
        depends on DAVINCI_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 DAVINCI_MUX_WARNINGS
        bool "Warn about pins the bootloader didn't set up"
        depends on DAVINCI_MUX
        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 DAVINCI_MUX for your product.

config DAVINCI_RESET_CLOCKS
	bool "Reset unused clocks during boot"
	depends on ARCH_DAVINCI
	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.

endmenu

endif
