# SPDX-License-Identifier: GPL-2.0-only
#
# Phy drivers for Cadence PHYs
#

config PHY_CADENCE_TORRENT
	tristate "Cadence Torrent PHY driver"
	depends on OF
	depends on HAS_IOMEM
	select GENERIC_PHY
	help
	  Support for Cadence Torrent PHY.

config PHY_CADENCE_DPHY
	tristate "Cadence D-PHY Support"
	depends on HAS_IOMEM && OF
	select GENERIC_PHY
	select GENERIC_PHY_MIPI_DPHY
	help
	  Choose this option if you have a Cadence D-PHY in your
	  system. If M is selected, the module will be called
	  cdns-dphy.

config PHY_CADENCE_SIERRA
	tristate "Cadence Sierra PHY Driver"
	depends on OF && HAS_IOMEM && RESET_CONTROLLER
	select GENERIC_PHY
	help
	  Enable this to support the Cadence Sierra PHY driver

config PHY_CADENCE_SALVO
	tristate "Cadence Salvo PHY Driver"
	depends on OF && HAS_IOMEM
	select GENERIC_PHY
	help
	  Enable this to support the Cadence SALVO PHY driver,
	  this PHY is a legacy PHY, and only are used for USB3
	  and USB2.
