# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Mediatek devices
#
config 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 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_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.

config PHY_MTK_HDMI
	tristate "MediaTek HDMI-PHY Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on COMMON_CLK
	depends on OF
	select GENERIC_PHY
	help
	  Support HDMI PHY for Mediatek SoCs.

config PHY_MTK_MIPI_DSI
	tristate "MediaTek MIPI-DSI Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on COMMON_CLK
	depends on OF
	select GENERIC_PHY
	help
	  Support MIPI DSI for Mediatek SoCs.
