if ARCH_MSM

menu "MSM SoC Type"

config ARCH_MSM7X01A
	bool "MSM7x00A / MSM7x01A"
	select ARCH_MSM_ARM11
	select MSM_VIC
	select CPU_V6
	select MSM_REMOTE_SPINLOCK_SWP

config ARCH_MSM7X25
	bool "MSM7x25"
	select ARCH_MSM_ARM11
	select MSM_VIC
	select CPU_V6
	select MSM_REMOTE_SPINLOCK_SWP
	select MULTI_IRQ_HANDLER

config ARCH_MSM7X27
	bool "MSM7x27"
	select ARCH_MSM_ARM11 if MSM_SOC_REV_NONE
	select ARCH_HAS_BARRIERS if MSM_SOC_REV_NONE
	select ARCH_MSM_CORTEX_A5 if MSM_SOC_REV_A
	select MSM_VIC
	select CPU_V6 if MSM_SOC_REV_NONE
	select CPU_V7 if MSM_SOC_REV_A
	select MSM_REMOTE_SPINLOCK_SWP if MSM_SOC_REV_NONE
	select MSM_GPIOMUX
	select REGULATOR
	select MULTI_IRQ_HANDLER
	select MSM_PROC_COMM_REGULATOR

config ARCH_MSM7X30
	bool "MSM7x30"
	select ARCH_MSM_SCORPION
	select MSM_VIC
	select CPU_V7
	select MSM_REMOTE_SPINLOCK_DEKKERS
	select ARCH_SPARSEMEM_ENABLE
	select ARCH_HAS_HOLES_MEMORYMODEL
	select MEMORY_HOTPLUG
	select MEMORY_HOTREMOVE
	select MIGRATION
	select ARCH_MEMORY_PROBE
	select ARCH_MEMORY_REMOVE
	select MSM_GPIOMUX
	select RESERVE_FIRST_PAGE
	select MSM_DALRPC
	select MSM_SPM_V1
	select REGULATOR
	select MSM_PROC_COMM_REGULATOR
	select MULTI_IRQ_HANDLER

config ARCH_QSD8X50
	bool "QSD8X50"
	select ARCH_MSM_SCORPION
	select MSM_VIC
	select CPU_V7
	select MSM_REMOTE_SPINLOCK_LDREX
	select CPU_USE_DOMAINS
	select EMULATE_DOMAIN_MANAGER_V7
	select MSM_GPIOMUX
	select MSM_DALRPC

config ARCH_MSM8X60
	bool "MSM8X60"
	select ARCH_MSM_SCORPIONMP
	select SMP_PARALLEL_START if SMP
	select ARM_GIC
	select CPU_V7
	select MSM_REMOTE_SPINLOCK_LDREX
	select ARCH_REQUIRE_GPIOLIB
	select MSM_ADM3
	select REGULATOR
	select MSM_V2_TLMM
	select MSM_PIL
	select MSM_SCM
	select ARCH_HAS_CPU_IDLE_WAIT
	select MSM_DIRECT_SCLK_ACCESS
	select MSM_RPM
	select MSM_XO
	select MSM_GPIOMUX
	select MSM_BUS_SCALING
	select MSM_SECURE_IO
	select MSM_DALRPC
	select MSM_QDSP6_APR
	select MSM_NATIVE_RESTART
	select ARCH_INLINE_SPIN_TRYLOCK
	select ARCH_INLINE_SPIN_TRYLOCK_BH
	select ARCH_INLINE_SPIN_LOCK
	select ARCH_INLINE_SPIN_LOCK_BH
	select ARCH_INLINE_SPIN_LOCK_IRQ
	select ARCH_INLINE_SPIN_LOCK_IRQSAVE
	select ARCH_INLINE_SPIN_UNLOCK
	select ARCH_INLINE_SPIN_UNLOCK_BH
	select ARCH_INLINE_SPIN_UNLOCK_IRQ
	select ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
	select ARCH_INLINE_READ_TRYLOCK
	select ARCH_INLINE_READ_LOCK
	select ARCH_INLINE_READ_LOCK_BH
	select ARCH_INLINE_READ_LOCK_IRQ
	select ARCH_INLINE_READ_LOCK_IRQSAVE
	select ARCH_INLINE_READ_UNLOCK
	select ARCH_INLINE_READ_UNLOCK_BH
	select ARCH_INLINE_READ_UNLOCK_IRQ
	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE
	select ARCH_INLINE_WRITE_TRYLOCK
	select ARCH_INLINE_WRITE_LOCK
	select ARCH_INLINE_WRITE_LOCK_BH
	select ARCH_INLINE_WRITE_LOCK_IRQ
	select ARCH_INLINE_WRITE_LOCK_IRQSAVE
	select ARCH_INLINE_WRITE_UNLOCK
	select ARCH_INLINE_WRITE_UNLOCK_BH
	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
	select CPU_HAS_L2_PMU
	select MSM_SPM_V1

config ARCH_MSM8960
	bool "MSM8960"
	select ARCH_MSM_KRAITMP
	select ARM_GIC
	select CPU_V7
	select MSM_V2_TLMM
	select MSM_GPIOMUX
	select MSM_SCM if SMP
	select MSM_DIRECT_SCLK_ACCESS
	select REGULATOR
	select MSM_RPM
	select MSM_XO
	select MSM_QDSP6_APR
	select MSM_PIL
	select MSM_AUDIO_QDSP6 if SND_SOC
	select CPU_HAS_L2_PMU
	select MSM_SPM_V2
	select HAS_QDSS
	select MSM_L2_SPM
	select MSM_NATIVE_RESTART
	select DONT_MAP_HOLE_AFTER_MEMBANK0
	select MSM_REMOTE_SPINLOCK_SFPB
	select ARCH_POPULATES_NODE_MAP
	select ARCH_SPARSEMEM_ENABLE
	select ARCH_HAS_HOLES_MEMORYMODEL
	select MEMORY_HOTPLUG
	select MEMORY_HOTREMOVE
	select MIGRATION
	select ARCH_MEMORY_PROBE
	select ARCH_MEMORY_REMOVE
	select DONT_RESERVE_FROM_MOVABLE_ZONE

config ARCH_MSM8930
	bool "MSM8930"
	select ARCH_MSM_KRAITMP
	select ARM_GIC
	select CPU_V7
	select MSM_V2_TLMM
	select MSM_GPIOMUX
	select MSM_SCM if SMP
	select MSM_DIRECT_SCLK_ACCESS
	select REGULATOR
	select MSM_RPM
	select MSM_XO
	select MSM_QDSP6_APR
	select MSM_PIL
	select MSM_AUDIO_QDSP6 if SND_SOC
	select CPU_HAS_L2_PMU
	select MSM_SPM_V2
	select MSM_L2_SPM
	select MSM_NATIVE_RESTART
	select DONT_MAP_HOLE_AFTER_MEMBANK0
	select MSM_REMOTE_SPINLOCK_SFPB
	select ARCH_POPULATES_NODE_MAP
	select ARCH_SPARSEMEM_ENABLE
	select ARCH_HAS_HOLES_MEMORYMODEL
	select MEMORY_HOTPLUG
	select MEMORY_HOTREMOVE
	select MIGRATION
	select ARCH_MEMORY_PROBE
	select ARCH_MEMORY_REMOVE
	select DONT_RESERVE_FROM_MOVABLE_ZONE
	select MSM_ULTRASOUND

config ARCH_APQ8064
	bool "APQ8064"
	select ARCH_MSM_KRAITMP
	select MACH_APQ8064_SIM if !MACH_APQ8064_RUMI3
	select MSM_V2_TLMM
	select ARM_GIC
	select CPU_V7
	select MSM_SCM if SMP
	select MSM_GPIOMUX
	select MSM_REMOTE_SPINLOCK_SFPB
	select MSM_PIL
	select MSM_QDSP6_APR
	select MSM_AUDIO_QDSP6 if SND_SOC

config ARCH_MSMCOPPER
	bool "MSM Copper"
	select ARCH_MSM_KRAITMP
	select MSM_V2_TLMM
	select ARM_GIC
	select CPU_V7
	select MSM_SCM if SMP
	select MSM_GPIOMUX

config ARCH_FSM9XXX
	bool "FSM9XXX"
	select ARCH_MSM_SCORPION
	select MSM_VIC
	select CPU_V7
	select MSM_REMOTE_SPINLOCK_LDREX
	select FSM9XXX_TLMM

config ARCH_MSM9615
	bool "MSM9615"
	select ARM_GIC
	select ARCH_MSM_CORTEX_A5
	select CPU_V7
	select MSM_V2_TLMM
	select MSM_GPIOMUX
	select MSM_RPM
	select MSM_SPM_V2
	select MSM_NATIVE_RESTART
endmenu

choice
	prompt "MSM SoC Revision"
	default MSM_SOC_REV_NONE
config MSM_SOC_REV_NONE
	bool "N/A"
	select EMULATE_DOMAIN_MANAGER_V7 if ARCH_QSD8X50
	select VERIFY_PERMISSION_FAULT if ARCH_QSD8X50
config MSM_SOC_REV_A
	bool "Rev. A"
	select ARCH_MSM7X27A if ARCH_MSM7X27
endchoice

config MSM_KRAIT_TBB_ABORT_HANDLER
	bool "Krait TBB/TBH data abort handler"
	depends on ARCH_MSM_KRAIT
	depends on ARM_THUMB
	help
	  Certain early samples of the Krait processor may generate data
	  aborts for TBB / TBH instructions that fail their condition code
	  checks. Enabling this option will ignore these erroneous data aborts,
	  at the expense of a very small performance penalty.

	  If unsure, say N.

config  ARCH_MSM_ARM11
	bool

config  ARCH_MSM_SCORPION
	bool

config  ARCH_MSM_KRAIT
	bool
	select ARM_L1_CACHE_SHIFT_6

config  MSM_SMP
	bool

config  ARCH_MSM_SCORPIONMP
	select ARCH_MSM_SCORPION
	select MSM_SMP
	bool

config  ARCH_MSM_KRAITMP
	select ARCH_MSM_KRAIT
	select MSM_SMP
	bool

config  ARCH_MSM_CORTEX_A5
	bool
	select HAVE_HW_BRKPT_RESERVED_RW_ACCESS

config ARCH_MSM7X27A
	bool
	select MSM_DALRPC
	select MSM_PROC_COMM_REGULATOR
	select MULTI_IRQ_HANDLER

config  MSM_VIC
	bool

config MSM_RPM
	bool "Resource Power Manager"
	select MSM_MPM

config MSM_MPM
	bool "Modem Power Manager"

config MSM_XO
	bool

config MSM_REMOTE_SPINLOCK_DEKKERS
	bool
config MSM_REMOTE_SPINLOCK_SWP
	bool
config MSM_REMOTE_SPINLOCK_LDREX
	bool
config MSM_REMOTE_SPINLOCK_SFPB
	bool
config MSM_ADM3
	bool

menu "MSM Board Selection"

config MACH_HALIBUT
	depends on ARCH_MSM7X01A
	depends on MSM_STACKED_MEMORY
	default y
	bool "Halibut Board (QCT SURF7201A)"
	help
	  Support for the Qualcomm SURF7201A eval board.

config MACH_MSM7201A_SURF
	depends on ARCH_MSM7X01A
	depends on MSM_STACKED_MEMORY
	default y
	bool "MSM7201A SURF"
	help
	  Support for the Qualcomm MSM7201A SURF eval board.

config MACH_MSM7201A_FFA
	depends on ARCH_MSM7X01A
	depends on MSM_STACKED_MEMORY
	default y
	bool "MSM7201A FFA"
	help
	  Support for the Qualcomm MSM7201A FFA eval board.

config MACH_TROUT
	depends on ARCH_MSM7X01A
	depends on MSM_STACKED_MEMORY
	default y
	bool "Trout"

config MACH_MSM7X27_SURF
	depends on ARCH_MSM7X27
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM7x27 SURF"
	help
	  Support for the Qualcomm MSM7x27 SURF eval board.

config MACH_MSM7X27_FFA
	depends on ARCH_MSM7X27
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM7x27 FFA"
	help
	  Support for the Qualcomm MSM7x27 FFA eval board.

config MACH_MSM7X27A_RUMI3
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7x27A RUMI3"
        help
          Support for the Qualcomm MSM7x27A RUMI3 Emulation Platform.

config MACH_MSM7X27A_SURF
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7x27A SURF"
        help
          Support for the Qualcomm MSM7x27A SURF.

config MACH_MSM7X27A_FFA
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7x27A FFA"
        help
          Support for the Qualcomm MSM7x27A FFA.

config MACH_MSM7625A_SURF
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7625A SURF"
        help
          Support for the Qualcomm MSM7625A SURF.

config MACH_MSM7625A_FFA
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7625A FFA"
        help
          Support for the Qualcomm MSM7625A FFA.

config MACH_MSM7627A_QRD1
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7627A QRD1"
        help
          Support for the Qualcomm MSM7627A Refrence Design.

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

config MACH_MSM7X30_FFA
       depends on ARCH_MSM7X30
       depends on !MSM_STACKED_MEMORY
       default y
       bool "MSM7x30 FFA"
       help
         Support for the Qualcomm MSM7x30 FFA eval board.

config MACH_MSM7X30_FLUID
       depends on ARCH_MSM7X30
       depends on !MSM_STACKED_MEMORY
       default y
       bool "MSM7x30 FLUID"
       help
         Support for the Qualcomm MSM7x30 FLUID eval board.

config MACH_SAPPHIRE
	depends on ARCH_MSM7X01A
	default n
	bool "Sapphire"

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

config MACH_QSD8X50_FFA
	depends on ARCH_QSD8X50
	depends on MSM_SOC_REV_NONE
	depends on MSM_STACKED_MEMORY
	default y
	bool "QSD8x50 FFA"
	help
	  Support for the Qualcomm QSD8x50 FFA eval board.

config MACH_MSM7X25_SURF
	depends on ARCH_MSM7X25
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM7x25 SURF"
	help
	  Support for the Qualcomm MSM7x25 SURF eval board.

config MACH_MSM7X25_FFA
	depends on ARCH_MSM7X25
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM7x25 FFA"
	help
	  Support for the Qualcomm MSM7x25 FFA eval board.

config MACH_MSM8X55_SURF
       depends on ARCH_MSM7X30
       depends on !MSM_STACKED_MEMORY
       default y
       bool "MSM8X55 SURF"
       help
         Support for the Qualcomm MSM8x55 SURF eval board.

config MACH_MSM8X55_FFA
       depends on ARCH_MSM7X30
       depends on !MSM_STACKED_MEMORY
       default y
       bool "MSM8X55 FFA"
       help
         Support for the Qualcomm MSM8x55 FFA eval board.

config MACH_MSM8X55_SVLTE_FFA
       depends on ARCH_MSM7X30
       depends on !MSM_STACKED_MEMORY
       default y
       bool "MSM8X55 SVLTE FFA"
       help
         Support for the Qualcomm MSM8x55 SVLTE FFA eval board.

config MACH_MSM8X55_SVLTE_SURF
       depends on ARCH_MSM7X30
       depends on !MSM_STACKED_MEMORY
       default y
       bool "MSM8X55 SVLTE SURF"
       help
         Support for the Qualcomm MSM8x55 SVLTE SURF eval board.

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

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

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

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

config MACH_MSM8X60_FLUID
	depends on ARCH_MSM8X60
	default n
	bool "MSM8x60 FLUID"
	help
	  Support for the Qualcomm MSM8x60 FLUID platform. The FLUID is an
	  8x60 target which has a form factor that is much closer to that
	  of a phone than other targets. It also has a new display and
	  touchscreen controller.

config MACH_MSM8X60_FUSION
	depends on ARCH_MSM8X60
	default n
	bool "MSM8x60 FUSION"
	help
	  Support for the Qualcomm MSM8x60 Fusion SURF device.

config MACH_MSM8X60_FUSN_FFA
	depends on ARCH_MSM8X60
	default n
	bool "MSM8x60 FUSN FFA"
	help
	  Support for the Qualcomm MSM8x60 Fusion FFA device.

config MACH_MSM8X60_DRAGON
	depends on ARCH_MSM8X60
	default n
	bool "MSM8x60 DRAGON"
	help
	  Support for the Qualcomm MSM8x60 Dragon board.

config MACH_MSM8960_SIM
	depends on ARCH_MSM8960
	bool "MSM8960 Simulator"
	help
	  Support for the Qualcomm MSM8960 simulator.

config MACH_MSM8960_RUMI3
	depends on ARCH_MSM8960
	bool "MSM8960 RUMI3"
	help
	  Support for the Qualcomm MSM8960 RUMI3 emulator.

config MACH_MSM8960_CDP
	depends on ARCH_MSM8960
	bool "MSM8960 CDP"
	help
	  Support for the Qualcomm MSM8960 CDP device.

config MACH_MSM8960_MTP
	depends on ARCH_MSM8960
	bool "MSM8960 MTP"
	help
	  Support for the Qualcomm MSM8960 MTP device.

config MACH_MSM8960_FLUID
	depends on ARCH_MSM8960
	bool "MSM8960 FLUID"
	help
	  Support for the Qualcomm MSM8960 FLUID device.

config MACH_MSM8960_LIQUID
	depends on ARCH_MSM8960
	bool "MSM8960 LIQUID"
	help
	  Support for the Qualcomm MSM8960 LIQUID device.

config MACH_MSM8930_CDP
	depends on ARCH_MSM8930
	bool "MSM8930 CDP"
	help
	  Support for the Qualcomm MSM8930 CDP device.

config MACH_MSM8930_MTP
	depends on ARCH_MSM8930
	bool "MSM8930 MTP"
	help
	  Support for the Qualcomm MSM8930 MTP device.

config MACH_MSM8930_FLUID
	depends on ARCH_MSM8930
	bool "MSM8930 FLUID"
	help
	  Support for the Qualcomm MSM8930 FLUID device.

config MACH_MSM8627_CDP
	depends on ARCH_MSM8930
	bool "MSM8627 CDP"
	help
	  Support for the Qualcomm MSM8627 CDP device.

config MACH_MSM8627_MTP
	depends on ARCH_MSM8930
	bool "MSM8627 MTP"
	help
	  Support for the Qualcomm MSM8627 MTP device.

config MACH_MSM9615_CDP
	depends on ARCH_MSM9615
	bool "MSM9615 CDP"
	help
	  Support for the Qualcomm MSM9615 CDP device.

config MACH_MSM9615_MTP
	depends on ARCH_MSM9615
	bool "MSM9615 MTP"
	help
	  Support for the Qualcomm MSM9615 MTP device.

config MSM_USE_TSIF1
	depends on ARCH_MSM8X60
	bool "MSM8x60 use TSIF1"
	help
	  Selects TSIF1 core to be used rather than TSIF0.
	  The two TSIF cores share the same DM configuration
	  so they cannot be used simultaneously.

config MACH_APQ8064_SIM
	depends on ARCH_APQ8064
	bool "APQ8064 Simulator"
	help
	  Support for the Qualcomm APQ8064 simulator.

config MACH_APQ8064_RUMI3
	depends on ARCH_APQ8064
	bool "APQ8064 RUMI3"
	help
	  Support for the Qualcomm APQ8064 RUMI3 emulator.

config MACH_FSM9XXX_SURF
	depends on ARCH_FSM9XXX
	depends on !MSM_STACKED_MEMORY
	default y
	bool "FSM9XXX SURF"
	help
	  Support for the Qualcomm FSM9xxx femtocell
	  chipset based SURF evaluation board and
	  FFA board.

endmenu

config MSM_STACKED_MEMORY
	bool "Stacked Memory"
	default y
	help
	  This option is used to indicate the presence of on-die stacked
	  memory.  When present this memory bank is used for a high speed
	  shared memory interface.  When not present regular RAM is used.

config PHYS_OFFSET
	hex
	default "0x40800000" if ARCH_MSM9615
	default "0x80200000" if ARCH_APQ8064
	default "0x80200000" if ARCH_MSM8960
	default "0x80200000" if ARCH_MSM8930
	default "0x80200000" if ARCH_MSMCOPPER
	default "0x10000000" if ARCH_FSM9XXX
	default "0x00200000" if !MSM_STACKED_MEMORY
	default "0x00000000" if ARCH_QSD8X50 && MSM_SOC_REV_A
	default "0x20000000" if ARCH_QSD8X50
	default "0x40200000" if ARCH_MSM8X60
	default "0x10000000"

config KERNEL_PMEM_EBI_REGION
	bool "Enable in-kernel PMEM region for EBI"
	default y if ARCH_MSM8X60
	depends on ANDROID_PMEM && (ARCH_MSM8X60 || ARCH_MSM8960)
	help
	   Enable the in-kernel PMEM allocator to use EBI memory.

config KERNEL_PMEM_SMI_REGION
	bool "Enable in-kernel PMEM region for SMI"
	default y if ARCH_MSM8X60
	depends on ANDROID_PMEM && ((ARCH_QSD8X50 && !PMEM_GPU0) || (ARCH_MSM8X60 && !VCM))
	help
	   Enable the in-kernel PMEM allocator to use SMI memory.

config PMEM_GPU0
	bool "Enable PMEM GPU0 region"
	default y
	depends on ARCH_QSD8X50 && ANDROID_PMEM
	help
	  Enable the PMEM GPU0 device on SMI Memory.

config MSM_AMSS_VERSION
	int
	default 6210 if MSM_AMSS_VERSION_6210
	default 6220 if MSM_AMSS_VERSION_6220
	default 6225 if MSM_AMSS_VERSION_6225

choice
	prompt "AMSS modem firmware version"

	default MSM_AMSS_VERSION_6225

	config MSM_AMSS_VERSION_6210
		bool "6.2.10"

	config MSM_AMSS_VERSION_6220
		bool "6.2.20"

	config MSM_AMSS_VERSION_6225
		bool "6.2.20 + New ADSP"
endchoice

config MSM_HAS_DEBUG_UART_HS
	bool
	help
	  Say Y here if high speed MSM UART is present.

config MSM_HAS_DEBUG_UART_HS_V14
	bool
	select MSM_HAS_DEBUG_UART_HS
	help
	  Say Y here if high speed MSM UART v1.4 is present.

config DEBUG_MSM8930_UART
	bool "Kernel low-level debugging messages via MSM 8930 UART"
	depends on ARCH_MSM8930 && DEBUG_LL
	select MSM_HAS_DEBUG_UART_HS
	help
	  Say Y here if you want the debug print routines to direct
	  their output to the serial port on MSM 8930 devices.

choice
	prompt "Debug UART"
	depends on DEBUG_LL

	config DEBUG_MSM_UART1
		bool "Kernel low-level debugging messages via MSM UART1"
		depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the first serial port on MSM devices.

	config DEBUG_MSM_UART2
		bool "Kernel low-level debugging messages via MSM UART2"
		depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the second serial port on MSM devices.

	config DEBUG_MSM_UART3
		bool "Kernel low-level debugging messages via MSM UART3"
		depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the third serial port on MSM devices.

	config DEBUG_MSM8660_UART
		bool "Kernel low-level debugging messages via MSM 8660 UART"
		depends on ARCH_MSM8X60
		select MSM_HAS_DEBUG_UART_HS
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the serial port on MSM 8660 devices.

	config DEBUG_MSM8960_UART
		bool "Kernel low-level debugging messages via MSM 8960 UART"
		depends on ARCH_MSM8960
		select DEBUG_MSM8930_UART
		select MSM_HAS_DEBUG_UART_HS
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the serial port on MSM 8960 devices.

	config DEBUG_MSMCOPPER_UART
		bool "Kernel low-level debugging messages via MSM Copper UART"
		depends on ARCH_MSMCOPPER
		select MSM_HAS_DEBUG_UART_HS_V14
		help
		  Say Y here if you want the debug print routines to direct
		  their output to the serial port on MSM Copper devices.
endchoice

choice
	prompt "Default Timer"
	default MSM7X00A_USE_GP_TIMER

	config MSM7X00A_USE_GP_TIMER
		bool "GP Timer"
	help
	  Low resolution timer that allows power collapse from idle.

	config MSM7X00A_USE_DG_TIMER
		bool "DG Timer"
	help
	  High resolution timer.
endchoice

choice
	prompt "Suspend sleep mode"
	default MSM7X00A_SLEEP_MODE_POWER_COLLAPSE_SUSPEND
	help
	  Allows overriding the sleep mode used. Leave at power
	  collapse suspend unless the arm9 image has problems.

	config MSM7X00A_SLEEP_MODE_POWER_COLLAPSE_SUSPEND
		bool "Power collapse suspend"
	help
	  Lowest sleep state. Returns through reset vector.

	config MSM7X00A_SLEEP_MODE_POWER_COLLAPSE
		bool "Power collapse"
	help
	  Sleep state that returns through reset vector.

	config MSM7X00A_SLEEP_MODE_APPS_SLEEP
		bool "Apps Sleep"

	config MSM7X00A_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT
		bool "Ramp down cpu clock and wait for interrupt"

	config MSM7X00A_SLEEP_WAIT_FOR_INTERRUPT
		bool "Wait for interrupt"
endchoice

config MSM7X00A_SLEEP_MODE
	int
	default 0 if MSM7X00A_SLEEP_MODE_POWER_COLLAPSE_SUSPEND
	default 1 if MSM7X00A_SLEEP_MODE_POWER_COLLAPSE
	default 2 if MSM7X00A_SLEEP_MODE_APPS_SLEEP
	default 3 if MSM7X00A_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT
	default 4 if MSM7X00A_SLEEP_WAIT_FOR_INTERRUPT

choice
	prompt "Idle sleep mode"
	default MSM7X00A_IDLE_SLEEP_MODE_POWER_COLLAPSE
	help
	  Allows overriding the sleep mode used from idle. Leave at power
	  collapse suspend unless the arm9 image has problems.

	config MSM7X00A_IDLE_SLEEP_MODE_POWER_COLLAPSE_SUSPEND
		bool "Power collapse suspend"
	help
	  Lowest sleep state. Returns through reset vector.

	config MSM7X00A_IDLE_SLEEP_MODE_POWER_COLLAPSE
		bool "Power collapse"
	help
	  Sleep state that returns through reset vector.

	config MSM7X00A_IDLE_SLEEP_MODE_APPS_SLEEP
		bool "Apps Sleep"

	config MSM7X00A_IDLE_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT
		bool "Ramp down cpu clock and wait for interrupt"

	config MSM7X00A_IDLE_SLEEP_WAIT_FOR_INTERRUPT
		bool "Wait for interrupt"
endchoice

config MSM7X00A_IDLE_SLEEP_MODE
	int
	default 0 if MSM7X00A_IDLE_SLEEP_MODE_POWER_COLLAPSE_SUSPEND
	default 1 if MSM7X00A_IDLE_SLEEP_MODE_POWER_COLLAPSE
	default 2 if MSM7X00A_IDLE_SLEEP_MODE_APPS_SLEEP
	default 3 if MSM7X00A_IDLE_SLEEP_MODE_RAMP_DOWN_AND_WAIT_FOR_INTERRUPT
	default 4 if MSM7X00A_IDLE_SLEEP_WAIT_FOR_INTERRUPT

config MSM7X00A_IDLE_SLEEP_MIN_TIME
	int "Minimum idle time before sleep"
	default 20000000
	help
	  Minimum idle time in nanoseconds before entering low power mode.

config MSM7X00A_IDLE_SPIN_TIME
	int "Idle spin time before cpu ramp down"
	default 80000
	help
	  Spin time in nanoseconds before ramping down cpu clock and entering
	  any low power state.

menuconfig MSM_IDLE_STATS
	bool "Collect idle statistics"
	default y
	help
	  Collect idle statistics and export them in proc/msm_pm_stats.

if MSM_IDLE_STATS

config MSM_IDLE_STATS_FIRST_BUCKET
	int "First bucket time"
	default 62500
	help
	  Upper time limit in nanoseconds of first bucket.

config MSM_IDLE_STATS_BUCKET_SHIFT
	int "Bucket shift"
	default 2

config MSM_IDLE_STATS_BUCKET_COUNT
	int "Bucket count"
	default 10

config MSM_SUSPEND_STATS_FIRST_BUCKET
	int "First bucket time for suspend"
	default 1000000000
	help
	  Upper time limit in nanoseconds of first bucket of the
	  histogram.  This is for collecting statistics on suspend.

endif # MSM_IDLE_STATS

config CPU_HAS_L2_PMU
	bool "L2CC PMU Support"
	help
	 Select this if the L2 cache controller has a Performance Monitoring Unit.

config HTC_HEADSET
	tristate "HTC 2 Wire detection driver"
	default n
	help
	 Provides support for detecting HTC 2 wire devices, such as wired
	 headset, on the trout platform. Can be used with the msm serial
	 debugger, but not with serial console.

config TROUT_BATTCHG
	depends on MACH_TROUT && POWER_SUPPLY
	default y
	bool "Trout battery / charger driver"

config HTC_PWRSINK
	depends on MSM_SMD
	default n
	bool "HTC Power Sink Driver"

config QSD_SVS
	bool "QSD Static Voltage Scaling"
	depends on (MACH_QSD8X50_SURF || MACH_QSD8X50_FFA)
	default y
	select TPS65023
	help
	  Enables static voltage scaling using the TPS65023 PMIC.

config QSD_PMIC_DEFAULT_DCDC1
	int "PMIC default output voltage"
	depends on (MACH_QSD8X50_SURF || MACH_QSD8X50_FFA)
	default 1250
	help
	  This is the PMIC voltage at Linux kernel boot.

config MSM_FIQ_SUPPORT
	default y
	bool "Enable installation of an FIQ handler."

config MSM_SERIAL_DEBUGGER
	select MSM_FIQ_SUPPORT
	select KERNEL_DEBUGGER_CORE
	default n
	bool "FIQ Mode Serial Debugger"
	help
	  The FIQ serial debugger can accept commands even when the
	  kernel is unresponsive due to being stuck with interrupts
	  disabled.  Depends on the kernel debugger core in drivers/misc.

config MSM_SERIAL_DEBUGGER_CONSOLE
	depends on MSM_SERIAL_DEBUGGER
	default n
	bool "Console on FIQ Serial Debugger port"
	help
	  Enables a console so that printk messages are displayed on
	  the debugger serial port as the occur.

config MSM_PROC_COMM
	default y
	bool "Proc-Comm RPC Interface"
	help
	  Enables a lightweight communications interface to the
	  baseband processor.

config MSM_SMD
	bool "MSM Shared Memory Driver (SMD)"
	help
	  Support for the shared memory interface between the apps
	  processor and the baseband processor.  Provides access to
	  the "shared heap", as well as virtual serial channels
	  used to communicate with various services on the baseband
	  processor.

choice
	prompt "MSM Shared memory interface version"
	depends on MSM_SMD
	default MSM_SMD_PKG3 if ARCH_MSM_ARM11
	default MSM_SMD_PKG4 if ARCH_MSM_SCORPION

	config MSM_SMD_PKG3
	  bool
	    prompt "Package 3"

	config MSM_SMD_PKG4
	  bool
	    prompt "Package 4"
endchoice

config MSM_RPC_SDIO_XPRT
	depends on MSM_SDIO_AL
	default y
	bool "MSM SDIO XPRT Layer"
	help
	  SDIO Transport Layer for RPC Rouer

config MSM_RPC_SDIO_DEBUG
	depends on MSM_RPC_SDIO_XPRT
	default y
	bool "MSM SDIO XPRT debug support"
	help
	  Support for debugging SDIO XPRT

config MSM_SMD_DEBUG
	depends on MSM_SMD
	default y
	bool "MSM SMD debug support"
	help
	  Support for debugging the SMD for communication
	  between the ARM9 and ARM11

config MSM_SDIO_AL
	depends on ((ARCH_MSM7X30 || MACH_MSM8X60_FUSN_FFA || MACH_TYPE_MSM8X60_FUSION) && HAS_WAKELOCK)
	default y
	tristate "SDIO-Abstraction-Layer"
	help
	  Support MSM<->MDM Communication over SDIO bus.
	  MDM SDIO-Client should have pipes support.

config MSM_SDIO_DMUX
	bool "SDIO Data Mux Driver"
	depends on MSM_SDIO_AL
	default n
	help
	  Support Muxed Data Channels over SDIO interface.

config MSM_BAM_DMUX
	bool "BAM Data Mux Driver"
	depends on SPS
	default n
	help
	  Support Muxed Data Channels over BAM interface.
	  BAM has a limited number of pipes.  This driver
	  provides a means to support more logical channels
	  via muxing than BAM could without muxing.

config MSM_N_WAY_SMD
	depends on (MSM_SMD && !(ARCH_MSM7X01A))
	default y
	bool "MSM N-WAY SMD support"
	help
	  Supports APPS-QDSP SMD communication along with
	  normal APPS-MODEM SMD communication.

config MSM_N_WAY_SMSM
	depends on (MSM_SMD && !(ARCH_MSM7X01A))
	default y
	bool "MSM N-WAY SMSM support"
	help
	  Supports APPS-QDSP SMSM communication along with
	  normal APPS-MODEM SMSM communication.

config MSM_RESET_MODEM
	tristate "Reset Modem Driver"
	depends on MSM_SMD
	default m
	help
	  Allows the user to reset the modem through a device node.

config MSM_SMD_LOGGING
	depends on MSM_SMD
	default y
	bool "MSM Shared Memory Logger"
	help
	  This option exposes the shared memory logger at /dev/smem_log
	  and a debugfs node named smem_log.

	  If in doubt, say yes.

config MSM_SMD_NMEA
	bool "NMEA GPS Driver"
	depends on MSM_SMD
	default y
	help
	  Enable this to support the NMEA GPS device.

	  If in doubt, say yes.

config MSM_SDIO_TTY
	bool "SDIO TTY Driver"
	depends on MSM_SDIO_AL
	default n
	help
	  Provides a TTY driver SDIO TTY
	  This driver can be used by user space
	  applications for passing data through the
	  SDIO interface.

config MSM_SMD_TTY
	bool "SMD TTY Driver"
	depends on MSM_SMD
	default y
	help
	  Provides TTY interfaces to interact with the modem.

	  If in doubt, say yes.

config MSM_SMD_QMI
	bool "SMD QMI Driver"
	depends on MSM_SMD
	default y
	help
	  Manages network data connections.

	  If in doubt, say yes.

config MSM_SMD_PKT
	bool "SMD Packet Driver"
	depends on MSM_SMD
	default y
	help
	  Provides a binary SMD non-muxed packet port interface.

	  If in doubt, say yes.

config MSM_SDIO_CMUX
	bool "SDIO CMUX Driver"
	depends on MSM_SDIO_AL
	default n
	help
	  Provides a Muxed port interface over SDIO QMI

config MSM_DSPS
	bool "Sensors DSPS driver"
	depends on (MSM_PIL && (ARCH_MSM8X60 || ARCH_MSM8960))
	default n
	help
	  Provides user-space interface to the sensors manager
	  to turn on/off the Sensors Processor system clocks.
	  It is the DSPS responsibility to turn on/off the sensors
	  themself.
	  The number of clocks and their name may vary between targets.
	  It also triggers the PIL to load the DSPS firmware.

config MSM_SDIO_CTL
	bool "SDIO CTL Driver"
	depends on MSM_SDIO_CMUX
	default n
	help
	  Provides a binary SDIO control port interface.

config MSM_ONCRPCROUTER
	depends on MSM_SMD
	default n
	bool "MSM ONCRPC router support"
	help
	  Support for the MSM ONCRPC router for communication between
	  the ARM9 and ARM11

config MSM_IPC_ROUTER
	depends on NET
	default n
	bool "MSM IPC Router support"
	help
	  Support for the MSM IPC Router for communication between
	  the APPs and the MODEM

config MSM_IPC_ROUTER_SMD_XPRT
	depends on MSM_SMD
	depends on MSM_IPC_ROUTER
	default n
	bool "MSM SMD XPRT Layer"
	help
	  SMD Transport Layer for IPC Router

config MSM_ONCRPCROUTER_DEBUG
	depends on MSM_ONCRPCROUTER
	default y
	bool "MSM debug ONCRPC router support"
	help
	  Support for debugging the ONCRPC router for communication
	  between the ARM9 and ARM11

config MSM_RPC_LOOPBACK_XPRT
	depends on MSM_ONCRPCROUTER
	default n
	bool "MSM RPC local routing support"
	help
	  Support for routing RPC messages between APPS clients
	  and APPS servers.  Helps in testing APPS RPC framework.

config MSM_RPCSERVER_TIME_REMOTE
	depends on MSM_ONCRPCROUTER && RTC_HCTOSYS
	default y
	bool "Time remote RPC server"
	help
	  The time remote server receives notification of time bases and
	  reports these events to registered callback functions.

config MSM_RPCSERVER_WATCHDOG
	depends on MSM_ONCRPCROUTER
	default y
	bool "Watchdog RPC server"
	help
	  The dog_keepalive server handles watchdog events.

config MSM_RPC_WATCHDOG
	depends on MSM_ONCRPCROUTER
	default n
	bool "Watchdog RPC client"
	help
	  The dog_keepalive client module.

config MSM_RPC_PING
	depends on MSM_ONCRPCROUTER && DEBUG_FS
	default m
	bool "MSM rpc ping"
	help
	  Implements MSM rpc ping test module.

config MSM_RPC_PROC_COMM_TEST
	depends on DEBUG_FS && MSM_PROC_COMM
	default m
	bool "MSM rpc proc comm test"
	help
	  Implements MSM rpc proc comm test module.

config MSM_RPC_OEM_RAPI
	depends on MSM_ONCRPCROUTER
	default m
	bool "MSM oem rapi"
	help
	  Implements MSM oem rapi client module.

config MSM_RPCSERVER_HANDSET
	depends on MSM_ONCRPCROUTER
	default y
	bool "Handset events RPC server"
	help
	  Support for receiving handset events like headset detect,
	  headset switch and clamshell state.

config MSM_RMT_STORAGE_CLIENT
	depends on (ARCH_MSM && MSM_ONCRPCROUTER)
	default n
	bool "Remote Storage RPC client"
	help
	  Provide RPC mechanism for remote processors to access storage
	  device on apps processor.

config MSM_RMT_STORAGE_CLIENT_STATS
	depends on (MSM_RMT_STORAGE_CLIENT && DEBUG_FS)
	default n
	bool "Remote storage RPC client performance statistics"
	help
	  Collects performance statistics and shows this information
	  through a debugfs file rmt_storage_stats.

config MSM_SDIO_SMEM
        depends on MSM_SDIO_AL
        default n
        bool "SDIO SMEM for remote storage"
        help
          Copies data from remote MDM9K memory to local MSM8x60
	  memory. Used by remote storage client to shadow
	  MDM9K filesystem.

config MSM_DALRPC
	bool "DAL RPC support"
	depends on ARCH_MSM_SCORPION || ARCH_MSM_KRAIT
	default y
	help
	  Supports RPC calls to DAL devices on remote processor cores.

config MSM_DALRPC_TEST
	tristate "DAL RPC test module"
	depends on (MSM_DALRPC && DEBUG_FS)
	default m
	help
	  Exercises DAL RPC calls to QDSP6.

if CPU_FREQ_MSM

config MSM_CPU_FREQ_SET_MIN_MAX
	bool "Set Min/Max CPU frequencies."
	default n
	help
	  Allow setting min and max CPU frequencies. Sysfs can be used
	  to override these values.

config MSM_CPU_FREQ_MAX
	int "Max CPU Frequency"
	depends on MSM_CPU_FREQ_SET_MIN_MAX
	default 384000

config MSM_CPU_FREQ_MIN
	int "Min CPU Frequency"
	depends on MSM_CPU_FREQ_SET_MIN_MAX
	default 245760

endif # CPU_FREQ_MSM

config MSM_CPU_AVS
	bool "Enable software controlled Adaptive Voltage Scaling (AVS)"
	depends on (ARCH_MSM_SCORPION && QSD_SVS)
	depends on ARCH_QSD8X50
	default n
	select MSM_AVS_HW
	help
	  This enables the s/w control of Adaptive Voltage Scaling feature
	  in Qualcomm ARMv7 CPUs. It adjusts the voltage for each frequency
	  based on feedback from three ring oscillators in the CPU.

config MSM_AVS_HW
	bool "Enable Adaptive Voltage Scaling (AVS)"
	default n
	help
	  Enable AVS hardware to fine tune voltage at each frequency. The
	  AVS hardware blocks associated with each Qualcomm ARMv7 cores can
	  fine tune the voltages based on the feedback from the ring
	  oscillators.

config MSM_HW3D
	tristate "MSM Hardware 3D Register Driver"
	depends on ANDROID_PMEM
	default y
	help
	  Provides access to registers needed by the userspace OpenGL|ES
	  library.

config MSM_ADSP
	depends on (ARCH_MSM7X01A || ARCH_MSM7X25 || ARCH_MSM7X27)
	tristate "MSM ADSP driver"
	depends on ANDROID_PMEM
	default y
	help
	  Provides access to registers needed by the userspace aDSP library.

config ADSP_RPC_VER
	hex
	default 0x30002 if (ARCH_MSM7X27 || (ARCH_MSM7X25 && AMSS_7X25_VERSION_2009))
	default 0x30001 if (ARCH_MSM7X01A || (ARCH_MSM7X25 && AMSS_7X25_VERSION_2008))
	depends on MSM_ADSP
	help
	 Select proper ADSP RPC version
choice
	prompt "ADSP RPC version"

	default AMSS_7X25_VERSION_2009

	config AMSS_7X25_VERSION_2009
		bool "2.0.09"

	config AMSS_7X25_VERSION_2008
		bool "2.0.08"
endchoice

config MSM7KV2_AUDIO
	bool "MSM7K v2 audio"
	depends on (ARCH_MSM7X30 && ANDROID_PMEM)
	default y
	help
	  Enables QDSP5V2-based audio drivers for audio playbacks and
	  voice call.

config MSM_ADSP_REPORT_EVENTS
	bool "Report modem events from the DSP"
	default y
	depends on (MSM_ADSP || MSM7KV2_AUDIO)
	help
	  Normally, only messages from the aDSP are reported to userspace.
	  With this option, we report events from the aDSP as well.

config MSM_QDSP6
	tristate "QDSP6 support"
	depends on ARCH_QSD8X50 && ANDROID_PMEM
	default y
	help
	  Enable support for qdsp6. This provides audio and video functionality.

config MSM8X60_AUDIO
	tristate "MSM8X60 audio support"
	depends on ARCH_MSM8X60 && ANDROID_PMEM
	default y
	help
	  Enable support for qdsp6v2. This provides audio functionality.

config MSM8X60_FTM_AUDIO_DEVICES
	bool "MSM8X60 audio factory test mode support"
	depends on MSM8X60_AUDIO
	help
	  Enable support audio factory test mode devices.  This is used
	  in a production line environment.

config RTAC
	bool "MSM8K real-time audio calibration support"
	default y
	help
	  Enable support for rtac. This enables calibration during
	  audio operation

config MSM7X27A_AUDIO
	bool "MSM7X27A audio support"
	depends on ARCH_MSM7X27A && MSM_ADSP
	default n
	help
	  Enable support for 7x27a. This provides audio functionality.

config MSM_PROC_COMM_REGULATOR
	bool
	depends on MSM_PROC_COMM && REGULATOR
	help
	  Enable regulator framework support for regulators managed by PMLIB
	  on the modem, and controlled through proccomm calls.

config MSM_VREG_SWITCH_INVERTED
	bool "Reverse vreg switch polarity"
	default n
	help
	  Reverses the enable and disable for vreg switch.

config MSM_DMA_TEST
	tristate "MSM DMA test module"
	default m
	help
	  Intended to be compiled as a module.  Provides a device node
	  and ioctls for testing the MSM dma system.

config WIFI_CONTROL_FUNC
	bool "Enable WiFi control function abstraction"
	help
	  Enables Power/Reset/Carddetect function abstraction

config WIFI_MEM_PREALLOC
	depends on WIFI_CONTROL_FUNC
	bool "Preallocate memory for WiFi buffers"
	help
	  Preallocates memory buffers for WiFi driver

config QSD_AUDIO
	bool "QSD audio"
	depends on ARCH_MSM_SCORPION && MSM_DALRPC && ANDROID_PMEM && !MSM_SMP
	default y
	help
	  Provides PCM, MP3, and AAC audio playback.

config AUDIO_AAC_PLUS
	depends on (MSM_ADSP || QSD_AUDIO || MSM7KV2_AUDIO)
	bool "AAC+ Audio"
	default y
	help
	  Provides AAC+ decoding

config AUDIO_ENHANCED_AAC_PLUS
	depends on AUDIO_AAC_PLUS
	bool "Enhanced AAC+ Audio"
	default y
	help
	  Provides Enhanced AAC+ decoding

config SURF_FFA_GPIO_KEYPAD
	bool "MSM SURF/FFA GPIO keypad"
	depends on INPUT_GPIO = "y"
	default y
	help
	  Select if the GPIO keypad is attached.

config MSM_SLEEP_TIME_OVERRIDE
	bool "Allow overriding suspend/sleep time with PM module parameter"
	default y
	help
	  Enable the module parameter sleep_time_override. Specified
	  in units of seconds, it overwrites the normal sleep time of
	  suspend. The feature is required for automated power management
	  testing.

config MSM_MEMORY_LOW_POWER_MODE
	bool "Control the low power modes of memory"
	default n
	help
	  The application processor controls whether memory should enter
	  which low power mode.

choice
	prompt "Default Memory Low Power Mode during Idle"
	depends on MSM_MEMORY_LOW_POWER_MODE
	default MSM_MEMORY_LOW_POWER_MODE_IDLE_ACTIVE
	help
	  Selects the default low power mode of the memory during idle
	  sleep.

	config MSM_MEMORY_LOW_POWER_MODE_IDLE_ACTIVE
		bool "Memory active"

	config MSM_MEMORY_LOW_POWER_MODE_IDLE_RETENTION
		bool "Memory in retention"

	config MSM_MEMORY_LOW_POWER_MODE_IDLE_DEEP_POWER_DOWN
		bool "Memory in deep power down"
endchoice

choice
	prompt "Default Memory Low Power Mode during Suspend"
	depends on MSM_MEMORY_LOW_POWER_MODE
	default MSM_MEMORY_LOW_POWER_MODE_SUSPEND_ACTIVE
	help
	  Selects the default low power mode of the memory during suspend
	  sleep.

	config MSM_MEMORY_LOW_POWER_MODE_SUSPEND_ACTIVE
		bool "Memory active"

	config MSM_MEMORY_LOW_POWER_MODE_SUSPEND_RETENTION
		bool "Memory in retention"

	config MSM_MEMORY_LOW_POWER_MODE_SUSPEND_DEEP_POWER_DOWN
		bool "Memory in deep power down"
endchoice

choice
	prompt "Power management timeout action"
	default MSM_PM_TIMEOUT_HALT
	help
	  Selects the Application Processor's action when Power Management
	  times out waiting for Modem's handshake.

	config MSM_PM_TIMEOUT_HALT
		bool "Halt the Application Processor"

	config MSM_PM_TIMEOUT_RESET_MODEM
		bool "Reset the Modem Processor"

	config MSM_PM_TIMEOUT_RESET_CHIP
		bool "Reset the entire chip"
endchoice

config MSM_IDLE_WAIT_ON_MODEM
	int "Wait for Modem to become ready for idle power collapse"
	default 0
	help
	  If Modem is not ready to handle Application Processor's request
	  for idle power collapse, wait the number of microseconds in case
	  Modem becomes ready soon.

config MSM_PIL
	bool "Peripheral image loading"
	select FW_LOADER
	depends on (ARCH_MSM8X60 || ARCH_MSM8960)
	default n
	help
	  Some peripherals need to be loaded into memory before they can be
	  brought out of reset.

	  Say yes to support these devices.

config MSM_PIL_QDSP6V4
	tristate "QDSP6v4 (Hexagon) Boot Support"
	depends on MSM_PIL
	help
	  Support for booting and shutting down QDSP6v4 processors (hexagon).
	  The QDSP6 is a low power DSP used in audio, modem firmware, and modem
	  software applications.

config MSM_SCM
	bool "Secure Channel Manager (SCM) support"
	default n

config MSM_SUBSYSTEM_RESTART
	bool "MSM Subsystem Restart Driver"
	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM9615)
	default n
	help
	  This option enables the MSM subsystem restart driver, which provides
	  a framework to handle subsystem crashes.

config MSM_SYSMON_COMM
	bool "MSM System Monitor communication support"
	depends on MSM_SMD && MSM_SUBSYSTEM_RESTART
	default y
	help
	  This option adds support for MSM System Monitor library, which
	  provides an API that may be used for notifying subsystems within
	  the SoC about other subsystems' power-up/down state-changes.

config MSM_MODEM_8960
	bool "MSM 8960 Modem driver"
	depends on (ARCH_MSM8960 || ARCH_MSM9615)
	help
	 This option enables the modem driver for the MSM8960 and MSM9615, which monitors
	 modem hardware watchdog interrupt lines and plugs into the subsystem
	 restart and PIL drivers. For MSM9615, it only supports a full chip reset.

config MSM_LPASS_8960
	tristate "MSM 8960 Lpass driver"
	depends on (ARCH_MSM8960 || ARCH_MSM9615)
	help
	 This option enables the lpass driver for the MSM8960 and MSM9615. This monitors
	 lpass hardware watchdog interrupt lines and plugs into the subsystem
	 restart and PIL drivers. For MSM9615, it only supports a full chip reset.

config MSM_WCNSS_SSR_8960
	tristate "MSM 8960 WCNSS restart module"
	depends on (ARCH_MSM8960)
	help
	 This option enables the WCNSS restart module for MSM8960, which
	 monitors WCNSS hardware watchdog interrupt lines and plugs WCNSS
	 into the subsystem restart framework.

config SCORPION_Uni_45nm_BUG
	bool "Scorpion Uni 45nm(SC45U): Workaround for ICIMVAU and BPIMVA"
	depends on ARCH_MSM7X30 || (ARCH_QSD8X50 && MSM_SOC_REV_A)
	default y
	help
	  Invalidating the Instruction Cache by Modified Virtual Address to PoU and
	  invalidating the Branch Predictor Array by Modified Virtual Address can
	  create invalid entries in the TLB with the wrong ASID values on Scorpion
	  Uniprocessor 45nm (SC45U) cores. This option enables the recommended software
	  workaround for Scorpion Uniprocessor 45nm cores.

	  This bug is not applicable to any ScorpionMP or Scorpion Uni 65nm(SC65U) cores.

config MSM_BUSPM_DEV
	tristate "MSM Bus Performance Monitor Kernel Module"
	depends on (ARCH_MSM8X60 || ARCH_MSM8960)
	default m
	help
	  This kernel module is used to mmap() hardware registers for the
	  performance monitors, counters, etc. The module can also be used to
	  allocate physical memory which is used by bus performance hardware to
	  dump performance data.

config MSM_TZ_LOG
	tristate "MSM Trust Zone (TZ) Log Driver"
	depends on DEBUG_FS
	help
	  This option enables a driver with a debugfs interface for messages
	  produced by the Secure code (Trust zone). These messages provide
	  diagnostic information about TZ operation.

config MSM_RPM_LOG
	tristate "MSM Resource Power Manager Log Driver"
	depends on DEBUG_FS
	depends on MSM_RPM
	default n
	help
	  This option enables a driver which can read from a circular buffer
	  of messages produced by the RPM. These messages provide diagnostic
	  information about RPM operation. The driver outputs the messages
	  via a debugfs node.

config MSM_RPM_STATS_LOG
	tristate "MSM Resource Power Manager Stat Driver"
	depends on DEBUG_FS
	depends on MSM_RPM
	default n
	  help
	  This option enables a driver which reads RPM messages from a shared
	  memory location. These messages provide statistical information about
	  the low power modes that RPM enters. The drivers outputs the message
	  via a debugfs node.

config MSM_IOMMU
	bool "MSM IOMMU Support"
	depends on ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_APQ8064
	select IOMMU_API
	default n
	help
	  Support for the IOMMUs found on certain Qualcomm SOCs.
	  These IOMMUs allow virtualization of the address space used by most
	  cores within the multimedia subsystem.

	  If unsure, say N here.

config IOMMU_PGTABLES_L2
	bool "Allow SMMU page tables in the L2 cache (Experimental)"
	depends on MSM_IOMMU=y
	depends on MMU
	depends on CPU_DCACHE_DISABLE=n
	depends on SMP
	default y
	help
	 Improves TLB miss latency at the expense of potential L2 pollution.
	 However, with large multimedia buffers, the TLB should mostly contain
	 section mappings and TLB misses should be quite infrequent.
	 Most people can probably say Y here.

config MSM_DIRECT_SCLK_ACCESS
	bool "Direct access to the SCLK timer"
	default n

config IOMMU_API
       bool

config MSM_GPIOMUX
	bool

config MSM_V2_TLMM
       bool

config FSM9XXX_TLMM
	bool

config MSM_SECURE_IO
	bool

config MSM_NATIVE_RESTART
	bool

config MSM_BUS_SCALING
	bool "Bus scaling driver"
	default n

config MSM_BUS_RPM_MULTI_TIER_ENABLED
	bool "RPM Multi-tiering Configuration"
	depends on MSM_BUS_SCALING

config MSM_WATCHDOG
	bool "MSM Watchdog Support"
	depends on ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM9615
	help
		This enables the watchdog as is present on 8x60. Currently we use
		core 0's watchdog, and reset the entire SoC if it times out. It does
		not run during the bootup process, so it will not catch any early
		lockups.

config MSM_DLOAD_MODE
	bool "Enable download mode on crashes"
	depends on ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM9615
	default n
	help
		This makes the SoC enter download mode when it resets
		due to a kernel panic. Note that this doesn't by itself
		make the kernel reboot on a kernel panic - that must be
		enabled via another mechanism.

config HAS_QDSS
	bool "QDSS Present"
	help
	 Select this if the chip has Qualcomm Debug Subsystem implemented.

config MSM_DEBUG_ACROSS_PC
	bool "Debug support across power collapse"
	help
	  Enables debug state to be saved and restored across power collapse.

config MSM_JTAG_V7
	depends on CPU_V7 && !HAS_QDSS
	default y if DEBUG_KERNEL
	bool "JTAG debug support"
	select MSM_DEBUG_ACROSS_PC
	help
          Add additional support for JTAG kernel debugging.

config MSM_TRACE_ACROSS_PC
	bool "Trace support across power collapse"
	help
	  Enables trace state to be saved and restored across power collapse.

config MSM_ETM
	tristate "Enable MSM ETM and ETB"
	depends on ARCH_MSM8X60 && !HAS_QDSS
	select MSM_TRACE_ACROSS_PC
	help
	  Enables embedded trace collection on Qualcomm v7 CPUs.

config MSM_QDSS
	bool "Qualcomm Debug Subsystem"
	depends on HAS_QDSS
	select MSM_DEBUG_ACROSS_PC
	select MSM_TRACE_ACROSS_PC
	help
	  Enables support for Qualcomm Debug Subsystem.

config MSM_SLEEP_STATS
	bool "Enable exporting of MSM sleep stats to userspace"
	depends on CPU_IDLE
	default n

config MSM_STANDALONE_POWER_COLLAPSE
       bool "Enable standalone power collapse"
       default n

config MSM_GSBI9_UART
	bool "Enable GSBI9 UART device"
	default n
	help
	  This enables GSBI9 configured into UART.

config MSM_SHARED_GPIO_FOR_UART2DM
	bool "Use shared GPIOs into UART mode"
	depends on (ARCH_MSM7X27A && !MMC_MSM_SDC3_8_BIT_SUPPORT && !MMC_MSM_SDC4_SUPPORT)
	help
	  This option configures GPIO muxed with SDC4/MMC3
	  8-bit mode into UART mode. It is used for serial
	  console on UART2DM. Say Y if you want to have
	  serial console on UART2DM.

config MSM_SHOW_RESUME_IRQ
	bool "Enable logging of interrupts that could have caused resume"
	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSMCOPPER)
	default n
	help
		This option logs wake up interrupts that have triggered just before
		the resume loop unrolls. Say Y if you want to debug why the system
		resumed.

config BT_MSM_PINTEST
	tristate "MSM Bluetooth Pin Connectivity Test"
	depends on ((ARCH_MSM8X60 || ARCH_MSM7X27A) && DEBUG_FS)
        default n
	help
	  Bluetooth MSM Pin Connectivity test module.
	  This driver provides support for verifying the MSM to BT pin
	  connectivity.

config MSM_FAKE_BATTERY
		depends on POWER_SUPPLY
		default n
		bool "MSM Fake Battery"
		help
		 Enables MSM fake battery driver.

config MSM_QDSP6_APR
	bool "Audio QDSP6 APR support"
	depends on MSM_SMD
	default n
	help
	  Enable APR IPC protocol support between
	  application processor and QDSP6. APR is
	  used by audio driver to configure QDSP6's
	  ASM, ADM and AFE.


config MSM_AUDIO_QDSP6
        bool "QDSP6 HW Audio support"
        select SND_SOC_MSM_QDSP6_INTF
        default n
        help
          Enable HW audio support in QDSP6.
          QDSP6 can support HW encoder & decoder and audio processing

config MSM_ULTRASOUND
	bool "MSM ultrasound support"
	depends on MSM_AUDIO_QDSP6
	help
	  Enable support for qdsp6/ultrasound.

config MSM_RPC_VIBRATOR
	bool "RPC based MSM Vibrator Support"
	depends on MSM_ONCRPCROUTER
	help
	  Enable the vibrator support on MSM over RPC. The vibrator
	  is connected on the PMIC. Say Y if you want to enable this
	  feature.

config PM8XXX_RPC_VIBRATOR
	bool "RPC based Vibrator on PM8xxx PMICs"
	depends on MSM_RPC_VIBRATOR
	help
	  Enable the vibrator support on MSM over RPC. The vibrator
	  is connected on the PM8XXX PMIC. Say Y if you want to enable
	  this feature.

config MSM_SPM_V1
	bool "Driver support for SPM Version 1"
	help
	  Enables the support for Version 1 of the SPM driver. SPM hardware is
	  used to manage the processor power during sleep. The driver allows
	  configuring SPM to allow different power modes.

config MSM_SPM_V2
	bool "Driver support for SPM Version 2"
	help
	  Enables the support for Version 2 of the SPM driver. SPM hardware is
	  used to manage the processor power during sleep. The driver allows
	  configuring SPM to allow different power modes.

config MSM_L2_SPM
	bool "SPM support for L2 cache"
	depends on MSM_SPM_V2
	help
	  Enable SPM driver support for L2 cache. Some MSM chipsets allow
	  control of L2 cache low power mode with a Subsystem Power manager.
	  Enabling this driver allows configuring L2 SPM for low power modes
	  on supported chipsets.

config MSM_MULTIMEDIA_USE_ION
	bool "Multimedia suport using Ion"
	depends on ION_MSM
	help
	  Enable support for multimedia drivers using Ion for buffer management
	  instead of pmem. Selecting this may also involve userspace
	  dependencies as well.

endif
