2
0
Эх сурвалжийг харах

linux: add upstream patch to allow building dwc2 as module on 3.18

Also add the required config symbols to usb.mk

Signed-off-by: Jo-Philipp Wich <[email protected]>

SVN-Revision: 44181
Jo-Philipp Wich 11 жил өмнө
parent
commit
e25e6df2cf

+ 2 - 0
package/kernel/linux/modules/usb.mk

@@ -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

+ 146 - 0
target/linux/generic/patches-3.18/821-usb-dwc2-dualrole.patch

@@ -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