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

config QCOM_AOSS_QMP
	depends on n
	tristate "Qualcomm AOSS Driver"
	depends on m
	depends on ARCH_QCOM || COMPILE_TEST
	depends on MAILBOX
	depends on COMMON_CLK && PM
	depends on 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
	depends on n
	tristate "Qualcomm Command DB"
	depends on m
	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_CPR
	depends on n
	tristate "QCOM Core Power Reduction (CPR) support"
	depends on m
	depends on ARCH_QCOM && HAS_IOMEM
	depends on PM_OPP
	depends on REGMAP
	help
	  Say Y here to enable support for the CPR hardware found on Qualcomm
	  SoCs like QCS404.

	  This driver populates CPU OPPs tables and makes adjustments to the
	  tables based on feedback from the CPR hardware. If you want to do
	  CPUfrequency scaling say Y here.

	  To compile this driver as a module, choose M here: the module will
	  be called qcom-cpr

config QCOM_GENI_SE
	depends on n
	tristate "QCOM GENI Serial Engine Driver"
	depends on m
	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_GSBI
	depends on n
	tristate "QCOM General Serial Bus Interface"
	depends on m
	depends on ARCH_QCOM || COMPILE_TEST
	depends on 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
	depends on n
	tristate "Qualcomm Technologies, Inc. LLCC driver"
	depends on m
	depends on ARCH_QCOM || COMPILE_TEST
	help
	  Qualcomm Technologies, Inc. platform specific
	  Last Level Cache Controller(LLCC) driver for platforms such as,
	  SDM845. This provides interfaces to clients that use the LLCC.
	  Say yes here to enable LLCC slice driver.

config QCOM_KRYO_L2_ACCESSORS
	depends on n
	bool
	depends on ARCH_QCOM && ARM64 || COMPILE_TEST

config QCOM_MDT_LOADER
	depends on n
	tristate
	depends on m
	depends on QCOM_SCM

config QCOM_OCMEM
	depends on n
	tristate "Qualcomm On Chip Memory (OCMEM) driver"
	depends on m
	depends on ARCH_QCOM
	depends on QCOM_SCM
	help
	  The On Chip Memory (OCMEM) allocator allows various clients to
	  allocate memory from OCMEM based on performance, latency and power
	  requirements. This is typically used by the GPU, camera/video, and
	  audio components on some Snapdragon SoCs.

config QCOM_PDR_HELPERS
	depends on n
	tristate
	depends on m
	select QCOM_QMI_HELPERS

config QCOM_QMI_HELPERS
	depends on !KERNEL_4_16
	tristate
	depends on m
	depends on NET

config QCOM_RMTFS_MEM
	depends on n
	tristate "Qualcomm Remote Filesystem memory driver"
	depends on m
	depends on ARCH_QCOM
	depends on 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
	tristate "Qualcomm RPM-Hardened (RPMH) Communication"
	depends on m
	depends on ARCH_QCOM || COMPILE_TEST
	depends on (QCOM_COMMAND_DB || !QCOM_COMMAND_DB)
	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
	depends on n
	tristate "Qualcomm RPMh Power domain driver"
	depends on m
	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
	depends on n
	tristate "Qualcomm RPM Power domain driver"
	depends on m
	depends on QCOM_SMD_RPM
	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
	depends on n
	tristate "Qualcomm Shared Memory Manager (SMEM)"
	depends on m
	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 QCOM_SMD_RPM
	depends on n
	tristate "Qualcomm Resource Power Manager (RPM) over SMD"
	depends on m
	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
	depends on n
	bool

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

config QCOM_SMSM
	depends on n
	tristate "Qualcomm Shared Memory State Machine"
	depends on m
	depends on QCOM_SMEM
	select QCOM_SMEM_STATE
	depends on 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
	depends on n
	tristate "Qualcomm socinfo driver"
	depends on m
	depends on QCOM_SMEM
	depends on SOC_BUS
	help
	 Say yes here to support the Qualcomm socinfo driver, providing
	 information about the SoC to user space.

config QCOM_WCNSS_CTRL
	depends on n
	tristate "Qualcomm WCNSS control driver"
	depends on m
	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
	depends on n
	tristate "Qualcomm APR Bus (Asynchronous Packet Router)"
	depends on m
	depends on ARCH_QCOM || COMPILE_TEST
	depends on RPMSG
	depends on NET
	select QCOM_PDR_HELPERS
	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.
endmenu
