# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Hisilicon platforms
#
config PHY_HI6220_USB
	tristate "hi6220 USB PHY support"
	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
	depends on HAS_IOMEM
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Enable this to support the HISILICON HI6220 USB PHY.

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

config PHY_HI3660_USB
	tristate "hi3660 USB PHY support"
	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Enable this to support the HISILICON HI3660 USB PHY.

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

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.

config PHY_HI3670_PCIE
	tristate "hi3670 PCIe PHY support"
	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Enable this to support the HiSilicon hi3670 PCIe PHY.

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

config PHY_HISTB_COMBPHY
	tristate "HiSilicon STB SoCs COMBPHY support"
	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Enable this to support the HISILICON STB SoCs COMBPHY.
	  If unsure, say N.

config PHY_HISI_INNO_USB2
	tristate "HiSilicon INNO USB2 PHY support"
	depends on (ARCH_HISI && ARM64) || COMPILE_TEST
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Support for INNO USB2 PHY on HiSilicon SoCs. This Phy supports
	  USB 1.5Mb/s, USB 12Mb/s, USB 480Mb/s speeds. It supports one
	  USB host port to accept one USB device.

config PHY_HIX5HD2_SATA
	tristate "HIX5HD2 SATA PHY Driver"
	depends on ARCH_HIX5HD2 && OF && HAS_IOMEM
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Support for SATA PHY on Hisilicon hix5hd2 Soc.
