# SPDX-License-Identifier: GPL-2.0

menuconfig PMIC_OPREGION
	bool "PMIC (Power Management Integrated Circuit) operation region support"
	help
	  Select this option to enable support for ACPI operation
	  region of the PMIC chip. The operation region can be used
	  to control power rails and sensor reading/writing on the
	  PMIC chip.

if PMIC_OPREGION

config BYTCRC_PMIC_OPREGION
	bool "ACPI operation region support for Bay Trail Crystal Cove PMIC"
	depends on INTEL_SOC_PMIC
	help
	  This config adds ACPI operation region support for the Bay Trail
	  version of the Crystal Cove PMIC.

config CHTCRC_PMIC_OPREGION
	bool "ACPI operation region support for Cherry Trail Crystal Cove PMIC"
	depends on INTEL_SOC_PMIC
	help
	  This config adds ACPI operation region support for the Cherry Trail
	  version of the Crystal Cove PMIC.

config XPOWER_PMIC_OPREGION
	bool "ACPI operation region support for XPower AXP288 PMIC"
	depends on MFD_AXP20X_I2C && IOSF_MBI=y
	help
	  This config adds ACPI operation region support for XPower AXP288 PMIC.

config BXT_WC_PMIC_OPREGION
	bool "ACPI operation region support for BXT WhiskeyCove PMIC"
	depends on INTEL_SOC_PMIC_BXTWC
	help
	  This config adds ACPI operation region support for BXT WhiskeyCove PMIC.

config CHT_WC_PMIC_OPREGION
	bool "ACPI operation region support for CHT Whiskey Cove PMIC"
	depends on INTEL_SOC_PMIC_CHTWC
	help
	  This config adds ACPI operation region support for CHT Whiskey Cove PMIC.

config CHT_DC_TI_PMIC_OPREGION
	bool "ACPI operation region support for Dollar Cove TI PMIC"
	depends on INTEL_SOC_PMIC_CHTDC_TI
	help
	  This config adds ACPI operation region support for Dollar Cove TI PMIC.

endif	# PMIC_OPREGION

config TPS68470_PMIC_OPREGION
	bool "ACPI operation region support for TPS68470 PMIC"
	depends on INTEL_SKL_INT3472
	help
	  This config adds ACPI operation region support for TI TPS68470 PMIC.
	  TPS68470 device is an advanced power management unit that powers
	  a Compact Camera Module (CCM), generates clocks for image sensors,
	  drives a dual LED for flash and incorporates two LED drivers for
	  general purpose indicators.
	  This driver enables ACPI operation region support control voltage
	  regulators and clocks.

	  This option is a bool as it provides an ACPI operation
	  region, which must be available before any of the devices
	  using this, are probed.
