forked from Minki/linux
b7974de821
It is currently possible to configure the dwc2 driver as built-in when host mode or dual-role is enabled, but the USB core is a loadable module. This leads to a link failure: drivers/built-in.o: In function `_dwc2_hcd_start': :(.text+0x84538): undefined reference to `usb_hcd_resume_root_hub' drivers/built-in.o: In function `_dwc2_hcd_urb_dequeue': :(.text+0x84aa0): undefined reference to `usb_hcd_check_unlink_urb' :(.text+0x84e4c): undefined reference to `usb_hcd_unlink_urb_from_ep' :(.text+0x84e74): undefined reference to `usb_hcd_giveback_urb' drivers/built-in.o: In function `dwc2_assign_and_init_hc': :(.text+0x86b98): undefined reference to `usb_hcd_unmap_urb_for_dma' drivers/built-in.o: In function `_dwc2_hcd_urb_enqueue': :(.text+0x8717c): undefined reference to `usb_hcd_link_urb_to_ep' :(.text+0x872f4): undefined reference to `usb_hcd_unlink_urb_from_ep' drivers/built-in.o: In function `dwc2_host_complete': :(.text+0x875d4): undefined reference to `usb_hcd_unlink_urb_from_ep' :(.text+0x87600): undefined reference to `usb_hcd_giveback_urb' drivers/built-in.o: In function `dwc2_hcd_init': :(.text+0x87ba8): undefined reference to `usb_disabled' :(.text+0x87d38): undefined reference to `usb_create_hcd' :(.text+0x88094): undefined reference to `usb_add_hcd' :(.text+0x880dc): undefined reference to `usb_put_hcd' drivers/built-in.o: In function `dwc2_hcd_remove': :(.text+0x8821c): undefined reference to `usb_remove_hcd' :(.text+0x8823c): undefined reference to `usb_put_hcd' drivers/built-in.o: In function `dwc2_hc_handle_tt_clear.isra.10': :(.text+0x88e2c): undefined reference to `usb_hub_clear_tt_buffer' drivers/built-in.o: In function `dwc2_hcd_qtd_add': :(.text+0x8b554): undefined reference to `usb_calc_bus_time' To fix the problem, this patch changes the dependencies so that dwc2 host mode can only be enabled if either the USB core is built-in or both USB and dwc2 are modules. Acked-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
99 lines
3.3 KiB
Plaintext
99 lines
3.3 KiB
Plaintext
config USB_DWC2
|
|
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.
|
|
|
|
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 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
|
|
bool "Host only mode"
|
|
depends on USB=y || (USB_DWC2=m && USB)
|
|
help
|
|
The Designware USB2.0 high-speed host controller
|
|
integrated into many SoCs. Select this option if you want the
|
|
driver to operate in Host-only mode.
|
|
|
|
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_GADGET=y) || (USB_DWC2=m && USB && USB_GADGET)
|
|
help
|
|
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
|
|
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.
|
|
|
|
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
|