
menu "PHY Subsystem"

config PHY
	bool "PHY Core"
	depends on DM
	help
	  PHY support.

	  This framework is designed to provide a generic interface for PHY
	  devices. PHY devices are dedicated hardware that handle the physical
	  layer of the protocols in the OSI model.
	  PHYs are commonly used for high speed interfaces such as Serial-ATA
	  or PCI express.
	  The API provides functions to initialize/deinitialize the
	  PHY, power on/off the PHY, and reset the PHY. It's meant to be as
	  compatible as possible with the equivalent framework found in the
	  linux kernel.

config SPL_PHY
	bool "PHY Core in SPL"
	depends on DM
	help
	  PHY support in SPL.

	  This framework is designed to provide a generic interface for PHY
	  devices. PHY devices are dedicated hardware that handle the physical
	  layer of the protocols (https://en.wikipedia.org/wiki/OSI_model).
	  PHYs are commonly used for high speed interfaces such as Serial-ATA
	  or PCI express.
	  The API provides functions to initialize/deinitialize the
	  PHY, power on/off the PHY, and reset the PHY. It's meant to be as
	  compatible as possible with the equivalent framework found in the
	  linux kernel.

config PHY_SANDBOX
	bool "Sandbox PHY support"
	depends on SANDBOX
	depends on PHY
	help
	  This select a dummy sandbox PHY driver. It used only to implement
	  the unit tests for the phy framework

config NOP_PHY
	bool "NOP PHY driver"
	depends on PHY
	help
	  Support for a no-op PHY driver (stubbed PHY driver).

	  This is useful when a driver uses the PHY framework but no real PHY
	  hardware exists.

config SPL_NOP_PHY
	bool "NOP PHY driver in SPL"
	depends on SPL_PHY
	help
	  Support for a no-op PHY driver (stubbed PHY driver) in the SPL.

	  This is useful when a driver uses the PHY framework but no real PHY
	  hardware exists.

config BCM6318_USBH_PHY
	bool "BCM6318 USBH PHY support"
	depends on PHY && ARCH_BMIPS
	select POWER_DOMAIN
	help
	  Support for the Broadcom MIPS BCM6318 USBH PHY.

config BCM6348_USBH_PHY
	bool "BCM6348 USBH PHY support"
	depends on PHY && ARCH_BMIPS
	help
	  Support for the Broadcom MIPS BCM6348 USBH PHY.

config BCM6358_USBH_PHY
	bool "BCM6358 USBH PHY support"
	depends on PHY && ARCH_BMIPS
	help
	  Support for the Broadcom MIPS BCM6358 USBH PHY.

config BCM6368_USBH_PHY
	bool "BCM6368 USBH PHY support"
	depends on PHY && ARCH_BMIPS
	help
	  Support for the Broadcom MIPS BCM6368 USBH PHY.

config PIPE3_PHY
	bool "Support omap's PIPE3 PHY"
	depends on PHY && ARCH_OMAP2PLUS
	help
	  Support for the omap PIPE3 phy for sata

	  This PHY is found on omap devices supporting SATA such as dra7, am57x
	  and omap5

config SPL_PIPE3_PHY
	bool "Support omap's PIPE3 PHY in SPL"
	depends on SPL_PHY && ARCH_OMAP2PLUS
	help
	  Support for the omap PIPE3 phy for sata in SPL

	  This PHY is found on omap devices supporting SATA such as dra7, am57x
	  and omap5

config STI_USB_PHY
	bool "STMicroelectronics USB2 picoPHY driver for STiH407 family"
	depends on PHY && ARCH_STI
	help
	  This is the generic phy driver for the picoPHY ports
	  used by USB2 and USB3 Host controllers available on
	  STiH407 SoC families.

config PHY_RCAR_GEN2
	tristate "Renesas R-Car Gen2 USB PHY"
	depends on PHY && RCAR_GEN2
	help
	  Support for the Renesas R-Car Gen2 USB PHY. This driver operates the
	  PHY connected to USBHS module, PCI EHCI module and USB3.0 module and
	  allows configuring the module multiplexing.

config PHY_RCAR_GEN3
	tristate "Renesas R-Car Gen3 USB PHY"
	depends on PHY && RCAR_GEN3 && CLK && DM_REGULATOR
	default y if RCAR_GEN3
	help
	  Support for the Renesas R-Car Gen3 USB PHY. This driver operates the
	  PHY connected to EHCI USB module and controls USB OTG operation.

config PHY_STM32_USBPHYC
	tristate "STMicroelectronics STM32 SoC USB HS PHY driver"
	depends on PHY && ARCH_STM32MP
	help
	  Enable this to support the High-Speed USB transceiver that is part of
	  STMicroelectronics STM32 SoCs.

	  This driver controls the entire USB PHY block: the USB PHY controller
	  (USBPHYC) and the two 8-bit wide UTMI+ interface. First interface is
	  used by an HS USB Host controller, and the second one is shared
	  between an HS USB OTG controller and an HS USB Host controller,
	  selected by an USB switch.

config MESON_GXL_USB_PHY
	bool "Amlogic Meson GXL USB PHYs"
	depends on PHY && ARCH_MESON && MESON_GXL
	imply REGMAP
	help
	  This is the generic phy driver for the Amlogic Meson GXL
	  USB2 and USB3 PHYS.

config MSM8916_USB_PHY
	bool "Qualcomm MSM8916 USB PHY support"
	depends on PHY
	help
          Support the USB PHY in msm8916

	  This PHY is found on qualcomm dragonboard410c development board.

endmenu
