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

choice
	prompt "Machine Type"

config LEMOTE_FULOONG2E
	bool "Lemote Fuloong(2e) mini-PC"
	select ARCH_SPARSEMEM_ENABLE
	select CEVT_R4K
	select CSRC_R4K
	select SYS_HAS_CPU_LOONGSON2E
	select DMA_NONCOHERENT
	select BOOT_ELF32
	select BOARD_SCACHE
	select HW_HAS_PCI
	select I8259
	select ISA
	select IRQ_MIPS_CPU
	select SYS_SUPPORTS_32BIT_KERNEL
	select SYS_SUPPORTS_64BIT_KERNEL
	select SYS_SUPPORTS_LITTLE_ENDIAN
	select SYS_SUPPORTS_HIGHMEM
	select SYS_HAS_EARLY_PRINTK
	select GENERIC_ISA_DMA_SUPPORT_BROKEN
	select CPU_HAS_WB
	select LOONGSON_MC146818
	help
	  Lemote Fuloong(2e) mini-PC board based on the Chinese Loongson-2E CPU and
	  an FPGA northbridge

	  Lemote Fuloong(2e) mini PC have a VIA686B south bridge.

config LEMOTE_MACH2F
	bool "Lemote Loongson 2F family machines"
	select ARCH_SPARSEMEM_ENABLE
	select BOARD_SCACHE
	select BOOT_ELF32
	select CEVT_R4K if ! MIPS_EXTERNAL_TIMER
	select CPU_HAS_WB
	select CS5536
	select CSRC_R4K if ! MIPS_EXTERNAL_TIMER
	select DMA_NONCOHERENT
	select GENERIC_ISA_DMA_SUPPORT_BROKEN
	select HAVE_CLK
	select HW_HAS_PCI
	select I8259
	select IRQ_MIPS_CPU
	select ISA
	select SYS_HAS_CPU_LOONGSON2F
	select SYS_HAS_EARLY_PRINTK
	select SYS_SUPPORTS_32BIT_KERNEL
	select SYS_SUPPORTS_64BIT_KERNEL
	select SYS_SUPPORTS_HIGHMEM
	select SYS_SUPPORTS_LITTLE_ENDIAN
	select LOONGSON_MC146818
	help
	  Lemote Loongson 2F family machines utilize the 2F revision of
	  Loongson processor and the AMD CS5536 south bridge.

	  These family machines include fuloong2f mini PC, yeeloong2f notebook,
	  LingLoong allinone PC and so forth.

config LOONGSON_MACH3X
	bool "Generic Loongson 3 family machines"
	select ARCH_SPARSEMEM_ENABLE
	select GENERIC_ISA_DMA_SUPPORT_BROKEN
	select BOOT_ELF32
	select BOARD_SCACHE
	select CSRC_R4K
	select CEVT_R4K
	select CPU_HAS_WB
	select HW_HAS_PCI
	select ISA
	select HT_PCI
	select I8259
	select IRQ_MIPS_CPU
	select NR_CPUS_DEFAULT_4
	select SYS_HAS_CPU_LOONGSON3
	select SYS_HAS_EARLY_PRINTK
	select SYS_SUPPORTS_SMP
	select SYS_SUPPORTS_HOTPLUG_CPU
	select SYS_SUPPORTS_NUMA
	select SYS_SUPPORTS_64BIT_KERNEL
	select SYS_SUPPORTS_HIGHMEM
	select SYS_SUPPORTS_LITTLE_ENDIAN
	select LOONGSON_MC146818
	select ZONE_DMA32
	select LEFI_FIRMWARE_INTERFACE
	select PHYS48_TO_HT40
	help
		Generic Loongson 3 family machines utilize the 3A/3B revision
		of Loongson processor and RS780/SBX00 chipset.
endchoice

config CS5536
	bool

config CS5536_MFGPT
	bool "CS5536 MFGPT Timer"
	depends on CS5536 && !HIGH_RES_TIMERS
	select MIPS_EXTERNAL_TIMER
	help
	  This option enables the mfgpt0 timer of AMD CS5536. With this timer
	  switched on you can not use high resolution timers.

	  If you want to enable the Loongson2 CPUFreq Driver, Please enable
	  this option at first, otherwise, You will get wrong system time.

	  If unsure, say Yes.

config RS780_HPET
	bool "RS780/SBX00 HPET Timer"
	depends on LOONGSON_MACH3X
	select MIPS_EXTERNAL_TIMER
	help
	  This option enables the hpet timer of AMD RS780/SBX00.

	  If you want to enable the Loongson3 CPUFreq Driver, Please enable
	  this option at first, otherwise, You will get wrong system time.

	  If unsure, say Yes.

config LOONGSON_UART_BASE
	bool
	default y
	depends on EARLY_PRINTK || SERIAL_8250

config IOMMU_HELPER
	bool

config NEED_SG_DMA_LENGTH
	bool

config SWIOTLB
	bool "Soft IOMMU Support for All-Memory DMA"
	default y
	depends on CPU_LOONGSON3
	select IOMMU_HELPER
	select NEED_SG_DMA_LENGTH
	select NEED_DMA_MAP_STATE

config PHYS48_TO_HT40
	bool
	default y if CPU_LOONGSON3

config LOONGSON_MC146818
	bool
	default n

config LEFI_FIRMWARE_INTERFACE
	bool

endif # MACH_LOONGSON64
