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

config SENSORS_OCC_P8_I2C
	tristate "POWER8 OCC through I2C"
	depends on I2C
	depends on ARM || ARM64 || COMPILE_TEST
	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
	depends on ARM || ARM64 || COMPILE_TEST
	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
