# SPDX-License-Identifier: GPL-2.0-only
#
# QCOM Soc drivers
#
menu "Qualcomm SoC drivers"

config QCOM_AOSS_QMP
	tristate "Qualcomm AOSS Driver"
	depends on ARCH_QCOM || COMPILE_TEST
	depends on MAILBOX
	depends on COMMON_CLK && PM
	select PM_GENERIC_DOMAINS
	help
	  This driver provides the means of communicating with and controlling
	  the low-power state for resources related to the remoteproc
	  subsystems as well as controlling the debug clocks exposed by the Always On
	  Subsystem (AOSS) using Qualcomm Messaging Protocol (QMP).

config QCOM_COMMAND_DB
	bool "Qualcomm Command DB"
	depends on ARCH_QCOM || COMPILE_TEST
	depends on OF_RESERVED_MEM
	help
	  Command DB queries shared memory by key string for shared system
	  resources. Platform drivers that require to set state of a shared
	  resource on a RPM-hardened platform must use this database to get
	  SoC specific identifier and information for the shared resources.

config QCOM_GENI_SE
	tristate "QCOM GENI Serial Engine Driver"
	depends on ARCH_QCOM || COMPILE_TEST
	help
	  This driver is used to manage Generic Interface (GENI) firmware based
	  Qualcomm Technologies, Inc. Universal Peripheral (QUP) Wrapper. This
	  driver is also used to manage the common aspects of multiple Serial
	  Engines present in the QUP.

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_GSBI
        tristate "QCOM General Serial Bus Interface"
        depends on ARCH_QCOM || COMPILE_TEST
        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_LLCC
	tristate "Qualcomm Technologies, Inc. LLCC driver"
	depends on ARCH_QCOM || COMPILE_TEST
	help
	  Qualcomm Technologies, Inc. platform specific
	  Last Level Cache Controller(LLCC) driver. This provides interfaces
	  to clients that use the LLCC. Say yes here to enable LLCC slice
	  driver.

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

config IPQ_REG_UPDATE
	bool "QTI, Subsystem register update driver"
	depends on ARCH_QCOM
	help
	  Generic driver to configure required registers

config IPQ_SUBSYSTEM_RAMDUMP
	bool "QTI, Subsystem ramdump driver"
	depends on ARCH_QCOM
	help
	  QTI subsystem ramdump driver exposes APIs for the subsystem
	  to enable ramdump collection.

config IPQ_SUBSYSTEM_RESTART_TEST
	tristate "IPQ SSR test module"
	depends on QCOM_Q6V5_WCSS || QCOM_Q6V5_MPD
	help
	 This option enables the IPQ SSR test module.

config QCOM_MDT_LOADER
	tristate
	select QCOM_SCM

config QCA_MINIDUMP
	bool "QCA minidump feature"
	depends on QCOM_WDT && KALLSYMS
	help
	 Say Y here to include QCA minidump feature.
	 This feature enables dumping desired regions
	 instead of dumping whole DDR up on system crash.
	 Currently supported on IPQ807x /IPQ60xx targets.

config QCA_MINIDUMP_DEBUG
	bool "QCA minidump Debug feature"
	depends on QCA_MINIDUMP
	help
	 Say Y here to include QCA minidump Debug logging.

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
	tristate
	depends on ARCH_QCOM || COMPILE_TEST
	depends on NET

config QCOM_RMTFS_MEM
	tristate "Qualcomm Remote Filesystem memory driver"
	depends on ARCH_QCOM
	select QCOM_SCM
	help
	  The Qualcomm remote filesystem memory driver is used for allocating
	  and exposing regions of shared memory with remote processors for the
	  purpose of exchanging sector-data between the remote filesystem
	  service and its clients.

	  Say y here if you intend to boot the modem remoteproc.

config QCOM_RPMH
	bool "Qualcomm RPM-Hardened (RPMH) Communication"
	depends on ARCH_QCOM && ARM64 || COMPILE_TEST
	help
	  Support for communication with the hardened-RPM blocks in
	  Qualcomm Technologies Inc (QTI) SoCs. RPMH communication uses an
	  internal bus to transmit state requests for shared resources. A set
	  of hardware components aggregate requests for these resources and
	  help apply the aggregated state on the resource.

config QCOM_RPMHPD
	bool "Qualcomm RPMh Power domain driver"
	depends on QCOM_RPMH && QCOM_COMMAND_DB
	help
	  QCOM RPMh Power domain driver to support power-domains with
	  performance states. The driver communicates a performance state
	  value to RPMh which then translates it into corresponding voltage
	  for the voltage rail.

config QCOM_RPMPD
	bool "Qualcomm RPM Power domain driver"
	depends on QCOM_SMD_RPM=y
	help
	  QCOM RPM Power domain driver to support power-domains with
	  performance states. The driver communicates a performance state
	  value to RPM which then translates it into corresponding voltage
	  for the voltage rail.

config QCOM_SMEM
	tristate "Qualcomm Shared Memory Manager (SMEM)"
	depends on ARCH_QCOM || COMPILE_TEST
	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 QTI_MEMORY_DUMP_V2
        bool "QTI 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 QTI_DCC
        bool "QTI Data Capture and Compare enigne support"
        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 QTI_DCC_V2
	bool "QTI Data Capture and Compare enigne support"
	help
	  This option enables driver for Data Capture and Compare engine. DCC
	  V2 driver provides interface to configure DCC block and read back
	  captured data from DCC_V2's internal SRAM

config QTI_EUD
	tristate "QTI Embedded USB Debugger (EUD)"
	depends on ARCH_QCOM
	help
	  The Embedded USB Debugger (EUD) driver is a driver for the
	  control peripheral which waits on events like USB attach/detach
	  and charger enable/disable. The control peripheral further helps
	  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 EUD_EXTCON_SUPPORT
	bool "QTI EUD driver supports extcon devices"
	depends on QTI_EUD
	default n
	help
	  An extcon device can be registered with EUD for charging the
	  device's battery through USB.
	  Say y here, if battery power is supported.

config QCOM_SMD_RPM
	tristate "Qualcomm Resource Power Manager (RPM) over SMD"
	depends on ARCH_QCOM || COMPILE_TEST
	depends on RPMSG
	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 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
	select IRQ_DOMAIN
	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
	select IRQ_DOMAIN
	help
	  Say yes here to support the Qualcomm Shared Memory State Machine.
	  The state machine is represented by bits in shared memory.

config QCOM_SOCINFO
	tristate "Qualcomm socinfo driver"
	depends on QCOM_SMEM
	select SOC_BUS
	help
	 Say yes here to support the Qualcomm socinfo driver, providing
	 information about the SoC to user space.

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

config QCOM_APR
	tristate "Qualcomm APR Bus (Asynchronous Packet Router)"
	depends on ARCH_QCOM || COMPILE_TEST
	depends on RPMSG
	help
          Enable APR IPC protocol support between
          application processor and QDSP6. APR is
          used by audio driver to configure QDSP6
          ASM, ADM and AFE modules.

config MSM_RPM_LOG
	tristate "QTI Resource Power Manager Log Driver"
	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 QTI_TZ_LOG
	tristate "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 QTI_LICENSE_MANAGER
	tristate "QTI License manager driver"
	help
	  This option enables a driver with License Manager QMI Service
	  running to communicate the license termination mode and license
	  files to the attached PCIe device.

config QTI_CTXT_SAVE
	tristate "QTI context save log"
	depends on QCOM_SCM
	help
	  Enable the context save driver, this driver provides a memory to
	  TZ for crashdump collection, also it provides a TLV buffer for
	  storing user specific buffer info into crashdump.

config QTI_APSS_ACC
	bool "QTI APSS Application Clock Controller"
	depends on ARM64 && QCOM_SCM
	help
	  The ACC provides clock, power domain, and reset control to a CPU.
	  There is one ACC register region per CPU within the APSS remapped
	  region as well as an alias register region that remaps accesses
	  to the ACC associated with the CPU accessing the region.

	  If unsure, say N.

config QTI_BT_INTERFACE
	tristate "TTY interface support for BT over IMEM"
	default n
	help
	  Enable TTY support for BT host over IMEM.
endmenu
