# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Mediatek devices
#
config DEVICE_MODULES_PHY_MTK_TPHY
	tristate "MediaTek T-PHY Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF && OF_ADDRESS
	depends on HAS_IOMEM
	select GENERIC_PHY
	help
	  Say 'Y' here to add support for MediaTek T-PHY driver,
	  it supports multiple usb2.0, usb3.0 ports, PCIe and
	  SATA, and meanwhile supports two version T-PHY which have
	  different banks layout, the T-PHY with shared banks between
	  multi-ports is first version, otherwise is second version,
	  so you can easily distinguish them by banks layout.

config DEVICE_MODULES_PHY_MTK_UFS
    tristate "MediaTek UFS M-PHY driver"
    depends on ARCH_MEDIATEK || COMPILE_TEST
    depends on OF
    select GENERIC_PHY
    help
      Support for UFS M-PHY on MediaTek chipsets.
      Enable this to provide vendor-specific probing,
      initialization, power on and power off flow of
      specified M-PHYs.

config PHY_MTK_FPGAPHY
	tristate "MediaTek FPGA-PHY Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF
	select GENERIC_PHY
	help
	  Enable this to support A60931/A60810 FPGA PHY.

config DEVICE_MODULES_PHY_MTK_XSPHY
	tristate "MediaTek XS-PHY Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF && OF_ADDRESS
	depends on HAS_IOMEM
	select GENERIC_PHY
	help
	  Enable this to support the SuperSpeedPlus XS-PHY transceiver for
	  USB3.1 GEN2 controllers on MediaTek chips. The driver supports
	  multiple USB2.0, USB3.1 GEN2 ports.
