# SPDX-License-Identifier: MIT
menu "Display Engine Configuration"
	depends on DRM && DRM_AMDGPU

config DRM_AMD_DC
	bool "AMD DC - Enable new display engine"
	default y
	depends on BROKEN || !CC_IS_CLANG || ARM64 || RISCV || SPARC64 || X86_64
	select SND_HDA_COMPONENT if SND_HDA_CORE
	# !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752
	select DRM_AMD_DC_FP if (X86 || LOONGARCH || (PPC64 && ALTIVEC) || (ARM64 && KERNEL_MODE_NEON && !CC_IS_CLANG))
	help
	  Choose this option if you want to use the new display engine
	  support for AMDGPU. This adds required support for Vega and
	  Raven ASICs.

	  calculate_bandwidth() is presently broken on all !(X86_64 || SPARC64 || ARM64)
	  architectures built with Clang (all released versions), whereby the stack
	  frame gets blown up to well over 5k.  This would cause an immediate kernel
	  panic on most architectures.  We'll revert this when the following bug report
	  has been resolved: https://github.com/llvm/llvm-project/issues/41896.

config DRM_AMD_DC_FP
	def_bool n
	help
	  Floating point support, required for DCN-based SoCs

config DRM_AMD_DC_SI
	bool "AMD DC support for Southern Islands ASICs"
	depends on DRM_AMDGPU_SI
	depends on DRM_AMD_DC
	help
	  Choose this option to enable new AMD DC support for SI asics
	  by default. This includes Tahiti, Pitcairn, Cape Verde, Oland.
	  Hainan is not supported by AMD DC and it has no physical DCE6.

config DEBUG_KERNEL_DC
	bool "Enable kgdb break in DC"
	depends on DRM_AMD_DC
	depends on KGDB
	help
	  Choose this option if you want to hit kdgb_break in assert.

config DRM_AMD_SECURE_DISPLAY
	bool "Enable secure display support"
	depends on DEBUG_FS
	depends on DRM_AMD_DC_FP
	help
	  Choose this option if you want to support secure display

	  This option enables the calculation of crc of specific region via
	  debugfs. Cooperate with specific DMCU FW.

endmenu
