config USB_DWC2
	bool "DesignWare USB2 DRD Core Support"
	depends on USB
	help
	  Say Y here if your system has a Dual Role Hi-Speed USB
	  controller based on the DesignWare HSOTG IP Core.

	  For host mode, if you choose to build the driver as dynamically
	  linked modules, the core module will be called dwc2.ko, the PCI
	  bus interface module (if you have a PCI bus system) will be
	  called dwc2_pci.ko, and the platform interface module (for
	  controllers directly connected to the CPU) will be called
	  dwc2_platform.ko. For gadget mode, there will be a single
	  module called dwc2_gadget.ko.

	  NOTE: The s3c-hsotg driver is now renamed to dwc2_gadget. The
	  host and gadget drivers are still currently separate drivers.
	  There are plans to merge the dwc2_gadget driver with the dwc2
	  host driver in the near future to create a dual-role driver.

if USB_DWC2

config USB_DWC2_HOST
	tristate "Host only mode"
	depends on USB
	help
	  The Designware USB2.0 high-speed host controller
	  integrated into many SoCs.

config USB_DWC2_PLATFORM
	bool "DWC2 Platform"
	depends on USB_DWC2_HOST
	default USB_DWC2_HOST
	help
	  The Designware USB2.0 platform interface module for
	  controllers directly connected to the CPU. This is only
	  used for host mode.

config USB_DWC2_PCI
	bool "DWC2 PCI"
	depends on USB_DWC2_HOST && PCI
	default USB_DWC2_HOST
	help
	  The Designware USB2.0 PCI interface module for controllers
	  connected to a PCI bus. This is only used for host mode.

comment "Gadget mode requires USB Gadget support to be enabled"

config USB_DWC2_PERIPHERAL
	tristate "Gadget only mode"
	depends on USB_GADGET
	help
	  The Designware USB2.0 high-speed gadget controller
	  integrated into many SoCs.

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

config USB_DWC2_VERBOSE
	bool "Enable Verbose Debugging Messages"
	depends on USB_DWC2_DEBUG
	help
	  Say Y here to enable verbose debugging messages in the DWC2 Driver.
	  WARNING: Enabling this will quickly fill your message log.
	  If in doubt, say N.

config USB_DWC2_TRACK_MISSED_SOFS
	bool "Enable Missed SOF Tracking"
	help
	  Say Y here to enable logging of missed SOF events to the dmesg log.
	  WARNING: This feature is still experimental.
	  If in doubt, say N.

config USB_DWC2_DEBUG_PERIODIC
	bool "Enable Debugging Messages For Periodic Transfers"
	depends on USB_DWC2_DEBUG || USB_DWC2_VERBOSE
	default y
	help
	  Say N here to disable (verbose) debugging messages to be
	  logged for periodic transfers. This allows better debugging of
	  non-periodic transfers, but of course the debug logs will be
	  incomplete. Note that this also disables some debug messages
	  for which the transfer type cannot be deduced.
endif
