From: Greg KH To: torvalds@transmeta.com Cc: linux-usb-devel@lists.sourceforge.net Subject: [BK PATCH] Some more USB changes for 2.5.30 Here are some more USB changesets. Pull from: http://linuxusb.bkbits.net/linus-2.5 thanks, greg k-h Documentation/DocBook/kernel-api.tmpl | 2 drivers/usb/core/Makefile | 4 drivers/usb/core/buffer.c | 186 +++++++++++++ drivers/usb/core/hcd-pci.c | 17 - drivers/usb/core/hcd.c | 12 drivers/usb/core/hcd.h | 41 +++ drivers/usb/core/usb.c | 175 ++++++++++++- drivers/usb/host/ehci-dbg.c | 214 +++++++++++++++- drivers/usb/host/ehci-hcd.c | 129 ++++++--- drivers/usb/host/ehci-q.c | 364 +++++++++++++++------------ drivers/usb/host/ehci-sched.c | 454 ++++++++++++++-------------------- drivers/usb/host/ehci.h | 18 - drivers/usb/host/ohci-q.c | 2 drivers/usb/storage/scsiglue.c | 3 include/linux/usb.h | 53 +++ 15 files changed, 1191 insertions(+), 483 deletions(-) ------ ChangeSet@1.457.4.9, 2002-08-06 21:57:39-07:00, paulus@samba.org [PATCH] USB root hub polling and suspend Currently with 2.5, when I suspend and resume my powerbook, I find that the USB subsystem no longer sees root hub events, i.e. it doesn't notice when I plug in a new USB device (it doesn't notice when I unplug a device either but of course the driver for the device sees that it is no longer responding). It turns out that what happens is that the root hub timer goes off after the OHCI driver has done its suspend stuff. The timer routine sees that the HCD is not running at the moment and doesn't schedule another timeout. Hence the series of timeouts stops. drivers/usb/core/hcd.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) ------ ChangeSet@1.457.4.8, 2002-08-06 20:49:14-07:00, greg@kroah.com USB: Makefile fix for previous patch drivers/usb/core/Makefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) ------ ChangeSet@1.457.4.7, 2002-08-06 20:05:47-07:00, david-b@pacbell.net [PATCH] expose dma_addr_t in urbs This patch exposes DMA addresses in URBs. It exposes new APIs that let drivers be a bit smarter in terms of DMA, reducing USB overhead on some platforms (but not commodity pcs). As discussed with DaveM, and on the usb-devel list. Supporting patches are still needed. Of course, there's teaching HCDs to use _these_ addresses when they're provided (easy). There's also teaching drivers (like hid) to use the new usb_buffer_alloc() support,; can happen incrementally. And adding scatterlist support, which will be desirable for usb-storage and hpusbscanner. But this is the start needed to get all of that going. Documentation/DocBook/kernel-api.tmpl | 2 drivers/usb/core/buffer.c | 186 ++++++++++++++++++++++++++++++++++ drivers/usb/core/hcd-pci.c | 17 ++- drivers/usb/core/hcd.c | 5 drivers/usb/core/hcd.h | 41 +++++++ drivers/usb/core/usb.c | 153 +++++++++++++++++++++++++++ include/linux/usb.h | 53 ++++++++- 7 files changed, 446 insertions(+), 11 deletions(-) ------ ChangeSet@1.457.4.6, 2002-08-06 19:29:58-07:00, david-b@pacbell.net [PATCH] ehci does interrupt queuing This patch makes EHCI - Share the same TD queueing code for control, bulk, and interrupt traffic; - Queue interrupt transfers, modifying the code for urb submit/unlink/complete; - Thinner, by removing lots of nasty fatty special case logic for interrupt transfers (size, no queueing, etc); - Grow some "automagic resubmit" logic, ready to be ripped out soonish; - Package its interrupt scheduling so it can be called from more places. drivers/usb/host/ehci-hcd.c | 45 +++-- drivers/usb/host/ehci-q.c | 166 ++++++++----------- drivers/usb/host/ehci-sched.c | 362 +++++++++++++++++++----------------------- drivers/usb/host/ehci.h | 1 4 files changed, 278 insertions(+), 296 deletions(-) ------ ChangeSet@1.457.4.5, 2002-08-06 15:58:22-07:00, david-b@pacbell.net [PATCH] ehci, debug info in driverfs This patch teaches the ehci driver how to dump its schedule through two driverfs files: "sched-async" shows the control/bulk queue. usually has no tds, often the idle queue head is showing. "sched-periodic" shows the iso/interrupt schedule. Since this is for debugging, the files aren't normally configured into the driver. drivers/usb/host/ehci-dbg.c | 214 +++++++++++++++++++++++++++++++++++++++++++- drivers/usb/host/ehci-hcd.c | 4 2 files changed, 217 insertions(+), 1 deletion(-) ------ ChangeSet@1.457.4.4, 2002-08-05 15:38:08-07:00, Andries.Brouwer@cwi.nl [PATCH] usb_string fix Things are indeed as conjectured, and I can reproduce the situation where usb_string() returns -EPIPE. Now that this is an internal error code for the USB subsystem, and not meant to get out to the user, I made these driverfs files empty in case of error. (While if there is no error but the string has length 0, the file will consist of a single '\n'.) One fewer random memory corruption. Unfortunately, there are more. Andries drivers/usb/core/usb.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) ------ ChangeSet@1.457.4.3, 2002-08-05 15:37:54-07:00, david-b@pacbell.net [PATCH] ohci, rm sparc64 oops The recent "unlink cleanups" patch had a problem with bitmask byteswapping. drivers/usb/host/ohci-q.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) ------ ChangeSet@1.457.4.2, 2002-08-05 10:24:05-07:00, david-b@pacbell.net [PATCH] ehci updates This patch is the first part of fixing the EHCI driver to queue interrupt transactions, handle larger requests, and basically treat interrupt as just "bulk that lives on the periodic schedule". One more patch should wrap that up. qh processing cleanup - split "append tds to qh" logic out of "put on async schedule", so it can be used with "put on periodic schedule" too interrupt transfer cleanup - save rest of scheduling params in the qh - calculate scheduling params only once other cleanup - use new container_of() - minor code shrinkage (avoid pipe bitops, conditionals, etc) - rename variable (will track endpoints, not urbs) - free_config() logic drivers/usb/host/ehci-hcd.c | 80 ++++++++++------ drivers/usb/host/ehci-q.c | 198 +++++++++++++++++++++++++++++------------- drivers/usb/host/ehci-sched.c | 92 +++++-------------- drivers/usb/host/ehci.h | 17 ++- 4 files changed, 226 insertions(+), 161 deletions(-) ------ ChangeSet@1.457.4.1, 2002-08-05 10:12:38-07:00, greg@kroah.com USB storage: split up BUG_ON for easier debugging. As requested by Adam Richter. drivers/usb/storage/scsiglue.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) ------