if ARCH_DAVINCI

config AINTC
	bool

config CP_INTC
	bool
	select IRQ_DOMAIN

config ARCH_DAVINCI_DMx
	bool
	select CPU_ARM926T

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/AM17x based system"
	select ARCH_DAVINCI_DA8XX
	select CPU_DCACHE_WRITETHROUGH # needed on silicon revs 1.0, 1.1
	select CP_INTC

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

config ARCH_DAVINCI_DA8XX
	bool
	select CPU_ARM926T

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

config ARCH_DAVINCI_TNETV107X
	bool "TNETV107X based system"
	select CPU_V6
	select CP_INTC

comment "DaVinci Board Type"

config MACH_DA8XX_DT
	bool "Support DA8XX platforms using device tree"
	default y
	depends on ARCH_DAVINCI_DA8XX
	select PINCTRL
	help
	  Say y here to include support for TI DaVinci DA850 based using
	  Flattened Device Tree. More information at Documentation/devicetree

config MACH_DAVINCI_EVM
	bool "TI DM644x EVM"
	default ARCH_DAVINCI_DM644x
	depends on ARCH_DAVINCI_DM644x
	select EEPROM_AT24
	select I2C
	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
	select EEPROM_AT24
	select I2C
	help
	  Say Y here to select the Lyrtech Small Form Factor
	  Software Defined Radio (SFFSDR) board.

config MACH_NEUROS_OSD2
	bool "Neuros OSD2 Open Television Set Top Box"
	depends on ARCH_DAVINCI_DM644x
	help
	  Configure this option to specify the whether the board used
	  for development is a Neuros OSD2 Open Set Top Box.

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
	select EEPROM_AT24
	select I2C
	select MACH_DAVINCI_DM6467TEVM
	help
	  Configure this option to specify the whether the board used
	  for development is a DM6467 EVM

config MACH_DAVINCI_DM6467TEVM
	bool

config MACH_DAVINCI_DM365_EVM
	bool "TI DM365 EVM"
	default ARCH_DAVINCI_DM365
	depends on ARCH_DAVINCI_DM365
	select EEPROM_AT24
	select I2C
	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/AM17x Reference Platform"
	default ARCH_DAVINCI_DA830
	depends on ARCH_DAVINCI_DA830
	select EEPROM_AT24
	select GPIO_PCF857X
	select I2C
	help
	  Say Y here to select the TI DA830/OMAP-L137/AM17x Evaluation Module.

choice
	prompt "Select DA830/OMAP-L137/AM17x UI board peripheral"
	depends on MACH_DAVINCI_DA830_EVM
	help
	  The presence of UI card on the DA830/OMAP-L137/AM17x 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/AM18x Reference Platform"
	default ARCH_DAVINCI_DA850
	depends on ARCH_DAVINCI_DA850
	help
	  Say Y here to select the TI DA850/OMAP-L138/AM18x Evaluation Module.

choice
	prompt "Select peripherals connected to expander on UI board"
	depends on MACH_DAVINCI_DA850_EVM
	help
	  The presence of User Interface (UI) card on the DA850/OMAP-L138/AM18x
	  EVM is detected automatically based on successful probe of the I2C
	  based GPIO expander on that card. This option selected in this
	  menu has an effect only in case of a successful UI card detection.

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/AM18x 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/AM18x
	  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.

config DA850_UI_SD_VIDEO_PORT
	bool "Video Port Interface"
	help
	  Say Y if you want to use Video Port Interface (VPIF) on the
	  DA850/OMAP-L138 EVM. The Video decoders/encoders are found on the
	  UI daughter card that is supplied with the EVM.

endchoice

config DA850_WL12XX
	bool "AM18x wl1271 daughter board"
	depends on MACH_DAVINCI_DA850_EVM
	help
	  The wl1271 daughter card for AM18x EVMs is a combo wireless
	  connectivity add-on card, based on the LS Research TiWi module with
	  Texas Instruments' wl1271 solution.
	  Say Y if you want to use a wl1271 expansion card connected to the
	  AM18x EVM.


config MACH_TNETV107X
	bool "TI TNETV107X Reference Platform"
	default ARCH_DAVINCI_TNETV107X
	depends on ARCH_DAVINCI_TNETV107X
	help
	  Say Y here to select the TI TNETV107X Evaluation Module.

config MACH_MITYOMAPL138
	bool "Critical Link MityDSP-L138/MityARM-1808 SoM"
	depends on ARCH_DAVINCI_DA850
	select EEPROM_AT24
	select I2C
	help
	  Say Y here to select the Critical Link MityDSP-L138/MityARM-1808
	  System on Module.  Information on this SoM may be found at
	  http://www.mitydsp.com

config MACH_OMAPL138_HAWKBOARD
	bool "TI AM1808 / OMAPL-138 Hawkboard platform"
	depends on ARCH_DAVINCI_DA850
	help
	  Say Y here to select the TI AM1808 / OMAPL-138 Hawkboard platform .
	  Information of this board may be found at
	  http://www.hawkboard.org/

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
