# 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 GENERIC_CPU || MCORE2 || MATOM || X86_GENERIC
	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
	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.

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

endif
