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

config LEGACY_BOARDS
	bool
	help
	  Select this from your board if the board must use a legacy, non-UHI,
	  boot protocol. This will cause the kernel to scan through the list of
	  supported machines calling their detect functions in turn if the
	  kernel is booted without being provided with an FDT via the UHI
	  boot protocol.

config YAMON_DT_SHIM
	bool
	help
	  Select this from your board if the board uses the YAMON bootloader
	  and you wish to include code which helps translate various
	  YAMON-provided environment variables into a device tree properties.

comment "Legacy (non-UHI/non-FIT) Boards"

config LEGACY_BOARD_SEAD3
	bool "Support MIPS SEAD-3 boards"
	select LEGACY_BOARDS
	select YAMON_DT_SHIM
	help
	  Enable this to include support for booting on MIPS SEAD-3 FPGA-based
	  development boards, which boot using a legacy boot protocol.

comment "MSCC Ocelot doesn't work with SEAD3 enabled"
	depends on LEGACY_BOARD_SEAD3

config LEGACY_BOARD_OCELOT
	bool "Support MSCC Ocelot boards"
	depends on LEGACY_BOARD_SEAD3=n
	select LEGACY_BOARDS
	select MSCC_OCELOT
	select SYS_HAS_EARLY_PRINTK
	select USE_GENERIC_EARLY_PRINTK_8250

config MSCC_OCELOT
	bool
	select GPIOLIB
	select MSCC_OCELOT_IRQ

comment "FIT/UHI Boards"

config FIT_IMAGE_FDT_BOSTON
	bool "Include FDT for MIPS Boston boards"
	help
	  Enable this to include the FDT for the MIPS Boston development board
	  from Imagination Technologies in the FIT kernel image. You should
	  enable this if you wish to boot on a MIPS Boston board, as it is
	  expected by the bootloader.

config FIT_IMAGE_FDT_NI169445
	bool "Include FDT for NI 169445"
	help
	  Enable this to include the FDT for the 169445 platform from
	  National Instruments in the FIT kernel image.

config FIT_IMAGE_FDT_XILFPGA
	bool "Include FDT for Xilfpga"
	help
	  Enable this to include the FDT for the MIPSfpga platform
	  from Imagination Technologies in the FIT kernel image.

config FIT_IMAGE_FDT_OCELOT
	bool "Include FDT for Microsemi Ocelot development platforms"
	select MSCC_OCELOT
	help
	  Enable this to include the FDT for the Ocelot development platforms
	  from Microsemi in the FIT kernel image.
	  This requires u-boot on the platform.

config BOARD_INGENIC
	bool "Support boards based on Ingenic SoCs"
	select MACH_INGENIC_GENERIC
	help
	  Enable support for boards based on Ingenic SoCs.

config VIRT_BOARD_RANCHU
	bool "Support Ranchu platform for Android emulator"
	help
	  This enables support for the platform used by Android emulator.

	  Ranchu platform consists of a set of virtual devices. This platform
	  enables emulation of variety of virtual configurations while using
	  Android emulator. Android emulator is based on Qemu, and contains
	  the support for the same set of virtual devices.

endif
