# SPDX-License-Identifier: GPL-2.0-only # # QCOM Soc drivers # menu "Qualcomm SoC drivers" config SPS tristate "SPS support" select GENERIC_ALLOCATOR help The SPS (Smart Peripheral Switch) is a DMA engine. It can move data in the following modes: 1. Peripheral-to-Peripheral. 2. Peripheral-to-Memory. 3. Memory-to-Memory. config SPS_SUPPORT_BAMDMA bool "SPS supports BAM DMA" depends on SPS help The BAM-DMA is used for Memory-to-Memory transfers. The main use cases is RPC between processors. The BAM-DMA hardware has 2 registers sets: 1. A BAM HW like all the peripherals. 2. A DMA channel configuration (i.e. channel priority). config SPS_SUPPORT_NDP_BAM bool "SPS supports NDP BAM" depends on SPS help No-Data-Path BAM is used to improve BAM performance. NDP BAMs enables peripherals with fast fabric connectivity to do the actual data transfer themselves, instead of the BAM. 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_CPUSS_SLEEP_STATS tristate "Qualcomm Technologies, Inc. (QTI) CPUSS sleep stats driver" depends on DEBUG_FS help Qualcomm Technologies, Inc. (QTI) CPUSS sleep stats driver to get hardware LPM counts and residency for particular core/cluster low power modes. This driver creates debugfs entry which provide provision to read those counters. config SHOW_SUSPEND_EPOCH tristate "Show epoch values in suspend resume cycles" depends on ARCH_QCOM help Show epoch values when device enter and exit out of suspend and resume. These epoch values are useful to know how long the device is in suspend state. These values can be used to synchronize various subsystem timestamps and have an unique timestamp to correlate between various subsystems. config QCOM_CRM tristate "Qualcomm Technologies, Inc. (QTI) CRM driver" depends on QCOM_RPMH && (ARCH_QCOM || COMPILE_TEST) help Support for communication with the hardened-CRM blocks in Qualcomm Technologies, Inc. (QTI) SoCs. CRM provides interface to vote desired power state of resources local to a subsystem. A set of hardware components aggregate requests for these resources and help apply the aggregated power state on the resource. config QCOM_DCC_V2 tristate "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_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_CPUCP tristate "Qualcomm Technologies, Inc. CPUCP driver" depends on MAILBOX help Qualcomm Technologies, Inc. CPUCP driver for MSM devices. This driver acts as a mailbox controller to do doorbell between APSS and CPUCP subsystem. Say yes here to enable rx and tx channel between both the subsystems. If unsure, say n. config QTI_CPUCP_LOG tristate "Qualcomm Technologies Inc. HW CPUCP Logging" depends on QCOM_CPUCP default n help CPUCP logging driver, this driver has the infra to collect logs generated in CPUCP HW and log the buffers. This driver register with IPC_Logging framework, to have dedicated buffer for cpucp hw device. config QCOM_TLMM_VM_IRQCHIP tristate "Qualcomm Technologies, Inc. TLMM VM irqchip driver" help Qualcomm Technologies, Inc. TLMM VM irqchip driver for MSM devices. The driver acts as a parent interrupt controller for tlmm driver for VMs. Say Y here to compile the driver as a part of kernel or M to compile as a module. config GIC_INTERRUPT_ROUTING tristate "GIC Interrupt Routing driver" depends on ARM_GIC_V3 help GIC interrupt routing driver. The driver manages interrupt routing for shared peripheral interrupts. 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 || 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 && ARM64 || COMPILE_TEST config QCOM_LLCC_PERFMON tristate "Qualcomm Technologies, Inc. LLCC Perfmon driver" depends on QCOM_LLCC help This option enables driver for LLCC Performance monitor block. Using this various events in different LLCC sub ports can be monitored. This is used for performance and debug activity and exports sysfs interface. sysfs interface is used to configure and dump the LLCC performance events. config QCOM_MDT_LOADER tristate select QCOM_SCM config MSM_RPM_SMD_DEBUG tristate "RPM SMD debug driver" depends on DEBUG_FS && MSM_RPM_SMD help This driver provides the debugfs node interface to the user so that user can directly writes the required votes (active, sleep and wake) in to this interface then this driver sends the respective votes to RPM so that RPM apply these votes to corresponding resources. 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_PCIE_PDC tristate "Qualcomm Technologies, Inc. (QTI) PCIe PDC driver" depends on QCOM_CRM && (ARCH_QCOM || COMPILE_TEST) help Support for enabling PCIe PDC interrupts in Qualcomm Technologies, Inc. (QTI) SoCs. PCIe PDC driver provides interfaces to configure PDC interrupt type and enable or disable them so that during system sleep can exit without involving CPU subsystem. config QCOM_PDR_HELPERS tristate "Qualcomm Technologies, Inc. Protection Domain Restart(PDR) driver" select QCOM_QMI_HELPERS help Qualcomm Technologies, Inc. SoCs allow for multiple protection domains (PDs) to run on the same Q6 sub-system. This allows for services like AVS AUDIO to have their own separate address space and crash/recover without disrupting the other PDs running on the same Q6 ADSP. config IPA3 tristate "IPA3 support" depends on NET help This framework supports the Internet Packet Accelerator (IPA3) core. IPA is a programmable protocol processor HW block. It is designed to support generic HW processing of UL/DL IP packets for various use cases independent of radio technology. The driver support client connection and configuration for the IPA core. Kernel and user-space processes can call the IPA driver to configure IPA core. config QCOM_PANIC_ON_PDR_NOTIF_TIMEOUT bool "Trigger kernel panic when PDR notification timeout expires" help This is a debug feature where a kernel panic is triggered when pdr notification to the APPS client is taking too long. This scneario can happen if the one of notifier gets stuck and due to which subsystem did not get ack back from APPS in time and trigger timeout panic. So, trigger a kernel panic in APPS if PDR notifications is taking too long. config PDR_INDICATION_NOTIF_TIMEOUT int "Pdr notifications timeout in ms" default 3000 help The amount of time, in milliseconds, that should elapse between the start and end of notifications, before a warning is emitted. config QCOM_QMI_HELPERS tristate depends on NET source "drivers/soc/qcom/memshare/Kconfig" source "drivers/soc/qcom/hab/Kconfig" source "drivers/soc/qcom/hgsl/Kconfig" 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_QFPROM_SYS tristate "Qualcomm Technologies, Inc. QFPROM_SYS driver " depends on NVMEM_QCOM_QFPROM help Qualcomm Technologies, Inc. QFPROM_SYS driver. The QFPROM SYS driver provides access to the child nodes of QFPROM to user space. The cell values are exported as sysfs entries. Say y here to enable QFPROM SYS support. 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 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_RUN_QUEUE_STATS tristate "Enable collection and exporting of QTI Run Queue stats to userspace" help This option enables the driver to periodically collecting the statistics of kernel run queue information and calculate the load of the system. This information is exported to usespace via sysfs entries and userspace algorithms uses info and decide when to turn on/off the cpu cores. 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 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_MEMORY_DUMP_V2 tristate "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 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_SMP2P_SLEEPSTATE tristate "SMP2P Sleepstate notifier" depends on QCOM_SMP2P help When this option is enabled, notifications are sent to remote procs for the power state changes on the local processor. The notifications are sent through the smp2p framework. This driver can also receive notifications from the remote to prevent suspend on the local processor. config QSEE_IPC_IRQ_BRIDGE tristate "QSEE IPC Interrupt Bridge" 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. This is designed to set up other edges in the system. It will initialize all the transports for all the edges present in the device. Say M if you want to enable this module. config QTI_PMIC_GLINK tristate "Enable support for PMIC GLINK" depends on RPMSG select QCOM_RPROC_COMMON select QCOM_PDR_HELPERS help The PMIC Glink driver provides the interface for clients to communicate over GLink for sending and receiving data to charger firmware that runs on a remote subsystem like DSP which supports charging and gauging. This enables clients to read and write battery charging parameters. config QTI_PMIC_GLINK_CLIENT_DEBUG depends on QTI_PMIC_GLINK && DEBUG_FS bool "Enable debugfs features in PMIC GLINK client drivers" help This option enables the generation of debugfs files in PMIC GLINK client drivers that are strictly meant for internal debugging only. Writing to these debug files changes key physical parameters of a system, which may lead to instability. Therefore, this option should never be enabled on production devices. config QTI_BATTERY_GLINK_DEBUG tristate "Enable support for QTI battery glink debug driver" depends on QTI_PMIC_GLINK help Qualcomm Technologies, Inc. battery glink debug driver helps to obtain debug information for battery charging and gauging over PMIC Glink from charger and gauging firmware running on a remote subsystem (e.g. DSP). config QTI_CHARGER_ULOG_GLINK tristate "Enable support for QTI charger ulog glink driver" depends on QTI_PMIC_GLINK && DEBUG_FS help Qualcomm Technologies, Inc. charger ulog glink driver helps to obtain ulogs from battery charging and gauging stack over PMIC Glink from the charger firmware running on a remote subsystem (e.g. DSP). config QTI_ALTMODE_GLINK tristate "Type-C alternate mode over GLINK" depends on QTI_PMIC_GLINK help The Qualcomm Technologies, Inc. Type-C alternate mode driver provides an interface for Type-C alternate mode clients to receive data such as Pin Assignment Notifications from the Type-C stack running on a remote subsystem (e.g. DSP) via the PMIC GLINK interface. config QTI_PMIC_GLINK_DEBUG tristate "QTI PMIC Glink Debug Device" depends on QTI_PMIC_GLINK help The Qualcomm Technologies, Inc. PMIC Glink debug device driver provides an interface to read and write PMIC registers over PMIC Glink using a remote subsytem (e.g. DSP). This allows for debugging PMIC peripherals that would typically only be accessible to the charger and fuel gauging firmware running on the remote subsystem. The PMIC peripherals' bus access can be either SPMI or I2C. config QCOM_SECURE_BUFFER tristate "Helper functions for secure buffers through TZ" depends on QCOM_SCM help Enable 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 QCOM_MEM_HOOKS tristate "Memory trace hook callbacks" help A helper driver for loading various memory-related vendor hooks, which are used to control the behavior of the core. If unsure, say 'M' here to ensure that the hooks are compiled in. config QCOM_BALANCE_ANON_FILE_RECLAIM bool "During reclaim treat anon and file backed pages equally" depends on SWAP help When performing memory reclaim treat anonymous and file backed pages equally. Swapping anonymous pages out to memory can be efficient enough to justify treating anonymous and file backed pages equally. config HYP_ASSIGN_DEBUG bool "Enable caller tracking for hyp-assign" depends on QCOM_SECURE_BUFFER help Track all pages which are in the hyp-assigned state. Enable additional error checking on hyp-assign based on this state. Detects double-assign and double-unassign scenarios. If unsure, say 'N' here. config QTI_SYS_PM_VX tristate "Qualcomm Technologies, Inc. (QTI) System PM Violators driver" depends on QCOM_AOSS_QMP help This option enables debug subystems that prevent system low power modes. The user sends a QMP message to AOP to record subsystems preventing deeper system low power modes. The data is stored in the MSGRAM by AOP and read and reported in the debugfs by this driver. 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_SOCINFO_DT tristate "Qualcomm Technologies, Inc. DT based socinfo driver" select SOC_BUS help Say yes here to support the Qualcomm Technologies, Inc. device tree based socinfo driver, providing information about the SoC to user space. The driver gets the soc information from device tree. If unsure, say no. 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 || 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 QTI_RPM_STATS_LOG tristate "Qualcomm Technologies, Inc. (QTI) RPM Stats Driver" 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 subsystem enters. The drivers outputs the message via a debugfs node. config MINIDUMP_ALL_TASK_INFO bool "Minidump All task info" depends on QCOM_MINIDUMP help Minidump runqueue dump only collect running task info by default, this enables all task info collection during panic. This can provide more debug info. source "drivers/soc/qcom/dcvs/Kconfig" config QCOM_LOGBUF_VENDOR_HOOKS tristate "QTI Logbuf Vendor Hooks Support" depends on ARCH_QCOM help This enables to dump kernel log_buf through minidump. It can help in debugging issues which are manifestation of failure during device running. config QCOM_LOGBUF_BOOTLOG tristate "QTI Boot Log Support" depends on ARCH_QCOM help This enables to keep copy of initial log_buf of minimum 512KB from bootup. It can help in debugging issues which are manifestation of failure during initial bootup. config QCOM_WDT_CORE tristate "Qualcomm Technologies, Inc. Watchdog Support" depends on ARCH_QCOM help This enables the watchdog framework for Qualcomm Technologies, Inc. devices. It causes a kernel panic if the watchdog times out. It allows for the detection of cpu hangs and deadlocks. It does not run during the bootup process, so it will not catch any early lockups. Enabling this only enables the framework, an individual Qualcomm Technologies, Inc. watchdog module must be loaded along with this for watchdog functionality. config QCOM_SOC_WATCHDOG tristate "Qualcomm Technologies, Inc. Soc Watchdog" depends on QCOM_WDT_CORE help This enables the Qualcomm Technologies, Inc. watchdog module for the Soc. It provides an interface to perform watchdog actions such as setting the bark/bite time and also petting the hardware watchdog. To utilize this the Qualcomm Technologies, Inc. watchdog framework must also be enabled. config QCOM_IRQ_STAT bool "QCOM IRQ stats" default y depends on QCOM_WDT_CORE && ANDROID_VENDOR_OEM_DATA help This give irq stats for top hitter at watchdog bark and kernel panics. This provides additional debug information for irq counts. config QCOM_FORCE_WDOG_BITE_ON_PANIC bool "QCOM force watchdog bite on panic" depends on QCOM_WDT_CORE help This forces a watchdog bite when the device restarts due to a kernel panic. On certain MSM SoCs, this provides additional debugging information. config QCOM_WDOG_BITE_EARLY_PANIC bool "QCOM early panic watchdog bite" depends on QCOM_WDT_CORE && QCOM_FORCE_WDOG_BITE_ON_PANIC help This forces a watchdog bite early in panic sequence. On certain MSM SoCs, this provides us additional debugging information at the context of the crash. If this option is disabled, then bite occurs later in panic, which permits more of the restart sequence to run (e.g. more dmesg to flushed to console). config QCOM_WATCHDOG_BARK_TIME depends on QCOM_WDT_CORE int "Qualcomm Technologies, Inc. Watchdog bark time in ms" default 11000 range 11000 11000 help The amount of time, in milliseconds, that should elapse after a watchdog timer reset before a bark interrupt is sent from the watchdog. config QCOM_WATCHDOG_PET_TIME depends on QCOM_WDT_CORE int "Qualcomm Technologies, Inc. Watchdog pet time in ms" default 9360 range 9360 9360 help The amount of time, in milliseconds, that should elapse before a watchdog pet is initiated to reset the watchdog timer to 0. config QCOM_WATCHDOG_IPI_PING depends on QCOM_WDT_CORE bool "Qualcomm Technologies, Inc. Watchdog ipi ping" default y help This boolean flag gives the watchdog driver the ability to send a keep-alive ping to other cpu's if it is set to 1. Otherwise, when it is set to 0 no keep alive pings will be sent. config QCOM_WATCHDOG_WAKEUP_ENABLE depends on QCOM_WDT_CORE bool "Qualcomm Technologies, Inc. Watchdog wakeup enable" default y help This boolean flag allows the non secure watchdog counter to freeze and unfreeze automatically across the system suspend and resume path. config QCOM_WATCHDOG_USERSPACE_PET depends on QCOM_WDT_CORE bool "Qualcomm Technologies, Inc. Watchdog user pet enable" default n help This boolean flag allows enabling the userspace-watchdog feature. This feature requires userspace to pet the watchdog every in an interval that matches the time set in the pet-time config. The feature is supported through device sysfs files. 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_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 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 QTI_PMIC_PON_LOG tristate "PMIC PON log parser driver" help The PMIC PON log driver parses PMIC power-on, power-off, and fault information out of a binary log stored in the SDAM memory found on some Qualcomm Technologies, Inc. PMIC devices. This driver is useful when debugging unexpected power-off scenarios. config MSM_BOOT_STATS tristate "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. choice prompt "Perform Action on spinlock bug" depends on DEBUG_SPINLOCK && QCOM_CPU_VENDOR_HOOKS default DEBUG_SPINLOCK_BITE_ON_BUG config DEBUG_SPINLOCK_BITE_ON_BUG bool "Cause a Watchdog Bite on Spinlock bug" depends on QCOM_WDT_CORE help On a spinlock bug, cause a watchdog bite so that we can get the precise state of the system captured at the time of spin dump. This is mutually exclusive with the below DEBUG_SPINLOCK_PANIC_ON_BUG config. config DEBUG_SPINLOCK_PANIC_ON_BUG bool "Cause a Kernel Panic on Spinlock bug" help On a spinlock bug, cause a kernel panic so that we can get the complete information about the system at the time of spin dump in the dmesg. This is mutually exclusive with the above DEBUG_SPINLOCK_BITE_ON_BUG. endchoice config USB_BAM tristate "USB BAM Driver" help Enabling this option adds USB BAM Driver. USB BAM driver was added to supports Smart Peripheral Subsystem Peripheral-to-Peripheral transfers between the USB and other peripheral. config QCOM_CPU_VENDOR_HOOKS tristate "QTI Vendor Hooks Support" depends on ARCH_QCOM && ANDROID_VENDOR_HOOKS help CPU vendor hooks driver registers with andriod vendor hooks provided by core kernel to extend kernel functionality. Currently these features are not supported by upstream kernel and not having scope to upstream. If unsure, say N. config QCOM_MEM_OFFLINE tristate "Dynamic Memory Region Offline driver" depends on MEMORY_HOTPLUG 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_HUNG_TASK_ENH tristate "QTI Hung Task Enhancement" depends on ARCH_QCOM help Add options at sysfs to enhance khungtask, allow user to select and monitor tasks in black/white list mode. Also processes in iowait for specific situation will be monitored to avoid devices long time no response. config QTI_CRYPTO_COMMON tristate "Enable common crypto functionality used for FBE" depends on SCSI_UFS_CRYPTO_QTI || MMC_CRYPTO_QTI help Say 'Y' to enable the common crypto implementation to be used by different storage layers such as UFS and EMMC for file based hardware encryption. This library implements API to program and evict keys using Trustzone or Hardware Key Manager. config QTI_CRYPTO_TZ tristate "Enable Trustzone to be used for FBE" depends on QTI_CRYPTO_COMMON help Say 'Y' to enable routing crypto requests to Trustzone while performing hardware based file encryption. This means keys are programmed and managed through SCM calls to TZ where ICE driver will configure keys. config QTI_CRYPTO_VIRTUALIZATION tristate "Enable hypervysor to be used for FBE" depends on FS_ENCRYPTION_INLINE_CRYPT depends on MSM_HAB help Say 'Y or M' to enable routing of crypto requests to different operating system in virtualized environment. Driver uses a hardware abstraction(hab) layer where the APIs exposed by that operationg systems are used to send requests to perform the hardware crypto operation. config QTI_HW_KEY_MANAGER tristate "Enable QTI Hardware Key Manager for storage encryption" default n help Say 'Y' to enable the hardware key manager driver used to operate and access key manager hardware block. This is used to interface with HWKM hardware to perform key operations from the kernel which will be used for storage encryption. config QTI_HW_KEY_MANAGER_V1 tristate "Enable QTI Hardware Key Manager v1 for storage encryption" default n help Say 'Y' to enable the hardware key manager v1 driver used to operate and access key manager hardware block. This is used to interface with HWKM hardware to perform key operations from the kernel which will be used for storage encryption. config QCOM_WCD_USBSS_I2C tristate "WCD USBSS chip with I2C" select REGMAP depends on I2C help Support for the WCD939X USBSS 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_MINIDUMP tristate "QCOM Minidump Support" depends on QCOM_SMEM || GUNYAH_DRIVERS 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 QCOM_MINIDUMP_SMEM bool "QCOM Minidump SMEM Support" depends on QCOM_MINIDUMP && QCOM_SMEM default y help This enables minidump smem transport layer. If minidump and smem are enabled, this config option shall be enabled by default. config QCOM_MINIDUMP_RM bool "QCOM Minidump RM Support" depends on QCOM_MINIDUMP && GUNYAH_DRIVERS help This enables minidump rm on gunyah platform transport layer. If minidump and gunyah are enabled, say yes to enable minidump feature. If unsure, say no. config QCOM_MINIDUMP_VIRTIO tristate "QCOM Minidump based on VIRTIO Support" depends on QCOM_MINIDUMP && VIRTIO help This enables VirtIO minidump transport layer. If minidump and VirtIO are enabled, say yes to enable minidump feature. If unsure, say no. config QCOM_VA_MINIDUMP tristate "QCOM VA Minidump Support" depends on QCOM_MINIDUMP help This enables minidump feature for registering dynamic data structures. It supports VA based registration with minidump, which is made into an ELF. The region for ELF is registered with legacy minidump. config QCOM_DYN_MINIDUMP_STACK bool "QTI Dynamic Minidump Stack Registration Support" depends on QCOM_MINIDUMP help This enables minidump dynamic current stack registration feature. It allows current task stack to be available in minidump, for cases where CPU is unable to register it from IPI_CPU_STOP. The stack data can be used to unwind stack frames. config QCOM_MINIDUMP_FTRACE bool "QCOM Minidump Support" depends on QCOM_MINIDUMP help This enables ftrace buffer registration in minidump table. On oops, ftrace content will be copied to that buffer. This way ftrace buffer content becomes a part of minidump dump collection. config QCOM_MINIDUMP_PANIC_DUMP bool "QCOM Minidump Panic dumps Support" depends on QCOM_MINIDUMP help This enables collection of debug information like runqueue statistics etc. on panic in minidump. It dumps current, CFS, and RT runqueue tasks running on each cpu. This help in knowing the tasks running, pending, hogging on cpu during panic. config QCOM_MINIDUMP_PANIC_CPU_CONTEXT bool "QCOM Minidump Panic dumps CPU Context" depends on ARM64 && QCOM_MINIDUMP_PANIC_DUMP help This enables cpu context collection in minidump table, on panic. config QCOM_MINIDUMP_PANIC_MEMORY_INFO bool "QCOM Minidump Panic dumps Memory Info" depends on QCOM_MINIDUMP_PANIC_DUMP help This enables memory info collection in minidump table, on panic. config QCOM_MINIDUMP_PSTORE bool "QCOM Minidump Pstore dumps Support" depends on ARM64 && QCOM_MINIDUMP help This enables pstore registration in minidump table. Here, pstore framework dump logs like pmsg, dmesg, console ftrace etc. in the given carve-out memory (non-volatile memory) and during warm reboot these dump will be copied outside the system on panic. config QCOM_SYSMON_SUBSYSTEM_STATS tristate "Qualcomm Technologies SysMon DSP subsystem stats" depends on QCOM_SMEM help sysMon subsystem stats driver exposes API to query DSP subsystem's load, power, DDR and Sleep statistics stored in SMEM region for each DSP subsystem which is updated periodically by the respective subsystems. config QCOM_CDSP_RM tristate "CDSP request manager" depends on RPMSG help This driver serves CDSP requests for CPU L3 clock and CPU QoS thus improving CDSP performance. Using this driver, CDSP can set appropriate CPU L3 clock for improving IO-Coherent throughput and opt for QoS mode to improve RPC latency. The driver also registers cooling devices for CDSP subsystem and implements Cx ipeak limit management. config QCOM_FSA4480_I2C tristate "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 CDSPRM_VTCM_DYNAMIC_DEBUG bool "Enable for VTCM parition test enablement" help The VTCM dynamic debug flag is used to enable the vtcm partition test feature from the debugfs node from cdsprm driver.When the test is enabled, the vtcm partition details are sent to the CDSP via rpmsg channel. 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_ADSP_SLEEPMON tristate "ADSP sleep monitor" depends on QCOM_SMEM help This driver tracks ADSP sleep statistics while interfacing with different userspace clients making use of ADSP. Based on the activity notifications from these userspace clients, the driver detects and logs sleep violations from ADSP subsystem. The driver uses master stats from ADSP subsystem stored in SMEM. config GH_CPUSYS_VM_MEM_ACCESS tristate "Qualcomm Technologies, Inc. CPUSYS VM shared mem access driver" depends on GH_RM_DRV help Qualcomm Technologies, Inc. CPUSYS shared mem access driver for MSM devices. The drivers provides shared memory access to CPUSYS VM. Say Y here to compile the driver as a part of kernel or M to compile as a module. config GH_TLMM_VM_MEM_ACCESS tristate "Qualcomm Technologies, Inc. TLMM VM mem access driver" depends on GH_RM_DRV help Qualcomm Technologies, Inc. TLMM VM mem access driver for MSM devices. The drivers provides initial gpio memory access to VM. Say Y here to compile the driver as a part of kernel or M to compile as a module. config QCOM_RAMDUMP tristate "Qualcomm Technologies, Inc. Ramdump driver" default n help This option enables the QTI ramdump driver. The ramdump driver provides APIs to collect ramdumps which can be extracted from userspace. Say 'Y' here to enable this driver. It's safe to say 'N' here if you don't plan on collecting ramdumps. 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_DEBUG_SYMBOL tristate "Enable Debug Symbol Support" depends on ANDROID_DEBUG_KINFO help This enables Debug Symbol Support. This driver is based on Google Debug Kinfo driver, according to the provided info, this driver allows other modules to get symbol addresses by traversing kallsyms table for debug usage. config QCOM_VM_DMESG_DUMPER tristate "Dump a VM's kmsg to a shared reserved memory upon panic" depends on GH_RM_DRV depends on QCOM_SECURE_BUFFER || ARCH_QTI_VM help Upon encountering a kernel panic in a Virtual machine, enable the dumping the kmsg log buffer to a reserved memory section through the use of a Gunyah shared-memory doorbell object. This driver is to be enabled on both Primary VM and the other VM whose kmsg is desired. config QCOM_VM_ALIVE_LOG_DUMPER bool "Dump a VM's alive kmsg to a shared reserved memory Support" depends on QCOM_VM_DMESG_DUMPER default y help This enables to dump a VM's alive kmsg log buffer to the reserved memory section, triggered by Primary VM. This needs to be enabled on both Primary VM and the other VM whose kmsg is desired. config QCOM_VM_ALIVE_LOG_ENCRYPT bool "Encrypt alive log Support" depends on ARCH_QTI_VM && QCOM_VM_ALIVE_LOG_DUMPER && CRYPTO_GCM default y help This enables to encrypt alive log and use AES GCM mode for symmetric key wrapping. This needs to be enabled on both Primary VM and the other VM whose kmsg is desired. config MSM_SYSTEM_HEALTH_MONITOR tristate "System Health Monitor" help System Health Monitor (SHM) passively monitors the health of the peripherals connected to the application processor. Software components in the application processor that experience communication failure can request the SHM to perform a system-wide health check. If any failures are detected during the health-check, then a subsystem restart will be triggered for the failed subsystem. source "drivers/soc/qcom/mem_buf/Kconfig" source "drivers/soc/qcom/tmecom/Kconfig" config MSM_PERFORMANCE tristate "msm performance driver to support userspace fmin/fmax request" 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 QTI_PLH_SCMI_CLIENT tristate "Qualcomm Technologies Inc. SCMI client driver for PLH" depends on MSM_PERFORMANCE && QTI_SCMI_PLH_PROTOCOL default n help SCMI client driver registers itself with SCMI framework for PLH vendor protocol, and also registers with the plh interface driver msm_performance. This driver deliver the PLH vendor protocol handle to interface driver, and interface driver will use this handle to communicate with CPUCP PLH. config QCOM_PANEL_EVENT_NOTIFIER tristate "panel event notifier" depends on DRM help Enabling this option adds panel event notifier driver. This driver is responsible for notifying clients interested in display panel events such as panel on , panel off, fps change etc. Clients can use these notifications for power saving or align its operations with display panel power state. config RENAME_DEVICES tristate "Rename block and network device names" depends on VIRTIO_BLK default n help This option is to rename the block and network devices names which is needed during android verified boot process and it also maps to physical partition names on gvm side which help identify the block and network devices. config QCOM_S2D_VENDOR_HOOK tristate "Vendor hook module to route flow of the core Kernel" help This options enable vendor hook callbacks for bootloader based hibernation. Callbacks implemented here are called from the core kernel and help to do bootloader hibernation specific job. Enable this if bootloader hibernation is enabled. config QCOM_SECURE_HIBERNATION tristate "Add security support to hibernation" depends on HIBERNATION help Secure the hibernation snapshot by encrypting the snapshot at kernel before saving to disk. This uses GCM-AES crypto algorithm to encrypt the pages at the kernel. If not sure, say N. config SEC_CDSP_NO_CRASH_FOR_ENG bool "crash trigger for USER/USERDEBUG only" default n help This option protects crash for the ENG Binary. endmenu