# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Amlogic platforms
#
config PHY_MESON8_HDMI_TX
	tristate "Meson8, Meson8b and Meson8m2 HDMI TX PHY driver"
	depends on (ARCH_MESON && ARM) || COMPILE_TEST
	depends on OF
	select MFD_SYSCON
	help
	  Enable this to support the HDMI TX PHYs found in Meson8,
	  Meson8b and Meson8m2 SoCs.
	  If unsure, say N.

config PHY_MESON8B_USB2
	tristate "Meson8, Meson8b, Meson8m2 and GXBB USB2 PHY driver"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	depends on USB_SUPPORT
	select USB_COMMON
	select GENERIC_PHY
	select REGMAP_MMIO
	help
	  Enable this to support the Meson USB2 PHYs found in Meson8,
	  Meson8b and GXBB SoCs.
	  If unsure, say N.

config PHY_MESON_GXL_USB2
	tristate "Meson GXL and GXM USB2 PHY drivers"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	depends on USB_SUPPORT
	select GENERIC_PHY
	select REGMAP_MMIO
	help
	  Enable this to support the Meson USB2 PHYs found in Meson
	  GXL and GXM SoCs.
	  If unsure, say N.

config PHY_MESON_G12A_USB2
	tristate "Meson G12A USB2 PHY driver"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	select GENERIC_PHY
	select REGMAP_MMIO
	help
	  Enable this to support the Meson USB2 PHYs found in Meson
	  G12A SoCs.
	  If unsure, say N.

config PHY_MESON_G12A_USB3_PCIE
	tristate "Meson G12A USB3+PCIE Combo PHY driver"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	select GENERIC_PHY
	select REGMAP_MMIO
	help
	  Enable this to support the Meson USB3 + PCIE Combo PHY found
	  in Meson G12A SoCs.
	  If unsure, say N.

config PHY_MESON_AXG_PCIE
	tristate "Meson AXG PCIE PHY driver"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	select GENERIC_PHY
	select REGMAP_MMIO
	help
	  Enable this to support the Meson MIPI + PCIE PHY found
	  in Meson AXG SoCs.
	  If unsure, say N.

config PHY_MESON_AXG_MIPI_PCIE_ANALOG
	tristate "Meson AXG MIPI + PCIE analog PHY driver"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	select GENERIC_PHY
	select REGMAP_MMIO
	select GENERIC_PHY_MIPI_DPHY
	help
	  Enable this to support the Meson MIPI + PCIE analog PHY
	  found in Meson AXG SoCs.
	  If unsure, say N.

config PHY_MESON_AXG_MIPI_DPHY
	tristate "Meson AXG MIPI DPHY driver"
	default ARCH_MESON
	depends on OF && (ARCH_MESON || COMPILE_TEST)
	select GENERIC_PHY
	select REGMAP_MMIO
	select GENERIC_PHY_MIPI_DPHY
	help
	  Enable this to support the Meson MIPI DPHY found in Meson AXG
	  SoCs.
	  If unsure, say N.
