# SPDX-License-Identifier: GPL-2.0
# Intel pin control drivers
menu "Intel pinctrl drivers"
	depends on (ACPI && X86) || COMPILE_TEST

config PINCTRL_BAYTRAIL
	bool "Intel Baytrail GPIO pin control"
	select PINCTRL_INTEL
	help
	  driver for memory mapped GPIO functionality on Intel Baytrail
	  platforms. Supports 3 banks with 102, 28 and 44 gpios.
	  Most pins are usually muxed to some other functionality by firmware,
	  so only a small amount is available for gpio use.

	  Requires ACPI device enumeration code to set up a platform device.

config PINCTRL_CHERRYVIEW
	tristate "Intel Cherryview/Braswell pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  Cherryview/Braswell pinctrl driver provides an interface that
	  allows configuring of SoC pins and using them as GPIOs.

config PINCTRL_LYNXPOINT
	tristate "Intel Lynxpoint pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  Lynxpoint is the PCH of Intel Haswell. This pinctrl driver
	  provides an interface that allows configuring of PCH pins and
	  using them as GPIOs.

config PINCTRL_INTEL
	tristate
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	select GPIOLIB
	select GPIOLIB_IRQCHIP

config PINCTRL_INTEL_PLATFORM
	tristate "Intel pinctrl and GPIO platform driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel PCH pins and using them as GPIOs. Currently the following
	  Intel SoCs / platforms require this to be functional:
	  - Lunar Lake
	  - Panther Lake

config PINCTRL_ALDERLAKE
	tristate "Intel Alder Lake pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  PCH pins of the following platforms and using them as GPIOs:
	  - Alder Lake HX, N, and S
	  - Raptor Lake HX, E, and S
	  - Twin Lake

config PINCTRL_BROXTON
	tristate "Intel Broxton pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  Broxton pinctrl driver provides an interface that allows
	  configuring of SoC pins and using them as GPIOs.

config PINCTRL_CANNONLAKE
	tristate "Intel Cannon Lake PCH pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Cannon Lake PCH pins and using them as GPIOs.

config PINCTRL_CEDARFORK
	tristate "Intel Cedar Fork pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Cedar Fork PCH pins and using them as GPIOs.

config PINCTRL_DENVERTON
	tristate "Intel Denverton pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Denverton SoC pins and using them as GPIOs.

config PINCTRL_ELKHARTLAKE
	tristate "Intel Elkhart Lake SoC pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Elkhart Lake SoC pins and using them as GPIOs.

config PINCTRL_EMMITSBURG
	tristate "Intel Emmitsburg pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Emmitsburg pins and using them as GPIOs.

config PINCTRL_GEMINILAKE
	tristate "Intel Gemini Lake SoC pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Gemini Lake SoC pins and using them as GPIOs.

config PINCTRL_ICELAKE
	tristate "Intel Ice Lake PCH pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Ice Lake PCH pins and using them as GPIOs.

config PINCTRL_JASPERLAKE
	tristate "Intel Jasper Lake PCH pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Jasper Lake PCH pins and using them as GPIOs.

config PINCTRL_LAKEFIELD
	tristate "Intel Lakefield SoC pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Lakefield SoC pins and using them as GPIOs.

config PINCTRL_LEWISBURG
	tristate "Intel Lewisburg pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  of Intel Lewisburg pins and using them as GPIOs.

config PINCTRL_METEORLAKE
	tristate "Intel Meteor Lake pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  SoC pins of the following platforms and using them as GPIOs:
	  - Arrow Lake (all variants)
	  - Meteor Lake (all variants)

config PINCTRL_METEORPOINT
	tristate "Intel Meteor Point pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  PCH pins of the following platforms and using them as GPIOs:
	  - Arrow Lake HX and S

config PINCTRL_SUNRISEPOINT
	tristate "Intel Sunrisepoint pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  Sunrisepoint is the PCH of Intel Skylake. This pinctrl driver
	  provides an interface that allows configuring of PCH pins and
	  using them as GPIOs.

config PINCTRL_TIGERLAKE
	tristate "Intel Tiger Lake pinctrl and GPIO driver"
	select PINCTRL_INTEL
	help
	  This pinctrl driver provides an interface that allows configuring
	  PCH pins of the following platforms and using them as GPIOs:
	  - Alder Lake H, P, PS, and U
	  - Raptor Lake H, P, PS, PX, and U
	  - Rocket Lake S
	  - Tiger Lake (all variants)

source "drivers/pinctrl/intel/Kconfig.tng"
endmenu
