if ARCH_MSM

menu "MSM SoC Type"

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

config ARCH_MSM7X25
	bool "MSM7x25"
	select ARCH_MSM_ARM11
	select MSM_VIC
	select CPU_V6
	select GPIO_MSM_V1
	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
	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 GPIO_MSM_V1
	select MSM_REMOTE_SPINLOCK_SWP if MSM_SOC_REV_NONE
	select MSM_GPIOMUX
	select REGULATOR
	select MULTI_IRQ_HANDLER
	select MSM_PROC_COMM_REGULATOR
	select CLEANCACHE
	select QCACHE
	select MSM_PM2 if PM
	select MSM_RUN_QUEUE_STATS if MSM_SOC_REV_A
	select DONT_MAP_HOLE_AFTER_MEMBANK0
	select MIGHT_HAVE_CACHE_L2X0
	select MSM_MODEM_RESTART

config ARCH_MSM7X30
	bool "MSM7x30"
	select ARCH_MSM_SCORPION
	select MSM_VIC
	select CPU_V7
	select GPIO_MSM_V1
	select MSM_REMOTE_SPINLOCK_DEKKERS
	select ARCH_SPARSEMEM_ENABLE
	select ARCH_HAS_HOLES_MEMORYMODEL
	select MEMORY_HOTPLUG
	select MEMORY_HOTREMOVE
	select ARCH_ENABLE_MEMORY_HOTPLUG
	select ARCH_ENABLE_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
	select MSM_PM2 if PM
	select HOLES_IN_ZONE if SPARSEMEM
	select MSM_MODEM_RESTART
	select ARM_HAS_SG_CHAIN

config ARCH_QSD8X50
	bool "QSD8X50"
	select ARCH_MSM_SCORPION
	select MSM_VIC
	select CPU_V7
	select GPIO_MSM_V1
	select MSM_REMOTE_SPINLOCK_LDREX
	select CPU_USE_DOMAINS
	select EMULATE_DOMAIN_MANAGER_V7
	select MSM_GPIOMUX
	select MSM_DALRPC
	select MSM_PM2 if PM
	select MSM_MODEM_RESTART

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_RPM_REGULATOR
	select GPIO_MSM_V2
	select MSM_PIL
	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_QDSP6_CODECS
	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
	select MSM_SCM if SMP
	select MULTI_IRQ_HANDLER
	select MSM_MULTIMEDIA_USE_ION
	select MSM_PM8X60 if PM
	select MSM_RUN_QUEUE_STATS
	select ARM_HAS_SG_CHAIN
	select USE_DEV_CTRL_VOLUME

config ARCH_MSM8960
	bool "MSM8960"
	select ARCH_MSM_KRAITMP
	select ARM_GIC
	select CPU_V7
	select GPIO_MSM_V2
	select MSM_GPIOMUX
	select MSM_SCM if SMP
	select MSM_DIRECT_SCLK_ACCESS
	select REGULATOR
	select MSM_RPM_REGULATOR
	select MSM_RPM
	select MSM_XO
	select MSM_QDSP6_APR
	select MSM_QDSP6_CODECS
	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_HAS_HOLES_MEMORYMODEL
	select CLEANCACHE
	select QCACHE
	select MSM_MULTIMEDIA_USE_ION
	select MULTI_IRQ_HANDLER
	select MSM_PM8X60 if PM
	select HOLES_IN_ZONE if SPARSEMEM
	select MSM_RUN_QUEUE_STATS
	select ARM_HAS_SG_CHAIN
	select MSM_KRAIT_WFE_FIXUP
	select MSM_ULTRASOUND_A
	select MSM_IOMMU_GPU_SYNC
	select GENERIC_TIME_VSYSCALL
	select USE_USER_ACCESSIBLE_TIMERS
	select ARM_USE_USER_ACCESSIBLE_TIMERS
	select MSM_USE_USER_ACCESSIBLE_TIMERS
	select MSM_CPU_PWRCTL
	select MSM_LPM_TEST

config ARCH_MSM8930
	bool "MSM8930"
	select ARCH_MSM_KRAITMP
	select ARM_GIC
	select CPU_V7
	select GPIO_MSM_V2
	select MSM_GPIOMUX
	select MSM_SCM if SMP
	select MSM_DIRECT_SCLK_ACCESS
	select REGULATOR
	select MSM_RPM_REGULATOR
	select MSM_RPM
	select MSM_XO
	select MSM_QDSP6_APR
	select MSM_QDSP6_CODECS
	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_HAS_HOLES_MEMORYMODEL
	select MSM_ULTRASOUND_A
	select MULTI_IRQ_HANDLER
	select MSM_PM8X60 if PM
	select HOLES_IN_ZONE if SPARSEMEM
	select ARM_HAS_SG_CHAIN
	select MSM_KRAIT_WFE_FIXUP
	select MSM_IOMMU_GPU_SYNC
	select GENERIC_TIME_VSYSCALL
	select USE_USER_ACCESSIBLE_TIMERS
	select ARM_USE_USER_ACCESSIBLE_TIMERS
	select MSM_USE_USER_ACCESSIBLE_TIMERS
	select MSM_CPU_PWRCTL

config ARCH_APQ8064
	bool "APQ8064"
	select ARCH_MSM_KRAITMP
	select GPIO_MSM_V2
	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_QDSP6_CODECS
	select MSM_AUDIO_QDSP6 if SND_SOC
	select MULTI_IRQ_HANDLER
	select MSM_RPM
	select MSM_SPM_V2
	select MSM_L2_SPM
	select MSM_PM8X60 if PM
	select CPU_HAS_L2_PMU
	select HOLES_IN_ZONE if SPARSEMEM
	select CLEANCACHE
	select QCACHE
	select MIGHT_HAVE_PCI
	select ARCH_SUPPORTS_MSI
	select ARM_HAS_SG_CHAIN
	select MSM_KRAIT_WFE_FIXUP
	select MSM_ULTRASOUND_A
	select MSM_IOMMU_GPU_SYNC
	select GENERIC_TIME_VSYSCALL
	select USE_USER_ACCESSIBLE_TIMERS
	select ARM_USE_USER_ACCESSIBLE_TIMERS
	select MSM_USE_USER_ACCESSIBLE_TIMERS
	select MSM_CPU_PWRCTL

config ARCH_MSM8974
	bool "MSM8974"
	select ARCH_MSM_KRAITMP
	select GPIO_MSM_V3
	select ARM_GIC
	select CPU_V7
	select MSM_SCM if SMP
	select MSM_GPIOMUX
	select MULTI_IRQ_HANDLER
	select MSM_MULTIMEDIA_USE_ION
	select MSM_PIL
	select MSM_SPM_V2
	select MSM_L2_SPM
	select MSM_NATIVE_RESTART
	select MSM_RESTART_V2
	select MSM_PM8X60 if PM
	select MAY_HAVE_SPARSE_IRQ
	select SPARSE_IRQ
	select MSM_RPM_SMD
	select REGULATOR
	select MSM_QDSP6_APRV2
	select MSM_QDSP6V2_CODECS
	select MSM_AUDIO_QDSP6V2 if SND_SOC
	select MSM_RPM_REGULATOR_SMD
	select ARM_HAS_SG_CHAIN
	select MSM_RUN_QUEUE_STATS
	select MEMORY_HOLE_CARVEOUT
	select MSM_RPM_STATS_LOG
	select QMI_ENCDEC
	select DONT_MAP_HOLE_AFTER_MEMBANK0
	select SENSORS_ADSP
	select MSM_ULTRASOUND_B

config ARCH_MPQ8092
	bool "MPQ8092"
	select ARCH_MSM_KRAITMP
	select GPIO_MSM_V3
	select ARM_GIC
	select MULTI_IRQ_HANDLER
	select CPU_V7
	select MSM_GPIOMUX
	select MAY_HAVE_SPARSE_IRQ
	select SPARSE_IRQ
	select MSM_NOPM

config ARCH_FSM9XXX
	bool "FSM9XXX"
	select ARCH_MSM_SCORPION
	select MSM_VIC
	select CPU_V7
	select MSM_REMOTE_SPINLOCK_LDREX
	select GPIO_FSM9XXX
	select MULTI_IRQ_HANDLER
	select MSM_DALRPC

config ARCH_MSM9615
	bool "MSM9615"
	select ARM_GIC
	select GIC_SECURE
	select ARCH_MSM_CORTEX_A5
	select CPU_V7
	select MIGHT_HAVE_CACHE_L2X0
	select GPIO_MSM_V2
	select MSM_GPIOMUX
	select MSM_RPM
	select MSM_SPM_V2
	select MSM_NATIVE_RESTART
	select REGULATOR
	select MSM_RPM_REGULATOR
	select MULTI_IRQ_HANDLER
	select MSM_PM8X60 if PM
	select MSM_XO
	select MSM_MULTIMEDIA_USE_ION
	select MSM_QDSP6_APR
	select MSM_AUDIO_QDSP6 if SND_SOC
	select FIQ
	select ARM_HAS_SG_CHAIN

config ARCH_MSM8625
	bool "MSM8625"
	select ARCH_MSM_CORTEX_A5
	select CPU_V7
	select GPIO_MSM_V1
	select MSM_GPIOMUX
	select ARM_GIC
	select ARCH_MSM_CORTEXMP
	select MULTI_IRQ_HANDLER
	select ARM_TICKET_LOCKS
	select MSM_RUN_QUEUE_STATS
	select MIGHT_HAVE_CACHE_L2X0
	select ARM_HAS_SG_CHAIN
	select CPU_HAS_L2_PMU

config ARCH_MSM9625
	bool "MSM9625"
	select ARM_GIC
	select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MSM_CORTEX_A5
	select SMP
	select MSM_SMP
	select CPU_V7
	select MSM_SCM if SMP
	select MSM_GPIOMUX
	select MSM_RPM_SMD
	select MSM_NATIVE_RESTART
	select MSM_RESTART_V2
	select MSM_SPM_V2
	select MSM_PM8X60 if PM
	select MSM_SCM if SMP
	select MULTI_IRQ_HANDLER
	select GPIO_MSM_V3
	select MAY_HAVE_SPARSE_IRQ
	select SPARSE_IRQ
	select MSM_MULTIMEDIA_USE_ION
	select MSM_RPM_STATS_LOG
	select MSM_QDSP6_APRV2
	select MSM_QDSP6V2_CODECS
	select MSM_AUDIO_QDSP6V2 if SND_SOC
	select CPU_HAS_L2_PMU
	select MSM_JTAG_MM if MSM_QDSS

config ARCH_MSM8610
	bool "MSM8610"
	select ARM_GIC
	select GIC_SECURE
	select ARCH_MSM_CORTEXMP
	select CPU_V7
	select MSM_SCM if SMP
	select MAY_HAVE_SPARSE_IRQ
	select SPARSE_IRQ
	select MULTI_IRQ_HANDLER
	select GPIO_MSM_V3
	select MSM_GPIOMUX
	select MSM_NATIVE_RESTART
	select MSM_RESTART_V2

config ARCH_MSM8226
	bool "MSM8226"
	select ARM_GIC
	select GIC_SECURE
	select ARCH_MSM_CORTEXMP
	select CPU_V7
	select MSM_SCM if SMP
	select MAY_HAVE_SPARSE_IRQ
	select SPARSE_IRQ
	select MULTI_IRQ_HANDLER
	select GPIO_MSM_V3
	select MSM_GPIOMUX
	select MSM_NATIVE_RESTART
	select MSM_RESTART_V2
	select MSM_QDSP6_APRV2
	select MSM_QDSP6V2_CODECS
	select MSM_AUDIO_QDSP6V2 if SND_SOC
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
	select HAVE_SMP
	bool

config  ARCH_MSM_SCORPIONMP
	select ARCH_MSM_SCORPION
	select MSM_SMP
	select HAVE_ARCH_HAS_CURRENT_TIMER
	select MSM_JTAG if MSM_QDSS
	bool

config  ARCH_MSM_KRAITMP
	select ARCH_MSM_KRAIT
	select MSM_SMP
	select HAVE_ARCH_HAS_CURRENT_TIMER
	select MSM_JTAG if MSM_QDSS
	bool

config  ARCH_MSM_CORTEXMP
	select MSM_SMP
	bool

config  MSM_KRAIT_WFE_FIXUP
	bool

config  MSM_RESTART_V2
	bool

config  ARCH_MSM_CORTEX_A5
	bool

config ARCH_MSM7X27A
	bool
	select MSM_DALRPC
	select MSM_PROC_COMM_REGULATOR
	select MULTI_IRQ_HANDLER
	select ARM_GIC
	select ARCH_MSM_CORTEXMP
	select MIGHT_HAVE_CACHE_L2X0
	select ARM_HAS_SG_CHAIN
	select CPU_HAS_L2_PMU

config  MSM_VIC
	bool

config MSM_RPM
	bool "Resource Power Manager"
	select MSM_MPM

config MSM_RPM_SMD
	depends on MSM_SMD
	select MSM_MPM_OF
	bool "RPM driver using SMD protocol"
	help
	  RPM is the dedicated hardware engine for managing shared SoC
	  resources. This config adds driver support for using SMD as a
	  transport layer communication with RPM hardware. It also selects
	  the MSM_MPM config that programs the MPM module to monitor interrupts
	  during sleep modes.

config MSM_MPM
	bool "Modem Power Manager"
	help
	  MPM is a dedicated hardware resource responsible for entering and
	  waking up from a system wide low power mode. The MPM driver tracks
	  the wakeup interrupts and configures the MPM to monitor the wakeup
	  interrupts when going to a system wide sleep mode.

config MSM_MPM_OF
	bool "Modem Power Manager"
	depends on OF
	help
	  MPM is a dedicated hardware resource responsible for entering and
	  waking up from a system wide low power mode. The MPM driver tracks
	  the wakeup interrupts and configures the MPM to monitor the wakeup
	  interrupts when going to a system wide sleep mode. This config option
	  enables the MPM driver that supports initialization from a device
	  tree

config MSM_LPM_TEST
	bool "Low Power Mode test framework"
	depends on MSM_RPM
	depends on MSM_PM8X60
	help
	  LPM_TEST is a test framework that assists in exercising the low
	  power mode algorithm on MSM targets. This test framework tracks
	  notifications sent during entry/exit of the low power modes and
	  processes them to measure various stats including latency
	  measurement.

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 Reference Design.

config MACH_MSM7627A_QRD3
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7627A QRD3"
        help
          Support for the Qualcomm MSM7627A Reference Design.

config MACH_MSM7627A_EVB
        depends on ARCH_MSM7X27A
        depends on !MSM_STACKED_MEMORY
        default y
        bool "MSM7627A EVB"
        help
          Support for the Qualcomm MSM7627A Reference Design.

config MACH_MSM8625_RUMI3
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 RUMI3"
	help
	  Support for the Qualcomm MSM8625 RUMI3 Emulation Platform.

config MACH_MSM8625_SURF
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 SURF"
	help
	  Support for the Qualcomm MSM8625 SURF.

config MACH_MSM8625_FFA
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 FFA"
	help
	  Support for the Qualcomm MSM8625 FFA.

config MACH_MSM8625_EVB
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 EVB"
	help
	  Support for the Qualcomm MSM8625 Reference Design.

config MACH_MSM8625_QRD7
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 QRD7"
	help
	  Support for the Qualcomm MSM8625 Reference Design.

config MACH_MSM8625_EVT
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 EVT"
	help
	  Support for the Qualcomm MSM8625 Reference Design.

config MACH_QRD_SKUD_PRIME
	depends on ARCH_MSM8625
	depends on !MSM_STACKED_MEMORY
	default y
	bool "MSM8625 SKUD PRIME"
	help
	  Support for the Qualcomm MSM8625 SKUD prime Reference Design.
	  Add support for a SKUD prime reference design based on MSM8x25
	  chipset. This device is much closer to a phone than regular form
	  factor devices, with new touch, display panel and other hardware
	  configurations.

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_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_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_CDP
	depends on ARCH_APQ8064
	bool "APQ8064 CDP"
	help
	  Support for the Qualcomm APQ8064 CDP device.

config MACH_APQ8064_MTP
	depends on ARCH_APQ8064
	bool "APQ8064 MTP"
	help
	  Support for the Qualcomm APQ8064 MTP device.

config MACH_APQ8064_LIQUID
	depends on ARCH_APQ8064
	bool "APQ8064 LIQUID"
	help
	  Support for the Qualcomm APQ8064 LIQUID device.

config MACH_MPQ8064_CDP
	depends on ARCH_APQ8064
	bool "MPQ8064 CDP"
	help
	  Support for the Qualcomm MPQ8064 CDP device.

config MACH_MPQ8064_HRD
	depends on ARCH_APQ8064
	bool "MPQ8064 HRD"
	help
	  Support for the Qualcomm MPQ8064 HRD device.

config MACH_MPQ8064_DTV
	depends on ARCH_APQ8064
	bool "MPQ8064 DTV"
	help
	  Support for the Qualcomm MPQ8064 DTV device.

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 "0x00000000" if ARCH_MSM8974
	default "0x00000000" if ARCH_MPQ8092
	default "0x00000000" if ARCH_MSM8226
	default "0x00000000" if ARCH_MSM8610
	default "0x10000000" if ARCH_FSM9XXX
	default "0x00200000" if ARCH_MSM9625
	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_MSM_CONTIG_MEM_REGION
	bool "Enable in-kernel contiguous memory region"
	default y if ARCH_MSM8X60
	depends on ANDROID_PMEM && (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM8974)
	help
	   Enable the in-kernel contiguous memory allocator. Sets up a
	   region of physically contiguous memory. This memory is
	   reserved during initialization, and can be used
	   generically.

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 MSM_DEBUG_UART_PHYS
	hex
	default 0xA9A00000 if (ARCH_MSM7X27 || ARCH_QSD8X50) && DEBUG_MSM_UART1
	default 0xACA00000 if ARCH_MSM7X30 && DEBUG_MSM_UART1
	default 0x94000000 if ARCH_FSM9XXX && DEBUG_MSM_UART1
	default 0xA9B00000 if (ARCH_MSM7X27 || ARCH_QSD8X50) && DEBUG_MSM_UART2
	default 0xACB00000 if ARCH_MSM7X30 && DEBUG_MSM_UART2
	default 0x94100000 if ARCH_FSM9XXX && DEBUG_MSM_UART2
	default 0xA9C00000 if (ARCH_MSM7X27 || ARCH_QSD8X50) && DEBUG_MSM_UART3
	default 0xACC00000 if ARCH_MSM7X30 && DEBUG_MSM_UART3

choice
	prompt "Debug UART"
	depends on DEBUG_LL

	config DEBUG_MSM_UART1
		bool "Kernel low-level debugging messages via MSM UART1"
		depends on ARCH_MSM7X27 || ARCH_MSM7X30 || ARCH_QSD8X50 || ARCH_FSM9XXX
		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_MSM7X27 || ARCH_MSM7X30 || ARCH_QSD8X50 || ARCH_FSM9XXX
		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_MSM7X27 || 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 && 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 8960 devices.

	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.

	config DEBUG_APQ8064_UART
		bool "Kernel low-level debugging messages via APQ 8064 UART"
		depends on ARCH_APQ8064 && 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 APQ 8064 devices.

	config DEBUG_MSM8974_UART
		bool "Kernel low-level debugging messages via MSM 8974 UART"
		depends on ARCH_MSM8974
		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 8974 devices.

	config DEBUG_MPQ8092_UART
                bool "Kernel low-level debugging messages via MPQ8092 UART"
                depends on ARCH_MPQ8092
                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 MPQ8092 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_PCIE
	bool "MSM PCIe Controller driver"
	depends on PCI && PCI_MSI
	help
	  Enables the PCIe functionality by configures PCIe core on
	  MSM chipset and by enabling the ARM PCI framework extension.

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_IPC_LOGGING
	bool "MSM Debug Logging for IPC Drivers"
	help
	  This option allows the debug logging for IPC Drivers.

	  If in doubt, say no.

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_IPC_ROUTER_SECURITY
	depends on MSM_IPC_ROUTER
	bool "MSM IPC Router Security support"
	help
	  This feature of IPC Router will enforce security rules
	  configured by a security script from the user-space. IPC Router
	  once configured with the security rules will ensure that the
	  sender of the message to a service belongs to the relevant
	  Linux group as configured by the security script.

config MSM_QMI_INTERFACE
	depends on MSM_IPC_ROUTER
	depends on QMI_ENCDEC
	default n
	bool "MSM QMI Interface Library"
	help
	  Library to send and receive QMI messages over IPC Router.
	  This library provides interface functions to the kernel drivers
	  to perform QMI message marshaling and transport them over IPC
	  Router.

config MSM_TEST_QMI_CLIENT
	depends on MSM_QMI_INTERFACE
	bool "MSM TEST QMI CLIENT"
	help
	  The sample QMI client provides a test code for QMI usage. The
	  test_service client driver uses QMI interface library to send
	  and receive QMI messages over IPC Router. The test code sends
	  a synchronous QMI request to the test_service and handles the
	  QMI responses.

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"
	default n
	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_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_RPM_REGULATOR
	bool "RPM regulator driver"
	depends on MSM_RPM && REGULATOR
	help
	  Compile in support for the RPM regulator driver, used for setting
	  voltages and other parameters of the various power rails supplied
	  by some Qualcomm PMICs.

config MSM_RPM_REGULATOR_SMD
	bool "SMD RPM regulator driver"
	depends on REGULATOR
	depends on OF
	depends on MSM_RPM_SMD
	help
	  Compile in support for the SMD RPM regulator driver which is used for
	  setting voltages and other parameters of the various power rails
	  supplied by some Qualcomm PMICs.  The SMD RPM regulator driver should
	  be used on systems which contain an RPM which communicates with the
	  application processor over SMD.

config MSM_SMCMOD
	tristate "Secure Monitor Call (SMC) Module"
	default n
	depends on (ARCH_FSM9XXX && ION && ION_MSM && MSM_SCM)
	help
	  Enable support for smcmod driver. This driver provides a mechanism
	  to execute the Secure Monitor Call (SMC) to switch from non-secure
	  to secure execution in the fsm9xxx targets. This module utilizes Ion
	  for buffer management.

config MSM_SUBSYSTEM_RESTART
	bool "MSM Subsystem Restart"
	help
	  This option enables the MSM subsystem restart framework.

	  The MSM subsystem restart framework provides support to boot,
	  shutdown, and restart subsystems with a reference counted API.
	  It also notifies userspace of transitions between these states via
	  sysfs.

config MSM_SYSMON_COMM
	bool "MSM System Monitor communication support"
	depends on MSM_SMD && MSM_SUBSYSTEM_RESTART
	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_PIL
	bool "Peripheral image loading"
	select FW_LOADER
	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_MODEM
	tristate "Modem (ARM11) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down ARM11 Modem processors.

config MSM_PIL_QDSP6V3
	tristate "QDSP6v3 (Hexagon) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down QDSP6v3 processors (hexagon).
	  The QDSP6 is a low power DSP used in audio software applications.

config MSM_PIL_LPASS_QDSP6V4
	tristate "LPASS QDSP6v4 (Hexagon) Boot Support"
	depends on MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down QDSP6v4 processors (hexagon)
	  in low power audio subsystems. If you would like to record or
	  play audio then say Y here.

	  If unsure, say N.

config MSM_PIL_MODEM_QDSP6V4
	tristate "Modem QDSP6v4 (Hexagon) Boot Support"
	depends on MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down QDSP6v4 processors (hexagon)
	  in modem subsystems. If you would like to make or receive phone
	  calls then say Y here.

	  If unsure, say N.

config MSM_PIL_LPASS_QDSP6V5
	tristate "LPASS QDSP6v5 (Hexagon) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down QDSP6v5 (Hexagon) processors
	  in low power audio subsystems. This driver also monitors the ADSP
	  SMSM status bits and the ADSP's watchdog interrupt and restarts the
	  ADSP if the processor encounters a fatal error.

config MSM_PIL_MSS_QDSP6V5
	tristate "MSS QDSP6v5 (Hexagon) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down QDSP6v5 (Hexagon) processors
	  in modem subsystems. If you would like to make or receive phone
	  calls then say Y here.

	  If unsure, say N.

config MSM_PIL_RIVA
	tristate "RIVA (WCNSS) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down the RIVA processor (WCNSS).
	  Riva is the wireless subsystem processor used in bluetooth, wireless
	  LAN, and FM software applications.

config MSM_PIL_TZAPPS
	tristate "TZApps Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down TZApps.

	  TZApps is an image that runs in the secure processor state. It is
	  used to decrypt data and perform secure operations on the behalf of
	  the kernel.

config MSM_PIL_DSPS
	tristate "DSPS Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down ARM7 DSPS processors.

	  DSPS is a sensors offloading processor used for applications such
	  as rotation detection, temperature, etc.

config MSM_PIL_VIDC
	tristate "Video Core Secure Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for authenticating the video core image.

config MSM_PIL_VENUS
	tristate "VENUS (Video) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down the VENUS processor (Video).
	  Venus is the Video subsystem processor used for video codecs.

config MSM_PIL_GSS
	tristate "GSS (Cortex A5) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down Cortex A5 processors which run
	  GPS subsystem firmware.

config MSM_PIL_PRONTO
	tristate "PRONTO (WCNSS) Boot Support"
	depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
	help
	  Support for booting and shutting down the PRONTO processor (WCNSS).
	  PRONTO is the wireless subsystem processor used in bluetooth, wireless
	  LAN, and FM software applications.

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

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 || ARCH_MSM8974)
	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 || MSM_RPM_SMD
	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_RPM_RBCPR_STATS_LOG
        tristate "MSM Resource Power Manager RPBCPR Stat Driver"
        depends on DEBUG_FS
        depends on MSM_RPM
          help
          This option enables a driver which reads RPM messages from a shared
          memory location. These messages provide statistical information about
          RBCPR (Rapid Bridge Core Power Reduction) information . The drivers
          outputs the message via a debugfs node.

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

config IOMMU_API
       bool

config MSM_GPIOMUX
	bool

config MSM_SECURE_IO
	bool

config MSM_NATIVE_RESTART
	bool

config MSM_MODEM_RESTART
	bool

config MSM_PM2
	depends on PM
	bool

config MSM_PM8X60
	depends on PM
	bool

config MSM_EVENT_TIMER
	bool "Event timer"
	help
		This option enables a modules that manages a list of event timers that
		need to be monitored by the PM. The enables the PM code to monitor
		events that require the core to be awake and ready to handle the
		event.

config MSM_NOPM
	default y if !PM
	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 || ARCH_FSM9XXX
	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_WATCHDOG_V2
	bool "MSM Watchdog Support"
	help
		This enables the watchdog module. It causes kernel panic if the
		watchdog times out. It allows for detection of cpu hangs and
		deadlocks. It does not run during the bootup process, so it will
		not catch any early lockups.

config MSM_MEMORY_DUMP
	bool "MSM Memory Dump Support"
	help
		This enables memory dump feature. It allows various client
		subsystems to register respective dump regions. At the time
		of deadlocks or cpu hangs these dump regions are captured to
		give a snapshot of the system at the time of the crash.

config MSM_DLOAD_MODE
	bool "Enable download mode on crashes"
	depends on ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM9615 || ARCH_MSM8974 || ARCH_MSM9625
	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 MSM_JTAG
	bool "JTAG and kernel debug and trace support across power collapse"
	help
	  Enables support for kernel debugging (specifically breakpoints) and
	  processor tracing across power collapse both for JTag and OS hosted
	  software running on the target. Enabling this will ensure debug
	  and ETM registers are saved and restored across power collapse.

	  For production builds, you should probably say 'N' here to avoid
	  potential power, performance and memory penalty.

config MSM_JTAG_MM
	bool "ETM trace and debug support across power collapse using memory mapped access"
	help
	   Enables support for kernel debugging (specifically breakpoints) and
	   processor tracing using ETM across power collapse both for JTag and
	   OS hosted software running on the target. Enabling this will ensure
	   debug and ETM registers are saved and restored across power collapse.
	   Needed on targets on which cp14 access to debug and ETM registers is
	   not permitted and so memory mapped access is necessary.

	   For production builds, you should probably say 'N' here to avoid
	   potential power, performance and memory penalty.

config MSM_ETM
	tristate "Enable MSM ETM and ETB"
	depends on ARCH_MSM8X60
	select MSM_JTAG
	help
	  Enables embedded trace collection on MSM8660

config MSM_SLEEP_STATS_DEVICE
	bool "Enable exporting of MSM sleep device stats to userspace"

config MSM_RUN_QUEUE_STATS
	bool "Enable collection and exporting of MSM Run Queue stats to userspace"
	default n
	help
	 This option enalbes statistics collection on Run Queue. A daemon
         in user mode, called MPDecision will be using this data to decide
         on when to switch off/on the other cores.

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 (ARM_GIC || PMIC8058)
	default y if PMIC8058
	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_QDSP6_APRV2
	bool "Audio QDSP6 APRv2 support"
	depends on MSM_SMD
	default n
	help
	  Enable APRv2 IPC protocol support between
	  application processor and QDSP6. APR is
	  used by audio driver to configure QDSP6's
	  ASM, ADM and AFE.

config MSM_QDSP6_CODECS
	bool "Audio Codecs on QDSP6 APR "
	depends on MSM_SMD
	default n
	help
	  Enable Audio codecs with 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_QDSP6V2_CODECS
	bool "Audio QDSP6V2 APR support"
	depends on MSM_SMD
	help
	  Enable Audio codecs with APR IPC protocol support between
	  application processor and QDSP6 for B-family. 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_AUDIO_QDSP6V2
        bool "QDSP6V2 HW Audio support"
        select SND_SOC_MSM_QDSP6V2_INTF
        help
          Enable HW audio support in QDSP6V2.
          QDSP6V2 can support HW encoder & decoder and
          audio processing. It will enable support for
          AAC, AMRNB, AMRWB, EVRC, MP3, QCELP among
          others.

config MSM_ADSP_LOADER
        tristate "ADSP loader support"
        select SND_SOC_MSM_APRV2_INTF
	depends on MSM_AUDIO_QDSP6V2 && m
        help
          Enable ADSP image loader.
	  The ADSP loader brings ADSP out of reset
	  for the platforms that use APRv2.
	  Say M if you want to enable this module.

config MSM_ULTRASOUND_A
	bool "QDSP6 HW Ultrasound support"
	help
          Enable HW ultrasound support in QDSP6.
          QDSP6 can support HW encoder & decoder and
          ultrasound processing. It will enable
          ultrasound data paths between
          HW and services, calculating input events
          upon the  ultrasound data.

config MSM_ULTRASOUND_B
	bool "QDSP6V2 HW Ultrasound support"
	help
	  Enable HW Ultrasound support in QDSP6V2.
	  QDSP6V2 can support HW encoder & decoder and
	  ultrasound processing. It will enable
	  ultrasound data paths between
	  HW and services, calculating input events
	  upon the ultrasound data.

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.

config MSM_OCMEM
	bool "MSM On-Chip memory driver (OCMEM)"
	help
	  Enable support for On-Chip Memory available on certain MSM chipsets.
	  OCMEM is a low latency, high performance pool shared by subsystems.

config MSM_OCMEM_LOCAL_POWER_CTRL
	bool "OCMEM Local Power Control"
	depends on MSM_OCMEM
	help
	  Enable direct power management of the OCMEM core by the
	  OCMEM driver. By default power management is delegated to
	  the RPM. Selecting this option causes the OCMEM driver to
	  directly handle the various macro power transitions.

config MSM_OCMEM_DEBUG
	bool "OCMEM Debug Support"
	depends on MSM_OCMEM
	help
	  Enable debug options for On-chip Memory (OCMEM) driver.
	  Various debug options include memory, power and latency.
	  Choosing one of these options allows debugging of each
	  individual subsystem separately.

config MSM_OCMEM_NONSECURE
	bool "OCMEM Non Secure Mode"
	depends on MSM_OCMEM_DEBUG
	help
	  Disable OCMEM interaction with secure processor.
	  By default OCMEM is secured and accesses for each master
	  is requested by the OCMEM driver. Selecting this option
	  causes the OCMEM memory to be in non-secure state unless
	  its locked down by the secure processor.

config MSM_OCMEM_POWER_DEBUG
	bool "OCMEM Power Debug Support"
	depends on MSM_OCMEM_DEBUG
	help
	  Enable debug support for OCMEM power management.
	  This adds support for verifying all power management
	  related operations of OCMEM. Both local power management
	  and RPM assisted power management operations are supported.

config MSM_OCMEM_POWER_DISABLE
	bool "OCMEM Disable Power Control"
	depends on MSM_OCMEM_DEBUG
	help
	  Disable all OCMEM power management.
	  This keeps all OCMEM macros turned ON at all times thus
	  never allowing them to be turned OFF. Both local power
	  management and RPM assisted power modes are supported.

config SENSORS_ADSP
	bool "Enable Sensors Driver Support for ADSP"
	help
	  Add support for sensors ADSP driver.
	  This driver is used for exercising different sensors use cases,
	  such as for lower-power OCMEM use cases, and for time syncing
	  with ADSP clock.

config MSM_RTB
	bool "Register tracing"
	help
	  Add support for logging different events to a small uncached
	  region. This is designed to aid in debugging reset cases where the
	  caches may not be flushed before the target resets.

config MSM_RTB_SEPARATE_CPUS
	bool "Separate entries for each cpu"
	depends on MSM_RTB
	depends on SMP
	help
	  Under some circumstances, it may be beneficial to give dedicated space
	  for each cpu to log accesses. Selecting this option will log each cpu
	  separately. This will guarantee that the last acesses for each cpu
	  will be logged but there will be fewer entries per cpu

config MSM_EBI_ERP
	bool "External Bus Interface (EBI) error reporting"
	help
	  Say 'Y' here to enable reporting of external bus interface errors to
	  the kernel log. Information such as the offending address and
	  transaction type will be logged. This may be useful for debugging
	  seemingly broken memory accesses.

	  For production builds, you should probably say 'N' here.

config MSM_CACHE_ERP
	bool "Cache / CPU error reporting"
	depends on ARCH_MSM_KRAIT
	help
	  Say 'Y' here to enable reporting of cache and TLB errors to the kernel
	  log. Enabling this feature can be used as a system debugging technique
	  if cache corruption is suspected. Cache error statistics will also be
	  reported in /proc/cpu/msm_cache_erp.

	  For production builds, you should probably say 'N' here.

config MSM_L1_ERR_PANIC
	bool "Panic on L1 cache errors"
	depends on MSM_CACHE_ERP
	help
	  To cause the kernel to panic whenever an L1 cache error is detected, say
	  'Y' here. This may be useful as a debugging technique if general system
	  instability is suspected.

	  For production builds, you should probably say 'N' here.

config MSM_L1_RECOV_ERR_PANIC
	bool "Panic on recoverable L1 cache errors"
	depends on MSM_CACHE_ERP && MSM_L1_ERR_PANIC
	help
	  Certain CPU designs may be able to automatically recover from certain
	  kinds of L1 cache errors, even though the L1 cache itself may not
	  support error correction. These errors should not result in any kind
	  of corruption, but their presence is nevertheless an indication of
	  poor system health. To cause the kernel to panic whenever a
	  recoverable L1 cache error is detected, say 'Y' here. This may be
	  useful as a debugging technique if general system instability is
	  suspected.

	  For production builds, you should definitely say 'N' here.

config MSM_L1_ERR_LOG
	bool "Log CPU ERP events to system memory"
	depends on MSM_CACHE_ERP
	help
	  Enable logging CPU ERP events to an area of memory that will be
	  preserved across a system reset. This may be useful for detecting and
	  troubleshooting ERP-related system crashes in the field.

	  For production builds, you may want to say 'Y' here.

config MSM_L2_ERP_PRINT_ACCESS_ERRORS
	bool "Report L2 master port slave/decode errors in kernel log"
	depends on MSM_CACHE_ERP
	help
	  Master port errors can occur when a memory request is not properly
	  handled by the destination slave. This can occur if the destination
	  register does not exist or is inaccessible due to security
	  restrictions or (in some cases) clock configuration. Enabling this
	  option will cause a backtrace to be printed to the kernel log whenever
	  such an error is encountered. Note that the error is reported as an
	  interrupt rather than as an exception, meaning that the backtrace may
	  have some skid. This option may help with debugging, though production
	  builds should probably say 'N' here.

config MSM_L2_ERP_PORT_PANIC
	bool "Panic on L2 master port errors"
	depends on MSM_CACHE_ERP && MSM_L2_ERP_PRINT_ACCESS_ERRORS
	help
	  Master port errors can occur when a memory request is not properly
	  handled by the destination slave. Enable this option to catch drivers
	  which attempt to access bad areas of the address space, or access
	  hardware registers in an improper state (such as certain clocks not
	  being on). This option may help with debugging, though production
	  builds should probably say 'N' here.

config MSM_L2_ERP_1BIT_PANIC
	bool "Panic on recoverable L2 soft errors"
	depends on MSM_CACHE_ERP
	help
	  Enable this option to cause a kernel panic whenever the L2 cache
	  encounters a single-bit (correctable) soft error. This option should
	  only be enabled when doing low-level debugging where cache corruption
	  is suspected.

	  For production builds, you should definitely say 'N' here.

config MSM_L2_ERP_2BIT_PANIC
	bool "Panic on unrecoverable L2 soft errors"
	depends on MSM_CACHE_ERP
	help
	  Enable this option to cause a kernel panic whenever the L2 cache
	  encounters a double-bit (non-correctable) soft error. Debug builds
	  will likely benefit from having this option enabled to catch cache
	  problems as soon as possible.

	  For production builds, it may be acceptable to say 'N' here, since
	  an uncorrectable error might not necessarily cause further problems.

config MSM_DCVS
	bool "Use MSM DCVS for CPU/GPU Frequency control"
	depends on MSM_SCM
	help
	  Enable support for MSM DCVS to control all CPU and GPU core frequencies.
	  The DCVS manager allows idle driver to feed the idle information to the
	  algorithm and the algorithm returns a frequency for the core which is
	  passed to the frequency change driver.

config MSM_CPR
	tristate "Use MSM CPR in S/W mode"
	help
	  Enable CPR (core power reduction) in S/W mode, where the processor
	  get's the notification from CPR block and programs the PMIC.

config MSM_VP_REGULATOR
	tristate "Use MSM PMIC8029 C2 regulator"
	depends on ARCH_MSM8625
	help
	  Enable MSM PMIC8029 C2 regulator support using APC_PLEVEL access
	  for MSMs like 8625.

config HAVE_ARCH_HAS_CURRENT_TIMER
	bool

config MSM_CACHE_DUMP
	bool "Cache dumping support"
	help
	  Add infrastructure to dump the L1 and L2 caches to an allocated buffer.
	  This allows for analysis of the caches in case cache corruption is
	  suspected.

config MSM_CACHE_DUMP_ON_PANIC
	bool "Dump caches on panic"
	depends on MSM_CACHE_DUMP
	help
	  By default, the caches are flushed on panic. This means that trying to
	  look at them in a RAM dump will give useless data. Select this if you
	  want to dump the L1 and L2 caches on panic before any flush occurs.
	  If unsure, say N

config MSM_HSIC_SYSMON
	tristate "MSM HSIC system monitor driver"
	depends on USB
	help
	  Add support for bridging with the system monitor interface of MDM
	  over HSIC. This driver allows the local system monitor to
	  communicate with the remote system monitor interface.

config MSM_HSIC_SYSMON_TEST
	tristate "MSM HSIC system monitor bridge test"
	depends on USB && MSM_HSIC_SYSMON && DEBUG_FS
	help
	  Enable the test hook for the Qualcomm system monitor HSIC driver.
	  This will create a debugfs file entry named "hsic_sysmon_test" which
	  can be read and written to send character data to the sysmon port of
	  the modem over USB.

config MSM_RPC_PMIC
	tristate "MSM RPC PMIC driver"
	depends on MSM_ONCRPCROUTER
	help
	 This driver supports the PMIC functionality over RPC for those MSM's
	 which do not have a direct access to PMIC. It supports ability to
	 configure MPP, GPIO and all the other supported peripherals of the
	 PMIC.

config MSM_RPC_USB
	tristate "MSM RPC USB driver"
	depends on MSM_ONCRPCROUTER
	help
	 This driver supports the USB configuration support over the RPC
	 interface. It support the HS USB module connected to the MSM
	 and FS USB which is connected over the PMIC. This support is
	 required for MSMs on which the APPS does not have a direct access
	 to the PMIC.

config MSM_RPC_PMAPP
	tristate "MSM RPC PMIC APP driver"
	depends on MSM_ONCRPCROUTER
	help
	 This driver supports the configuration of various PMIC APP modules
	 such as display backlight, vreg pin-ctrl, smps clock over the RPC
	 interface. This support is required for MSMs on which the APPS
	 does not have a direct access to the PMIC.

config MSM_ENABLE_WDOG_DEBUG_CONTROL
	bool "MSM Watchdog driver to disable debug Image"
	help
	 This driver supports the configuration of the GCC_WDOG_DEBUG register
	 used to control debug image.
	 This support is currently required for MSM8974 to disable debug image
	 on PS HOLD reset

config MSM_FIQ
	bool "Enable FIQ for debugging"
	depends on ARCH_MSM8625
	select FIQ
	select GIC_SECURE
	help
	  Enable any line to be used as an FIQ. This will help debugging
	  if apps is not responding and holding lock with irqs disabled.
	  Modem will then generate an raise a FIQ on this line before sending
	  SMSM reset.

config MSM_USE_USER_ACCESSIBLE_TIMERS
	bool "Enables mapping an MSM timer counter page to user space."
	depends on ARM_USE_USER_ACCESSIBLE_TIMERS
	help
	  Enables MSM-specific user accessible timers via a shared
	  memory page containing the cycle counter.

config USE_DEV_CTRL_VOLUME
	bool "Use Device Control Volume"
	help
	  Use Device Control Volume as opposed to ALSA volume control.

config MSM_CPU_PWRCTL
	bool "Ensures that krait droop detectors are always off"
	help
	  Droop detector mechanism can adversely affect krait plls during
	  stand alone power collapse operation. Selecting this option
	  ensures that they are always off.

config MSM_UARTDM_Core_v14
	bool "Use MSM BLSP based HSUART Core v1.4"
	depends on SERIAL_MSM_HS
	help
		Select if BLSP based UART Core v.14 or higher is present.
endif
