# SPDX-License-Identifier: GPL-2.0-only
config DRM_XE
	tristate "Intel Xe2 Graphics"
	depends on DRM && PCI
	depends on KUNIT || !KUNIT
	depends on INTEL_VSEC || !INTEL_VSEC
	depends on X86_PLATFORM_DEVICES || !(X86 && ACPI)
	depends on PAGE_SIZE_4KB || COMPILE_TEST || BROKEN
	select INTERVAL_TREE
	# we need shmfs for the swappable backing store, and in particular
	# the shmem_readpage() which depends upon tmpfs
	select SHMEM
	select TMPFS
	select DRM_BUDDY
	select DRM_CLIENT_SELECTION
	select DRM_EXEC
	select DRM_KMS_HELPER
	select DRM_KUNIT_TEST_HELPERS if DRM_XE_KUNIT_TEST != n
	select DRM_PANEL
	select DRM_SUBALLOC_HELPER
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_DSC_HELPER
	select DRM_DISPLAY_HDCP_HELPER
	select DRM_DISPLAY_HDMI_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_MIPI_DSI
	select RELAY
	select IRQ_WORK
	# xe depends on ACPI_VIDEO when ACPI is enabled
	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
	select BACKLIGHT_CLASS_DEVICE if ACPI
	select INPUT if ACPI
	select ACPI_VIDEO if X86 && ACPI
	select ACPI_WMI if X86 && ACPI
	select SYNC_FILE
	select CRC32
	select SND_HDA_I915 if SND_HDA_CORE
	select CEC_CORE if CEC_NOTIFIER
	select VMAP_PFN
	select DRM_TTM
	select DRM_TTM_HELPER
	select DRM_EXEC
	select DRM_GPUVM
	select DRM_SCHED
	select MMU_NOTIFIER
	select WANT_DEV_COREDUMP
	select AUXILIARY_BUS
	select HMM_MIRROR
	select REGMAP if I2C
	help
	  Driver for Intel Xe2 series GPUs and later. Experimental support
	  for Xe series is also available.

	  If "M" is selected, the module will be called xe.

config DRM_XE_DISPLAY
	bool "Enable display support"
	depends on DRM_XE && DRM_XE=m && HAS_IOPORT
	select FB_IOMEM_HELPERS if DRM_FBDEV_EMULATION
	select I2C
	select I2C_ALGOBIT
	default y
	help
	  Disable this option only if you want to compile out display support.

config DRM_XE_DP_TUNNEL
	bool "Enable DP tunnel support"
	depends on DRM_XE_DISPLAY
	depends on USB4
	select DRM_DISPLAY_DP_TUNNEL
	default y
	help
	  Choose this option to detect DP tunnels and enable the Bandwidth
	  Allocation mode for such tunnels. This allows using the maximum
	  resolution allowed by the link BW on all displays sharing the
	  link BW, for instance on a Thunderbolt link.

	  If in doubt say "Y".

config DRM_XE_GPUSVM
	bool "Enable CPU to GPU address mirroring"
	depends on DRM_XE
	depends on !UML
	depends on DEVICE_PRIVATE
	default y
	select DRM_GPUSVM
	help
	  Enable this option if you want support for CPU to GPU address
	  mirroring.

	  If in doubt say "Y".

config DRM_XE_PAGEMAP
	bool "Enable device memory pool for SVM"
	depends on DRM_XE_GPUSVM
	select GET_FREE_REGION
	default y
	help
	  Disable this option only if you don't want to expose local device
	  memory for SVM. Will reduce KMD memory footprint when disabled.

	  If in doubt say "Y".

config DRM_XE_FORCE_PROBE
	string "Force probe xe for selected Intel hardware IDs"
	depends on DRM_XE
	help
	  This is the default value for the xe.force_probe module
	  parameter. Using the module parameter overrides this option.

	  Force probe the xe for Intel graphics devices that are
	  recognized but not properly supported by this kernel version. It is
	  recommended to upgrade to a kernel version with proper support as soon
	  as it is available.

	  It can also be used to block the probe of recognized and fully
	  supported devices.

	  Use "" to disable force probe. If in doubt, use this.

	  Use "<pci-id>[,<pci-id>,...]" to force probe the xe for listed
	  devices. For example, "4500" or "4500,4571".

	  Use "*" to force probe the driver for all known devices.

	  Use "!" right before the ID to block the probe of the device. For
	  example, "4500,!4571" forces the probe of 4500 and blocks the probe of
	  4571.

	  Use "!*" to block the probe of the driver for all known devices.

menu "drm/Xe Debugging"
depends on DRM_XE
depends on EXPERT
source "drivers/gpu/drm/xe/Kconfig.debug"
endmenu

menu "drm/xe Profile Guided Optimisation"
	visible if EXPERT
	depends on DRM_XE
	source "drivers/gpu/drm/xe/Kconfig.profile"
endmenu
