# SPDX-License-Identifier: GPL-2.0-only
config DRM_XE
	tristate "Intel Xe Graphics"
	depends on DRM && PCI && MMU && (m || (y && KUNIT=y))
	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
