21 May, 2010
40 commits
-
This patch modifies the fs/timerfd.c to use the newly created
wait_event_interruptible_locked_irq() macro. This replaces an open
code implementation with a single macro call.Signed-off-by: Michal Nazarewicz
Cc: Kyungmin Park
Cc: Marek Szyprowski
Cc: Alexander Viro
Cc: Thomas Gleixner
Cc: Roland Dreier
Cc: Tejun Heo
Cc: Christoph Lameter
Cc: Davide Libenzi
Signed-off-by: Greg Kroah-Hartman -
New wait_event_interruptible{,_exclusive}_locked{,_irq} macros added.
They work just like versions without _locked* suffix but require the
wait queue's lock to be held. Also __wake_up_locked() is now exported
as to pair it with the above macros.The use case of this new facility is when one uses wait queue's lock
to protect a data structure. This may be advantageous if the
structure needs to be protected by a spinlock anyway. In particular,
with additional spinlock the following code has to be used to wait
for a condition:spin_lock(&data.lock);
...
for (ret = 0; !ret && !(condition); ) {
spin_unlock(&data.lock);
ret = wait_event_interruptible(data.wqh, (condition));
spin_lock(&data.lock);
}
...
spin_unlock(&data.lock);This looks bizarre plus wait_event_interruptible() locks the wait
queue's lock anyway so there is a unlock+lock sequence where it could
be avoided.To avoid those problems and benefit from wait queue's lock, a code
similar to the following should be used:/* Waiting */
spin_lock(&data.wqh.lock);
...
ret = wait_event_interruptible_locked(data.wqh, (condition));
...
spin_unlock(&data.wqh.lock);/* Waiting exclusively */
spin_lock(&data.whq.lock);
...
ret = wait_event_interruptible_exclusive_locked(data.whq, (condition));
...
spin_unlock(&data.whq.lock);/* Waking up */
spin_lock(&data.wqh.lock);
...
wake_up_locked(&data.wqh);
...
spin_unlock(&data.wqh.lock);When spin_lock_irq() is used matching versions of macros need to be
used (*_locked_irq()).Signed-off-by: Michal Nazarewicz
Cc: Kyungmin Park
Cc: Marek Szyprowski
Cc: Ingo Molnar
Cc: Peter Zijlstra
Cc: Takashi Iwai
Cc: David Howells
Cc: Andreas Herrmann
Cc: Thomas Gleixner
Cc: Mike Galbraith
Signed-off-by: Greg Kroah-Hartman -
g_webcam uses v4l[2] interfaces, so it should depend on VIDEO_DEV.
ERROR: "v4l2_event_unsubscribe" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_event_queue" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "video_device_release" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "video_usercopy" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_event_dequeue" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "video_register_device" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "video_device_alloc" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_event_subscribe" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "video_unregister_device" [drivers/usb/gadget/g_webcam.ko] ndefined!
ERROR: "v4l2_event_pending" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_fh_init" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_event_init" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "video_devdata" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_event_alloc" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_fh_add" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_fh_del" [drivers/usb/gadget/g_webcam.ko] undefined!
ERROR: "v4l2_fh_exit" [drivers/usb/gadget/g_webcam.ko] undefined!Signed-off-by: Randy Dunlap
Acked-by: Laurent Pinchart
Signed-off-by: Greg Kroah-Hartman -
Remove multi-urb write from the generic driver and simplify the
prepare_write_buffer prototype:int (*prepare_write_buffer)(struct usb_serial_port *port,
void *dest, size_t size);The default implementation simply fills dest with data from port write
fifo but drivers can override it if they need to process the outgoing
data (e.g. add headers).Turn ftdi_sio into a generic fifo-based driver, which lowers CPU usage
significantly for small writes while retaining maximum throughput.Signed-off-by: Johan Hovold
Signed-off-by: Greg Kroah-Hartman -
Reimplement fifo-based writes in the generic driver using a multiple
pre-allocated urb scheme.In contrast to multi-urb writes, no allocations (of urbs or buffers) are
made during run-time and there is less pressure on the host stack
queues as currently only two urbs are used (implementation is generic
and can handle more than two urbs as well, though).Initial tests using ftdi_sio show that the implementation achieves the
same (maximum) throughput at high baudrates as multi-urb writes. The CPU
usage is much lower than for multi-urb writes for small write requests
and only slightly higher for large (e.g. 2k) requests (due to extra copy
via fifo?).Also outperforms multi-urb writes for small write requests on an
embedded arm-9 system, where multi-urb writes are CPU-bound at high
baudrates (perf reveals that a lot of time is spent in the host stack
enqueue function -- could perhaps be a bug as well).Keeping the original write_urb, buffer and flag for now as there are
other drivers depending on them.Signed-off-by: Johan Hovold
Signed-off-by: Greg Kroah-Hartman -
Kill circular buffers for tx and rx as well as read work thread, and
switch to generic kfifo-based write implementation.This is an example of how prepare_write_buffer and process_read_urb can
be used to handle protocols with packet headers.Please note the diffstat which shows that the same functionality is now
provided using only a tenth of the code (including whitespace and
comments, though).Tested-by: Naranjo, Manuel Francisco
Signed-off-by: Johan Hovold
Signed-off-by: Greg Kroah-Hartman -
The original SIO devices require a control byte for every packet
written. Clean up the unnecessarily messy implementation of this.Signed-off-by: Johan Hovold
Signed-off-by: Greg Kroah-Hartman -
Switch to the generic, multi-urb, write implementation.
Note that this will also make it fairly easy to use the generic
fifo-based write implementation: simply unset the multi_urb_write flag
and modify prepare_write_buffer (or unset if not using a legacy SIO
device). This may be desirable for instance on an embedded system where
optimal throughput at high baudrates may not be as important as other
factors (e.g. no allocations during runtime and less pressure on host
stack).Signed-off-by: Johan Hovold
Signed-off-by: Greg Kroah-Hartman -
Use the resource_size function instead of manually calculating the
resource size. This reduces the chance of introducing off-by-one
errors.Signed-off-by: Tobias Klauser
Signed-off-by: Greg Kroah-Hartman -
This patch (as1377) simplifies the code in usb_sg_init(), without
changing its functionality. It also removes a couple of unused fields
from the usb_sg_request structure.Signed-off-by: Alan Stern
Signed-off-by: Greg Kroah-Hartman -
This webcam gadget instantiates a UVC camera (360p and 720p resolutions
in YUYV and MJPEG).Signed-off-by: Laurent Pinchart
Signed-off-by: Greg Kroah-Hartman -
This USB video class function driver implements a video capture device from the
host's point of view. It creates a V4L2 output device on the gadget's side to
transfer data from a userspace application over USB.The UVC-specific descriptors are passed by the gadget driver to the UVC
function driver, making them completely configurable without any modification
to the function's driver code.Signed-off-by: Laurent Pinchart
Signed-off-by: Greg Kroah-Hartman -
Change the type of the URB's 'sg' pointer from a usb_sg_request to
a scatterlist. This allows drivers to submit scatter-gather lists
without using the usb_sg_wait() interface. It has the added benefit
of removing the typecasts that were added as part of patch as1368 (and
slightly decreasing the number of pointer dereferences).Signed-off-by: Matthew Wilcox
Reviewed-by: Alan Stern
Tested-by: Alan Stern
Signed-off-by: Greg Kroah-Hartman -
The stronger type-checking would have prevented a bug I had.
Signed-off-by: Matthew Wilcox
Signed-off-by: Greg Kroah-Hartman -
Converting a pipe number to a struct usb_host_endpoint pointer is a little
messy. Introduce a new convenience function to hide the mess.Signed-off-by: Matthew Wilcox
Signed-off-by: Greg Kroah-Hartman -
The Pipe Usage descriptor is needed for USB Attached SCSI
Signed-off-by: Matthew Wilcox
Signed-off-by: Greg Kroah-Hartman -
Signed-off-by: Bill Pemberton
Signed-off-by: Greg Kroah-Hartman -
Signed-off-by: Bill Pemberton
Signed-off-by: Greg Kroah-Hartman -
Signed-off-by: Bill Pemberton
Signed-off-by: Greg Kroah-Hartman -
qset_print() was not declared static although it is not used
outside of debug.cSigned-off-by: Bill Pemberton
Signed-off-by: Greg Kroah-Hartman -
These Appotech controllers are found in Picture Frames, they provide a
(buggy) emulation of a cdrom drive which contains the windows software
Uploading of pictures happens over the corresponding /dev/sg device.Signed-off-by: Hans de Goede
Cc: stable
Signed-off-by: Greg Kroah-Hartman -
The max packet length bit mask used for isochronous endpoints
should be 0x7FF instead of 0x8FF. 0x8FF will actually clear
higher-order bits in the max packet length field.This patch applies to 2.6.34-rc6.
Signed-off-by: Dinh Nguyen
Cc: stable
Signed-off-by: Greg Kroah-Hartman -
AM3517 is based on ES3.1 thus ES2.x related programming is invalid
for it so updating ES2.x programming.Also fixed below checkpatch warning:
WARNING: unnecessary whitespace before a quoted newlineSigned-off-by: Ajay Kumar Gupta
Signed-off-by: Greg Kroah-Hartman -
Fixes below compilation warning:
drivers/usb/host/ehci-hcd.c:425:
warning: 'ehci_port_power' defined but not usedSigned-off-by: Ajay Kumar Gupta
Signed-off-by: Greg Kroah-Hartman -
Another CDC-ACM + vendor specific interface layout.
Signed-off-by: Dan Williams
Cc: stable
Signed-off-by: Greg Kroah-Hartman -
this patch adds ZTE modem devices
Signed-off-by: Joey
Cc: stable
Signed-off-by: Greg Kroah-Hartman -
When a device is disconnected, xhci_free_virt_device() is called. Ramya
found that if the device had streams enabled, and then the driver freed
the streams with a call to usb_free_streams(), then about a minute after
he had called this, his machine crashed with a Bad DMA error. It turns
out that xhci_free_virt_device() would attempt to free the endpoint's
stream_info data structure if it wasn't NULL, and the free streams
function was not setting it to NULL after freeing it.Signed-off-by: Sarah Sharp
Tested-by: Ramya Desai
Signed-off-by: Greg Kroah-Hartman -
Now that URB_NO_SETUP_DMA_MAP is no longer in use, this patch (as1376)
removes all references to it.Signed-off-by: Alan Stern
Signed-off-by: Greg Kroah-Hartman -
This patch (as1375) eliminates the usb_host_ss_ep_comp structure used
for storing a dynamically-allocated copy of the SuperSpeed endpoint
companion descriptor. The SuperSpeed descriptor is placed directly in
the usb_host_endpoint structure, alongside the standard endpoint
descriptor.Signed-off-by: Alan Stern
Signed-off-by: Sarah Sharp
Signed-off-by: Greg Kroah-Hartman -
This patch (as1374) cleans up a few loose ends in the
include/linux/usb/ch11.h header file and exports it to userspace.Signed-off-by: Alan Stern
Cc: Eric Lescouet
Signed-off-by: Greg Kroah-Hartman -
This patch (as1373) fixes a couple of drivers outside the USB
subtree. Devices are now disabled or enabled for autosuspend by
calling a core function instead of setting a flag.Signed-off-by: Alan Stern
Cc: Stephen Rothwell
Signed-off-by: Greg Kroah-Hartman -
Otherwise reloads will fail.
Signed-off-by: Peter Korsgaard
Signed-off-by: Greg Kroah-Hartman -
BKL isn't anymore present into this file thus it is no necessary still include smp_lock.h.
Signed-off-by: Alessio Igor Bogani
Signed-off-by: Greg Kroah-Hartman -
BKL is not needed here because necessary locking is already provided
by mutex sisusb->lock.Signed-off-by: Alessio Igor Bogani
Signed-off-by: Greg Kroah-Hartman -
This patch adds handling of the "Start/Stop Unit" SCSI request
to simulate media ejection.Signed-off-by: Fabien Chouteau
Signed-off-by: Greg Kroah-Hartman -
This patch adds a sysfs entry (/sys/devices/platform/_UDC_/gadget/suspended) to
show the suspend state of an USB composite gadget.Signed-off-by: Fabien Chouteau
Signed-off-by: Greg Kroah-Hartman -
Fix usb sparse warnings:
drivers/usb/host/isp1362-hcd.c:2220:50: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:43:24: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:49:24: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:161:24: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:198:16: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:319:31: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:1231:33: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-pci.c:177:23: warning: non-ANSI function declaration of function 'xhci_register_pci'
drivers/usb/host/xhci-pci.c:182:26: warning: non-ANSI function declaration of function 'xhci_unregister_pci'
drivers/usb/host/xhci-ring.c:342:32: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-ring.c:525:34: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-ring.c:1009:32: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-ring.c:1031:32: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-ring.c:1041:16: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-ring.c:1096:30: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-ring.c:1100:27: warning: Using plain integer as NULL pointer
drivers/usb/host/xhci-mem.c:224:27: warning: symbol 'xhci_alloc_container_ctx' was not declared. Should it be static?
drivers/usb/host/xhci-mem.c:242:6: warning: symbol 'xhci_free_container_ctx' was not declared. Should it be static?Signed-off-by: Randy Dunlap
Cc: Lothar Wassmann
Signed-off By: Sarah Sharp
Signed-off-by: Greg Kroah-Hartman -
usb_gat_configuratio() used two pointers to point to the same
memory. Code simplified, by removing one of them.Signed-off-by: Michal Nazarewicz
Cc: Alan Stern
Signed-off-by: Greg Kroah-Hartman -
Signed-off-by: Yauheni Kaliuta
Signed-off-by: Greg Kroah-Hartman -
Signed-off-by: Yauheni Kaliuta
Signed-off-by: Greg Kroah-Hartman