# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Mediatek devices
#
config PHY_MTK_PCIE
	tristate "MediaTek PCIe-PHY Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF
	select GENERIC_PHY
	help
	  Say 'Y' here to add support for MediaTek PCIe PHY driver.
	  This driver create the basic PHY instance and provides initialize
	  callback for PCIe GEN3 port, it supports software efuse
	  initialization.

config PHY_MTK_XFI_TPHY
	tristate "MediaTek 10GE SerDes XFI T-PHY driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF
	select GENERIC_PHY
	help
	  Say 'Y' here to add support for MediaTek XFI T-PHY driver.
	  The driver provides access to the Ethernet SerDes T-PHY supporting
	  1GE and 2.5GE modes via the LynxI PCS, and 5GE and 10GE modes
	  via the USXGMII PCS found in MediaTek SoCs with 10G Ethernet.

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_CSI_0_5
	tristate "MediaTek MIPI CSI CD-PHY v0.5 Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF
	select GENERIC_PHY
	help
	  Enable this to support the MIPI CSI CD-PHY receiver version 0.5.
	  The driver supports multiple CSI cdphy ports simultaneously.

	  To compile this driver as a module, choose M here: the
	  module will be called phy-mtk-mipi-csi-0-5.

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.

config PHY_MTK_DP
	tristate "MediaTek DP-PHY Driver"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on OF
	select GENERIC_PHY
	help
	  Support DisplayPort PHY for MediaTek SoCs.
