# SPDX-License-Identifier: GPL-2.0

# to be placed at drivers/phy
config PHY_HI3670_USB
	tristate "hi3670 USB PHY support"
	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Enable this to support the HISILICON HI3670 USB PHY.

	  To compile this driver as a module, choose M here.

# to be placed at drivers/spmi
config SPMI_HISI3670
	tristate "Hisilicon 3670 SPMI Controller"
	select IRQ_DOMAIN_HIERARCHY
	depends on HAS_IOMEM
	depends on SPMI
	help
	  If you say yes to this option, support will be included for the
	  built-in SPMI PMIC Arbiter interface on Hisilicon 3670
	  processors.

# to be placed at drivers/mfd
config MFD_HI6421_SPMI
	tristate "HiSilicon Hi6421v600 SPMI PMU/Codec IC"
	depends on HAS_IOMEM
	depends on OF
	depends on SPMI
	select MFD_CORE
	help
	  Add support for HiSilicon Hi6421v600 SPMI PMIC. Hi6421 includes
	  multi-functions, such as regulators, RTC, codec, Coulomb counter,
	  etc.

	  This driver includes core APIs _only_. You have to select
	  individual components like voltage regulators under corresponding
	  menus in order to enable them.
	  We communicate with the Hi6421v600 via a SPMI bus.

# to be placed at drivers/regulator
config REGULATOR_HI6421V600
	tristate "HiSilicon Hi6421v600 PMIC voltage regulator support"
	depends on MFD_HI6421_SPMI && OF
	depends on REGULATOR
	help
	  This driver provides support for the voltage regulators on
	  HiSilicon Hi6421v600 PMU / Codec IC.
	  This is used on Kirin 3670 boards, like HiKey 970.
