blob: b18bdde9708ccbd02b8517c7e99a6e352d5dec62 [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0
#
# QCOM Soc drivers
#
menu "Qualcomm SoC drivers"
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_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 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 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_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_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_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_IPCC
tristate "Qualcomm Technologies, Inc. IPCC driver"
depends on MAILBOX
help
Qualcomm Technologies, Inc. IPCC driver for MSM devices. The drivers
acts as an interrupt controller for the clients interested in
talking to the IPCC (inbound-communication). On the other hand, the
driver also provides a mailbox channel for outbound-communications.
Say Y here to compile the driver as a part of kernel or M to compile
as a module.
config QCOM_LLCC
tristate "Qualcomm Technologies, Inc. LLCC driver"
depends on ARCH_QCOM
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_KONA_LLCC
tristate "Qualcomm Technologies, Inc. KONA LLCC driver"
depends on QCOM_LLCC
help
Say yes here to enable the LLCC driver for KONA. This provides
data required to configure LLCC so that clients can start using the
LLCC slices.
config QCOM_LITO_LLCC
tristate "Qualcomm Technologies, Inc. LITO LLCC driver"
depends on QCOM_LLCC
help
Say yes here to enable the LLCC driver for LITO. This provides
data required to configure LLCC so that clients can start using the
LLCC slices.
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 QCOM_MDT_LOADER
tristate
select QCOM_SCM
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 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 "QTI QMI Helpers"
depends on 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_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 && OF || 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_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 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_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 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 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 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 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 MSM_TZ_SMMU
depends on ARCH_MSM8953 || ARCH_QCS405
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 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_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 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 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 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 && POWER_RESET_QCOM
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_APR
tristate "Qualcomm APR Bus (Asynchronous Packet Router)"
depends on ARCH_QCOM
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_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 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 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.
config QCOM_WATCHDOG_V2
bool "QTI 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_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 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 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 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 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
This enables the GLINK Probe module. 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 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 MSM_CDSP_LOADER
tristate "CDSP loader support"
help
This enables the CDSP loader driver that loads the CDSP
firmware images and brings the compute DSP out of reset
for platforms that have one.
Say M if you want to enable this module.
config QTI_SYSTEM_PM
bool
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_PM
depends on PM
select MSM_IDLE_STATS if DEBUG_FS
select CPU_IDLE_MULTIPLE_DRIVERS
select QTI_SYSTEM_PM if QCOM_RPMH
bool "Qualcomm Technologies, Inc. (QTI) Power Management Drivers"
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.
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
config QTI_RPM_STATS_LOG
bool "Qualcomm Technologies RPM Stats Driver"
depends on QCOM_RPMH
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 sysfs node.
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 QTEE_SHM_BRIDGE
bool "QTI TEE shared memory bridge"
help
QTEE shared memory bridge driver provides kernel APIs to share
memory between trustzone & other VMs through shared memory bridge.
It allows kernel clients to create bridge, delete bridge, and do
memory sub-allocation and free from the default kernel bridge
created by bridge driver.
source "drivers/soc/qcom/memshare/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. The user space can request the cpu freq change by
writing cpu#:freq values
config QMP_DEBUGFS_CLIENT
bool "Debugfs Client to communicate with AOP using QMP protocol"
depends on DEBUG_FS
help
This options enables a driver which allows clients to send messages
to Alway On processor using QMP transport.
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.