|
|
|
--- a/drivers/usb/dwc2/Kconfig
|
|
|
|
+++ b/drivers/usb/dwc2/Kconfig
|
|
|
|
@@ -1,6 +1,6 @@
|
|
|
|
config USB_DWC2
|
|
|
|
- bool "DesignWare USB2 DRD Core Support"
|
|
|
|
- depends on USB
|
|
|
|
+ tristate "DesignWare USB2 DRD Core Support"
|
|
|
|
+ depends on USB || USB_GADGET
|
|
|
|
help
|
|
|
|
Say Y here if your system has a Dual Role Hi-Speed USB
|
|
|
|
controller based on the DesignWare HSOTG IP Core.
|
|
|
|
@@ -10,49 +10,61 @@ config USB_DWC2
|
|
|
|
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.
|
|
|
|
+ dwc2_platform.ko. For all modes(host, gadget and dual-role), there
|
|
|
|
+ will be an additional module named dwc2.ko.
|
|
|
|
|
|
|
|
if USB_DWC2
|
|
|
|
|
|
|
|
+choice
|
|
|
|
+ bool "DWC2 Mode Selection"
|
|
|
|
+ default USB_DWC2_DUAL_ROLE if (USB && USB_GADGET)
|
|
|
|
+ default USB_DWC2_HOST if (USB && !USB_GADGET)
|
|
|
|
+ default USB_DWC2_PERIPHERAL if (!USB && USB_GADGET)
|
|
|
|
+
|
|
|
|
config USB_DWC2_HOST
|
|
|
|
- tristate "Host only mode"
|
|
|
|
+ bool "Host only mode"
|
|
|
|
depends on USB
|
|
|
|
help
|
|
|
|
The Designware USB2.0 high-speed host controller
|
|
|
|
- integrated into many SoCs.
|
|
|
|
+ integrated into many SoCs. Select this option if you want the
|
|
|
|
+ driver to operate in Host-only mode.
|
|
|
|
|
|
|
|
-config USB_DWC2_PLATFORM
|
|
|
|
- bool "DWC2 Platform"
|
|
|
|
- depends on USB_DWC2_HOST
|
|
|
|
- default USB_DWC2_HOST
|
|
|
|
+comment "Gadget/Dual-role mode requires USB Gadget support to be enabled"
|
|
|
|
+
|
|
|
|
+config USB_DWC2_PERIPHERAL
|
|
|
|
+ bool "Gadget only mode"
|
|
|
|
+ depends on USB_GADGET=y || USB_GADGET=USB_DWC2
|
|
|
|
+ help
|
|
|
|
+ The Designware USB2.0 high-speed gadget controller
|
|
|
|
+ integrated into many SoCs. Select this option if you want the
|
|
|
|
+ driver to operate in Peripheral-only mode. This option requires
|
|
|
|
+ USB_GADGET to be enabled.
|
|
|
|
+
|
|
|
|
+config USB_DWC2_DUAL_ROLE
|
|
|
|
+ bool "Dual Role mode"
|
|
|
|
+ depends on (USB=y || USB=USB_DWC2) && (USB_GADGET=y || USB_GADGET=USB_DWC2)
|
|
|
|
help
|
|
|
|
- The Designware USB2.0 platform interface module for
|
|
|
|
- controllers directly connected to the CPU. This is only
|
|
|
|
- used for host mode.
|
|
|
|
+ Select this option if you want the driver to work in a dual-role
|
|
|
|
+ mode. In this mode both host and gadget features are enabled, and
|
|
|
|
+ the role will be determined by the cable that gets plugged-in. This
|
|
|
|
+ option requires USB_GADGET to be enabled.
|
|
|
|
+endchoice
|
|
|
|
+
|
|
|
|
+config USB_DWC2_PLATFORM
|
|
|
|
+ tristate "DWC2 Platform"
|
|
|
|
+ default USB_DWC2_HOST || USB_DWC2_PERIPHERAL
|
|
|
|
+ help
|
|
|
|
+ The Designware USB2.0 platform interface module for
|
|
|
|
+ controllers directly connected to the CPU.
|
|
|
|
|
|
|
|
config USB_DWC2_PCI
|
|
|
|
- bool "DWC2 PCI"
|
|
|
|
+ tristate "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
|
|
|
|
--- a/drivers/usb/dwc2/Makefile
|
|
|
|
+++ b/drivers/usb/dwc2/Makefile
|
|
|
|
@@ -1,28 +1,28 @@
|
|
|
|
ccflags-$(CONFIG_USB_DWC2_DEBUG) += -DDEBUG
|
|
|
|
ccflags-$(CONFIG_USB_DWC2_VERBOSE) += -DVERBOSE_DEBUG
|
|
|
|
|
|
|
|
-obj-$(CONFIG_USB_DWC2_HOST) += dwc2.o
|
|
|
|
+obj-$(CONFIG_USB_DWC2) += dwc2.o
|
|
|
|
dwc2-y := core.o core_intr.o
|
|
|
|
-dwc2-y += hcd.o hcd_intr.o
|
|
|
|
-dwc2-y += hcd_queue.o hcd_ddma.o
|
|
|
|
+
|
|
|
|
+ifneq ($(filter y,$(CONFIG_USB_DWC2_HOST) $(CONFIG_USB_DWC2_DUAL_ROLE)),)
|
|
|
|
+ dwc2-y += hcd.o hcd_intr.o
|
|
|
|
+ dwc2-y += hcd_queue.o hcd_ddma.o
|
|
|
|
+endif
|
|
|
|
+
|
|
|
|
+ifneq ($(filter y,$(CONFIG_USB_DWC2_PERIPHERAL) $(CONFIG_USB_DWC2_DUAL_ROLE)),)
|
|
|
|
+ dwc2-y += gadget.o
|
|
|
|
+endif
|
|
|
|
|
|
|
|
# NOTE: The previous s3c-hsotg peripheral mode only driver has been moved to
|
|
|
|
# this location and renamed gadget.c. When building for dynamically linked
|
|
|
|
-# modules, dwc2_gadget.ko will get built for peripheral mode. For host mode,
|
|
|
|
-# the core module will be dwc2.ko, the PCI bus interface module will called
|
|
|
|
-# dwc2_pci.ko and the platform interface module will be called dwc2_platform.ko.
|
|
|
|
-# At present the host and gadget driver will be separate drivers, but there
|
|
|
|
-# are plans in the near future to create a dual-role driver.
|
|
|
|
+# modules, dwc2.ko will get built for host mode, peripheral mode, and dual-role
|
|
|
|
+# mode. The PCI bus interface module will called dwc2_pci.ko and the platform
|
|
|
|
+# interface module will be called dwc2_platform.ko.
|
|
|
|
|
|
|
|
ifneq ($(CONFIG_USB_DWC2_PCI),)
|
|
|
|
- obj-$(CONFIG_USB_DWC2_HOST) += dwc2_pci.o
|
|
|
|
+ obj-$(CONFIG_USB_DWC2) += dwc2_pci.o
|
|
|
|
dwc2_pci-y := pci.o
|
|
|
|
endif
|
|
|
|
|
|
|
|
-ifneq ($(CONFIG_USB_DWC2_PLATFORM),)
|
|
|
|
- obj-$(CONFIG_USB_DWC2_HOST) += dwc2_platform.o
|
|
|
|
- dwc2_platform-y := platform.o
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-obj-$(CONFIG_USB_DWC2_PERIPHERAL) += dwc2_gadget.o
|
|
|
|
-dwc2_gadget-y := gadget.o
|
|
|
|
+obj-$(CONFIG_USB_DWC2_PLATFORM) += dwc2_platform.o
|
|
|
|
+dwc2_platform-y := platform.o
|