# SPDX-License-Identifier: GPL-2.0

menuconfig ARCH_DAVINCI
	bool "TI DaVinci"
	depends on ARCH_MULTI_V5
	select DAVINCI_TIMER
	select ZONE_DMA
	select PM_GENERIC_DOMAINS if PM
	select PM_GENERIC_DOMAINS_OF if PM && OF
	select REGMAP_MMIO
	select RESET_CONTROLLER
	select HAVE_IDE
	select PINCTRL_SINGLE

if ARCH_DAVINCI

config ARCH_DAVINCI_DMx
	bool

comment "DaVinci Core Type"

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

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

config ARCH_DAVINCI_DM646x
	bool "DaVinci 646x based system"
	select DAVINCI_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 DAVINCI_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 DAVINCI_CP_INTC

config ARCH_DAVINCI_DA8XX
	bool

config ARCH_DAVINCI_DM365
	bool "DaVinci 365 based system"
	select DAVINCI_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
	  https://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 .

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.

endif
