linux: add upstream patch to allow building dwc2 as module on 3.18
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 28 Jan 2015 13:45:06 +0000 (13:45 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 28 Jan 2015 13:45:06 +0000 (13:45 +0000)
Also add the required config symbols to usb.mk

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 44181

package/kernel/linux/modules/usb.mk
target/linux/generic/patches-3.18/821-usb-dwc2-dualrole.patch [new file with mode: 0644]

index 3db70f89514a70f2f76fdf4161c253a7ae6b58c2..2499af1007b6b334be3b05ddf3a4e8e20c0a8fc6 100644 (file)
@@ -438,6 +438,8 @@ define KernelPackage/usb-dwc2
   DEPENDS:=@!LINUX_3_8 @!LINUX_3_10
   KCONFIG:= \
        CONFIG_USB_DWC2 \
+       CONFIG_USB_DWC2_PCI \
+       CONFIG_USB_DWC2_PLATFORM \
        CONFIG_USB_DWC2_DEBUG=n \
        CONFIG_USB_DWC2_VERBOSE=n \
        CONFIG_USB_DWC2_TRACK_MISSED_SOFS=n
diff --git a/target/linux/generic/patches-3.18/821-usb-dwc2-dualrole.patch b/target/linux/generic/patches-3.18/821-usb-dwc2-dualrole.patch
new file mode 100644 (file)
index 0000000..9e841cb
--- /dev/null
@@ -0,0 +1,146 @@
+--- 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