if NLM_XLP_BOARD || NLM_XLR_BOARD

if NLM_XLP_BOARD
config DT_XLP_EVP
	bool "Built-in device tree for XLP EVP boards"
	default y
	select BUILTIN_DTB
	help
	  Add an FDT blob for XLP EVP boards into the kernel.
	  This DTB will be used if the firmware does not pass in a DTB
	  pointer to the kernel.  The corresponding DTS file is at
	  arch/mips/netlogic/dts/xlp_evp.dts

config DT_XLP_SVP
	bool "Built-in device tree for XLP SVP boards"
	default y
	select BUILTIN_DTB
	help
	  Add an FDT blob for XLP VP boards into the kernel.
	  This DTB will be used if the firmware does not pass in a DTB
	  pointer to the kernel.  The corresponding DTS file is at
	  arch/mips/netlogic/dts/xlp_svp.dts

config DT_XLP_FVP
	bool "Built-in device tree for XLP FVP boards"
	default y
	select BUILTIN_DTB
	help
	  Add an FDT blob for XLP FVP board into the kernel.
	  This DTB will be used if the firmware does not pass in a DTB
	  pointer to the kernel.  The corresponding DTS file is at
	  arch/mips/netlogic/dts/xlp_fvp.dts

config DT_XLP_GVP
	bool "Built-in device tree for XLP GVP boards"
	default y
	select BUILTIN_DTB
	help
	  Add an FDT blob for XLP GVP board into the kernel.
	  This DTB will be used if the firmware does not pass in a DTB
	  pointer to the kernel.  The corresponding DTS file is at
	  arch/mips/netlogic/dts/xlp_gvp.dts

config DT_XLP_RVP
	bool "Built-in device tree for XLP RVP boards"
	default y
	help
	  Add an FDT blob for XLP RVP board into the kernel.
	  This DTB will be used if the firmware does not pass in a DTB
	  pointer to the kernel.  The corresponding DTS file is at
	  arch/mips/netlogic/dts/xlp_rvp.dts

config NLM_MULTINODE
	bool "Support for multi-chip boards"
	depends on NLM_XLP_BOARD
	default n
	help
	  Add support for boards with 2 or 4 XLPs connected over ICI.

if NLM_MULTINODE
choice
	prompt "Number of XLPs on the board"
	default NLM_MULTINODE_2
	help
	  In the multi-node case, specify the number of SoCs on the board.

config NLM_MULTINODE_2
	bool "Dual-XLP board"
	help
	  Support boards with upto two XLPs connected over ICI.

config NLM_MULTINODE_4
	bool "Quad-XLP board"
	help
	  Support boards with upto four XLPs connected over ICI.

endchoice

endif
endif

config NLM_COMMON
	bool

config IOMMU_HELPER
	bool

config NEED_SG_DMA_LENGTH
	bool

config SWIOTLB
	def_bool y
	select NEED_SG_DMA_LENGTH
	select IOMMU_HELPER

endif
