162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# QCOM Soc drivers
462306a36Sopenharmony_ci#
562306a36Sopenharmony_cimenu "Qualcomm SoC drivers"
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciconfig QCOM_AOSS_QMP
862306a36Sopenharmony_ci	tristate "Qualcomm AOSS Driver"
962306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
1062306a36Sopenharmony_ci	depends on MAILBOX
1162306a36Sopenharmony_ci	depends on COMMON_CLK && PM
1262306a36Sopenharmony_ci	select PM_GENERIC_DOMAINS
1362306a36Sopenharmony_ci	help
1462306a36Sopenharmony_ci	  This driver provides the means of communicating with and controlling
1562306a36Sopenharmony_ci	  the low-power state for resources related to the remoteproc
1662306a36Sopenharmony_ci	  subsystems as well as controlling the debug clocks exposed by the Always On
1762306a36Sopenharmony_ci	  Subsystem (AOSS) using Qualcomm Messaging Protocol (QMP).
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciconfig QCOM_COMMAND_DB
2062306a36Sopenharmony_ci	tristate "Qualcomm Command DB"
2162306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
2262306a36Sopenharmony_ci	depends on OF_RESERVED_MEM
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  Command DB queries shared memory by key string for shared system
2562306a36Sopenharmony_ci	  resources. Platform drivers that require to set state of a shared
2662306a36Sopenharmony_ci	  resource on a RPM-hardened platform must use this database to get
2762306a36Sopenharmony_ci	  SoC specific identifier and information for the shared resources.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciconfig QCOM_CPR
3062306a36Sopenharmony_ci	tristate "QCOM Core Power Reduction (CPR) support"
3162306a36Sopenharmony_ci	depends on ARCH_QCOM && HAS_IOMEM
3262306a36Sopenharmony_ci	select PM_OPP
3362306a36Sopenharmony_ci	select REGMAP
3462306a36Sopenharmony_ci	help
3562306a36Sopenharmony_ci	  Say Y here to enable support for the CPR hardware found on Qualcomm
3662306a36Sopenharmony_ci	  SoCs like QCS404.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	  This driver populates CPU OPPs tables and makes adjustments to the
3962306a36Sopenharmony_ci	  tables based on feedback from the CPR hardware. If you want to do
4062306a36Sopenharmony_ci	  CPUfrequency scaling say Y here.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	  To compile this driver as a module, choose M here: the module will
4362306a36Sopenharmony_ci	  be called qcom-cpr
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciconfig QCOM_GENI_SE
4662306a36Sopenharmony_ci	tristate "QCOM GENI Serial Engine Driver"
4762306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
4862306a36Sopenharmony_ci	help
4962306a36Sopenharmony_ci	  This driver is used to manage Generic Interface (GENI) firmware based
5062306a36Sopenharmony_ci	  Qualcomm Technologies, Inc. Universal Peripheral (QUP) Wrapper. This
5162306a36Sopenharmony_ci	  driver is also used to manage the common aspects of multiple Serial
5262306a36Sopenharmony_ci	  Engines present in the QUP.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciconfig QCOM_GSBI
5562306a36Sopenharmony_ci	tristate "QCOM General Serial Bus Interface"
5662306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
5762306a36Sopenharmony_ci	select MFD_SYSCON
5862306a36Sopenharmony_ci	help
5962306a36Sopenharmony_ci	  Say y here to enable GSBI support.  The GSBI provides control
6062306a36Sopenharmony_ci	  functions for connecting the underlying serial UART, SPI, and I2C
6162306a36Sopenharmony_ci	  devices to the output pins.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciconfig QCOM_LLCC
6462306a36Sopenharmony_ci	tristate "Qualcomm Technologies, Inc. LLCC driver"
6562306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
6662306a36Sopenharmony_ci	select REGMAP_MMIO
6762306a36Sopenharmony_ci	help
6862306a36Sopenharmony_ci	  Qualcomm Technologies, Inc. platform specific
6962306a36Sopenharmony_ci	  Last Level Cache Controller(LLCC) driver for platforms such as,
7062306a36Sopenharmony_ci	  SDM845. This provides interfaces to clients that use the LLCC.
7162306a36Sopenharmony_ci	  Say yes here to enable LLCC slice driver.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciconfig QCOM_KRYO_L2_ACCESSORS
7462306a36Sopenharmony_ci	bool
7562306a36Sopenharmony_ci	depends on (ARCH_QCOM || COMPILE_TEST) && ARM64
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig QCOM_MDT_LOADER
7862306a36Sopenharmony_ci	tristate
7962306a36Sopenharmony_ci	select QCOM_SCM
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ciconfig QCOM_OCMEM
8262306a36Sopenharmony_ci	tristate "Qualcomm On Chip Memory (OCMEM) driver"
8362306a36Sopenharmony_ci	depends on ARCH_QCOM
8462306a36Sopenharmony_ci	select QCOM_SCM
8562306a36Sopenharmony_ci	help
8662306a36Sopenharmony_ci	  The On Chip Memory (OCMEM) allocator allows various clients to
8762306a36Sopenharmony_ci	  allocate memory from OCMEM based on performance, latency and power
8862306a36Sopenharmony_ci	  requirements. This is typically used by the GPU, camera/video, and
8962306a36Sopenharmony_ci	  audio components on some Snapdragon SoCs.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciconfig QCOM_PDR_HELPERS
9262306a36Sopenharmony_ci	tristate
9362306a36Sopenharmony_ci	select QCOM_QMI_HELPERS
9462306a36Sopenharmony_ci	depends on NET
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciconfig QCOM_PMIC_GLINK
9762306a36Sopenharmony_ci	tristate "Qualcomm PMIC GLINK driver"
9862306a36Sopenharmony_ci	depends on RPMSG
9962306a36Sopenharmony_ci	depends on TYPEC
10062306a36Sopenharmony_ci	depends on DRM
10162306a36Sopenharmony_ci	depends on NET
10262306a36Sopenharmony_ci	depends on OF
10362306a36Sopenharmony_ci	select AUXILIARY_BUS
10462306a36Sopenharmony_ci	select QCOM_PDR_HELPERS
10562306a36Sopenharmony_ci	help
10662306a36Sopenharmony_ci	  The Qualcomm PMIC GLINK driver provides access, over GLINK, to the
10762306a36Sopenharmony_ci	  USB and battery firmware running on one of the coprocessors in
10862306a36Sopenharmony_ci	  several modern Qualcomm platforms.
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci	  Say yes here to support USB-C and battery status on modern Qualcomm
11162306a36Sopenharmony_ci	  platforms.
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ciconfig QCOM_QMI_HELPERS
11462306a36Sopenharmony_ci	tristate
11562306a36Sopenharmony_ci	depends on NET
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ciconfig QCOM_RAMP_CTRL
11862306a36Sopenharmony_ci	tristate "Qualcomm Ramp Controller driver"
11962306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
12062306a36Sopenharmony_ci	help
12162306a36Sopenharmony_ci	  The Ramp Controller is used to program the sequence ID for pulse
12262306a36Sopenharmony_ci	  swallowing, enable sequence and link sequence IDs for the CPU
12362306a36Sopenharmony_ci	  cores on some Qualcomm SoCs.
12462306a36Sopenharmony_ci	  Say y here to enable support for the ramp controller.
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ciconfig QCOM_RMTFS_MEM
12762306a36Sopenharmony_ci	tristate "Qualcomm Remote Filesystem memory driver"
12862306a36Sopenharmony_ci	depends on ARCH_QCOM
12962306a36Sopenharmony_ci	select QCOM_SCM
13062306a36Sopenharmony_ci	help
13162306a36Sopenharmony_ci	  The Qualcomm remote filesystem memory driver is used for allocating
13262306a36Sopenharmony_ci	  and exposing regions of shared memory with remote processors for the
13362306a36Sopenharmony_ci	  purpose of exchanging sector-data between the remote filesystem
13462306a36Sopenharmony_ci	  service and its clients.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	  Say y here if you intend to boot the modem remoteproc.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ciconfig QCOM_RPM_MASTER_STATS
13962306a36Sopenharmony_ci	tristate "Qualcomm RPM Master stats"
14062306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
14162306a36Sopenharmony_ci	help
14262306a36Sopenharmony_ci	  The RPM Master sleep stats driver provides detailed per-subsystem
14362306a36Sopenharmony_ci	  sleep/wake data, read from the RPM message RAM. It can be used to
14462306a36Sopenharmony_ci	  assess whether all the low-power modes available are entered as
14562306a36Sopenharmony_ci	  expected or to check which part of the SoC prevents it from sleeping.
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci	  Say y here if you intend to debug or monitor platform sleep.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciconfig QCOM_RPMH
15062306a36Sopenharmony_ci	tristate "Qualcomm RPM-Hardened (RPMH) Communication"
15162306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
15262306a36Sopenharmony_ci	depends on (QCOM_COMMAND_DB || !QCOM_COMMAND_DB)
15362306a36Sopenharmony_ci	help
15462306a36Sopenharmony_ci	  Support for communication with the hardened-RPM blocks in
15562306a36Sopenharmony_ci	  Qualcomm Technologies Inc (QTI) SoCs. RPMH communication uses an
15662306a36Sopenharmony_ci	  internal bus to transmit state requests for shared resources. A set
15762306a36Sopenharmony_ci	  of hardware components aggregate requests for these resources and
15862306a36Sopenharmony_ci	  help apply the aggregated state on the resource.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ciconfig QCOM_RPMHPD
16162306a36Sopenharmony_ci	tristate "Qualcomm RPMh Power domain driver"
16262306a36Sopenharmony_ci	depends on QCOM_RPMH && QCOM_COMMAND_DB
16362306a36Sopenharmony_ci	help
16462306a36Sopenharmony_ci	  QCOM RPMh Power domain driver to support power-domains with
16562306a36Sopenharmony_ci	  performance states. The driver communicates a performance state
16662306a36Sopenharmony_ci	  value to RPMh which then translates it into corresponding voltage
16762306a36Sopenharmony_ci	  for the voltage rail.
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciconfig QCOM_RPMPD
17062306a36Sopenharmony_ci	tristate "Qualcomm RPM Power domain driver"
17162306a36Sopenharmony_ci	depends on PM && OF
17262306a36Sopenharmony_ci	depends on QCOM_SMD_RPM
17362306a36Sopenharmony_ci	select PM_GENERIC_DOMAINS
17462306a36Sopenharmony_ci	select PM_GENERIC_DOMAINS_OF
17562306a36Sopenharmony_ci	help
17662306a36Sopenharmony_ci	  QCOM RPM Power domain driver to support power-domains with
17762306a36Sopenharmony_ci	  performance states. The driver communicates a performance state
17862306a36Sopenharmony_ci	  value to RPM which then translates it into corresponding voltage
17962306a36Sopenharmony_ci	  for the voltage rail.
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciconfig QCOM_SMEM
18262306a36Sopenharmony_ci	tristate "Qualcomm Shared Memory Manager (SMEM)"
18362306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
18462306a36Sopenharmony_ci	depends on HWSPINLOCK
18562306a36Sopenharmony_ci	help
18662306a36Sopenharmony_ci	  Say y here to enable support for the Qualcomm Shared Memory Manager.
18762306a36Sopenharmony_ci	  The driver provides an interface to items in a heap shared among all
18862306a36Sopenharmony_ci	  processors in a Qualcomm platform.
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ciconfig QCOM_SMD_RPM
19162306a36Sopenharmony_ci	tristate "Qualcomm Resource Power Manager (RPM) over SMD"
19262306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
19362306a36Sopenharmony_ci	depends on RPMSG
19462306a36Sopenharmony_ci	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
19562306a36Sopenharmony_ci	help
19662306a36Sopenharmony_ci	  If you say yes to this option, support will be included for the
19762306a36Sopenharmony_ci	  Resource Power Manager system found in the Qualcomm 8974 based
19862306a36Sopenharmony_ci	  devices.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci	  This is required to access many regulators, clocks and bus
20162306a36Sopenharmony_ci	  frequencies controlled by the RPM on these devices.
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci	  Say M here if you want to include support for the Qualcomm RPM as a
20462306a36Sopenharmony_ci	  module. This will build a module called "qcom-smd-rpm".
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ciconfig QCOM_SMEM_STATE
20762306a36Sopenharmony_ci	bool
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ciconfig QCOM_SMP2P
21062306a36Sopenharmony_ci	tristate "Qualcomm Shared Memory Point to Point support"
21162306a36Sopenharmony_ci	depends on MAILBOX
21262306a36Sopenharmony_ci	depends on QCOM_SMEM
21362306a36Sopenharmony_ci	select QCOM_SMEM_STATE
21462306a36Sopenharmony_ci	select IRQ_DOMAIN
21562306a36Sopenharmony_ci	help
21662306a36Sopenharmony_ci	  Say yes here to support the Qualcomm Shared Memory Point to Point
21762306a36Sopenharmony_ci	  protocol.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ciconfig QCOM_SMSM
22062306a36Sopenharmony_ci	tristate "Qualcomm Shared Memory State Machine"
22162306a36Sopenharmony_ci	depends on QCOM_SMEM
22262306a36Sopenharmony_ci	select QCOM_SMEM_STATE
22362306a36Sopenharmony_ci	select IRQ_DOMAIN
22462306a36Sopenharmony_ci	help
22562306a36Sopenharmony_ci	  Say yes here to support the Qualcomm Shared Memory State Machine.
22662306a36Sopenharmony_ci	  The state machine is represented by bits in shared memory.
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ciconfig QCOM_SOCINFO
22962306a36Sopenharmony_ci	tristate "Qualcomm socinfo driver"
23062306a36Sopenharmony_ci	depends on QCOM_SMEM
23162306a36Sopenharmony_ci	select SOC_BUS
23262306a36Sopenharmony_ci	help
23362306a36Sopenharmony_ci	 Say yes here to support the Qualcomm socinfo driver, providing
23462306a36Sopenharmony_ci	 information about the SoC to user space.
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ciconfig QCOM_SPM
23762306a36Sopenharmony_ci	tristate "Qualcomm Subsystem Power Manager (SPM)"
23862306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
23962306a36Sopenharmony_ci	select QCOM_SCM
24062306a36Sopenharmony_ci	help
24162306a36Sopenharmony_ci	  Enable the support for the Qualcomm Subsystem Power Manager, used
24262306a36Sopenharmony_ci	  to manage cores, L2 low power modes and to configure the internal
24362306a36Sopenharmony_ci	  Adaptive Voltage Scaler parameters, where supported.
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ciconfig QCOM_STATS
24662306a36Sopenharmony_ci	tristate "Qualcomm Technologies, Inc. (QTI) Sleep stats driver"
24762306a36Sopenharmony_ci	depends on (ARCH_QCOM && DEBUG_FS) || COMPILE_TEST
24862306a36Sopenharmony_ci	depends on QCOM_SMEM
24962306a36Sopenharmony_ci	help
25062306a36Sopenharmony_ci	  Qualcomm Technologies, Inc. (QTI) Sleep stats driver to read
25162306a36Sopenharmony_ci	  the shared memory exported by the remote processor related to
25262306a36Sopenharmony_ci	  various SoC level low power modes statistics and export to debugfs
25362306a36Sopenharmony_ci	  interface.
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ciconfig QCOM_WCNSS_CTRL
25662306a36Sopenharmony_ci	tristate "Qualcomm WCNSS control driver"
25762306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
25862306a36Sopenharmony_ci	depends on RPMSG
25962306a36Sopenharmony_ci	help
26062306a36Sopenharmony_ci	  Client driver for the WCNSS_CTRL SMD channel, used to download nv
26162306a36Sopenharmony_ci	  firmware to a newly booted WCNSS chip.
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ciconfig QCOM_APR
26462306a36Sopenharmony_ci	tristate "Qualcomm APR/GPR Bus (Asynchronous/Generic Packet Router)"
26562306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
26662306a36Sopenharmony_ci	depends on RPMSG
26762306a36Sopenharmony_ci	depends on NET
26862306a36Sopenharmony_ci	select QCOM_PDR_HELPERS
26962306a36Sopenharmony_ci	help
27062306a36Sopenharmony_ci	  Enable APR IPC protocol support between
27162306a36Sopenharmony_ci	  application processor and QDSP6. APR is
27262306a36Sopenharmony_ci	  used by audio driver to configure QDSP6
27362306a36Sopenharmony_ci	  ASM, ADM and AFE modules.
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ciconfig QCOM_ICC_BWMON
27662306a36Sopenharmony_ci	tristate "QCOM Interconnect Bandwidth Monitor driver"
27762306a36Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
27862306a36Sopenharmony_ci	select PM_OPP
27962306a36Sopenharmony_ci	select REGMAP_MMIO
28062306a36Sopenharmony_ci	help
28162306a36Sopenharmony_ci	  Sets up driver monitoring bandwidth on various interconnects and
28262306a36Sopenharmony_ci	  based on that voting for interconnect bandwidth, adjusting their
28362306a36Sopenharmony_ci	  speed to current demand.
28462306a36Sopenharmony_ci	  Current implementation brings support for BWMON v4, used for example
28562306a36Sopenharmony_ci	  on SDM845 to measure bandwidth between CPU (gladiator_noc) and Last
28662306a36Sopenharmony_ci	  Level Cache (memnoc).  Usage of this BWMON allows to remove some of
28762306a36Sopenharmony_ci	  the fixed bandwidth votes from cpufreq (CPU nodes) thus achieve high
28862306a36Sopenharmony_ci	  memory throughput even with lower CPU frequencies.
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ciconfig QCOM_INLINE_CRYPTO_ENGINE
29162306a36Sopenharmony_ci	tristate
29262306a36Sopenharmony_ci	select QCOM_SCM
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciendmenu
295