# SPDX-License-Identifier: GPL-2.0-only config QCOM_KGSL tristate "Qualcomm Technologies, Inc. 3D Graphics driver" depends on ARCH_QCOM depends on NVMEM_QCOM_QFPROM || QCOM_QFPROM select QCOM_MDT_LOADER select INTERVAL_TREE select TRACE_GPU_MEM help 3D graphics driver for the Adreno family of GPUs from QTI. Required to use hardware accelerated OpenGL, compute and Vulkan on QTI targets. This includes power management, memory management, and scheduling for the Adreno GPUs. config DEVFREQ_GOV_QCOM_ADRENO_TZ tristate "Qualcomm Technologies, Inc. GPU frequency governor" depends on PM_DEVFREQ help GPU frequency governor for the Adreno GPU. Sets the frequency using an "on demand" algorithm in conjunction with other components on Adreno platforms. This is not useful for non-Adreno devices. config DEVFREQ_GOV_QCOM_GPUBW_MON tristate "Qualcomm Technologies, Inc. GPU bandwidth governor" depends on DEVFREQ_GOV_QCOM_ADRENO_TZ help This governor works together with the Adreno GPU governor to select bus frequency votes using an "on-demand" algorithm. This governor will not be useful for non-Adreno based targets. config QCOM_KGSL_FENCE_TRACE bool "Enable built-in tracing for adreno fence timeouts" help A boolean flag used to create a KGSL-specific tracing instance under /tracing/instances/kgsl-fence that can be used for debugging timeouts for fences between KGSL-contexts and sync-point blocks. If unsure, say 'N' here. config QCOM_ADRENO_DEFAULT_GOVERNOR string "devfreq governor for the adreno core" default "msm-adreno-tz" config QCOM_KGSL_CORESIGHT bool "Enable coresight support for the Adreno GPU" depends on CORESIGHT default y help When enabled, the Adreno GPU is available as a source for Coresight data. On a6xx targets there are two sources available for the GX and CX domains respectively. Debug kernels should say 'Y' here. config QCOM_KGSL_IOCOHERENCY_DEFAULT bool "Enable I/O coherency on cached GPU memory by default" default y if ARCH_LAHAINA help Say 'Y' here to enable I/O cache coherency by default on targets that support hardware I/O coherency. If enabled all cached GPU memory will use I/O coherency regardless of the user flags. If not enabled the user can still selectively enable I/O coherency with a flag. config QCOM_KGSL_IDLE_TIMEOUT int default 80 help GPU idle timeout for Adreno GPU. This value decides after how long the GPU will go into slumber. A higher value will mean that the GPU is powered ON for a longer duration which will have power costs. config QCOM_KGSL_CONTEXT_DEBUG bool "Log kgsl context information for all processes" help When enabled, total number of KGSL contexts, number of attached and detached contexts are dumped into kernel log for all the processes. This gives insight about the number of contexts held by each process. config QCOM_KGSL_SORT_POOL bool "Sort pool page list based on physical address" default y help When enabled, the pool page list is sorted based on physical addresses. This can be turned on for targets where better DDR efficiency is attained on accesses for adjacent memory. config QCOM_KGSL_QDSS_STM bool "Enable support for QDSS STM for Adreno GPU" depends on CORESIGHT help When enabled, the Adreno GPU QDSS STM support is enabled. GPU QDSS STM memory will be mapped to GPU and QDSS clock needed to access this memory is voted. Debug kernels should say 'Y' here. config QCOM_KGSL_USE_SHMEM bool "Enable using shmem for memory allocations" depends on SHMEM help Say 'Y' to enable using shmem for memory allocations. If enabled, there will be no support for the memory pools and higher order pages. But using shmem will help in making kgsl pages available for reclaiming. config QCOM_KGSL_PROCESS_RECLAIM bool "Make driver pages available for reclaim" select QCOM_KGSL_USE_SHMEM help Say 'Y' to make driver pages available for reclaiming. If enabled, shmem will be used for allocation. kgsl would know the process foreground/background activity through the sysfs entry exposed per process. Based on this kgsl can unpin given number of pages from background processes and make them available to the shrinker. config QCOM_KGSL_HIBERNATION bool "Enable Hibernation support in KGSL" depends on HIBERNATION help Say 'Y' to enable hibernation support in kgsl. If enabled, kgsl will register necessary power manager callbacks to support hibernation.