# SPDX-License-Identifier: GPL-2.0-only
#
# PHY drivers for Socionext platforms.
#

config PHY_UNIPHIER_USB2
	tristate "UniPhier USB2 PHY driver"
	depends on ARCH_UNIPHIER || COMPILE_TEST
	depends on OF && HAS_IOMEM
	select GENERIC_PHY
	select MFD_SYSCON
	help
	  Enable this to support USB PHY implemented on USB2 controller
	  on UniPhier SoCs. This driver provides interface to interact
	  with USB 2.0 PHY that is part of the UniPhier SoC.
	  In case of Pro4, it is necessary to specify this USB2 PHY instead
	  of USB3 HS-PHY.

config PHY_UNIPHIER_USB3
	tristate "UniPhier USB3 PHY driver"
	depends on ARCH_UNIPHIER || COMPILE_TEST
	depends on OF && HAS_IOMEM
	select GENERIC_PHY
	help
	  Enable this to support USB PHY implemented in USB3 controller
	  on UniPhier SoCs. This controller supports USB3.0 and lower speed.

config PHY_UNIPHIER_PCIE
	tristate "Uniphier PHY driver for PCIe controller"
	depends on ARCH_UNIPHIER || COMPILE_TEST
	depends on OF && HAS_IOMEM
	default PCIE_UNIPHIER
	select GENERIC_PHY
	help
	  Enable this to support PHY implemented in PCIe controller
	  on UniPhier SoCs. This driver supports LD20 and PXs3 SoCs.

config PHY_UNIPHIER_AHCI
	tristate "UniPhier AHCI PHY driver"
	depends on ARCH_UNIPHIER || COMPILE_TEST
	depends on OF && HAS_IOMEM
	default SATA_AHCI_PLATFORM
	select GENERIC_PHY
	help
	  Enable this to support PHY implemented in AHCI controller
	  on UniPhier SoCs. This driver supports PXs2 and PXs3 SoCs.
