# SPDX-License-Identifier: GPL-2.0
#
# For MTK USB3.0 IP

config USB_MTU3
	tristate "MediaTek USB3 Dual Role controller"
	depends on USB || USB_GADGET
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on EXTCON || !EXTCON
	select USB_XHCI_MTK if USB_SUPPORT && USB_XHCI_HCD
	help
	  Say Y or M here if your system runs on MediaTek SoCs with
	  Dual Role SuperSpeed USB controller. You can select usb
	  mode as peripheral role or host role, or both.

	  If you don't know what this is, please say N.

	  Choose M here to compile this driver as a module, and it
	  will be called mtu3.ko.


if USB_MTU3
choice
	prompt "MTU3 Mode Selection"
	default USB_MTU3_DUAL_ROLE if (USB && USB_GADGET)
	default USB_MTU3_HOST if (USB && !USB_GADGET)
	default USB_MTU3_GADGET if (!USB && USB_GADGET)

config USB_MTU3_HOST
	bool "Host only mode"
	depends on USB=y || USB=USB_MTU3
	help
	  Select this when you want to use MTU3 in host mode only,
	  thereby the gadget feature will be regressed.

config USB_MTU3_GADGET
	bool "Gadget only mode"
	depends on USB_GADGET=y || USB_GADGET=USB_MTU3
	help
	  Select this when you want to use MTU3 in gadget mode only,
	  thereby the host feature will be regressed.

config USB_MTU3_DUAL_ROLE
	bool "Dual Role mode"
	depends on ((USB=y || USB=USB_MTU3) && (USB_GADGET=y || USB_GADGET=USB_MTU3))
	depends on (EXTCON=y || EXTCON=USB_MTU3)
	select USB_ROLE_SWITCH
	help
	  This is the default mode of working of MTU3 controller where
	  both host and gadget features are enabled.

endchoice

config USB_MTU3_DEBUG
	bool "Enable Debugging Messages"
	help
	  Say Y here to enable debugging messages in the MTU3 Driver.

endif
