if ARCH_MSM

choice
	prompt "Qualcomm MSM SoC Type"
	default ARCH_MSM7X00A

config ARCH_MSM7X00A
	bool "MSM7x00A / MSM7x01A"
	select MACH_TROUT if !MACH_HALIBUT
	select ARCH_MSM_ARM11
	select MSM_SMD
	select MSM_SMD_PKG3
	select CPU_V6
	select MSM_PROC_COMM
	select HAS_MSM_DEBUG_UART_PHYS

config ARCH_MSM7X30
	bool "MSM7x30"
	select MACH_MSM7X30_SURF # if !
	select ARCH_MSM_SCORPION
	select MSM_SMD
	select MSM_VIC
	select CPU_V7
	select MSM_GPIOMUX
	select MSM_PROC_COMM
	select HAS_MSM_DEBUG_UART_PHYS

config ARCH_QSD8X50
	bool "QSD8X50"
	select MACH_QSD8X50_SURF if !MACH_QSD8X50A_ST1_5
	select ARCH_MSM_SCORPION
	select MSM_SMD
	select MSM_VIC
	select CPU_V7
	select MSM_GPIOMUX
	select MSM_PROC_COMM
	select HAS_MSM_DEBUG_UART_PHYS

config ARCH_MSM8X60
	bool "MSM8X60"
	select MACH_MSM8X60_SURF if (!MACH_MSM8X60_RUMI3 && !MACH_MSM8X60_SIM \
				  && !MACH_MSM8X60_FFA)
	select ARCH_MSM_SCORPIONMP
	select ARM_GIC
	select CPU_V7
	select MSM_V2_TLMM
	select MSM_GPIOMUX
	select IOMMU_API
	select MSM_SCM if SMP

endchoice

config MSM_SOC_REV_A
	bool
config  ARCH_MSM_SCORPIONMP
	bool

config  ARCH_MSM_ARM11
	bool
config  ARCH_MSM_SCORPION
	bool

config HAS_MSM_DEBUG_UART_PHYS
	bool

config  MSM_VIC
	bool

menu "Qualcomm MSM Board Type"

config MACH_HALIBUT
	depends on ARCH_MSM
	depends on ARCH_MSM7X00A
	bool "Halibut Board (QCT SURF7201A)"
	help
	  Support for the Qualcomm SURF7201A eval board.

config MACH_TROUT
	depends on ARCH_MSM
	depends on ARCH_MSM7X00A
	bool "HTC Dream (aka trout)"
	help
	  Support for the HTC Dream, T-Mobile G1, Android ADP1 devices.

config MACH_MSM7X30_SURF
	depends on ARCH_MSM7X30
	bool "MSM7x30 SURF"
	help
	  Support for the Qualcomm MSM7x30 SURF eval board.

config MACH_QSD8X50_SURF
	depends on ARCH_QSD8X50
	bool "QSD8x50 SURF"
	help
	  Support for the Qualcomm QSD8x50 SURF eval board.

config MACH_QSD8X50A_ST1_5
	depends on ARCH_QSD8X50
	select MSM_SOC_REV_A
	bool "QSD8x50A ST1.5"
	help
	  Support for the Qualcomm ST1.5.

config MACH_MSM8X60_RUMI3
	depends on ARCH_MSM8X60
	bool "MSM8x60 RUMI3"
	help
	  Support for the Qualcomm MSM8x60 RUMI3 emulator.

config MACH_MSM8X60_SURF
	depends on ARCH_MSM8X60
	bool "MSM8x60 SURF"
	help
	  Support for the Qualcomm MSM8x60 SURF eval board.

config MACH_MSM8X60_SIM
	depends on ARCH_MSM8X60
	bool "MSM8x60 Simulator"
	help
	  Support for the Qualcomm MSM8x60 simulator.

config MACH_MSM8X60_FFA
	depends on ARCH_MSM8X60
	bool "MSM8x60 FFA"
	help
	  Support for the Qualcomm MSM8x60 FFA eval board.

endmenu

config IOMMU_PGTABLES_L2
	def_bool y
	depends on ARCH_MSM8X60 && MMU && SMP && CPU_DCACHE_DISABLE=n

config MSM_DEBUG_UART
	int
	default 1 if MSM_DEBUG_UART1
	default 2 if MSM_DEBUG_UART2
	default 3 if MSM_DEBUG_UART3

if HAS_MSM_DEBUG_UART_PHYS
choice
	prompt "Debug UART"

	default MSM_DEBUG_UART_NONE

	config MSM_DEBUG_UART_NONE
		bool "None"

	config MSM_DEBUG_UART1
		bool "UART1"

	config MSM_DEBUG_UART2
		bool "UART2"

	config MSM_DEBUG_UART3
		bool "UART3"
endchoice
endif

config MSM_SMD_PKG3
	bool

config MSM_PROC_COMM
	bool

config MSM_SMD
	bool

config MSM_GPIOMUX
	bool

config MSM_V2_TLMM
	bool

config IOMMU_API
	bool

config MSM_SCM
	bool
endif
