# # QCOM Soc drivers # config MSM_INRUSH_CURRENT_MITIGATION bool "Inrush-current mitigation Driver" help This driver helps in mitigating in-rush current on MSM chipsets which has voltage droop issues due to sudden huge load on a rail. This driver introduces an intermediate load to mitigate the in-rush current. config MSM_PFE_WA depends on HW_PERF_EVENTS bool "Enable a H/W PFE WA" help Sometimes the PFTLB entries get stuck in the invalid state and new prefetches get dropped. For a workaround, count L1 prefeches dropped due to PFTLB miss and reset H/W PFE when a overflow happens. If unsure, say N. config MSM_SMEM depends on ARCH_QCOM depends on REMOTE_SPINLOCK_MSM bool "MSM Shared Memory (SMEM)" help Support for the shared memory interface between the various processors in the System on a Chip (SoC) which allows basic inter-processor communication. config QPNP_HAPTIC tristate "Haptic support for QPNP PMIC" depends on ARCH_QCOM help This option enables device driver support for the Haptic on the Qualcomm Technologies' QPNP PMICs. It uses the android timed-output framework. config MSM_SMD depends on MSM_SMEM bool "MSM Shared Memory Driver (SMD)" help Support for the shared memory interprocessor communication protocol which provides virual point to point serial channels between processes on the apps processor and processes on other processors in the SoC. Also includes support for the Shared Memory State Machine (SMSM) protocol which provides a mechanism to publish single bit state information to one or more processors in the SoC. config MSM_SMD_DEBUG depends on MSM_SMD bool "MSM SMD debug support" help Support for debugging SMD and SMSM communication between apps and other processors in the SoC. Debug support primarily consists of logs consisting of information such as what interrupts were processed, what channels caused interrupt activity, and when internal state change events occur. config MSM_GLINK bool "Generic Link (G-Link)" help G-Link is a generic link transport that replaces SMD. It is used within a System-on-Chip (SoC) for communication between both internal processors and external peripherals. The actual physical transport is handled by transport plug-ins that can be individually enabled and configured separately. config MSM_GLINK_LOOPBACK_SERVER bool "Generic Link (G-Link) Loopback Server" help G-Link Loopback Server that enable loopback test framework to test and validate the G-Link protocol stack. It support both local and remote clients to configure the loopback server and echo back the data received from the clients. config MSM_GLINK_SMD_XPRT depends on MSM_SMD depends on MSM_GLINK bool "Generic Link (G-Link) SMD Transport" help G-Link SMD Transport is a G-Link Transport plug-in. It allows G-Link communication to remote entities through a SMD physical transport channel. The remote side is assumed to be pure SMD. The nature of SMD limits this G-Link transport to only connecting with entities internal to the System-on-Chip. config MSM_GLINK_SMEM_NATIVE_XPRT depends on MSM_SMEM depends on MSM_GLINK bool "Generic Link (G-Link) SMEM Native Transport" help G-Link SMEM Native Transport is a G-Link Transport plug-in. It allows G-Link communication to remote entities through a shared memory physical transport. The nature of shared memory limits this G-Link transport to only connecting with entities internal to the System-on-Chip. config MSM_SPCOM depends on MSM_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 signle 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 MSM_SMEM_LOGGING depends on MSM_SMEM bool "MSM Shared Memory Logger" help Enable the shared memory logging to log the events between the various processors in the system. This option exposes the shared memory logger at /dev/smem_log and a debugfs node named smem_log. config MSM_SMP2P bool "SMSM Point-to-Point (SMP2P)" depends on MSM_SMEM help Provide point-to-point remote signaling support. SMP2P enables transferring 32-bit values between the local and a remote system using shared memory and interrupts. A client can open multiple 32-bit values by specifying a unique string and remote processor ID. config MSM_SMP2P_TEST bool "SMSM Point-to-Point Test" depends on MSM_SMP2P help Enables loopback and unit testing support for SMP2P. Loopback support is used by other processors to do unit testing. Unit tests are used to verify the local and remote implementations. config MSM_QMI_INTERFACE depends on IPC_ROUTER depends on QMI_ENCDEC bool "MSM QMI Interface Library" help Library to send and receive QMI messages over IPC Router. This library provides interface functions to the kernel drivers to perform QMI message marshaling and transport them over IPC Router. config MSM_RPM_SMD bool "RPM driver using SMD protocol" help RPM is the dedicated hardware engine for managing shared SoC resources. This config adds driver support for using SMD as a transport layer communication with RPM hardware. It also selects the MSM_MPM config that programs the MPM module to monitor interrupts during sleep modes. 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_BUSPM_DEV tristate "MSM Bus Performance Monitor Kernel Module" depends on QCOM_BUS_SCALING help This kernel module is used to mmap() hardware registers for the performance monitors, counters, etc. The module can also be used to allocate physical memory which is used by bus performance hardware to dump performance data config QCOM_BUS_TOPOLOGY_ADHOC bool "ad-hoc bus scaling topology" help This option enables a driver that can handle adhoc bus topologies. Adhoc bus topology driver allows one to many connections and maintains directionality of connections by explicitly listing device connections thus avoiding illegal routes. 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_PM bool "Qualcomm Power Management" depends on ARCH_QCOM && !ARM64 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_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 MSM_HVC bool "MSM Hypervisor Call Support" help This enables the Hypervisor Call module. It provides apis to call into the hypervisor thereby allowing access to services exposed by the hypervisor. It is primarily intended to be used for Silicon Partner/Manufacturer function identifier subrange but supports other service call subranges as well. config MSM_IPC_ROUTER_SMD_XPRT depends on MSM_SMD depends on IPC_ROUTER bool "MSM SMD XPRT Layer" help SMD Transport Layer that enables IPC Router communication within a System-on-Chip(SoC). When the SMD channels become available, this layer registers a transport with IPC Router and enable message exchange. config MSM_IPC_ROUTER_HSIC_XPRT depends on USB_QCOM_IPC_BRIDGE depends on IPC_ROUTER bool "MSM HSIC XPRT Layer" help HSIC Transport Layer that enables off-chip communication of IPC Router. When the HSIC endpoint becomes available, this layer registers the transport with IPC Router and enable message exchange. config MSM_IPC_ROUTER_MHI_XPRT depends on MSM_MHI depends on IPC_ROUTER bool "MSM MHI XPRT Layer" help MHI Transport Layer that enables off-chip communication of IPC Router. When the MHI endpoint becomes available, this layer registers the transport with IPC Router and enable message exchange. config MSM_IPC_ROUTER_GLINK_XPRT depends on MSM_GLINK depends on IPC_ROUTER bool "MSM GLINK XPRT Layer" help GLINK Transport Layer that enables IPC Router communication within a System-on-Chip(SoC). When the GLINK channels become available, this layer registers a transport with IPC Router and enable message exchange. config MSM_SYSTEM_HEALTH_MONITOR bool "System Health Monitor" depends on MSM_QMI_INTERFACE && MSM_SUBSYSTEM_RESTART 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. config MSM_GLINK_PKT bool "Enable device interface for GLINK packet channels" depends on MSM_GLINK help G-link packet driver provides the interface for the userspace clients to communicate over G-Link via deivce nodes. This enable the usersapce clients to read and write to some glink packets channel. config QCOM_SMD tristate "Qualcomm Shared Memory Driver (SMD)" depends on QCOM_SMEM help Say y here to enable support for the Qualcomm Shared Memory Driver providing communication channels to remote processors in Qualcomm platforms. config QCOM_SMD_RPM tristate "Qualcomm Resource Power Manager (RPM) over SMD" depends on QCOM_SMD && 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 MSM_SPM bool "Driver support for SPM and AVS wrapper hardware" help Enables the support SAW and AVS wrapper hardware on MSMs SPM hardware is used to manage the processor power during sleep. The driver allows configuring SPM to allow different low power modes for both core and L2. config QCOM_SCM bool "Secure Channel Manager (SCM) support" default n menuconfig QCOM_SCM_XPU bool "Qualcomm XPU configuration driver" depends on QCOM_SCM if QCOM_SCM_XPU choice prompt "XPU Violation Behavior" default QCOM_XPU_ERR_FATAL config QCOM_XPU_ERR_FATAL bool "Configure XPU violations as fatal errors" help Select if XPU violations have to be configured as fatal errors. config QCOM_XPU_ERR_NONFATAL bool "Configure XPU violations as non-fatal errors" help Select if XPU violations have to be configured as non-fatal errors. endchoice endif config QCOM_SCM_ERRATA depends on DEBUG_FS depends on QCOM_SCM bool "Support for enabling/disabling errata workarounds via debugfs" help Exposes a debugfs interface intended for advanced system debugging where it may be desirable to enable or disable certain hardware errata workarounds at runtime. If unsure, say N. if ARCH_QCOM config QCOM_WATCHDOG_V2 bool "Qualcomm Watchdog Support" 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_MEMORY_DUMP bool "Qualcomm Memory Dump 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_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 ICNSS tristate "Platform driver for Q6 integrated connectivity" ---help--- This module adds support for Q6 integrated WLAN connectivity subsystem. This module is responsible for communicating WLAN on/off control messages to FW over QMI channel. It is also responsible for handling WLAN PD restart notifications. config MSM_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_TZ_SMMU bool "Helper functions for SMMU configuration through TZ" depends on ARCH_MSMTHULIUM 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_GLADIATOR_ERP tristate "GLADIATOR coherency interconnect error reporting driver" help Support dumping debug information for the GLADIATOR cache interconnect in the error interrupt handler. Meant to be used for debug scenarios only. If unsure, say N. 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 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. config MSM_RUN_QUEUE_STATS bool "Enable collection and exporting of MSM 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 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 MSM_QDSP6_APRV2 bool "Audio QDSP6 APRv2 support" depends on MSM_SMD help Enable APRv2 IPC protocol support between application processor and QDSP6. APR is used by audio driver to configure QDSP6's ASM, ADM and AFE. config MSM_QDSP6_APRV3 bool "Audio QDSP6 APRv3 support" depends on MSM_SMD help Enable APRv3 IPC protocol support between application processor and QDSP6. APR is used by audio driver to configure QDSP6v2's ASM, ADM and AFE. config MSM_ADSP_LOADER tristate "ADSP loader support" select SND_SOC_MSM_APRV2_INTF depends on MSM_QDSP6_APRV2 || MSM_QDSP6_APRV3 help Enable ADSP image loader. The ADSP loader brings ADSP out of reset for the platforms that use APRv2. Say M if you want to enable this module. endif # ARCH_QCOM 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_SYSMON_COMM bool "MSM System Monitor communication support" depends on MSM_SMD && MSM_SUBSYSTEM_RESTART help This option adds support for MSM System Monitor library, which provides an API that may be used for notifying subsystems within the SoC about other subsystems' power-up/down state-changes. 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_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_PIL_MSS_QDSP6V5 tristate "MSS QDSP6v5 (Hexagon) Boot Support" depends on MSM_PIL && MSM_SUBSYSTEM_RESTART help Support for booting and shutting down QDSP6v5 (Hexagon) processors in modem subsystems. If you would like to make or receive phone calls then say Y here. If unsure, say N. config TRACER_PKT bool "Tracer Packet" help Tracer Packet helps in profiling the performance of inter- processor communication protocols. The profiling information can be logged into the tracer packet itself. 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 MSM_MPM_OF bool "Modem Power Manager" depends on OF help MPM is a dedicated hardware resource responsible for entering and waking up from a system wide low power mode. The MPM driver tracks the wakeup interrupts and configures the MPM to monitor the wakeup interrupts when going to a system wide sleep mode. This config option enables the MPM driver that supports initialization from a device tree 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_AVTIMER tristate "Avtimer Driver" depends on MSM_QDSP6_APRV2 || MSM_QDSP6_APRV3 help This driver gets the Q6 out of power collapsed state and exposes ioctl control to read avtimer tick. config MSM_KERNEL_PROTECT bool "Protect kernel text by removing write permissions in stage-2" depends on !FUNCTION_TRACER help On hypervisor-enabled targets, this option will make a call into the hypervisor to request that the kernel text be remapped without write permissions. This protects against malicious devices rewriting kernel code. Note that this will BREAK any runtime patching of the kernel text (i.e. anything that uses apply_alternatives, aarch64_insn_patch_text_nosync, etc. including the various CPU errata workarounds in arch/arm64/kernel/cpu_errata.c). config MSM_KERNEL_PROTECT_TEST bool "Bootup test of kernel protection (INTENTIONAL CRASH)" depends on MSM_KERNEL_PROTECT help Attempts to write to the kernel text after making the kernel text read-only. This test is FATAL whether it passes or fails! Success is signaled by a stage-2 fault. config MSM_CORE_CTL_HELPER tristate "Core control helper functions for dynamically hotplug CPUs" help Provide helper functions for core control driver. Core control driver dynamically hotplugs CPUs from kernel based on current system load and state. It also supports limiting min and max online CPUs from userspace. config MSM_REMOTEQDSS bool "Allow debug tools to enable events on other processors" depends on MSM_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. source "drivers/soc/qcom/memshare/Kconfig"