config DRM_I915
	tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics"
	depends on DRM
	depends on X86 && PCI
	select INTEL_GTT
	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_KMS_HELPER
	select DRM_PANEL
	select DRM_MIPI_DSI
	select RELAY
	# i915 depends on ACPI_VIDEO when ACPI is enabled
	# but for select to work, need to select ACPI_VIDEO's dependencies, ick
	select BACKLIGHT_LCD_SUPPORT if ACPI
	select BACKLIGHT_CLASS_DEVICE if ACPI
	select INPUT if ACPI
	select ACPI_VIDEO if ACPI
	select ACPI_BUTTON if ACPI
	select SYNC_FILE
	select IOSF_MBI
	select CRC32
	help
	  Choose this option if you have a system that has "Intel Graphics
	  Media Accelerator" or "HD Graphics" integrated graphics,
	  including 830M, 845G, 852GM, 855GM, 865G, 915G, 945G, 965G,
	  G35, G41, G43, G45 chipsets and Celeron, Pentium, Core i3,
	  Core i5, Core i7 as well as Atom CPUs with integrated graphics.

	  This driver is used by the Intel driver in X.org 6.8 and
	  XFree86 4.4 and above. It replaces the older i830 module that
	  supported a subset of the hardware in older X.org releases.

	  Note that the older i810/i815 chipsets require the use of the
	  i810 driver instead, and the Atom z5xx series has an entirely
	  different implementation.

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

config DRM_I915_ALPHA_SUPPORT
	bool "Enable alpha quality support for new Intel hardware by default"
	depends on DRM_I915
	default n
	help
	  Choose this option if you have new Intel hardware and want to enable
	  the alpha quality i915 driver support for the hardware in this kernel
	  version. You can also enable the support at runtime using the module
	  parameter i915.alpha_support=1; this option changes the default for
	  that module parameter.

	  It is recommended to upgrade to a kernel version with proper support
	  as soon as it is available. Generally fixes for platforms with alpha
	  support are not backported to older kernels.

	  If in doubt, say "N".

config DRM_I915_CAPTURE_ERROR
	bool "Enable capturing GPU state following a hang"
	depends on DRM_I915
	default y
	help
	  This option enables capturing the GPU state when a hang is detected.
	  This information is vital for triaging hangs and assists in debugging.
	  Please report any hang to
            https://bugs.freedesktop.org/enter_bug.cgi?product=DRI
	  for triaging.

	  If in doubt, say "Y".

config DRM_I915_COMPRESS_ERROR
	bool "Compress GPU error state"
	depends on DRM_I915_CAPTURE_ERROR
	select ZLIB_DEFLATE
	default y
	help
	  This option selects ZLIB_DEFLATE if it isn't already
	  selected and causes any error state captured upon a GPU hang
	  to be compressed using zlib.

	  If in doubt, say "Y".

config DRM_I915_USERPTR
	bool "Always enable userptr support"
	depends on DRM_I915
	select MMU_NOTIFIER
	default y
	help
	  This option selects CONFIG_MMU_NOTIFIER if it isn't already
	  selected to enabled full userptr support.

	  If in doubt, say "Y".

config DRM_I915_GVT
        bool "Enable Intel GVT-g graphics virtualization host support"
        depends on DRM_I915
        depends on 64BIT
        default n
        help
	  Choose this option if you want to enable Intel GVT-g graphics
	  virtualization technology host support with integrated graphics.
	  With GVT-g, it's possible to have one integrated graphics
	  device shared by multiple VMs under different hypervisors.

	  Note that at least one hypervisor like Xen or KVM is required for
	  this driver to work, and it only supports newer device from
	  Broadwell+. For further information and setup guide, you can
	  visit: http://01.org/igvt-g.

	  Now it's just a stub to support the modifications of i915 for
	  GVT device model. It requires at least one MPT modules for Xen/KVM
	  and other components of GVT device model to work. Use it under
	  you own risk.

	  If in doubt, say "N".

config DRM_I915_GVT_KVMGT
	tristate "Enable KVM/VFIO support for Intel GVT-g"
	depends on DRM_I915_GVT
	depends on KVM
	depends on VFIO_MDEV && VFIO_MDEV_DEVICE
	default n
	help
	  Choose this option if you want to enable KVMGT support for
	  Intel GVT-g.

menu "drm/i915 Debugging"
depends on DRM_I915
depends on EXPERT
source drivers/gpu/drm/i915/Kconfig.debug
endmenu
