# 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 PCI
	depends on X86 || DRM_XE!=n || COMPILE_TEST
	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!=n || DRM_XE!=n || COMPILE_TEST
	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_CSC
	tristate "Intel MEI CSC embedded device"
	depends on INTEL_MEI_ME
	help
	  Intel PCI driver for the chassis controller embedded in Intel graphics devices.

	  An MEI device here called CSC can be embedded in discrete
	  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!=n || COMPILE_TEST
	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
