#
# QCOM Soc drivers
#
menu "Qualcomm SoC drivers"
config QCOM_MEM_OFFLINE
	bool "Dynamic Memory Region Offline driver"
	help
	  Add support for DDR Self-Refresh power management through the dynamic
	  memory offline framework. This driver interfaces between the memory
	  hotplug subsystem and AOP which hot adds or removes memory blocks and
	  controls the start/stop of self-refresh of these DDR regions. This
	  helps reduce power consumption during idle mode of the system.
	  If unsure, say N

config OVERRIDE_MEMORY_LIMIT
	bool "Override memory limit set by the kernel boot parameter"
	depends on QCOM_MEM_OFFLINE
	help
	  Override any memory limit set by the kernel boot parameter with
	  limit set by mem-offline dt entry so that memory offline framework
	  can initialize remaining memory with movable pages for memory
	  hot-plugging.
	  If unsure, say N

config QCOM_CPUSS_DUMP
	bool "CPU Subsystem Dumping support"
	help
	  Add support to dump various hardware entities such as the instruction
	  and data tlb's as well as the unified tlb, which are a part of the
	  cpu subsystem to an allocated buffer. This allows for analysis of the
	  the entities if corruption is suspected.
	  If unsure, say N

config QCOM_GLINK_SSR
	tristate "Qualcomm Glink SSR driver"
	depends on RPMSG
	depends on QCOM_RPROC_COMMON
	help
	  Say y here to enable GLINK SSR support. The GLINK SSR driver
	  implements the SSR protocol for notifying the remote processor about
	  neighboring subsystems going up or down.

config QCOM_RUN_QUEUE_STATS
       bool "Enable collection and exporting of QTI Run Queue stats to userspace"
       help
        This option enables the driver to periodically collecting the statistics
        of kernel run queue information and calculate the load of the system.
        This information is exported to usespace via sysfs entries and userspace
        algorithms uses info and decide when to turn on/off the cpu cores.

config QCOM_GSBI
        tristate "QCOM General Serial Bus Interface"
        depends on ARCH_QCOM
        select MFD_SYSCON
        help
          Say y here to enable GSBI support.  The GSBI provides control
          functions for connecting the underlying serial UART, SPI, and I2C
          devices to the output pins.

config QCOM_MDT_LOADER
	tristate
	select QCOM_SCM

config QCOM_LLCC
	tristate "Qualcomm Technologies, Inc. LLCC driver"
	depends on ARCH_QCOM
	help
	  Qualcomm Technologies, Inc. platform specific LLCC driver for Last
	  Level Cache. This provides interfaces to client's that use the LLCC.
	  Say yes here to enable LLCC slice driver.

config QCOM_SM8150_LLCC
	tristate "Qualcomm Technologies, Inc. SM8150 LLCC driver"
	depends on QCOM_LLCC
	help
	  Say yes here to enable the LLCC driver for SM8150. This is provides
	  data required to configure LLCC so that clients can start using the
	  LLCC slices.

config QCOM_SDMSHRIKE_LLCC
	tristate "Qualcomm Technologies, Inc. SDMSHRIKE LLCC driver"
	depends on QCOM_LLCC
	help
	  This configuration option enables LLCC driver specific to SDMSHRIKE.
	  Say 'Y' here to enable the LLCC driver for SDMSHRIKE which provides
	  data required to configure LLCC so that clients can start using the
	  LLCC slices.

config QCOM_SM6150_LLCC
	tristate "Qualcomm Technologies, Inc. SM6150 LLCC driver"
	depends on QCOM_LLCC
	help
	  Say yes here to enable the LLCC driver for SM6150. This is provides
	  data required to configure LLCC so that clients can start using the
	  LLCC slices.

config QCOM_SDMMAGPIE_LLCC
	tristate "Qualcomm Technologies, Inc. SDMMAGPIE LLCC driver"
	depends on QCOM_LLCC
	help
	  Say yes here to enable the LLCC driver for SDMMAGPIE. This is provides
	  data required to configure LLCC so that clients can start using the
	  LLCC slices.

config QCOM_ATOLL_LLCC
	tristate "Qualcomm Technologies, Inc. ATOLL LLCC driver"
	depends on QCOM_LLCC
	help
	  Say yes here to enable the LLCC driver for ATOLL. This provides
	  data required to configure LLCC so that clients can start using the
	  LLCC slices.

config QCOM_SDXPRAIRIE_LLCC
	tristate "Qualcomm Technologies, Inc. SDXPRAIRIE LLCC driver"
	depends on QCOM_LLCC
	help
	  This configuration option enables LLCC driver specific to SDXPRAIRIE.
	  Say 'Y' here to enable the LLCC driver for SDXPRAIRIE which provides
	  data required to configure LLCC so that clients can start using the
	  LLCC slices.


config QCOM_LLCC_AMON
	tristate "Qualcomm Technologies, Inc. LLCC Activity Monitor(AMON) driver"
	depends on QCOM_LLCC
	help
	  This option enables a activity monitor driver for last level cache
	  controller. This driver configures the activity monitor as
	  deadlock detector and dumps the AMON registers upon detection of
	  deadlock.

config QCOM_LLCC_AMON_PANIC
	tristate "Panic on detecting LLCC Activity Monitor(AMON) error"
	depends on QCOM_LLCC_AMON
	help
	  This option enables panic upon detection of LLCC Activity Monitor(AMON)
	  errors. Say yes here to enable deadlock detection mode of AMON. In
	  deadlock detection mode AMON will trigger an interrupt if some LLCC request
	  ages out.

config QCOM_LLCC_PERFMON
	tristate "Qualcomm Technologies, Inc. LLCC Perfmon driver"
	depends on QCOM_LLCC
	help
	  This option enables driver for LLCC Performance monitor block. Using
	  this various events in different LLCC sub block ports can be monitored.
	  This is used for performance and debug activity and exports SYSFS
	  interface. SYSFS interface used for configure and dump the LLCC
	  performance events.

config QCOM_PM
	bool "Qualcomm Power Management"
	depends on ARCH_QCOM && !ARM64
	select ARM_CPU_SUSPEND
	select QCOM_SCM
	help
	  QCOM Platform specific power driver to manage cores and L2 low power
	  modes. It interface with various system drivers to put the cores in
	  low power modes.

config QCOM_QMI_HELPERS
	bool "Qualcomm QMI Helpers"
	depends on QRTR || QTI_QRTR
	help
	  Helper library for handling QMI encoded messages.  QMI encoded
	  messages are used in communication between the majority of QRTR
	  clients and this helpers provide the common functionality needed for
	  doing this from a kernel driver.

config QCOM_QMI_RMNET
	bool "QTI QMI Rmnet Helpers"
	depends on QCOM_QMI_HELPERS
	depends on RMNET
	help
	  Helper for handling interfaces between kernel clients and rmnet
	  driver. It enables the rmnet driver to create/delete DFC/WDA
	  clients and provides the common functionality for data flow control
	  and power save features.

config QCOM_QMI_DFC
	bool "Enable burst mode flow control"
	depends on QCOM_QMI_RMNET
	help
	  Say y here to enable support for burst mode data flow control.
	  DFC client provides an interface to the modem dfc service and
	  does burst mode flow control. It enables the flow on receiving flow
	  status indication and disables flows while grant size is reached.
	  If unsure or not use burst mode flow control, say 'N'.

config QCOM_QMI_POWER_COLLAPSE
	bool "Enable power save features"
	depends on QCOM_QMI_RMNET
	help
	  Say y here to enable support for power save features.
	  It provides an interface to offload uplink flow control based on
	  detected flow status.
	  If unsure or not use power save feature, say 'N'.

config QCOM_SMEM
	tristate "Qualcomm Shared Memory Manager (SMEM)"
	depends on ARCH_QCOM
	depends on HWSPINLOCK
	help
	  Say y here to enable support for the Qualcomm Shared Memory Manager.
	  The driver provides an interface to items in a heap shared among all
	  processors in a Qualcomm platform.

config QCOM_SMD_RPM
	tristate "Qualcomm Resource Power Manager (RPM) over SMD"
	depends on ARCH_QCOM
	depends on RPMSG && OF
	help
	  If you say yes to this option, support will be included for the
	  Resource Power Manager system found in the Qualcomm 8974 based
	  devices.

	  This is required to access many regulators, clocks and bus
	  frequencies controlled by the RPM on these devices.

	  Say M here if you want to include support for the Qualcomm RPM as a
	  module. This will build a module called "qcom-smd-rpm".

config MSM_SPM
        bool "Driver support for SPM and AVS wrapper hardware"
        help
          Enables the support for SPM and AVS wrapper hardware on MSMs. SPM
          hardware is used to manage the processor power during sleep. The
          driver allows configuring SPM to allow different low power modes for
          both core and L2.

config MSM_L2_SPM
        bool "SPM support for L2 cache"
        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 QCOM_SCM
	bool "Secure Channel Manager (SCM) support"
	default n
        help
	 Say y here to enable Secure Channel Mananger(SCM) support for SoC.
	 SCM provides communication channel to communicate with secure
	 world(EL2 and EL3) by using smc call.
	 SCM driver provides the support for atomic scm calls also.

config QCOM_SCM_QCPE
	bool "Para-Virtualized Secure Channel Manager (SCM) support over QCPE"
	default n
        help
	 Say y here to enable Secure Channel Mananger(SCM) support for SoC
	 in virtualized Linux, where SCM backend is QCPE (QCOM Protected
	 environment). The SCM channel will use QCOM HAB interface for
	 fronet-end to back-end communication.

config QCOM_MEMORY_DUMP_V2
	bool "QCOM Memory Dump V2 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_DEBUG_LAR_UNLOCK
	bool "MSM Debug LAR Unlock Support"
	depends on QCOM_MEMORY_DUMP_V2
	help
	  This allows unlocking Core Debug lock to allow capture
	  of upper 32 bits of program counter at the time of
	  system crash. This is useful in getting correct crash
	  location.

config QCOM_WATCHDOG_V2
	bool "Qualcomm Watchdog Support"
	depends on ARCH_QCOM
	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 QCOM_FORCE_WDOG_BITE_ON_PANIC
	bool "QCOM force watchdog bite"
	depends on QCOM_WATCHDOG_V2
	help
	  This forces a watchdog bite when the device restarts due to a
	  kernel panic. On certain MSM SoCs, this provides us
	  additional debugging information.

config QCOM_WDOG_IPI_ENABLE
	bool "Qcom WDT pet optimization"
	depends on QCOM_WATCHDOG_V2
	default n
	help
	  When this option is enabled, watchdog sends IPI to cores in low power
	  mode also. For power optimizations, by default watchdog don't ping
	  cores in low power mode at pettime.

	  To track CPUs health on LPM, or on debug builds enable it.

config QCOM_SMEM_STATE
	bool

config QCOM_SMP2P
	tristate "Qualcomm Shared Memory Point to Point support"
	depends on MAILBOX
	depends on QCOM_SMEM
	select QCOM_SMEM_STATE
	help
	  Say yes here to support the Qualcomm Shared Memory Point to Point
	  protocol.

config QCOM_SMSM
	tristate "Qualcomm Shared Memory State Machine"
	depends on QCOM_SMEM
	select QCOM_SMEM_STATE
	help
	  Say yes here to support the Qualcomm Shared Memory State Machine.
	  The state machine is represented by bits in shared memory.

config QCOM_WCNSS_CTRL
	tristate "Qualcomm WCNSS control driver"
	depends on ARCH_QCOM
	depends on RPMSG
	help
	  Client driver for the WCNSS_CTRL SMD channel, used to download nv
	  firmware to a newly booted WCNSS chip.

config QPNP_PBS
	tristate "PBS trigger support for QPNP PMIC"
	depends on SPMI
	help
	  This driver supports configuring software PBS trigger event through PBS
	  RAM on Qualcomm Technologies, Inc. QPNP PMICs. This module provides
	  the APIs to the client drivers that wants to send the PBS trigger
	  event to the PBS RAM.

config MSM_SERVICE_LOCATOR
	bool "Service Locator"
	depends on QCOM_QMI_HELPERS
	help
	  The Service Locator provides a library to retrieve location
	  information given a service identifier. Location here translates
	  to what process domain exports the service, and which subsystem
	  that process domain will execute in.

config MSM_SERVICE_NOTIFIER
	bool "Service Notifier"
	depends on MSM_SERVICE_LOCATOR && MSM_SUBSYSTEM_RESTART
	help
	  The Service Notifier provides a library for a kernel client to
	  register for state change notifications regarding a remote service.
	  A remote service here refers to a process providing certain services
	  like audio, the identifier for which is provided by the service
	  locator.

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_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_SYSMON_GLINK_COMM
       bool "MSM System Monitor communication support using GLINK transport"
       depends on MSM_GLINK && MSM_SUBSYSTEM_RESTART
       help
         This option adds support for MSM System Monitor APIs using the GLINK
         transport layer. The APIs provided may be used for notifying
         subsystems within the SoC about other subsystems' power-up/down
         state-changes.

config MSM_SYSMON_QMI_COMM
       bool "MSM System Monitor communication support using QMI transport"
       depends on QCOM_QMI_HELPERS && MSM_SUBSYSTEM_RESTART
       help
         This option adds support for MSM System Monitor APIs using the
         QMI layer. The APIs provided may be used for notifying
         subsystems within the SoC about other subsystems' power-up/down
         state-changes.

config MSM_PIL_SSR_GENERIC
       tristate "MSM Subsystem Boot Support"
       depends on MSM_PIL && MSM_SUBSYSTEM_RESTART
       help
         Support for booting and shutting down MSM Subsystem processors.
         This driver also monitors the SMSM status bits and the watchdog
         interrupt for the subsystem and restarts it on a watchdog bite
         or a fatal error. Subsystems include LPASS, Venus, VPU, WCNSS and
         BCSS.

config SETUP_SSR_NOTIF_TIMEOUTS
	bool "Set timeouts on SSR sysmon notifications and notifier callbacks"
	help
	  Setup timers prior to initiating communication between
	  subsystems through sysmon, and prior to sending notifications
	  to drivers in the kernel that have registered callbacks with the
	  subsystem notifier framework for a particular subsystem. This
	  is a debugging feature.

config SSR_SYSMON_NOTIF_TIMEOUT
	depends on SETUP_SSR_NOTIF_TIMEOUTS
	int "SSR Sysmon notifications timeout in ms"
	default 10000
	help
	  The amount of time, in milliseconds, that should elapse between
	  the start and end of sysmon SSR notifications, before a warning
	  is emitted.

config SSR_SUBSYS_NOTIF_TIMEOUT
	depends on SETUP_SSR_NOTIF_TIMEOUTS
	int "SSR Subsystem notifier timeout in ms"
	default 10000
	help
	  The amount of time, in milliseconds, that should elapse between
	  the start and end of SSR notifications through the subsystem
	  notifier, before a warning is emitted.

config PANIC_ON_SSR_NOTIF_TIMEOUT
	bool "Trigger kernel panic when notification timeout expires"
	depends on SETUP_SSR_NOTIF_TIMEOUTS
	help
	  Trigger a kernel panic when communication between subsystems
	  through sysmon is taking too long. Also trigger a kernel panic
	  if invoking the callbacks registered with a particular subsystem's
	  notifications by the subsystem notifier framework is taking too long.
	  This is a debugging feature.

config MSM_BOOT_STATS
	bool "Use MSM boot stats reporting"
	help
	  Use this to report msm boot stats such as bootloader throughput,
	  display init, total boot time.
	  This figures are reported in mpm sleep clock cycles and have a
	  resolution of 31 bits as 1 bit is used as an overflow check.

config MSM_BOOT_TIME_MARKER
        bool "Use MSM boot time marker reporting"
        depends on MSM_BOOT_STATS
        help
         Use this to mark msm boot kpi for measurement.
         An instrumentation for boot time measurement.
         To create an entry, call "place_marker" function.
         At userspace, write marker name to "/sys/kernel/debug/bootkpi/kpi_values"
         If unsure, say N

config MSM_CORE_HANG_DETECT
       tristate "MSM Core Hang Detection Support"
       help
         This enables the core hang detection module. It causes SoC
         reset on core hang detection and collects the core context
         for hang. By using sysfs entries core hang detection can be
	 enabled or disabled dynamically.

config QCOM_DCC_V2
       bool "Qualcomm Technologies Data Capture and Compare enigne support for V2"
       help
         This option enables driver for Data Capture and Compare engine. DCC
         driver provides interface to configure DCC block and read back
         captured data from DCC's internal SRAM.

config MSM_GLADIATOR_HANG_DETECT
	tristate "MSM Gladiator Hang Detection Support"
	help
	  This enables the gladiator hang detection module.
          If the configured threshold is reached, it causes SoC reset on
          gladiator hang detection and collects the context for the
          gladiator hang.

config MSM_GLADIATOR_ERP
	tristate "GLADIATOR coherency interconnect error reporting driver"
	help
	  Support dumping debug information for the GLADIATOR
	  cache interconnect in the error interrupt handler.
	  Meant to be used for debug scenarios only.

	  If unsure, say N.

config SDX_EXT_IPC
	tristate "QCOM external ipc driver"
	help
	  This enables the module to help modem communicate with external
	  Application processor connected to Qualcomm Technologies, Inc
	  modem chipset. The modem and APQ can understand each other's
	  state by reading ipc gpios.

	  If unsure, say N.

config PANIC_ON_GLADIATOR_ERROR
	depends on MSM_GLADIATOR_ERP
	bool "Panic on GLADIATOR error report"
	help
	  Panic upon detection of an Gladiator coherency interconnect error
	  in order to support dumping debug information.
	  Meant to be used for debug scenarios only.

	  If unsure, say N.

config QCOM_SECURE_BUFFER
	bool "Helper functions for securing buffers through TZ"
	help
	 Say 'Y' here for targets that need to call into TZ to secure
	 memory buffers. This ensures that only the correct clients can
	 use this memory and no unauthorized access is made to the
	 buffer

config MSM_REMOTEQDSS
	bool "Allow debug tools to enable events on other processors"
	depends on QCOM_SCM && DEBUG_FS
	help
	  Other onchip processors/execution environments may support debug
	  events. Provide a sysfs interface for debug tools to dynamically
	  enable/disable these events. Interface located in
	  /sys/class/remoteqdss.

config ICNSS
	tristate "Platform driver for Q6 integrated connectivity"
	select CNSS_UTILS
	---help---
	  This module adds support for Q6 integrated WLAN connectivity
	  subsystem. This module is responsible for communicating WLAN on/off
	  control messages to FW over QMI channel. It is also responsible for
	  handling WLAN PD restart notifications.

config ICNSS_DEBUG
	bool "ICNSS debug support"
	depends on ICNSS
	---help---
	  Say 'Y' here to enable ICNSS driver debug support. Debug support
	  primarily consists of logs consisting of information related to
	  hardware register access and enabling BUG_ON for certain cases to aid
	  the debugging.

config ICNSS_QMI
       bool "ICNSS QMI support"
       depends on ICNSS
       ---help---
        Say 'Y' here to enable ICNSS QMI support. ICNSS driver will use
	QMI framework to communicate with WLAN FW. It will send coldboot
	handshake messages to WLAN FW, which includes hardware capabilities
	and configurations. It also send WLAN on/off control message to FW
	over QMI channel.

config CNSS_TIMESYNC
	bool "cnss TIME SYNC support"
	depends on ICNSS
	---help---
	  Say 'Y' here to enable cnss TIME SYNC support. TIME SYNC support
	  primarily consists of reading the AUDIO TIMESYNC register for
	  deriving WLAN mac time stamp relation when FTM based clock sync is
	  used.

config QCOM_EUD
	tristate "QTI Embedded USB Debugger (EUD)"
	depends on ARCH_QCOM
	select SERIAL_CORE
	help
	  The EUD (Embedded USB Debugger) is a mini-USB hub implemented
	  on chip to support the USB-based debug and trace capabilities.
	  This module enables support for Qualcomm Technologies, Inc.
	  Embedded USB Debugger (EUD).
	  If unsure, say N.

config QCOM_MINIDUMP
	bool "QCOM Minidump Support"
	depends on QCOM_SMEM && QCOM_DLOAD_MODE
	help
	  This enables minidump feature. It allows various clients to
	  register to dump their state at system bad state (panic/WDT,etc.,).
	  Minidump would dump all registered entries, only when DLOAD mode
	  is enabled.

config MINIDUMP_MAX_ENTRIES
	int "Minidump Maximum num of entries"
	default 200
	depends on QCOM_MINIDUMP
	help
	  This defines maximum number of entries to be allocated for application
	  subsytem in Minidump table.

config QCOM_BUS_SCALING
	bool "Bus scaling driver"
	help
	This option enables bus scaling on MSM devices.  Bus scaling
	allows devices to request the clocks be set to rates sufficient
	for the active devices needs without keeping the clocks at max
	frequency when a slower speed is sufficient.

config  QCOM_BUS_CONFIG_RPMH
	bool "RPMH Bus scaling driver"
	depends on QCOM_BUS_SCALING
	help
	  This option enables bus scaling using QCOM specific hardware
	  accelerators. It enables the translation of bandwidth requests
	  from logical nodes to hardware nodes controlled by the BCM (Bus
	  Clock Manager)

config QCOM_COMMAND_DB
	bool "Command DB"
	help
	  Command DB queries shared memory by key string for shared system
	  resources

config QCOM_EARLY_RANDOM
        bool "Initialize random pool very early"
        help
          The standard random pool may not initialize until late in the boot
          process which means that any calls to get random numbers before then
          may not be truly random. Select this option to make an early call
          to get some random data to put in the pool. If unsure, say N.

config MSM_SPSS_UTILS
	depends on MSM_PIL
	bool "Secure Processor Utilities"
	help
	  spss-utils driver selects Secure Processor firmware file name.
	  The firmware file name for dev, test or production is selected
	  based on two fuses.
	  Different file name is used for differnt SPSS HW versions,
	  because the SPSS firmware size is too small to support multiple
	  HW versions.

config MSM_SPCOM
	depends on QCOM_GLINK
	bool "Secure Processor Communication over GLINK"
	help
	  spcom driver allows loading Secure Processor Applications and
	  sending messages to Secure Processor Applications.
	  spcom provides interface to both user space app and kernel driver.
	  It is using glink as the transport layer, which provides multiple
	  logical channels over single physical channel.
	  The physical layer is based on shared memory and interrupts.
	  spcom provides clients/server API, although currently only one client
	  or server is allowed per logical channel.

config MSM_TZ_SMMU
	depends on ARCH_MSM8953 || ARCH_QCS405 || ARCH_QCS403
	bool "Helper functions for SMMU configuration through TZ"
	help
	  Say 'Y' here for targets that need to call into TZ to configure
	  SMMUs for any reason (for example, for errata workarounds or
	  configuration of SMMU virtualization).

	  If unsure, say N.

config QTI_RPMH_API
	bool "QTI RPMH (h/w accelerators) Communication API"
	select MAILBOX
	select QTI_RPMH_MBOX
	select QTI_SYSTEM_PM
	help
	  This option enables RPMH hardware communication for making shared
	  resource requests on Qualcomm Technologies Inc SoCs.

config QTI_SYSTEM_PM
	bool

config QSEE_IPC_IRQ
	bool "QSEE interrupt manager"
	help
	  The QSEE IPC IRQ controller manages the interrupts from the QTI
	  secure execution environment. This interrupt controller will use
	  the registers in the spcs region to mask and clear interrupts.
	  Clients can use this driver to avoid adding common interrupt handling
	  code.

config QSEE_IPC_IRQ_BRIDGE
	tristate "QSEE IPC Interrupt Bridge"
	select QSEE_IPC_IRQ
	help
	  This module enables bridging an Inter-Processor Communication(IPC)
	  interrupt from a remote subsystem directed towards Qualcomm
	  Technologies, Inc. Secure Execution Environment(QSEE) to userspace.
	  The interrupt will be propagated through a character device that
	  userspace clients can poll on.

config QCOM_GLINK
	tristate "GLINK Probe Helper"
	depends on RPMSG_QCOM_GLINK_SMEM
	help
	  The GLINK RPMSG Plugin is currently designed to plugin with the
	  remote proc framework as a subdev. This module is responsible for
	  creating the glink transports when remote proc is disabled.

config QCOM_GLINK_PKT
	tristate "Enable device interface for GLINK packet channels"
	depends on QCOM_GLINK
	help
	  G-link packet driver provides the interface for the userspace
	  clients to communicate over G-Link via device nodes.
	  This enable the userspace clients to read and write to
	  some glink packets channel.

config MSM_JTAGV8
	bool "Debug and ETM trace support across power collapse for ARMv8"
	default y if CORESIGHT_SOURCE_ETM4X
	help
	  Enables support for debugging (specifically breakpoints) and ETM
	  processor tracing across power collapse both for JTag and OS hosted
	  software running on ARMv8 target. Enabling this will ensure debug
	  and ETM registers are saved and restored across power collapse.
	  If unsure, say 'N' here to avoid potential power, performance and
	  memory penalty.

config QCOM_QDSS_BRIDGE
	bool "Configure bridge driver for QTI/Qualcomm Technologies, Inc. MDM"
	depends on MHI_BUS
	help
	  The driver will help route diag traffic from modem side over the QDSS
	  sub-system to USB on APSS side. The driver acts as a bridge between the
	  MHI and USB interface. If unsure, say N.

config QTI_RPM_STATS_LOG
	bool "Qualcomm Technologies RPM Stats Driver"
	depends on DEBUG_FS
	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_CDSP_LOADER
	tristate "CDSP loader support"
	help
	  Enable CDSP image loader.
	  The CDSP loader brings CDSP out of reset
	  for platforms that have compute DSP.
	  Say M if you want to enable this module.

config QCOM_SMCINVOKE
       bool "Secure QSEE Support"
       help
         Enable SMCInvoke driver which supports capability based secure
         communication between QTI Secure Execution Environment (QSEE)
         and high level operating system. It exposes APIs for both
         userspace and kernel clients.

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_AVTIMER
	tristate "Avtimer Driver"
	default n
	help
	  This driver gets the Q6 out of power collapsed state
	  and exposes ioctl control to read avtimer tick.
	  Enables camera to use for VT call to get avtimer
	  timestamp.

config MSM_PM
	depends on PM
	select MSM_IDLE_STATS if DEBUG_FS
	select CPU_IDLE_MULTIPLE_DRIVERS
	bool "Qualcomm Techonolgies Inc (QTI) platform specific PM driver"
	help
	  Platform specific power driver to manage cores and l2 low power
	  modes. It interface with various system driver and put the cores
	  into low power modes. It implements OS initiated scheme and
	  determines last CPU to call into PSCI for cluster Low power
	  modes.

config MSM_NOPM
	default y if !PM
	bool
	help
	  This enables bare minimum support of power management at platform level.
	  i.e WFI

config MSM_QBT1000
	bool "QBT1000 Ultrasonic Fingerprint Sensor"
	help
	  This driver provides services for configuring the fingerprint
	  sensor hardware and for communicating with the trusted app which
	  uses it. It enables clocks and provides commands for loading
	  trusted apps, unloading them and marshalling buffers to the
	  trusted fingerprint app.

config APSS_CORE_EA
	depends on CPU_FREQ && PM_OPP
	bool "Qualcomm Technology Inc specific power aware driver"
	help
	  Platform specific power aware driver to provide power
	  and temperature information to the scheduler.

config QCOM_FSA4480_I2C
	bool "Fairchild FSA4480 chip with I2C"
	select REGMAP_I2C
	depends on I2C
	help
	  Support for the Fairchild FSA4480 IC switch chip controlled
	  using I2C. This driver provides common support
	  for accessing the device, switching between USB and Audio
	  modes, changing orientation.

if MSM_PM
menuconfig MSM_IDLE_STATS
	bool "Collect idle statistics"
	help
	  Collect cores various low power mode idle statistics
	  and export them in proc/msm_pm_stats. User can read
	  this data and determine what low power modes and how
	  many times cores have entered into LPM modes.

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
endif # MSM_PM

source "drivers/soc/qcom/memshare/Kconfig"
source "drivers/soc/qcom/hab/Kconfig"
source "drivers/soc/qcom/rmnet_ctl/Kconfig"

config MSM_PERFORMANCE
	tristate "msm performance driver to support userspace fmin/fmax request"
	default n
	help
	This driver can restrict max freq or min freq of cpu cluster
	when requested by the userspace by changing the cpufreq policy
	fmin and fmax.

config QMP_DEBUGFS_CLIENT
	bool "Debugfs Client to communicate with AOP using QMP protocol"
	depends on DEBUG_FS
	default n
	help
	  This options enables a driver which allows clients to send messages
	  to Alway On processor using QMP transport.

config QCOM_QHEE_ENABLE_MEM_PROTECTION
	bool "QHEE enable kernel memory protection"
	depends on QCOM_SCM
	default y
	help
	  When this option is enabled, an SCM call will be invoked to enable
	  kernel memory protection in stage 2 memory mappings on kernel boot.
	  This is part of a security feature enabled in QHEE.

config QCOM_SMP2P_SLEEPSTATE
	bool "SMP2P Sleepstate notifier"
	depends on QCOM_SMP2P
	help
	  When this option is enabled, notifications are sent to remote procs
	  for the power state changes on the local processor. The notifications
	  are sent through the smp2p framework.

config QCOM_CDSP_RM
	bool "CDSP request manager"
	depends on QCOM_GLINK
	help
	  This driver serves CDSP requests for CPU L3 clock and CPU QoS thus
	  improving CDSP performance. Using this driver, CDSP can set appropriate
	  CPU L3 clock for improving IO-Coherent throughput and opt for QoS mode
	  to improve RPC latency.

config QCOM_CX_IPEAK
	bool "Common driver to handle Cx iPeak limitation"
	help
	  Cx ipeak HW module is used to limit the current drawn by various subsystem
	  blocks on Cx power rail. Each client needs to set their
	  bit in tcsr register if it is going to cross its own threshold. If all
	  clients are going to cross their thresholds then Cx ipeak hw module will raise
	  an interrupt to cDSP block to throttle cDSP fmax.

config QCOM_AOP_DDR_MESSAGING
	bool "Send messages to AOP about the DDR frequency during reboot"
	help
	  This driver sends messages to the AOP to adjust the DDR frequency when
	  the device is rebooting, to ensure that the device is powered off
	  cleanly.

config QCOM_AOP_DDRSS_COMMANDS
	bool "Send commands to AOP to affect the behavior of the DDRSS"
	help
	  This driver allows messages to be sent to the AOP to affect the DDRSS
	  behavior.
endmenu

config QCOM_HYP_CORE_CTL
	bool "CPU reservation scheme for Hypervisor"
	depends on OKL4_GUEST
	help
	  This driver reserve the specified CPUS by isolating them. The reserved
	  CPUs can be assigned to the other guest OS by the hypervisor.
	  An offline CPU is considered as a reserved CPU since this OS can't use
	  it.
