# SPDX-License-Identifier: GPL-2.0-only
#
# On-Chip Controller configuration
#

config SENSORS_OCC_P8_I2C
	tristate "POWER8 OCC through I2C"
	depends on I2C
	select SENSORS_OCC
	help
	 This option enables support for monitoring sensors provided by the
	 On-Chip Controller (OCC) on a POWER8 processor. However, this driver
	 can only run on a baseboard management controller (BMC) connected to
	 the P8, not the POWER processor itself. Communications with the OCC are
	 established through I2C bus.

	 This driver can also be built as a module. If so, the module will be
	 called occ-p8-hwmon.

config SENSORS_OCC_P9_SBE
	tristate "POWER9 OCC through SBE"
	depends on FSI_OCC
	select SENSORS_OCC
	help
	 This option enables support for monitoring sensors provided by the
	 On-Chip Controller (OCC) on a POWER9 processor. However, this driver
	 can only run on a baseboard management controller (BMC) connected to
	 the P9, not the POWER processor itself. Communications with the OCC are
	 established through SBE fifo on an FSI bus.

	 This driver can also be built as a module. If so, the module will be
	 called occ-p9-hwmon.

config SENSORS_OCC
	tristate
