# SPDX-License-Identifier: GPL-2.0-only

config DEVICE_MODULES_REGULATOR_MT6315
	tristate "MediaTek MT6315 PMIC"
	depends on SPMI
	select REGMAP_SPMI
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6315 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

config REGULATOR_MT6359P
	tristate "MediaTek MT6359P PMIC"
	depends on DEVICE_MODULES_MFD_MT6397
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6359P PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

config DEVICE_MODULES_REGULATOR_MT6360
	tristate "MT6360 SubPMIC Regulator"
	depends on DEVICE_MODULES_MFD_MT6360
	help
	  Say Y here to enable MT6360 regulator support.
	  This is support MT6360 PMIC/LDO part include
	  2-channel buck with Thermal Shutdown and Overload Protection
	  6-channel High PSRR and Low Dropout LDO.

config REGULATOR_MT6362
	tristate "MT6362 SPMI Regulator driver"
	depends on MFD_MT6362
	help
	  Say yes here to have support for the MT6362 Regulator
	  Include six BUCKs and seven LDOs.

	  The driver can also be build as a module.
	  If so, the module will be called mt6362_regulator

config REGULATOR_MT6363
	tristate "MT6363 SPMI Regulator driver"
	depends on MFD_MTK_SPMI_PMIC
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6363 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

	  The driver can also be build as a module.
	  If so, the module will be called mt6363_regulator

config REGULATOR_MT6368
	tristate "MT6368 SPMI Regulator driver"
	depends on MFD_MTK_SPMI_PMIC
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6368 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

	  The driver can also be build as a module.
	  If so, the module will be called mt6368_regulator

config REGULATOR_MT6369
	tristate "MT6369 SPMI Regulator driver"
	depends on MFD_MTK_SPMI_PMIC
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6369 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

	  The driver can also be build as a module.
	  If so, the module will be called mt6369_regulator

config REGULATOR_MT6373
	tristate "MT6373 SPMI Regulator driver"
	depends on MFD_MTK_SPMI_PMIC
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6373 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

	  The driver can also be build as a module.
	  If so, the module will be called mt6373_regulator

config REGULATOR_MT6395
	tristate "MediaTek MT6395 PMIC"
	depends on MTK_PMIC_WRAP
	help
	  Say y here to select this option to enable the power regulator of
	  MediaTek MT6380 PMIC.
	  This driver supports the control of different power rails of device
	  through regulator interface.

config DEVICE_MODULES_REGULATOR_MTK_DVFSRC
	tristate "MediaTek DVFSRC regulator driver"
	depends on MTK_DVFSRC
	help
	  Say y here to control regulator by DVFSRC (dynamic voltage
	  and frequency scaling resource collector).
	  This driver supports to control regulators via the DVFSRC
	  of Mediatek. It allows for voting on regulator state
	  between multiple users.

config REGULATOR_MTK_VMM_ISP71
	tristate "MediaTek ISPDVFS regulator driver"
	depends on MTK_CCU_RPROC
	help
	  Say y here to control regulator by ISPDVFS (dynamic voltage
	  and frequency scaling resource collector).
	  This driver supports to control regulators via the ISPDVFS
	  of Mediatek. It allows for voting on regulator state
	  between multiple users.

config REGULATOR_RT5738
	tristate "Richtek RT5738 Regulators"
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports RT5738 voltage regulator.
	  The chip supports 3A output current.
	  The operation mode and output voltage is configurable
	  via I2C bus.

config REGULATOR_RT5133
	tristate "Richtek RT5133 regulator driver"
	depends on I2C && GPIOLIB
	select REGMAP
	select CRC8
	select OF_GPIO
	select REGULATOR_FIXED_VOLTAGE
	select MTK_SUBPMIC_MISC
	help
	  RT5133 is an integrated chip. It includes 8 LDOs and 3 GPIOs that
	  can be used to drive output high/low purpose. The dependency of the
	  GPIO block is internally LDO1 voltage. If LDO1 voltage output disabled,
	  GPIO cannot be used to drive output high. It need to pay more
	  attention on the usage.

config DEVICE_MODULES_REGULATOR_RT6160
	tristate "Richtek RT6160 BuckBoost voltage regulator"
	depends on I2C
	select REGMAP_I2C
	help
	  This adds support for voltage regulator in Richtek RT6160.
	  This device automatically change voltage output mode from
	  Buck or Boost. The mode transition depend on the input source voltage.
	  The wide output range is from 2025mV to 5200mV and can be used on most
	  common application scenario.
