# SPDX-License-Identifier: GPL-2.0-only
config DRM_XE
	tristate "Intel Xe Graphics"
	depends on DRM && PCI && MMU
	depends on KUNIT || !KUNIT
	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_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_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 X86_PLATFORM_DEVICES if X86 && ACPI
	select ACPI_WMI if X86 && ACPI
	select SYNC_FILE
	select IOSF_MBI
	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
	help
	  Experimental driver for Intel Xe series GPUs

	  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
	select FB_IOMEM_HELPERS
	select I2C
	select I2C_ALGOBIT
	default y
	help
	  Disable this option only if you want to compile out display support.

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
