Hi, the following patches introduce the DesignWare USB3 Driver. This controller will be used on the OMAP5 series of processors and this is the first contribution to Linux Kernel from OMAP5 program. The driver is rather stable, but we have few issues on the FPGA platform that we're using. It's very complex platform and very timing and temperature-sensitive. Thanks for Synopsys for all the help debugging many issues with the HAPS platform (a valuable effort). We will keep on adding new features to this driver as the development goes, but as of now, it should behave OK with Mass Storage and g_zero at least on FS/HS and SS. Keep in mind that this was only tested on FPGA (HAPS-61) and a virtual model of the HW and we might have to fix a few things up when we get a real ASIC to test against. Greg, I will send you a pull request for this, if you prefer, on monday, but I would suggest giving this a few days or soaking in the mailing list so that other companies which might be using this same IP have time to give it a shot. Maybe Synopsys might also be willing to help testing on HAPS-51 platform, but I'm speculating here ;-) The original shortlog of the driver is quoted below for reference: Felipe Balbi (334): usb: Introduce DesignWare USB3 DRD Driver usb: dwc3: move structures to core.h usb: dwc3: split gadget functions to gadget.c usb: dwc3: more __devinit annotations usb: dwc3: fix event buffer memleak usb: dwc3: add the basic OMAP glue usb: dwc3: start implement IRQ handling usb: dwc3: gadget: implement depcfg command usb: dwc3: add a few more parameters usb: dwc3: gadget: fix parameter setting of DEPXFERCFG usb: gadget: introduce gadget_is_dwc3() usb: dwc3: gadget: half initialization of endpoints usb: dwc: gadget: split more of the generic stuff usb: dwc: gadget: add more nops usb: dwc3: add structures for all events usb: dwc3: implement disconnect IRQ usb: dwc3: handle in and out ep irq separately usb: dwc3: partially implemented reset irq usb: dwc3: drop OTG events usb: dwc: half done IN ep IRQ usb: dwc3: increase event buffer size usb: dwc3: omap: we're parents of core dwc3 device usb: dwc: gadget: add missing static usb: dwc: gadget: implement queue()/dequeue() usb: dwc: gadget: substitute dwc_ with dwc3_ usb: dwc: gadget: add usb_gadget_ops usb: dwc: gadget: implement pullup() usb: dwc3: implement get_frame() usb: dwc3: implement set_selfpowered() usb: dwc3: hold pointers to eps in dwc structure usb: dwc3: introduce struct dwc3_trb usb: dwc3: gadget: minimal driver load/unload usb: dwc3: gadget: drop ioctl usb: dwc3: gadget: implement map/unmap buffer usb: dwc3: gadget: setup TRB usb: dwc3: use the define usb: dwc3: gadget: combine endpoint ops usb: dwc3: gadget: implement fifo_flush usb: dwc3: gadget: flush all fifos on gadget init usb: dwc3: gadget: variable names are better uniform usb: dwc3: gadget: add missing line break usb: dwc3: move irq handling to gadget.c usb: dwc3: gadget: drop carkit and i2c events usb: dwc3: gadget: add debugging to EP irq usb: dwc3: gadget: split event handlers to their own functions usb: dwc3: add ep0_state usb: dwc3: gadget: add debugging usb: dwc3: gagdget: implement connect done IRQ usb: dwc3: gadget: implement link state change usb: dwc3: gadget: add a bit of spacing usb: dwc3: gadget: lock when clearing gadget and gadget_driver usb: dwc3: gadget: fix checkpatch.pl warnings usb: dwc3: headers: search and replace patch usb: dwc3: omap: mark dev_pm_ops const usb: dwc3: gadget.h: fix 80+ character lines usb: dwc3: add a dma_pool for TRBs for each endpoint usb: dwc3: gadget: create/destroy trb_pool based on ep enable/disable usb: dwc3: gadget: unfinished TRB allocation usb: dwc3: gadget: switch over to an array usb: dwc3: gadget: use & instead of % usb: dwc3: gadget: add a debugging print usb: dwc3: add missing kernel-doc usb: dwc3: gadget: all struct dwc3_ep to be called dep usb: dwc3: gadget: brain-less cleanups usb: dwc3: gadget: drop a useless goto usb: dwc3: gadget: use res_trans_idx usb: dwc3: gadget: use is_chained flag usb: dwc3: gadget: add ep_ to the function name usb: dwc3: gadget: make __dwc3_gadget_ep_queue return a value usb: dwc3: gadget: free the TRB if queueing fails usb: dwc3: gadget: get rid of magic constants usb: dwc3: gadget: move some code around usb: dwc3: gadget: don't overwrite trbctl usb: dwc3: gadget: combine two cases usb: dwc3: gadget: only interrupt on last TRB usb: dwc3: gadget: introduce dwc3_gadget_ep_get_transfer_index usb: dwc3: gadget: implement dwc3_gadget_init_endpoint usb: dwc3: gadget: cut down on duplication usb: dwc3: gadget: implement dwc3_disable_endpoint() usb: dwc3: gadget: disable all eps on exit usb: dwc3: gadget: return early on two cases usb: dwc3: gadget: implement dwc3_gadget_ep_set_halt usb: dwc3: gadget: implement dwc3_gadget_ep_set_wedge usb: dwc3: gadget: drop dwc3_gadget_fifo_status usb: dwc3: gadget: add blank lines usb: dwc3: gadget: implement wakeup method usb: dwc3: core: make suspend and resume return something usb: dwc3: core: move us to fs_initcall() usb: dwc3: remove event_ prefix from two fields usb: dwc3: gadget: introduce next_request() usb: dwc3: gadget: implement transfer complete IRQ usb: dwc3: gadget: add request_count usb: dwc3: gadget: start next request if we have it queued usb: dwc3: gadget: introduce list_add/list_del helpers usb: dwc3: gadget: fix compile error usb: dwc3: shift has to be defined first usb: dwc3: gadget: combine IN and OUT ep IRQs usb: dwc3: add enumeration for TRB Statuses usb: dwc3: gadget: XFERINPROG and XFERNRDY are Isoc-only usb: dwc3: gadget: use EP CMD Complete IRQ usb: dwc3: introduce HAPS glue layer usb: dwc3: glue layers need to probe before core dwc3 usb: dwc3: add resources to dwc3 device usb: dwc3: gadget: increment after check usb: dwc3: gadget: return IRQ_HANDLED Revert "usb: dwc3: gadget: use EP CMD Complete IRQ" usb: dwc3: gadget: add dwc3_ prefix to prepare_trbs usb: dwc3: gadget: drop unneeded gadget ops usb: dwc3: haps: few fixes to haps glue usb: dwc3: keep it all on module_init usb: dwc3: gadget: set CSP bit in TRB usb: dwc3: gadget: use max packet size from ep descriptor usb: dwc3: gadget: set binterval_m1 field usb: dwc3: haps: checkpatch.pl asks to use DEFINE_PCI_DEVICE_TABLE usb: dwc3: gadget: misc cleanups usb: dwc3: gadget: add missing register write usb: dwc3: gadget: fix typo DCW -> DWC usb: dwc3: fix up copyright device: add dev_WARN_ONCE usb: dwc3: gadget: convert WARN_ONCE() to dev_WARN_ONCE() usb: dwc3: gadget: Search&Replace dwc_ dwc3_ usb: dwc3: gadget: drop useless check for ep type usb: dwc3: gadget: make internal function name uniform usb: gadget: add USB_GADGET_SUPERSPEED usb: dwc3: gadget: compile gadget code only if enabled usb: dwc3: Kconfig: drop "Disable DMA" entry usb: dwc3: omap: fix exit section annotation usb: dwc3: drop unnused enumeration usb: dwc3: fix typo usb: dwc3: gadget: give ep0 a wMaxPacketSize usb: dwc3: make our driver Dual BSD/GPL usb: dwc3: fix license on OMAP and HAPS glue layers usb: dwc3: core: drop ramN memory bases usb: dwc3: ep0: remove unneeded return statement usb: dwc: core: ioremap global space first usb: dwc3: gadget: fix typo in debugging message usb: dwc3: gadget: introduce next_queued_request() usb: dwc3: gadget: convert to next_queued_request() usb: dwc3: gadget: pass the list_head instead of endpoint usb: dwc3: gadget: WARN() on double allocation of TRB pool usb: dwc3: gadget: add lock around __dwc3_gadget_ep_disable() usb: dwc3: gagdget: fix typo s/requeust/request/ usb: dwc3: gadget: update ep names with xfer type Revert "usb: dwc3: gadget: WARN() on double allocation of TRB pool" usb: dwc3: introduce platform_data.h usb: dwc3: update to use new platform_data usb: dwc3: gadget: drop unused argument usb: dwc3: gadget: handle Transfer In Progress Revert "usb: dwc3: update to use new platform_data" Revert "usb: dwc3: introduce platform_data.h" usb: dwc3: convert to only one base usb: dwc3: add features bit definitions usb: dwc3: use platform_device_id usb: dwc3: adapt to new platform_device_id usb: gadget: chips: fix dwc3 recognition usb: dwc3: core: use pm_runtime_get_sync() usb: always enter USB directory usb: dwc3: Kconfig: depend on USB or USB_GADGET usb: dwc3: haps: remove unused code usb: dwc3: core: mark platform_device_id __devinitconst Revert "usb: always enter USB directory" usb: don't enter usb subdirectories directly usb: dwc3: core: fix up the reset loop usb: gadget: chips: fixup our name usb: dwc3: use platform_get_resource_byname usb: dwc3: gadget: enable correct IRQs usb: dwc3: drop BIT(13) of DEVTEN usb: dwc3: gadget: add IRQF_SHARED usb: dwc3: core: get IRQ by name usb: dwc3: io: include <asm/io.h> usb: dwc3: introduce omap glue layer usb: dwc3: omap: don't try to reinitilize the device usb: dwc3: omap: drop pm_runtime from the glue layer usb: dwc3: omap: request IRQ lines before enabling the events usb: dwc3: fix up Makefile so we always build correctly usb: dwc3: fix offset of DEPCMD registers usb: dwc3: gadget: only set binternal_m1 if we have to usb: dwc3: gadget: we need to enable ep0/1 on POR usb: dwc3: core: save size of address space in our struct usb: dwc3: introduce simple debugfs interface usb: dwc3: haps: don't reinitialize pdev, HAPS remix usb: dwc3: haps: we need to pass IRQ to core driver too usb: dwc3: gadget: add verbose print when sending commands usb: dwc3: gadget: pass ignore_sequence_number as paramter usb: dwc3: gadget: fix up connection done IRQ usb: dwc3: gadget: move TRB allocation one layer up usb: dwc3: allow verbose debug to be selected usb: dwc3: gadget: fix up wMaxPacketSize on conndone IRQ usb: dwc3: gadget: move disabled check one layer up usb: dwc3: gadget: we should write back BYTE count usb: dwc3: gadget: don't reenable eps on reset IRQ usb: dwc3: gadget: no need for two defines usb: dwc3: gadget: don't drop run/stop on disconnect usb: dwc3: fix typo 'ponts' usb: dwc3: drop extra semicolon usb: dwc3: gadget: kill one compile warning usb: dwc3: gadget: alloc from coherent instead usb: dwc3: ep0: reference code uses ISP bit usb: dwc3: gadget: don't hardcode endpoint number to 1 usb: dwc3: gadget: usb & instead of % usb: dwc3: gadget: issue start transfer after run/stop usb: dwc3: gadget: don't dereference null pointer usb: dwc3: ep0: pretty print ep0state usb: dwc3: ep0: add missing break usb: dwc3: ep0: drop few warnings usb: dwc3: ep0: add a few debugging prints usb: dwc3: ep0: only call complete() if queue isn't empty usb: dwc3: ep0: inspect the setup packet always usb: dwc3: ep0: fix compile error usb: dwc3: ep0: don't queue always to ep0 usb: dwc3: gadget: call device register usb: dwc3: more debugging info usb: dwc3: ep0: use next_request() usb: dwc3: gadget: patch gadget speed usb: dwc3: ep0: do setup_status phase usb: dwc3: gadget: pass descriptor to alloc_trb usb: dwc3: gadget: fix endpoint mapping usb: dwc3: gadget: only enable xfer_in_progress for isoc usb: dwc3: gadget: we only need bInterval on SS usb: dwc3: core: define macro for command status usb: dwc3: gadget: pretty print for events usb: dwc3: ep0: print physical endpoint name instead usb: dwc3: gadget: fix up endpoint name usb: dwc3: gadget: follow reference code usb: dwc3: gadget: only call disconnect if we're working usb: gadget: ep0: move xfernotready closer to its sibling usb: dwc3: ep0: simplify debugging and handler usb: dwc3: core: fix a register name usb: dwc3: debugfs: improve regdump utility usb: dwc3: omap: move platform_set_drvdata up usb: dwc3: gadget: move req->queued to move_request_queued usb: dwc3: gadget: stop transfers before disconnect usb: dwc3: ep0: call giveback instead of reimplementing it usb: dwc3: ep0: we only support one request on control ep usb: dwc3: gadget: no need to command completion IRQ usb: dwc3: gadget: nuke all requests on disconnect usb: dwc3: ep0: simply ep0 handlers usb: dwc3: gadget: decrease verbosity to dev_dbg usb: dwc3: ep0: fix a compile warning usb: dwc3: ep0: don't handle setup on xfernotready usb: dwc3: gadget: disconnect when removing gadget driver usb: dwc3: gadget: unregister gadget device usb: dwc3: ep0: don't access list_head without locks usb: dwc3: ep0: fix for ep0_do_setup_status usb: dwc3: gadget: no need for XferNotReady for Bulk usb: dwc3: gadget: don't stop transfers on control pipe usb: dwc3: gadget: a little re-organization usb: dwc3: gadget: don't rely on request_count usb: dwc3: gadget: pass the entire event to handler usb: dwc3: gadget: add more consts usb: dwc3: haps: rename to pci usb: dwc3: fix DAVADDR typo usb: dwc3: ep0: prevent a possible buffer overflow usb: dwc3: gadget: ep0 packet size in SS is 512 usb: dwc3: gadget: increase maxpacket size of all non-0 eps usb: dwc3: gadget: add missing break usb: dwc3: gadget: disable the uneeded PHY usb: dwc3: gadget: use correct FIFO numbers usb: dwc3: gadget: enable XferNotReady for all endpoints usb: dwc3: gadget: always set bInterval usb: dwc3: gadget: check correct list usb: dwc3: gadget: check if request is valid usb: dwc3: add DWC3_EP_BUSY flag usb: dwc3: gadget: ep0/ep1 need direction too usb: dwc3: gadget: use XferNotReady IRQ usb: dwc3: gadget: control endpoints don't need XferInProgress usb: dwc3: gadget: print ep name when sending ep cmd usb: dwc3: gadget: verbose debug print for each IRQ usb: dwc3: pci: fix pci_set_drvdata() call usb: dwc3: gadget: add DWC3_EP_PENDING_REQUEST flag usb: dwc3: pci: add a name to the driver usb: dwc3: pci: use pci_resource_end() usb: dwc3: core: calculate timeout correctly usb: dwc3: core: request the memory region usb: dwc3: omap: set dma_mask and dma_parms usb: dwc3: pci: set coherent_dma_mask usb: dwc3: gadget: introduce helpers for powering PHYs usb: dwc3: ep0: set address on correct register usb: dwc3: gadget: reset USB PHYs during init usb: dwc3: gadget: don't overwrite DCFG usb: dwc3: core: allow for memory over 4GiB usb: dwc3: ep0: allow for memory over 4GiB usb: dwc3: gadget: no need to restart ep0 out usb: dwc3: gadget: put PHY in reset when powered down usb: dwc3: search and replace usb: dwc3: gadget: only set run/stop bit as the last step usb: dwc3: gadget: fix Kconfig entry usb: dwc3: gadget: move to threaded IRQ usb: dwc3: core: fix compile warning usb: dwc3: gadget: set correct port mode usb: dwc3: gadget: don't keep PHY in SoftRst usb: dwc3: gadget: wait a bit after SoftRst too usb: dwc3: gadget: fix compilation as module usb: dwc3: gadget: fix usb ep enable sequence usb: dwc3: gadget: drop ignore argument usb: dwc3: gadget: fix wrong logic usb: dwc3: ep0: fix device address setting usb: dwc3: gadget: reset PHYs on disconnect usb: dwc3: ep0: in case of error, tell gadget driver usb: dwc3: gadget: apply SuperSpeed connect/disconnect workaround usb: dwc3: gadget: move start/stop up in the source file usb: dwc3: gadget: move to udc_start/udc_stop usb: dwc3: gadget: move more code to udc_start/stop usb: dwc3: gadget: fix up ep0->maxpacket usb: dwc3: fix up a typo on our license header usb: dwc3: gadget: do not kick transfers on complete usb: dwc3: gadget: fix compile warning usb: dwc3: gadget: move trb_pool allocation earlier usb: dwc3: gadget: allocate trb_pool from coherent usb: dwc3: gadget: set all dma parameters correctly usb: dwc3: core: use SIMPLE_DEV_PM_OPS usb: dwc3: omap: use memcpy_to/fromio() usb: dwc3: omap: use UNIVERSAL_DEV_PM_OPS usb: dwc3: Makefile: allow omap glue to build on all omaps usb: dwc3: gadget: fix debug print usb: dwc3: gadget: add a few more debugging prints usb: dwc3: gadget: set LST bit on all TRBs for now usb: dwc3: core: drop dev_pm_ops usb: dwc3: core: move pm_runtime init to a saner location usb: dwc3: omap: dynamically allocate context space usb: dwc3: Makefile: always allow dwc3-omap to build MAINTAINERS: add a maintainer for this driver usb: dwc3: core: this can't be const usb: dwc3: omap: remove __read_mostly usb: dwc3: gadget: fix inverted logic usb: dwc3: move PHY reset to core.c usb: dwc3: core: put core in reset while resetting PHYs usb: dwc3: move device reset to gadget.c usb: dwc3: core: print DMA address as hex usb: dwc3: core: group core soft reset into one function usb: dwc3: move device soft reset before event buffer setup usb: dwc3: core: fix bad resource usage usb: dwc3: pci: allow multiple PCIe cards on one PC usb: dwc3: core: fix comment Sebastian Andrzej Siewior (157): usb: dwc3: use platform_device_unregister() usb: dwc3: add a comment about the error case / use list iterator usb: dwc3: add missing break to dwc3_interrupt usb: dwc3: fix id detection usb: dwc3: add type for identify the event buffer type usb: dwc3: fixup event buffer definition usb: dwc3: reorganize event buffer handling usb: dwc3: make use of an if block instead of multiple depends usb: dwc3: handle error case in dwc3_gadget_init_endpoints() usb: dwc3: remove list head init usb: dwc3: add dwc3_gadget_free_endpoints usb: dwc3: add core deinit function usb: dwc3: gagdet: fix dev vs device usb: dwc3: again, use io instead of this usb: dwc3: save epnum in ep usb: dwc3: check for DevCtrlHl after touching START/STOP bit usb: dwc3: rename pullup dwc3_gadget_run_stop() usb: dwc3: add disconnect interrupt handling usb: dwc3: split dwc3_gadget_disconnect_interrupt() usb: dwc3: go through dwc3_gadget_reset_interrupt() usb: dwc3: partly revert "save epnum in ep" usb: dwc3: enlarge interrupt_number in dwc3_gadget_ep_depcfg_param1 usb: dwc3: enlarge reserved16_14 in dwc3_gadget_ep_depcfg_param0 usb: dwc3: go through connect done usb: dwc3: update dwc3_gadget_linksts_change_interrupt usb: dwc3: remove init list head in dwc3_gadget_ep_alloc_request() usb: dwc3: don't list_del on dwc3_gadget_ep_free_request() usb: dwc3: map dma later usb: dwc3: init request's dma address usb: dwc3: save the trb belonging to an request usb: dwc3: fix maybe not initialized value usb: dwc3: fix buffer address usb: dwc3: poll for command complete on the correct endpoint usb: dwc3: simple tx transfer of non ep0 usb: dwc3: dwc3_gadget_conndone_interrupt() send msg to correct endpoint usb: dwc3: remove double assignment of bpl and length usb: dwc3: recognize ep0 correctly usb: dwc3: add an usb control request usb: dwc3: fix trb address usb: dwc3: add first setup phase for ep0 usb: dwc3: prepare dwc3_ep0_start_dataphase() for split usb: dwc3: use dma_map() for the trb. usb: dwc3: split dwc3_ep0_start_trans() into dwc3_ep0_start_dataphase() usb: dwc3: add more ep0 bits usb: dwc3: remove dead block usb: dwc3: remove assignment of isp_imi usb: dwc3: move ep0 related functions into a separate file usb: dwc3: move DWC3_DEPCMD_SETTRANSFRESOURCE to dwc3_init_endpoint() usb: dwc3: don't init ep0/1 in gadget_init() usb: dwc3: add missing EP0_IN_WAIT_GADGET bits usb: dwc3: fix "is singular" assumption usb: dwc3: use delayed TRB allocations usb: dwc3: remove one level of indention usb: dwc3: remove __dwc3_gadget_kick_transfers() usb: dwc3: remove arguments from __dwc3_gadget_kick_transfer() usb: dwc3: clear TRB before usage usb: dwc3: fix the length argument in dwc3_endpoint_transfer_complete() usb: dwc3: don't enqueue new requsts unless it is the last one usb: dwc3: unmap the TRB earlier on completion usb: dwc3: remove irqreturn_t from most functions usb: dwc3: start ISOC transfers on XferNotReady event usb: dwc3: convert the current TRB queue design into a ring buffer usb: dwc3: make a lock less version of dwc3_gadget_ep_set_halt() usb: dwc3: go to EP0_OUT_WAIT_NRDY on XferNotReady event in EP0_OUT_WAIT_GADGET state usb: dwc3: stall and restart setup TRB in error case usb: dwc3: remove extra argument in dwc3_ep0_out_start() usb: dwc3: handle missing states in dwc3_ep0_start_trans() usb: dwc3: don't error out on EP0_*_WAIT_GADGET usb: dwc3: use usb_request directly dwc3_ep0_complete_data() usb: dwc3: start handling standard usb requests usb: dwc3: fixup Kconfig madness usb: dwc3: fix set addr to zero in dwc3_gadget_reset_interrupt() usb: dwc3: handle USB_REQ_SET_ADDRESS usb: dwc3: execute DWC3_DEPCMD_SETTRANSFRESOURCE for the correct EP usb: dwc3: handle USB_REQ_SET_CONFIGURATION usb: dwc3: let the gadgt driver handle requests by default usb: ch9: add function defines from ch9, USB 3.0 spec usb: dwc3: handle USB_REQ_CLEAR_FEATURE usb: dwc3: handle USB_REQ_SET_FEATURE usb: dwc3: merge dwc3_ep0_clear_feature() and dwc3_ep0_set_feature() usb: dwc3: remove WARN_ON() in XFERNOTREADY usb: dwc3: fixup typo usb: dwc3: prepare for ISOC updates usb: dwc3: toggle the HWO in dwc3_prepare_trbs() once the TRB is complete usb: dwc3: initialize request_list usb: dwc3: don't remove ep1 from the EP1 list usb: dwc3: move queued requests onto a seperate list usb: dwc3: allow to queue ISOC while ISOC are scheduled usb: dwc3: don't schedule ISOC if we don't have any requests usb: dwc3: add myself as the Co-Author usb: dwc3: support for 64bit addr_t usb: dwc3: generated IOC for ISOC more frequently usb: dwc3: link the ISOC TRBs usb: dwc3: fixup IOC/LST/CHN logic on ISOC usb: dwc3: return -EBUSY if the request is handled dwc: usb3: make __dwc3_gadget_kick_transfer() consider the correct list usb: dwc3: add 64bit support for TRBs arm: omap: use hwmod to create a dwc3 device usb: dwc3: remove driver name from haps usb: dwc3: fixup bitfield definitions usb: dwc3: remove CHN bit usb: dwc3: add a missing ; usb: dwc3: initialize dwc in dwc3_gadget_ep_disable() usb: dwc3: make the TRB structure endian safe usb: dwc3: invert wait logic in dwc3_send_gadget_ep_cmd() usb: dwc3: don't look at jiffies in dwc3_send_gadget_ep_cmd() usb: dwc3: use usb_endpoint_type() where possible usb: dwc3: remove locking from atomic context usb: dwc3: remove jiffies assumption in dwc3_gadget_run_stop() usb: dwc3: no need for irqsave() in dwc3_interrupt() usb: dwc3: don't flush the fifo on init usb: dwc3: nuke dwc3_gadget_ep_fifo_flush() usb: dwc3: gadget: send DEPCMD_SETEPCONFIG/DEPCMD_DEPSTARTCFG correctly usb: dwc3: fix DWC3_DALEPENA_EPIN() macro usb: dwc3: DWC3_DALEPENA_EP() is always used for both directions usb: dwc3: don't queue req for ep0/1 if something is going on usb: dwc3: simplify dwc3_prepare_trbs() by removing access request_count usb: dwc3: remove remaining request_count users request_count users usb: dwc3: add small todo list usb: dwc3: gadget: use computed value instead usb: dwc3: gadget: also disable IRQs on error path usb: dwc3: gadget: move put_device before goto label in err path uwb: dwc3: gadget: convert dwc3 to new udc class usb: dwc3: gadget: remove __devexit from exit path (dwc3_gadget_exit) usb: dwc3: gadget: fix starting one EP more than once usb: dwc3: gadget: don't treat -EBUSY on TRANSFER_NOT_READY usb: dwc3: omap: recognize the error on getting irq properly usb: dwc3: gadget: fix maxpacket size for SS usb: dwc3: gadget: fix multi TRB handling usb: dwc3: gadget: don't set IOC bit usb: dwc3: fix XferResourceIndex mask usb: dwc3: gadget: don't sleep in interrupt usb: dwc3: gadget: remove isp_imi for non ISO usb: dwc3: gadget: add TEST_MODE usb: dwc3: gadget: use proper endian accessor for wMaxPacketSize usb: dwc3: gadget: use the length of the name array usb: dwc3: gadget: handle short-packets-OUT transfers usb: dwc3: gadget: use GFP_ATOMIC in ep_enable usb: dwc3: gadget: don't queue transfers if we got interrupt on a short packet usb: dwc3: gadget: handle more cases in the clean up routine usb: dwc3: gadget: ep0: use wIndex and initialize it usb: dwc3: gadget: fixup merge conflict for "proper endian accessor for wMaxPacketSize" usb: dwc3: gadget: fix usb enpoint numbering usb: dwc3: add test mode support usb: dwc3: gadget: remove DWC3_EP_ISOC_RUNNING usb: dwc3: gadget: issue UPDATE transfer command XferInprogress usb: dwc3: use numbers instead of name for platform_resources usb: dwc3: omap: add DT probing usb: dwc3: gadget: split dwc3_stop_active_transfers() into two functions usb: dwc3: gadget: only stop a transfer if there is an active one usb: dwc3: gadget: use dwc3_stop_active_transfer() in ep disable usb: dwc3: gadget: handle the ISO clean up usb: dwc3: gadget: prepare to retrieve res_trans_idx via CmdComplete event usb: dwc3: gadget: split TRB cleanup/complete into two pieces usb: dwc3: gadget: make the pre-mature dequeue of requests possible usb: dwc3: gadget: fix ISOC reload usb: dwc3: gadget: fix NULL pointer dereference in __dwc3_gadget_kick_transfer() Felipe Balbi (3): usb: gadget: introduce gadget_is_dwc3() usb: Introduce DesignWare USB3 DRD Driver MAINTAINERS: add a maintainer for DesignWare USB3 driver Sebastian Andrzej Siewior (1): usb: ch9: add function defines from ch9, USB 3.0 spec Documentation/usb/dwc3.txt | 53 + MAINTAINERS | 8 + drivers/usb/Kconfig | 2 + drivers/usb/Makefile | 2 + drivers/usb/dwc3/Kconfig | 25 + drivers/usb/dwc3/Makefile | 36 + drivers/usb/dwc3/core.c | 467 +++++++++ drivers/usb/dwc3/core.h | 709 +++++++++++++ drivers/usb/dwc3/debug.h | 51 + drivers/usb/dwc3/debugfs.c | 534 ++++++++++ drivers/usb/dwc3/dwc3-omap.c | 410 ++++++++ drivers/usb/dwc3/dwc3-pci.c | 219 ++++ drivers/usb/dwc3/ep0.c | 782 ++++++++++++++ drivers/usb/dwc3/gadget.c | 2063 +++++++++++++++++++++++++++++++++++++ drivers/usb/dwc3/gadget.h | 292 ++++++ drivers/usb/dwc3/io.h | 55 + drivers/usb/gadget/Kconfig | 12 + drivers/usb/gadget/gadget_chips.h | 3 + include/linux/usb/ch9.h | 5 + 19 files changed, 5728 insertions(+), 0 deletions(-) create mode 100644 Documentation/usb/dwc3.txt create mode 100644 drivers/usb/dwc3/Kconfig create mode 100644 drivers/usb/dwc3/Makefile create mode 100644 drivers/usb/dwc3/core.c create mode 100644 drivers/usb/dwc3/core.h create mode 100644 drivers/usb/dwc3/debug.h create mode 100644 drivers/usb/dwc3/debugfs.c create mode 100644 drivers/usb/dwc3/dwc3-omap.c create mode 100644 drivers/usb/dwc3/dwc3-pci.c create mode 100644 drivers/usb/dwc3/ep0.c create mode 100644 drivers/usb/dwc3/gadget.c create mode 100644 drivers/usb/dwc3/gadget.h create mode 100644 drivers/usb/dwc3/io.h -- 1.7.6.396.ge0613 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html