# 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 MSM_SUBSYSTEM_RESTART
	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_ADRENO_DEFAULT_GOVERNOR
	string "devfreq governor for the adreno core"
	default "msm-adreno-tz" if DEVFREQ_GOV_QCOM_ADRENO_TZ
	default "simple_ondemand"
	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
	default 100000 if !QGKI
	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_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.
