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

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_PCB123
	bool "Include FDT for Microsemi Ocelot PCB123"
	select MSCC_OCELOT
	help
	  Enable this to include the FDT for the Ocelot PCB123 platform
	  from Microsemi in the FIT kernel image.
	  This requires u-boot on the platform.

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
