# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Amlogic platforms
#
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.
