| # SPDX-License-Identifier: GPL-2.0-only |
| config QCOM_KGSL |
| tristate "Qualcomm Technologies, Inc. 3D Graphics driver" |
| depends on ARCH_QCOM |
| depends on 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 && QCOM_KGSL |
| 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" |
| depends on QCOM_KGSL |
| help |
| A boolean flag used to create a KGSL-specific tracing instance |
| under <tracefs>/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" |
| depends on QCOM_KGSL |
| |
| config QCOM_KGSL_CORESIGHT |
| bool "Enable coresight support for the Adreno GPU" |
| depends on QCOM_KGSL && CORESIGHT |
| 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" |
| depends on QCOM_KGSL |
| 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 |
| depends on QCOM_KGSL |
| 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" |
| depends on QCOM_KGSL |
| 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" |
| depends on QCOM_KGSL |
| 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 QCOM_KGSL && 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 QCOM_KGSL |
| 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" |
| depends on QCOM_KGSL |
| 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 QCOM_KGSL && HIBERNATION |
| help |
| Say 'Y' to enable hibernation support in kgsl. If enabled, kgsl |
| will register necessary power manager callbacks to support |
| hibernation. |