#
# Phy drivers for Allwinner platforms
#
config PHY_SUN4I_USB
	bool "Allwinner Sun4I USB PHY driver"
	depends on ARCH_SUNXI
	depends on !MACH_SUN9I
	default n if MACH_SUN8I_V3S
	default y
	select DM_REGULATOR
	select PHY
	help
	  Enable this to support the transceiver that is part of Allwinner
	  sunxi SoCs.

	  This driver controls the entire USB PHY block, both the USB OTG
	  parts, as well as the regular USB HCI host PHYs.

config INITIAL_USB_SCAN_DELAY
	int "Delay initial USB scan by x ms to allow builtin devices to init"
	depends on PHY_SUN4I_USB
	default 0
	help
	  Some boards have on board usb devices which need longer than
	  the USB spec's 1 second to connect from board powerup. Set
	  this option to a nonzero value to add an extra delay before
	  the first USB bus scan.

config PHY_SUN50I_USB3
	bool "Allwinner sun50i USB3 PHY driver"
	depends on ARCH_SUNXI
	select PHY
	help
	  Enable this to support the USB3 transceiver that is part of
	  Allwinner sun50i SoCs.
