# SPDX-License-Identifier: GPL-2.0
if ARCH_DAVINCI

config AINTC
	bool

config CP_INTC
	bool
	select IRQ_DOMAIN

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/AM17x based system"
	depends on !ARCH_DAVINCI_DMx || (AUTO_ZRELADDR && ARM_PATCH_PHYS_VIRT)
	select ARCH_DAVINCI_DA8XX
	# needed on silicon revs 1.0, 1.1:
	select CPU_DCACHE_WRITETHROUGH if !CPU_DCACHE_DISABLE
	select CP_INTC

config ARCH_DAVINCI_DA850
	bool "DA850/OMAP-L138/AM18x based system"
	depends on !ARCH_DAVINCI_DMx || (AUTO_ZRELADDR && ARM_PATCH_PHYS_VIRT)
	select ARCH_DAVINCI_DA8XX
	select CP_INTC

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_DA8XX_DT
	bool "Support DA8XX platforms using device tree"
	default y
	depends on ARCH_DAVINCI_DA850
	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
	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_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 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
	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 GPIO_PCF857X if 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 MACH_MITYOMAPL138
	bool "Critical Link MityDSP-L138/MityARM-1808 SoM"
	depends on ARCH_DAVINCI_DA850
	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
