OpenWrt – Rev 1

Subversion Repositories:
Rev:
--- 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

Generated by GNU Enscript 1.6.5.90.