mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-20 01:46:40 -05:00
Add a simple driver for the qcom,rpm-proc compatible that registers the "smd-edge" and populates other children defined in the device tree. Note that the DT schema belongs to the remoteproc subsystem while this driver is added inside soc/qcom. I argue that the RPM *is* a remoteproc, but as an implementation detail in Linux it can currently not benefit from anything provided by the remoteproc subsystem. The RPM firmware is usually already loaded and started by earlier components in the boot chain and is not meant to be ever restarted. To avoid breaking existing kernel configurations the driver is always built when smd-rpm.c is also built. They belong closely together anyway. To avoid build errors CONFIG_RPMSG_QCOM_SMD must be also built-in if rpm-proc is. Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Stephan Gerhold <stephan@gerhold.net> Link: https://lore.kernel.org/r/20230531-rpm-rproc-v3-9-a07dcdefd918@gerhold.net Signed-off-by: Bjorn Andersson <andersson@kernel.org>
295 lines
9.4 KiB
Plaintext
295 lines
9.4 KiB
Plaintext
# 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
|
|
tristate "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_CPR
|
|
tristate "QCOM Core Power Reduction (CPR) support"
|
|
depends on ARCH_QCOM && HAS_IOMEM
|
|
select PM_OPP
|
|
select 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
|
|
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_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
|
|
select REGMAP_MMIO
|
|
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
|
|
bool
|
|
depends on (ARCH_QCOM || COMPILE_TEST) && ARM64
|
|
|
|
config QCOM_MDT_LOADER
|
|
tristate
|
|
select QCOM_SCM
|
|
|
|
config QCOM_OCMEM
|
|
tristate "Qualcomm On Chip Memory (OCMEM) driver"
|
|
depends on ARCH_QCOM
|
|
select 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
|
|
tristate
|
|
select QCOM_QMI_HELPERS
|
|
depends on NET
|
|
|
|
config QCOM_PMIC_GLINK
|
|
tristate "Qualcomm PMIC GLINK driver"
|
|
depends on RPMSG
|
|
depends on TYPEC
|
|
depends on DRM
|
|
depends on NET
|
|
depends on OF
|
|
select AUXILIARY_BUS
|
|
select QCOM_PDR_HELPERS
|
|
help
|
|
The Qualcomm PMIC GLINK driver provides access, over GLINK, to the
|
|
USB and battery firmware running on one of the coprocessors in
|
|
several modern Qualcomm platforms.
|
|
|
|
Say yes here to support USB-C and battery status on modern Qualcomm
|
|
platforms.
|
|
|
|
config QCOM_QMI_HELPERS
|
|
tristate
|
|
depends on NET
|
|
|
|
config QCOM_RAMP_CTRL
|
|
tristate "Qualcomm Ramp Controller driver"
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
help
|
|
The Ramp Controller is used to program the sequence ID for pulse
|
|
swallowing, enable sequence and link sequence IDs for the CPU
|
|
cores on some Qualcomm SoCs.
|
|
Say y here to enable support for the ramp controller.
|
|
|
|
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_RPM_MASTER_STATS
|
|
tristate "Qualcomm RPM Master stats"
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
help
|
|
The RPM Master sleep stats driver provides detailed per-subsystem
|
|
sleep/wake data, read from the RPM message RAM. It can be used to
|
|
assess whether all the low-power modes available are entered as
|
|
expected or to check which part of the SoC prevents it from sleeping.
|
|
|
|
Say y here if you intend to debug or monitor platform sleep.
|
|
|
|
config QCOM_RPMH
|
|
tristate "Qualcomm RPM-Hardened (RPMH) Communication"
|
|
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
|
|
tristate "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
|
|
tristate "Qualcomm RPM Power domain driver"
|
|
depends on PM && OF
|
|
depends on QCOM_SMD_RPM
|
|
select PM_GENERIC_DOMAINS
|
|
select PM_GENERIC_DOMAINS_OF
|
|
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 QCOM_SMD_RPM
|
|
tristate "Qualcomm Resource Power Manager (RPM) over SMD"
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
depends on RPMSG
|
|
depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
|
|
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_SPM
|
|
tristate "Qualcomm Subsystem Power Manager (SPM)"
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
select QCOM_SCM
|
|
help
|
|
Enable the support for the Qualcomm Subsystem Power Manager, used
|
|
to manage cores, L2 low power modes and to configure the internal
|
|
Adaptive Voltage Scaler parameters, where supported.
|
|
|
|
config QCOM_STATS
|
|
tristate "Qualcomm Technologies, Inc. (QTI) Sleep stats driver"
|
|
depends on (ARCH_QCOM && DEBUG_FS) || COMPILE_TEST
|
|
depends on QCOM_SMEM
|
|
help
|
|
Qualcomm Technologies, Inc. (QTI) Sleep stats driver to read
|
|
the shared memory exported by the remote processor related to
|
|
various SoC level low power modes statistics and export to debugfs
|
|
interface.
|
|
|
|
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/GPR Bus (Asynchronous/Generic Packet Router)"
|
|
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.
|
|
|
|
config QCOM_ICC_BWMON
|
|
tristate "QCOM Interconnect Bandwidth Monitor driver"
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
select PM_OPP
|
|
select REGMAP_MMIO
|
|
help
|
|
Sets up driver monitoring bandwidth on various interconnects and
|
|
based on that voting for interconnect bandwidth, adjusting their
|
|
speed to current demand.
|
|
Current implementation brings support for BWMON v4, used for example
|
|
on SDM845 to measure bandwidth between CPU (gladiator_noc) and Last
|
|
Level Cache (memnoc). Usage of this BWMON allows to remove some of
|
|
the fixed bandwidth votes from cpufreq (CPU nodes) thus achieve high
|
|
memory throughput even with lower CPU frequencies.
|
|
|
|
config QCOM_INLINE_CRYPTO_ENGINE
|
|
tristate
|
|
select QCOM_SCM
|
|
|
|
endmenu
|