# SPDX-License-Identifier: GPL-2.0
menu "Board support"

config SOLUTION_ENGINE
	bool

config SH_ALPHA_BOARD
	bool

config SH_DEVICE_TREE
	bool "Board Described by Device Tree"
	select OF
	select OF_EARLY_FLATTREE
	select TIMER_OF
	select COMMON_CLK
	select GENERIC_CALIBRATE_DELAY
	help
	  Select Board Described by Device Tree to build a kernel that
	  does not hard-code any board-specific knowledge but instead uses
	  a device tree blob provided by the boot-loader. You must enable
	  drivers for any hardware you want to use separately. At this
	  time, only boards based on the open-hardware J-Core processors
	  have sufficient driver coverage to use this option; do not
	  select it if you are using original SuperH hardware.

config SH_JCORE_SOC
	bool "J-Core SoC"
	depends on SH_DEVICE_TREE && (CPU_SH2 || CPU_J2)
	select CLKSRC_JCORE_PIT
	select JCORE_AIC
	default y if CPU_J2
	help
	  Select this option to include drivers core components of the
	  J-Core SoC, including interrupt controllers and timers.

config SH_SOLUTION_ENGINE
	bool "SolutionEngine"
	select SOLUTION_ENGINE
	select CPU_HAS_IPR_IRQ
	depends on CPU_SUBTYPE_SH7705 || CPU_SUBTYPE_SH7709 || CPU_SUBTYPE_SH7710 || \
	  CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7750S || \
	  CPU_SUBTYPE_SH7750R 
	help
	  Select SolutionEngine if configuring for a Hitachi SH7705, SH7709,
	  SH7710, SH7712, SH7750, SH7750S or SH7750R evaluation board.

config SH_7206_SOLUTION_ENGINE
	bool "SolutionEngine7206"
	select SOLUTION_ENGINE
	depends on CPU_SUBTYPE_SH7206
	help
	  Select 7206 SolutionEngine if configuring for a Hitachi SH7206
	  evaluation board.

config SH_7619_SOLUTION_ENGINE
	bool "SolutionEngine7619"
	select SOLUTION_ENGINE
	depends on CPU_SUBTYPE_SH7619
	help
	  Select 7619 SolutionEngine if configuring for a Hitachi SH7619
	  evaluation board.
	
config SH_7721_SOLUTION_ENGINE
	bool "SolutionEngine7721"
	select SOLUTION_ENGINE
	depends on CPU_SUBTYPE_SH7721
	help
	  Select 7721 SolutionEngine if configuring for a Hitachi SH7721
	  evaluation board.

config SH_7722_SOLUTION_ENGINE
	bool "SolutionEngine7722"
	select SOLUTION_ENGINE
	select GENERIC_IRQ_CHIP
	select IRQ_DOMAIN
	depends on CPU_SUBTYPE_SH7722
	help
	  Select 7722 SolutionEngine if configuring for a Hitachi SH772
	  evaluation board.

config SH_7724_SOLUTION_ENGINE
	bool "SolutionEngine7724"
	select SOLUTION_ENGINE
	depends on CPU_SUBTYPE_SH7724
	select GPIOLIB
	select SND_SOC_AK4642 if SND_SIMPLE_CARD
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  Select 7724 SolutionEngine if configuring for a Hitachi SH7724
	  evaluation board.

config SH_7751_SOLUTION_ENGINE
	bool "SolutionEngine7751"
	select SOLUTION_ENGINE
	select CPU_HAS_IPR_IRQ
	depends on CPU_SUBTYPE_SH7751
	help
	  Select 7751 SolutionEngine if configuring for a Hitachi SH7751
	  evaluation board.
	  
config SH_7780_SOLUTION_ENGINE
	bool "SolutionEngine7780"
	select SOLUTION_ENGINE
	select SYS_SUPPORTS_PCI
	depends on CPU_SUBTYPE_SH7780
	help
	  Select 7780 SolutionEngine if configuring for a Renesas SH7780
	  evaluation board.

config SH_7343_SOLUTION_ENGINE
	bool "SolutionEngine7343"
	select SOLUTION_ENGINE
	select GENERIC_IRQ_CHIP
	select IRQ_DOMAIN
	depends on CPU_SUBTYPE_SH7343
	help
	  Select 7343 SolutionEngine if configuring for a Hitachi
	  SH7343 (SH-Mobile 3AS) evaluation board.

config SH_HP6XX
	bool "HP6XX"
	select SYS_SUPPORTS_APM_EMULATION
	select HD6446X_SERIES
	depends on CPU_SUBTYPE_SH7709
	help
	  Select HP6XX if configuring for a HP jornada HP6xx.
	  More information (hardware only) at
	  <http://www.hp.com/jornada/>.

config SH_DREAMCAST
	bool "Dreamcast"
	select SYS_SUPPORTS_PCI
	depends on CPU_SUBTYPE_SH7091
	help
	  Select Dreamcast if configuring for a SEGA Dreamcast.
	  More information at <http://www.linux-sh.org>

config SH_SH03
	bool "Interface CTP/PCI-SH03"
	depends on CPU_SUBTYPE_SH7751
	select CPU_HAS_IPR_IRQ
	select SYS_SUPPORTS_PCI
	help
	  CTP/PCI-SH03 is a CPU module computer that is produced
	  by Interface Corporation.
	  More information at <http://www.interface.co.jp>

config SH_SECUREEDGE5410
	bool "SecureEdge5410"
	depends on CPU_SUBTYPE_SH7751R
	select CPU_HAS_IPR_IRQ
	select SYS_SUPPORTS_PCI
	help
	  Select SecureEdge5410 if configuring for a SnapGear SH board.
	  This includes both the OEM SecureEdge products as well as the
	  SME product line.

config SH_RTS7751R2D
	bool "RTS7751R2D"
	depends on CPU_SUBTYPE_SH7751R
	select SYS_SUPPORTS_PCI
	select IO_TRAPPED if MMU
	help
	  Select RTS7751R2D if configuring for a Renesas Technology
	  Sales SH-Graphics board.

config SH_RSK
	bool "Renesas Starter Kit"
	depends on CPU_SUBTYPE_SH7201 || CPU_SUBTYPE_SH7203 || \
	  CPU_SUBTYPE_SH7264 || CPU_SUBTYPE_SH7269
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	 Select this option if configuring for any of the RSK+ MCU
	 evaluation platforms.

config SH_SDK7780
	bool "SDK7780R3"
	depends on CPU_SUBTYPE_SH7780
	select SYS_SUPPORTS_PCI
	help
	  Select SDK7780 if configuring for a Renesas SH7780 SDK7780R3
	  evaluation board.

config SH_SDK7786
	bool "SDK7786"
	depends on CPU_SUBTYPE_SH7786
	select SYS_SUPPORTS_PCI
	select NO_IOPORT_MAP if !PCI
	select HAVE_SRAM_POOL
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  Select SDK7786 if configuring for a Renesas Technology Europe
	  SH7786-65nm board.

config SH_HIGHLANDER
	bool "Highlander"
	depends on CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
	select SYS_SUPPORTS_PCI
	select IO_TRAPPED if MMU

config SH_SH7757LCR
	bool "SH7757LCR"
	depends on CPU_SUBTYPE_SH7757
	select GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR

config SH_SH7785LCR
	bool "SH7785LCR"
	depends on CPU_SUBTYPE_SH7785
	select SYS_SUPPORTS_PCI

config SH_SH7785LCR_29BIT_PHYSMAPS
	bool "SH7785LCR 29bit physmaps"
	depends on SH_SH7785LCR && 29BIT
	default y
	help
	  This board has 2 physical memory maps. It can be changed with
	  DIP switch(S2-5). If you set the DIP switch for S2-5 = ON,
	  you can access all on-board device in 29bit address mode.

config SH_SH7785LCR_PT
	bool "SH7785LCR prototype board on 32-bit MMU mode"
	depends on SH_SH7785LCR && 32BIT
	default n
	help
	  If you use prototype board, this option is enabled.

config SH_URQUELL
	bool "Urquell"
	depends on CPU_SUBTYPE_SH7786
	select GPIOLIB
	select SYS_SUPPORTS_PCI
	select NO_IOPORT_MAP if !PCI

config SH_MIGOR
	bool "Migo-R"
	depends on CPU_SUBTYPE_SH7722
	select GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  Select Migo-R if configuring for the SH7722 Migo-R platform
          by Renesas System Solutions Asia Pte. Ltd.

config SH_AP325RXA
	bool "AP-325RXA"
	depends on CPU_SUBTYPE_SH7723
	select GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  Renesas "AP-325RXA" support.
	  Compatible with ALGO SYSTEM CO.,LTD. "AP-320A"

config SH_KFR2R09
	bool "KFR2R09"
	depends on CPU_SUBTYPE_SH7724
	select GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  "Kit For R2R for 2009" support.

config SH_ECOVEC
	bool "EcoVec"
	depends on CPU_SUBTYPE_SH7724
	select GPIOLIB
	select SND_SOC_DA7210 if SND_SIMPLE_CARD
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  Renesas "R0P7724LC0011/21RL (EcoVec)" support.

config SH_SH7763RDP
	bool "SH7763RDP"
	depends on CPU_SUBTYPE_SH7763
	help
	  Select SH7763RDP if configuring for a Renesas SH7763
	  evaluation board.

config SH_ESPT
	bool "ESPT"
	depends on CPU_SUBTYPE_SH7763
	help
	  Select ESPT if configuring for a Renesas SH7763
	  with gigabit ether evaluation board.

config SH_EDOSK7705
	bool "EDOSK7705"
	depends on CPU_SUBTYPE_SH7705

config SH_EDOSK7760
	bool "EDOSK7760"
	depends on CPU_SUBTYPE_SH7760
	help
	  Select if configuring for a Renesas EDOSK7760
	  evaluation board.

config SH_SH4202_MICRODEV
	bool "SH4-202 MicroDev"
	depends on CPU_SUBTYPE_SH4_202
	help
	  Select SH4-202 MicroDev if configuring for a SuperH MicroDev board
	  with an SH4-202 CPU.

config SH_LANDISK
	bool "LANDISK"
	depends on CPU_SUBTYPE_SH7751R
	select SYS_SUPPORTS_PCI
	help
	  I-O DATA DEVICE, INC. "LANDISK Series" support.

config SH_TITAN
	bool "TITAN"
	depends on CPU_SUBTYPE_SH7751R
	select CPU_HAS_IPR_IRQ
	select SYS_SUPPORTS_PCI
	help
	  Select Titan if you are configuring for a Nimble Microsystems
	  NetEngine NP51R.

config SH_SHMIN
	bool "SHMIN"
	depends on CPU_SUBTYPE_SH7706
	select CPU_HAS_IPR_IRQ
	help
	  Select SHMIN if configuring for the SHMIN board.

config SH_LBOX_RE2
	bool "L-BOX RE2"
	depends on CPU_SUBTYPE_SH7751R
	select SYS_SUPPORTS_PCI
	help
	  Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2.

config SH_X3PROTO
	bool "SH-X3 Prototype board"
	depends on CPU_SUBTYPE_SHX3
	select NO_IOPORT_MAP if !PCI
	select IRQ_DOMAIN

config SH_MAGIC_PANEL_R2
	bool "Magic Panel R2"
	depends on CPU_SUBTYPE_SH7720
	select GPIOLIB
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	help
	  Select Magic Panel R2 if configuring for Magic Panel R2.

config SH_CAYMAN
	bool "Hitachi Cayman"
	depends on CPU_SUBTYPE_SH5_101 || CPU_SUBTYPE_SH5_103
	select SYS_SUPPORTS_PCI
	select ARCH_MIGHT_HAVE_PC_SERIO

config SH_POLARIS
	bool "SMSC Polaris"
	select CPU_HAS_IPR_IRQ
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	depends on CPU_SUBTYPE_SH7709
	help
	  Select if configuring for an SMSC Polaris development board

config SH_SH2007
	bool "SH-2007 board"
	select NO_IOPORT_MAP
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	depends on CPU_SUBTYPE_SH7780
	help
	  SH-2007 is a single-board computer based around SH7780 chip
	  intended for embedded applications.
	  It has an Ethernet interface (SMC9118), direct connected
	  Compact Flash socket, two serial ports and PC-104 bus.
	  More information at <http://sh2000.sh-linux.org>.

config SH_APSH4A3A
	bool "AP-SH4A-3A"
	select SH_ALPHA_BOARD
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	depends on CPU_SUBTYPE_SH7785
	help
	  Select AP-SH4A-3A if configuring for an ALPHAPROJECT AP-SH4A-3A.

config SH_APSH4AD0A
	bool "AP-SH4AD-0A"
	select SH_ALPHA_BOARD
	select SYS_SUPPORTS_PCI
	select REGULATOR_FIXED_VOLTAGE if REGULATOR
	depends on CPU_SUBTYPE_SH7786
	help
	  Select AP-SH4AD-0A if configuring for an ALPHAPROJECT AP-SH4AD-0A.

source "arch/sh/boards/mach-r2d/Kconfig"
source "arch/sh/boards/mach-highlander/Kconfig"
source "arch/sh/boards/mach-sdk7780/Kconfig"
source "arch/sh/boards/mach-migor/Kconfig"
source "arch/sh/boards/mach-rsk/Kconfig"

if SH_MAGIC_PANEL_R2

menu "Magic Panel R2 options"

config SH_MAGIC_PANEL_R2_VERSION
	int "Magic Panel R2 Version"
	default "3"
	help
	  Set the version of the Magic Panel R2

endmenu

endif

endmenu
