# SPDX-License-Identifier: GPL-2.0-only
#
# Siemens X86 Platform Specific Drivers
#

config SIEMENS_SIMATIC_IPC
	tristate "Siemens Simatic IPC Class driver"
	help
	  This Simatic IPC class driver is the central of several drivers. It
	  is mainly used for system identification, after which drivers in other
	  classes will take care of driving specifics of those machines.
	  i.e. LEDs and watchdog.

	  To compile this driver as a module, choose M here: the module
	  will be called simatic-ipc.

config SIEMENS_SIMATIC_IPC_BATT
	tristate "CMOS battery driver for Siemens Simatic IPCs"
	default SIEMENS_SIMATIC_IPC
	depends on HWMON
	depends on SIEMENS_SIMATIC_IPC
	help
	  This option enables support for monitoring the voltage of the CMOS
	  batteries of several Industrial PCs from Siemens.

	  To compile this driver as a module, choose M here: the module
	  will be called simatic-ipc-batt.

config SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE
	tristate "CMOS Battery monitoring for Simatic IPCs based on Apollo Lake GPIO"
	default SIEMENS_SIMATIC_IPC_BATT
	depends on PINCTRL_BROXTON
	depends on SIEMENS_SIMATIC_IPC_BATT
	help
	  This option enables CMOS battery monitoring for Simatic Industrial PCs
	  from Siemens based on Apollo Lake GPIO.

	  To compile this driver as a module, choose M here: the module
	  will be called simatic-ipc-batt-apollolake.

config SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE
	tristate "CMOS Battery monitoring for Simatic IPCs based on Elkhart Lake GPIO"
	default SIEMENS_SIMATIC_IPC_BATT
	depends on PINCTRL_ELKHARTLAKE
	depends on SIEMENS_SIMATIC_IPC_BATT
	help
	  This option enables CMOS battery monitoring for Simatic Industrial PCs
	  from Siemens based on Elkhart Lake GPIO.

	  To compile this driver as a module, choose M here: the module
	  will be called simatic-ipc-batt-elkhartlake.

config SIEMENS_SIMATIC_IPC_BATT_F7188X
	tristate "CMOS Battery monitoring for Simatic IPCs based on Nuvoton GPIO"
	default SIEMENS_SIMATIC_IPC_BATT
	depends on GPIO_F7188X
	depends on PINCTRL_ALDERLAKE
	depends on SIEMENS_SIMATIC_IPC_BATT
	help
	  This option enables CMOS battery monitoring for Simatic Industrial PCs
	  from Siemens based on Nuvoton GPIO.

	  To compile this driver as a module, choose M here: the module
	  will be called simatic-ipc-batt-f7188x.
