# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2003-2019, Intel Corporation. All rights reserved.
config INTEL_MEI
	tristate "Intel Management Engine Interface"
	depends on X86 && PCI
	default X86_64 || MATOM
	help
	  The Intel Management Engine (Intel ME) provides Manageability,
	  Security and Media services for system containing Intel chipsets.
	  if selected /dev/mei misc device will be created.

	  For more information see
	  <https://software.intel.com/en-us/manageability/>

if INTEL_MEI

config INTEL_MEI_ME
	tristate "ME Enabled Intel Chipsets"
	default y
	help
	  MEI support for ME Enabled Intel chipsets.

	  Supported Chipsets are:
	  7 Series Chipset Family
	  6 Series Chipset Family
	  5 Series Chipset Family
	  4 Series Chipset Family
	  Mobile 4 Series Chipset Family
	  ICH9
	  82946GZ/GL
	  82G35 Express
	  82Q963/Q965
	  82P965/G965
	  Mobile PM965/GM965
	  Mobile GME965/GLE960
	  82Q35 Express
	  82G33/G31/P35/P31 Express
	  82Q33 Express
	  82X38/X48 Express

config INTEL_MEI_TXE
	tristate "Intel Trusted Execution Environment with ME Interface"
	help
	  MEI Support for Trusted Execution Environment device on Intel SoCs

	  Supported SoCs:
	  Intel Bay Trail

config INTEL_MEI_GSC
	tristate "Intel MEI GSC embedded device"
	depends on INTEL_MEI_ME
	depends on DRM_I915 || DRM_XE
	help
	  Intel auxiliary driver for GSC devices embedded in Intel graphics devices.

	  An MEI device here called GSC can be embedded in an
	  Intel graphics devices, to support a range of chassis
	  tasks such as graphics card firmware update and security
	  tasks.

config INTEL_MEI_VSC_HW
	tristate "Intel visual sensing controller device transport driver"
	depends on ACPI && SPI
	depends on GPIOLIB || COMPILE_TEST
	help
	  Intel SPI transport driver between host and Intel visual sensing
	  controller (IVSC) device.

	  This driver can also be built as a module. If so, the module
	  will be called mei-vsc-hw.

config INTEL_MEI_VSC
	tristate "Intel visual sensing controller device with ME interface"
	depends on INTEL_MEI_VSC_HW
	help
	  Intel MEI over SPI driver for Intel visual sensing controller
	  (IVSC) device embedded in IA platform. It supports camera sharing
	  between IVSC for context sensing and IPU for typical media usage.
	  Select this config should enable transport layer for IVSC device.

	  This driver can also be built as a module. If so, the module
	  will be called mei-vsc.

config INTEL_MEI_LB
	tristate "Intel Late Binding (LB) support on ME Interface"
	depends on INTEL_MEI_ME
	depends on DRM_XE
	help
	  Enable support for Intel Late Binding (LB) via the MEI interface.

	  Late Binding is a method for applying firmware updates at runtime,
	  allowing the Intel Xe driver to load firmware payloads such as
	  fan controller or voltage regulator. These firmware updates are
	  authenticated and versioned, and do not require firmware flashing
	  or system reboot.

source "drivers/misc/mei/hdcp/Kconfig"
source "drivers/misc/mei/pxp/Kconfig"
source "drivers/misc/mei/gsc_proxy/Kconfig"

endif
