Commit 4f3a1d59 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge kroah.com:/home/linux/BK/bleed-2.5

into kroah.com:/home/linux/BK/gregkh-2.6
parents 157e3d70 303d082c
...@@ -2796,7 +2796,7 @@ E: gt8134b@prism.gatech.edu ...@@ -2796,7 +2796,7 @@ E: gt8134b@prism.gatech.edu
D: Dosemu D: Dosemu
N: Duncan Sands N: Duncan Sands
E: duncan.sands@wanadoo.fr E: duncan.sands@free.fr
W: http://topo.math.u-psud.fr/~sands W: http://topo.math.u-psud.fr/~sands
D: Alcatel SpeedTouch USB driver D: Alcatel SpeedTouch USB driver
S: 69 rue Dunois S: 69 rue Dunois
......
...@@ -468,6 +468,15 @@ contact NetChip Technologies for development boards and product ...@@ -468,6 +468,15 @@ contact NetChip Technologies for development boards and product
information. information.
</para> </para>
<para>For users of Intel's PXA 2xx series processors,
a <filename>pxa2xx_udc</filename> driver is available.
</para>
<para>At this writing, there are people at work on drivers in
this framework for several other USB device controllers,
with plans to make many of them be widely available.
</para>
<!-- !Edrivers/usb/gadget/net2280.c --> <!-- !Edrivers/usb/gadget/net2280.c -->
<para>A partial USB simulator, <para>A partial USB simulator,
...@@ -500,7 +509,7 @@ for usb controller hardware), other gadget drivers exist. ...@@ -500,7 +509,7 @@ for usb controller hardware), other gadget drivers exist.
<para>There's an <emphasis>ethernet</emphasis> gadget <para>There's an <emphasis>ethernet</emphasis> gadget
driver, which implements one of the most useful driver, which implements one of the most useful
<emphasis>Communications Device Class</emphasis> models. <emphasis>Communications Device Class</emphasis> (CDC) models.
One of the standards for cable modem interoperability even One of the standards for cable modem interoperability even
specifies the use of this ethernet model as one of two specifies the use of this ethernet model as one of two
mandatory options. mandatory options.
...@@ -509,6 +518,11 @@ an Ethernet adapter. ...@@ -509,6 +518,11 @@ an Ethernet adapter.
It provides access to a network where the gadget's CPU is one host, It provides access to a network where the gadget's CPU is one host,
which could easily be bridging, routing, or firewalling which could easily be bridging, routing, or firewalling
access to other networks. access to other networks.
Since some hardware can't fully implement the CDC Ethernet
requirements, this driver also implements a "good parts only"
subset of CDC Ethernet.
(That subset doesn't advertise itself as CDC Ethernet,
to avoid creating problems.)
</para> </para>
<para>There is also support for user mode gadget drivers, <para>There is also support for user mode gadget drivers,
...@@ -522,6 +536,17 @@ controller driver is available many applications for it ...@@ -522,6 +536,17 @@ controller driver is available many applications for it
won't require new kernel mode software. won't require new kernel mode software.
</para> </para>
<para>There's a USB Mass Storage class driver, which provides
a different solution for interoperability with systems such
as MS-Windows and MacOS.
That <emphasis>File-backed Storage</emphasis> driver uses a
file or block device as backing store for a drive,
like the <filename>loop</filename> driver.
The USB host uses the BBB, CB, or CBI versions of the mass
storage class specification, using transparent SCSI commands
to access the data from the backing store.
</para>
<para>Support for other kinds of gadget is expected to <para>Support for other kinds of gadget is expected to
be developed and contributed be developed and contributed
over time, as this driver framework evolves. over time, as this driver framework evolves.
......
...@@ -209,7 +209,7 @@ static int skel_probe(struct usb_interface *interface, ...@@ -209,7 +209,7 @@ static int skel_probe(struct usb_interface *interface,
The driver now needs to verify that this device is actually one that it The driver now needs to verify that this device is actually one that it
can accept. If so, it returns 0. can accept. If so, it returns 0.
If not, or if any error occurs during initialization, an errorcode If not, or if any error occurs during initialization, an errorcode
(such as <literal>-ENOMEM<literal> or <literal>-ENODEV<literal>) (such as <literal>-ENOMEM</literal> or <literal>-ENODEV</literal>)
is returned from the probe function. is returned from the probe function.
</para> </para>
<para> <para>
...@@ -327,6 +327,7 @@ if (!retval) { ...@@ -327,6 +327,7 @@ if (!retval) {
talk to the device, the release function in the driver is called. In this talk to the device, the release function in the driver is called. In this
function we decrement our private usage count and wait for possible function we decrement our private usage count and wait for possible
pending writes: pending writes:
</para>
<programlisting> <programlisting>
/* decrement our usage count for the device */ /* decrement our usage count for the device */
--skel->open_count; --skel->open_count;
......
...@@ -212,7 +212,7 @@ S: Maintained ...@@ -212,7 +212,7 @@ S: Maintained
ALCATEL SPEEDTOUCH USB DRIVER ALCATEL SPEEDTOUCH USB DRIVER
P: Duncan Sands P: Duncan Sands
M: duncan.sands@wanadoo.fr M: duncan.sands@free.fr
L: linux-usb-users@lists.sourceforge.net L: linux-usb-users@lists.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/SpeedTouch/ W: http://www.linux-usb.org/SpeedTouch/
......
...@@ -33,10 +33,8 @@ config USB ...@@ -33,10 +33,8 @@ config USB
It doesn't normally hurt to select them all if you are not certain. It doesn't normally hurt to select them all if you are not certain.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called usbcore.
The module will be called usbcore. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
source "drivers/usb/core/Kconfig" source "drivers/usb/core/Kconfig"
...@@ -82,10 +80,8 @@ config USB_USS720 ...@@ -82,10 +80,8 @@ config USB_USS720
Say Y here if you own an USS-720 USB->Parport cable and intend to Say Y here if you own an USS-720 USB->Parport cable and intend to
connect anything other than a printer to it. connect anything other than a printer to it.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called uss720.
The module will be called uss720. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
source "drivers/usb/serial/Kconfig" source "drivers/usb/serial/Kconfig"
......
...@@ -159,7 +159,10 @@ static void usblp_dump(struct usblp *usblp) { ...@@ -159,7 +159,10 @@ static void usblp_dump(struct usblp *usblp) {
dbg("usblp=0x%p", usblp); dbg("usblp=0x%p", usblp);
dbg("dev=0x%p", usblp->dev); dbg("dev=0x%p", usblp->dev);
dbg("present=%d", usblp->present); dbg("present=%d", usblp->present);
dbg("buf=0x%p", usblp->buf); dbg("readbuf=0x%p", usblp->readbuf);
dbg("writebuf=0x%p", usblp->writebuf);
dbg("readurb=0x%p", usblp->readurb);
dbg("writeurb=0x%p", usblp->writeurb);
dbg("readcount=%d", usblp->readcount); dbg("readcount=%d", usblp->readcount);
dbg("ifnum=%d", usblp->ifnum); dbg("ifnum=%d", usblp->ifnum);
for (p = USBLP_FIRST_PROTOCOL; p <= USBLP_LAST_PROTOCOL; p++) { for (p = USBLP_FIRST_PROTOCOL; p <= USBLP_LAST_PROTOCOL; p++) {
......
This diff is collapsed.
...@@ -859,8 +859,7 @@ static int hub_port_debounce(struct usb_device *hub, int port) ...@@ -859,8 +859,7 @@ static int hub_port_debounce(struct usb_device *hub, int port)
} }
} }
/* XXX Replace this with dbg() when 2.6 is about to ship. */ dev_dbg (hubdev (hub),
dev_info (hubdev (hub),
"debounce: port %d: delay %dms stable %d status 0x%x\n", "debounce: port %d: delay %dms stable %d status 0x%x\n",
port + 1, delay_time, stable_count, portstatus); port + 1, delay_time, stable_count, portstatus);
......
...@@ -1424,14 +1424,15 @@ static int usb_device_suspend(struct device *dev, u32 state) ...@@ -1424,14 +1424,15 @@ static int usb_device_suspend(struct device *dev, u32 state)
struct usb_interface *intf; struct usb_interface *intf;
struct usb_driver *driver; struct usb_driver *driver;
if ((dev->driver == &usb_generic_driver) || if ((dev->driver == NULL) ||
(dev->driver == &usb_generic_driver) ||
(dev->driver_data == &usb_generic_driver_data)) (dev->driver_data == &usb_generic_driver_data))
return 0; return 0;
intf = to_usb_interface(dev); intf = to_usb_interface(dev);
driver = to_usb_driver(dev->driver); driver = to_usb_driver(dev->driver);
if (driver && driver->suspend) if (driver->suspend)
return driver->suspend(intf, state); return driver->suspend(intf, state);
return 0; return 0;
} }
...@@ -1441,14 +1442,15 @@ static int usb_device_resume(struct device *dev) ...@@ -1441,14 +1442,15 @@ static int usb_device_resume(struct device *dev)
struct usb_interface *intf; struct usb_interface *intf;
struct usb_driver *driver; struct usb_driver *driver;
if ((dev->driver == &usb_generic_driver) || if ((dev->driver == NULL) ||
(dev->driver == &usb_generic_driver) ||
(dev->driver_data == &usb_generic_driver_data)) (dev->driver_data == &usb_generic_driver_data))
return 0; return 0;
intf = to_usb_interface(dev); intf = to_usb_interface(dev);
driver = to_usb_driver(dev->driver); driver = to_usb_driver(dev->driver);
if (driver && driver->resume) if (driver->resume)
return driver->resume(intf); return driver->resume(intf);
return 0; return 0;
} }
......
...@@ -68,7 +68,7 @@ choice ...@@ -68,7 +68,7 @@ choice
config USB_ZERO config USB_ZERO
tristate "Gadget Zero (DEVELOPMENT)" tristate "Gadget Zero (DEVELOPMENT)"
depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA250 || USB_SA1100) depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA2XX || USB_SA1100)
help help
Gadget Zero is a two-configuration device. It either sinks and Gadget Zero is a two-configuration device. It either sinks and
sources bulk data; or it loops back a configurable number of sources bulk data; or it loops back a configurable number of
...@@ -97,9 +97,9 @@ config USB_ZERO_NET2280 ...@@ -97,9 +97,9 @@ config USB_ZERO_NET2280
depends on USB_ZERO && (USB_NET2280 || USB_DUMMY_HCD) depends on USB_ZERO && (USB_NET2280 || USB_DUMMY_HCD)
default y default y
config USB_ZERO_PXA250 config USB_ZERO_PXA2XX
bool bool
depends on USB_ZERO && USB_PXA250 depends on USB_ZERO && USB_PXA2XX
default y default y
config USB_ZERO_SA1100 config USB_ZERO_SA1100
...@@ -110,22 +110,28 @@ config USB_ZERO_SA1100 ...@@ -110,22 +110,28 @@ config USB_ZERO_SA1100
config USB_ETH config USB_ETH
tristate "Ethernet Gadget" tristate "Ethernet Gadget"
depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA250 || USB_SA1100) depends on USB_GADGET && (USB_DUMMY_HCD || USB_NET2280 || USB_PXA2XX || USB_SA1100)
help help
This driver implements the "Communication Device Class" (CDC) This driver implements Ethernet style communication, in either
Ethernet Control Model. That protocol is often avoided with pure of two ways:
Ethernet adapters, in favor of simpler vendor-specific hardware,
but is widely supported by firmware for smart network devices. - The "Communication Device Class" (CDC) Ethernet Control Model.
That protocol is often avoided with pure Ethernet adapters, in
favor of simpler vendor-specific hardware, but is widely
supported by firmware for smart network devices.
- On hardware can't implement that protocol, a simpler approach
is used, placing fewer demands on USB.
Within the USB device, this gadget driver exposes a network device Within the USB device, this gadget driver exposes a network device
"usbX", where X depends on what other networking devices you have. "usbX", where X depends on what other networking devices you have.
Treat it like a two-node Ethernet link: host, and gadget. Treat it like a two-node Ethernet link: host, and gadget.
The Linux-USB host-side "usbnet" driver interoperates with this The Linux-USB host-side "usbnet" driver interoperates with this
driver, so that deep I/O queues can be supported. (On 2.4 kernels, driver, so that deep I/O queues can be supported. On 2.4 kernels,
use "CDCEther" instead.) Deep queues are especially important with use "CDCEther" instead, if you're using the CDC option. That CDC
high speed devices. It should also interoperate with standard CDC mode should also interoperate with standard CDC Ethernet class
Ethernet class drivers on other host operating systems. drivers on other host operating systems.
Say "y" to link the driver statically, or "m" to build a Say "y" to link the driver statically, or "m" to build a
dynamically linked module called "g_ether". dynamically linked module called "g_ether".
...@@ -137,9 +143,9 @@ config USB_ETH_NET2280 ...@@ -137,9 +143,9 @@ config USB_ETH_NET2280
depends on USB_ETH && (USB_NET2280 || USB_DUMMY_HCD) depends on USB_ETH && (USB_NET2280 || USB_DUMMY_HCD)
default y default y
config USB_ETH_PXA250 config USB_ETH_PXA2XX
bool bool
depends on USB_ETH && USB_PXA250 depends on USB_ETH && USB_PXA2XX
default y default y
config USB_ETH_SA1100 config USB_ETH_SA1100
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/uts.h> #include <linux/uts.h>
#include <linux/version.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
......
...@@ -20,10 +20,8 @@ config USB_HID ...@@ -20,10 +20,8 @@ config USB_HID
If unsure, say Y. If unsure, say Y.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called hid.
The module will be called hid. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
comment "Input core support is needed for USB HID input layer or HIDBP support" comment "Input core support is needed for USB HID input layer or HIDBP support"
depends on USB && INPUT=n depends on USB && INPUT=n
...@@ -104,10 +102,8 @@ config USB_KBD ...@@ -104,10 +102,8 @@ config USB_KBD
This is almost certainly not what you want. This is mostly This is almost certainly not what you want. This is mostly
useful for embedded applications or simple keyboards. useful for embedded applications or simple keyboards.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called usbkbd.
The module will be called usbkbd. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
If even remotely unsure, say N. If even remotely unsure, say N.
...@@ -122,10 +118,8 @@ config USB_MOUSE ...@@ -122,10 +118,8 @@ config USB_MOUSE
This is almost certainly not what you want. This is mostly This is almost certainly not what you want. This is mostly
useful for embedded applications or simple mice. useful for embedded applications or simple mice.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called usbmouse.
The module will be called usbmouse. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
If even remotely unsure, say N. If even remotely unsure, say N.
...@@ -140,10 +134,8 @@ config USB_AIPTEK ...@@ -140,10 +134,8 @@ config USB_AIPTEK
(CONFIG_INPUT_MOUSEDEV) and/or "Event interface support" (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
(CONFIG_INPUT_EVDEV) as well. (CONFIG_INPUT_EVDEV) as well.
This driver is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called aiptek.
The module will be called aiptek. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_WACOM config USB_WACOM
tristate "Wacom Intuos/Graphire tablet support" tristate "Wacom Intuos/Graphire tablet support"
...@@ -154,10 +146,8 @@ config USB_WACOM ...@@ -154,10 +146,8 @@ config USB_WACOM
(CONFIG_INPUT_MOUSEDEV) and/or "Event interface support" (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
(CONFIG_INPUT_EVDEV) as well. (CONFIG_INPUT_EVDEV) as well.
This driver is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called wacom.
The module will be called wacom. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_KBTAB config USB_KBTAB
tristate "KB Gear JamStudio tablet support" tristate "KB Gear JamStudio tablet support"
...@@ -168,10 +158,8 @@ config USB_KBTAB ...@@ -168,10 +158,8 @@ config USB_KBTAB
(CONFIG_INPUT_MOUSEDEV) and/or "Event interface support" (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
(CONFIG_INPUT_EVDEV) as well. (CONFIG_INPUT_EVDEV) as well.
This driver is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called kbtab.
The module will be called kbtab.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_POWERMATE config USB_POWERMATE
tristate "Griffin PowerMate and Contour Jog support" tristate "Griffin PowerMate and Contour Jog support"
...@@ -184,10 +172,8 @@ config USB_POWERMATE ...@@ -184,10 +172,8 @@ config USB_POWERMATE
You can download userspace tools from http://sowerbutts.com/powermate/ You can download userspace tools from http://sowerbutts.com/powermate/
This driver is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called powermate.
The module will be called powermate. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_XPAD config USB_XPAD
tristate "X-Box gamepad support" tristate "X-Box gamepad support"
...@@ -200,8 +186,6 @@ config USB_XPAD ...@@ -200,8 +186,6 @@ config USB_XPAD
For information about how to connect the X-Box pad to USB, see For information about how to connect the X-Box pad to USB, see
Documentation/input/xpad.txt. Documentation/input/xpad.txt.
This driver is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called xpad.
The module will be called xpad. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
...@@ -14,10 +14,8 @@ config USB_DABUSB ...@@ -14,10 +14,8 @@ config USB_DABUSB
isochronous transactions. URB's are explained in isochronous transactions. URB's are explained in
<file:Documentation/usb/URB.txt>. <file:Documentation/usb/URB.txt>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called dabusb.
The module will be called dabusb. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
comment "Video4Linux support is needed for USB Multimedia device support" comment "Video4Linux support is needed for USB Multimedia device support"
depends on USB && VIDEO_DEV=n depends on USB && VIDEO_DEV=n
...@@ -33,10 +31,8 @@ config USB_VICAM ...@@ -33,10 +31,8 @@ config USB_VICAM
Information on this API and pointers to "v4l" programs may be found Information on this API and pointers to "v4l" programs may be found
on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>. on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called vicam.
The module will be called vicam. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_DSBR config USB_DSBR
tristate "D-Link USB FM radio support (EXPERIMENTAL)" tristate "D-Link USB FM radio support (EXPERIMENTAL)"
...@@ -53,10 +49,8 @@ config USB_DSBR ...@@ -53,10 +49,8 @@ config USB_DSBR
"v4l" programs may be found on the WWW at "v4l" programs may be found on the WWW at
<http://roadrunner.swansea.uk.linux.org/v4l.shtml>. <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called dsbr100.
The module will be called dsbr100. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_IBMCAM config USB_IBMCAM
tristate "USB IBM (Xirlink) C-it Camera support" tristate "USB IBM (Xirlink) C-it Camera support"
...@@ -72,13 +66,12 @@ config USB_IBMCAM ...@@ -72,13 +66,12 @@ config USB_IBMCAM
"v4l" programs may be found on the WWW at "v4l" programs may be found on the WWW at
<http://roadrunner.swansea.uk.linux.org/v4l.shtml>. <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called ibmcam.
The module will be called ibmcam. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>. This This camera has several configuration options which
camera has several configuration options which can be specified when can be specified when you load the module. Read
you load the module. Read <file:Documentation/usb/ibmcam.txt> to <file:Documentation/usb/ibmcam.txt> to learn more.
learn more.
config USB_KONICAWC config USB_KONICAWC
tristate "USB Konica Webcam support" tristate "USB Konica Webcam support"
...@@ -93,10 +86,8 @@ config USB_KONICAWC ...@@ -93,10 +86,8 @@ config USB_KONICAWC
"v4l" programs may be found on the WWW at "v4l" programs may be found on the WWW at
<http://roadrunner.swansea.uk.linux.org/v4l.shtml>. <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called konicawc.
The module will be called konicawc. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
config USB_OV511 config USB_OV511
tristate "USB OV511 Camera support" tristate "USB OV511 Camera support"
...@@ -111,10 +102,8 @@ config USB_OV511 ...@@ -111,10 +102,8 @@ config USB_OV511
Information on this API and pointers to "v4l" programs may be found Information on this API and pointers to "v4l" programs may be found
on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>. on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called ov511.
The module will be called ov511. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_PWC config USB_PWC
tristate "USB Philips Cameras" tristate "USB Philips Cameras"
...@@ -152,10 +141,8 @@ config USB_PWC ...@@ -152,10 +141,8 @@ config USB_PWC
Information on this API and pointers to "v4l" programs may be found Information on this API and pointers to "v4l" programs may be found
on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>. on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called pwc.
The module will be called pwc. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_SE401 config USB_SE401
tristate "USB SE401 Camera support" tristate "USB SE401 Camera support"
...@@ -170,10 +157,8 @@ config USB_SE401 ...@@ -170,10 +157,8 @@ config USB_SE401
Information on this API and pointers to "v4l" programs may be found Information on this API and pointers to "v4l" programs may be found
on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>. on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called se401.
The module will be called se401. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
config USB_STV680 config USB_STV680
tristate "USB STV680 (Pencam) Camera support" tristate "USB STV680 (Pencam) Camera support"
...@@ -189,8 +174,6 @@ config USB_STV680 ...@@ -189,8 +174,6 @@ config USB_STV680
Information on this API and pointers to "v4l" programs may be found Information on this API and pointers to "v4l" programs may be found
on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>. on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called stv680.
The module will be called stv680. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
...@@ -89,7 +89,6 @@ static int dabusb_add_buf_tail (pdabusb_t s, struct list_head *dst, struct list_ ...@@ -89,7 +89,6 @@ static int dabusb_add_buf_tail (pdabusb_t s, struct list_head *dst, struct list_
static void dump_urb (struct urb *urb) static void dump_urb (struct urb *urb)
{ {
dbg("urb :%p", urb); dbg("urb :%p", urb);
dbg("next :%p", urb->next);
dbg("dev :%p", urb->dev); dbg("dev :%p", urb->dev);
dbg("pipe :%08X", urb->pipe); dbg("pipe :%08X", urb->pipe);
dbg("status :%d", urb->status); dbg("status :%d", urb->status);
...@@ -728,7 +727,7 @@ static int dabusb_probe (struct usb_interface *intf, ...@@ -728,7 +727,7 @@ static int dabusb_probe (struct usb_interface *intf,
pdabusb_t s; pdabusb_t s;
dbg("dabusb: probe: vendor id 0x%x, device id 0x%x ifnum:%d", dbg("dabusb: probe: vendor id 0x%x, device id 0x%x ifnum:%d",
usbdev->descriptor.idVendor, usbdev->descriptor.idProduct, ifnum); usbdev->descriptor.idVendor, usbdev->descriptor.idProduct, intf->altsetting->desc.bInterfaceNumber);
/* We don't handle multiple configurations */ /* We don't handle multiple configurations */
if (usbdev->descriptor.bNumConfigurations != 1) if (usbdev->descriptor.bNumConfigurations != 1)
...@@ -762,7 +761,7 @@ static int dabusb_probe (struct usb_interface *intf, ...@@ -762,7 +761,7 @@ static int dabusb_probe (struct usb_interface *intf,
goto reject; goto reject;
} }
} }
dbg("bound to interface: %d", ifnum); dbg("bound to interface: %d", intf->altsetting->desc.bInterfaceNumber);
usb_set_intfdata (intf, s); usb_set_intfdata (intf, s);
up (&s->mutex); up (&s->mutex);
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/mm.h>
#include <asm/io.h> #include <asm/io.h>
......
...@@ -1292,7 +1292,7 @@ vicam_probe( struct usb_interface *intf, const struct usb_device_id *id) ...@@ -1292,7 +1292,7 @@ vicam_probe( struct usb_interface *intf, const struct usb_device_id *id)
interface = &intf->altsetting[0]; interface = &intf->altsetting[0];
DBG(KERN_DEBUG "Interface %d. has %u. endpoints!\n", DBG(KERN_DEBUG "Interface %d. has %u. endpoints!\n",
ifnum, (unsigned) (interface->desc.bNumEndpoints)); interface->desc.bInterfaceNumber, (unsigned) (interface->desc.bNumEndpoints));
endpoint = &interface->endpoint[0].desc; endpoint = &interface->endpoint[0].desc;
if ((endpoint->bEndpointAddress & 0x80) && if ((endpoint->bEndpointAddress & 0x80) &&
......
...@@ -21,7 +21,9 @@ ...@@ -21,7 +21,9 @@
******************************************************************************/ ******************************************************************************/
/* /*
* Written by Johan Verrept, maintained by Duncan Sands (duncan.sands@wanadoo.fr) * Written by Johan Verrept, maintained by Duncan Sands (duncan.sands@free.fr)
*
* 1.7+: - See the check-in logs
* *
* 1.6: - No longer opens a connection if the firmware is not loaded * 1.6: - No longer opens a connection if the firmware is not loaded
* - Added support for the speedtouch 330 * - Added support for the speedtouch 330
...@@ -84,6 +86,11 @@ ...@@ -84,6 +86,11 @@
#include <linux/usb.h> #include <linux/usb.h>
#ifdef DEBUG
#define DEBUG_ON(x) BUG_ON(x)
#else
#define DEBUG_ON(x) do { if (x); } while (0)
#endif
#ifdef VERBOSE_DEBUG #ifdef VERBOSE_DEBUG
static int udsl_print_packet (const unsigned char *data, int len); static int udsl_print_packet (const unsigned char *data, int len);
...@@ -94,9 +101,9 @@ static int udsl_print_packet (const unsigned char *data, int len); ...@@ -94,9 +101,9 @@ static int udsl_print_packet (const unsigned char *data, int len);
#define vdbg(arg...) #define vdbg(arg...)
#endif #endif
#define DRIVER_AUTHOR "Johan Verrept, Duncan Sands <duncan.sands@wanadoo.fr>" #define DRIVER_AUTHOR "Johan Verrept, Duncan Sands <duncan.sands@free.fr>"
#define DRIVER_DESC "Alcatel SpeedTouch USB driver" #define DRIVER_DESC "Alcatel SpeedTouch USB driver"
#define DRIVER_VERSION "1.6" #define DRIVER_VERSION "1.7"
static const char udsl_driver_name [] = "speedtch"; static const char udsl_driver_name [] = "speedtch";
...@@ -109,10 +116,10 @@ static const char udsl_driver_name [] = "speedtch"; ...@@ -109,10 +116,10 @@ static const char udsl_driver_name [] = "speedtch";
#define UDSL_MAX_SND_BUFS 8 #define UDSL_MAX_SND_BUFS 8
#define UDSL_MAX_RCV_BUF_SIZE 1024 /* ATM cells */ #define UDSL_MAX_RCV_BUF_SIZE 1024 /* ATM cells */
#define UDSL_MAX_SND_BUF_SIZE 1024 /* ATM cells */ #define UDSL_MAX_SND_BUF_SIZE 1024 /* ATM cells */
#define UDSL_DEFAULT_RCV_URBS 1 #define UDSL_DEFAULT_RCV_URBS 2
#define UDSL_DEFAULT_SND_URBS 1 #define UDSL_DEFAULT_SND_URBS 2
#define UDSL_DEFAULT_RCV_BUFS 2 #define UDSL_DEFAULT_RCV_BUFS 4
#define UDSL_DEFAULT_SND_BUFS 2 #define UDSL_DEFAULT_SND_BUFS 4
#define UDSL_DEFAULT_RCV_BUF_SIZE 64 /* ATM cells */ #define UDSL_DEFAULT_RCV_BUF_SIZE 64 /* ATM cells */
#define UDSL_DEFAULT_SND_BUF_SIZE 64 /* ATM cells */ #define UDSL_DEFAULT_SND_BUF_SIZE 64 /* ATM cells */
...@@ -351,7 +358,7 @@ static void udsl_extract_cells (struct udsl_instance_data *instance, unsigned ch ...@@ -351,7 +358,7 @@ static void udsl_extract_cells (struct udsl_instance_data *instance, unsigned ch
dbg ("udsl_extract_cells: buffer overrun (max_pdu: %u, skb->len %u, vcc: 0x%p)", vcc_data->max_pdu, skb->len, vcc); dbg ("udsl_extract_cells: buffer overrun (max_pdu: %u, skb->len %u, vcc: 0x%p)", vcc_data->max_pdu, skb->len, vcc);
/* discard cells already received */ /* discard cells already received */
skb_trim (skb, 0); skb_trim (skb, 0);
BUG_ON (vcc_data->max_pdu < ATM_CELL_PAYLOAD); DEBUG_ON (vcc_data->max_pdu < ATM_CELL_PAYLOAD);
} }
memcpy (skb->tail, source + ATM_CELL_HEADER, ATM_CELL_PAYLOAD); memcpy (skb->tail, source + ATM_CELL_HEADER, ATM_CELL_PAYLOAD);
...@@ -498,7 +505,7 @@ static unsigned int udsl_write_cells (unsigned int howmany, struct sk_buff *skb, ...@@ -498,7 +505,7 @@ static unsigned int udsl_write_cells (unsigned int howmany, struct sk_buff *skb,
memset (target, 0, ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER); memset (target, 0, ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER);
target += ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER; target += ATM_CELL_PAYLOAD - ATM_AAL5_TRAILER;
BUG_ON (--ctrl->num_cells); DEBUG_ON (--ctrl->num_cells);
} }
memcpy (target, ctrl->aal5_trailer, ATM_AAL5_TRAILER); memcpy (target, ctrl->aal5_trailer, ATM_AAL5_TRAILER);
...@@ -535,7 +542,7 @@ static void udsl_complete_receive (struct urb *urb, struct pt_regs *regs) ...@@ -535,7 +542,7 @@ static void udsl_complete_receive (struct urb *urb, struct pt_regs *regs)
vdbg ("udsl_complete_receive: urb 0x%p, status %d, actual_length %d, filled_cells %u, rcv 0x%p, buf 0x%p", urb, urb->status, urb->actual_length, buf->filled_cells, rcv, buf); vdbg ("udsl_complete_receive: urb 0x%p, status %d, actual_length %d, filled_cells %u, rcv 0x%p, buf 0x%p", urb, urb->status, urb->actual_length, buf->filled_cells, rcv, buf);
BUG_ON (buf->filled_cells > rcv_buf_size); DEBUG_ON (buf->filled_cells > rcv_buf_size);
/* may not be in_interrupt() */ /* may not be in_interrupt() */
spin_lock_irqsave (&instance->receive_lock, flags); spin_lock_irqsave (&instance->receive_lock, flags);
...@@ -1216,8 +1223,7 @@ static void udsl_usb_disconnect (struct usb_interface *intf) ...@@ -1216,8 +1223,7 @@ static void udsl_usb_disconnect (struct usb_interface *intf)
count = 0; count = 0;
spin_lock_irq (&instance->receive_lock); spin_lock_irq (&instance->receive_lock);
list_for_each (pos, &instance->spare_receivers) list_for_each (pos, &instance->spare_receivers)
if (++count > num_rcv_urbs) DEBUG_ON (++count > num_rcv_urbs);
panic (__FILE__ ": memory corruption detected at line %d!\n", __LINE__);
spin_unlock_irq (&instance->receive_lock); spin_unlock_irq (&instance->receive_lock);
dbg ("udsl_usb_disconnect: found %u spare receivers", count); dbg ("udsl_usb_disconnect: found %u spare receivers", count);
...@@ -1253,8 +1259,7 @@ static void udsl_usb_disconnect (struct usb_interface *intf) ...@@ -1253,8 +1259,7 @@ static void udsl_usb_disconnect (struct usb_interface *intf)
count = 0; count = 0;
spin_lock_irq (&instance->send_lock); spin_lock_irq (&instance->send_lock);
list_for_each (pos, &instance->spare_senders) list_for_each (pos, &instance->spare_senders)
if (++count > num_snd_urbs) DEBUG_ON (++count > num_snd_urbs);
panic (__FILE__ ": memory corruption detected at line %d!\n", __LINE__);
spin_unlock_irq (&instance->send_lock); spin_unlock_irq (&instance->send_lock);
dbg ("udsl_usb_disconnect: found %u spare senders", count); dbg ("udsl_usb_disconnect: found %u spare senders", count);
......
...@@ -87,7 +87,7 @@ get_endpoints (struct usbtest_dev *dev, struct usb_interface *intf) ...@@ -87,7 +87,7 @@ get_endpoints (struct usbtest_dev *dev, struct usb_interface *intf)
struct usb_host_endpoint *in, *out; struct usb_host_endpoint *in, *out;
struct usb_device *udev; struct usb_device *udev;
for (tmp = 0; tmp < intf->max_altsetting; tmp++) { for (tmp = 0; tmp < intf->num_altsetting; tmp++) {
unsigned ep; unsigned ep;
in = out = 0; in = out = 0;
......
This diff is collapsed.
This diff is collapsed.
...@@ -341,7 +341,7 @@ static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs) ...@@ -341,7 +341,7 @@ static void ipaq_read_bulk_callback(struct urb *urb, struct pt_regs *regs)
usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, data); usb_serial_debug_data (__FILE__, __FUNCTION__, urb->actual_length, data);
tty = port->tty; tty = port->tty;
if (urb->actual_length) { if (tty && urb->actual_length) {
for (i = 0; i < urb->actual_length ; ++i) { for (i = 0; i < urb->actual_length ; ++i) {
/* if we insert more than TTY_FLIPBUF_SIZE characters, we drop them. */ /* if we insert more than TTY_FLIPBUF_SIZE characters, we drop them. */
if(tty->flip.count >= TTY_FLIPBUF_SIZE) { if(tty->flip.count >= TTY_FLIPBUF_SIZE) {
......
...@@ -871,8 +871,10 @@ static void destroy_serial (struct kobject *kobj) ...@@ -871,8 +871,10 @@ static void destroy_serial (struct kobject *kobj)
/* the ports are cleaned up and released in port_release() */ /* the ports are cleaned up and released in port_release() */
for (i = 0; i < serial->num_ports; ++i) for (i = 0; i < serial->num_ports; ++i)
if (serial->port[i]->dev.parent != NULL) if (serial->port[i]->dev.parent != NULL) {
device_unregister(&serial->port[i]->dev); device_unregister(&serial->port[i]->dev);
serial->port[i] = NULL;
}
/* If this is a "fake" port, we have to clean it up here, as it will /* If this is a "fake" port, we have to clean it up here, as it will
* not get cleaned up in port_release() as it was never registered with * not get cleaned up in port_release() as it was never registered with
......
...@@ -15,10 +15,8 @@ config USB_STORAGE ...@@ -15,10 +15,8 @@ config USB_STORAGE
similar devices. This driver may also be used for some cameras and similar devices. This driver may also be used for some cameras and
card readers. card readers.
This code is also available as a module ( = code which can be To compile this driver as a module, say M here: the
inserted in and removed from the running kernel whenever you want). module will be called usb-storage.
The module will be called usb-storage. If you want to compile it
as a module, say M here and read <file:Documentation/modules.txt>.
config USB_STORAGE_DEBUG config USB_STORAGE_DEBUG
bool "USB Mass Storage verbose debug" bool "USB Mass Storage verbose debug"
......
...@@ -289,7 +289,7 @@ UNUSUAL_DEV( 0x054c, 0x006d, 0x0000, 0x9999, ...@@ -289,7 +289,7 @@ UNUSUAL_DEV( 0x054c, 0x006d, 0x0000, 0x9999,
UNUSUAL_DEV( 0x057b, 0x0000, 0x0000, 0x0299, UNUSUAL_DEV( 0x057b, 0x0000, 0x0000, 0x0299,
"Y-E Data", "Y-E Data",
"Flashbuster-U", "Flashbuster-U",
US_SC_UFI, US_PR_CB, NULL, US_SC_DEVICE, US_PR_CB, NULL,
US_FL_SINGLE_LUN), US_FL_SINGLE_LUN),
UNUSUAL_DEV( 0x057b, 0x0000, 0x0300, 0x9999, UNUSUAL_DEV( 0x057b, 0x0000, 0x0300, 0x9999,
......
...@@ -80,7 +80,6 @@ struct usb_host_interface { ...@@ -80,7 +80,6 @@ struct usb_host_interface {
* @act_altsetting: index of current altsetting. this number is always * @act_altsetting: index of current altsetting. this number is always
* less than num_altsetting. after the device is configured, each * less than num_altsetting. after the device is configured, each
* interface uses its default setting of zero. * interface uses its default setting of zero.
* @max_altsetting: the max number of altsettings for this interface.
* @driver: the USB driver that is bound to this interface. * @driver: the USB driver that is bound to this interface.
* @minor: the minor number assigned to this interface, if this * @minor: the minor number assigned to this interface, if this
* interface is bound to a driver that uses the USB major number. * interface is bound to a driver that uses the USB major number.
...@@ -118,7 +117,6 @@ struct usb_interface { ...@@ -118,7 +117,6 @@ struct usb_interface {
unsigned act_altsetting; /* active alternate setting */ unsigned act_altsetting; /* active alternate setting */
unsigned num_altsetting; /* number of alternate settings */ unsigned num_altsetting; /* number of alternate settings */
unsigned max_altsetting; /* total memory allocated */
struct usb_driver *driver; /* driver */ struct usb_driver *driver; /* driver */
int minor; /* minor number this interface is bound to */ int minor; /* minor number this interface is bound to */
......
...@@ -72,9 +72,9 @@ struct usb_request { ...@@ -72,9 +72,9 @@ struct usb_request {
unsigned length; unsigned length;
dma_addr_t dma; dma_addr_t dma;
unsigned no_interrupt : 1, unsigned no_interrupt:1;
zero : 1, unsigned zero:1;
short_not_ok : 1; unsigned short_not_ok:1;
void (*complete)(struct usb_ep *ep, void (*complete)(struct usb_ep *ep,
struct usb_request *req); struct usb_request *req);
...@@ -122,9 +122,11 @@ struct usb_ep_ops { ...@@ -122,9 +122,11 @@ struct usb_ep_ops {
/** /**
* struct usb_ep - device side representation of USB endpoint * struct usb_ep - device side representation of USB endpoint
* @name:identifier for the endpoint, such as "ep-a" or "ep9in-bulk" * @name:identifier for the endpoint, such as "ep-a" or "ep9in-bulk"
* @ops: Function pointers used to access hardware-specific operations.
* @ep_list:the gadget's ep_list holds all of its endpoints * @ep_list:the gadget's ep_list holds all of its endpoints
* @maxpacket:the maximum packet size used on this endpoint, as * @maxpacket:The maximum packet size used on this endpoint. The initial
* configured when the endpoint was enabled. * value can sometimes be reduced (hardware allowing), according to
* the endpoint descriptor used to configure the endpoint.
* @driver_data:for use by the gadget driver. all other fields are * @driver_data:for use by the gadget driver. all other fields are
* read-only to gadget drivers. * read-only to gadget drivers.
* *
...@@ -138,7 +140,7 @@ struct usb_ep { ...@@ -138,7 +140,7 @@ struct usb_ep {
const char *name; const char *name;
const struct usb_ep_ops *ops; const struct usb_ep_ops *ops;
struct list_head ep_list; struct list_head ep_list;
unsigned maxpacket : 16; unsigned maxpacket:16;
}; };
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
...@@ -443,18 +445,21 @@ struct usb_gadget_ops { ...@@ -443,18 +445,21 @@ struct usb_gadget_ops {
/** /**
* struct usb_gadget - represents a usb slave device * struct usb_gadget - represents a usb slave device
* @ops: Function pointers used to access hardware-specific operations.
* @ep0: Endpoint zero, used when reading or writing responses to * @ep0: Endpoint zero, used when reading or writing responses to
* driver setup() requests * driver setup() requests
* @ep_list: List of other endpoints supported by the device. * @ep_list: List of other endpoints supported by the device.
* @speed: Speed of current connection to USB host. * @speed: Speed of current connection to USB host.
* @name: Identifies the controller hardware type. Used in diagnostics * @name: Identifies the controller hardware type. Used in diagnostics
* and sometimes configuration. * and sometimes configuration.
* @dev: Driver model state for this abstract device.
* *
* Gadgets have a mostly-portable "gadget driver" implementing device * Gadgets have a mostly-portable "gadget driver" implementing device
* functions, handling all usb configurations and interfaces. They * functions, handling all usb configurations and interfaces. Gadget
* also have a hardware-specific driver (accessed through ops vectors), * drivers talk to hardware-specific code indirectly, through ops vectors.
* which insulates the gadget driver from hardware details and packages * That insulates the gadget driver from hardware details, and packages
* the hardware endpoints through generic i/o queues. * the hardware endpoints through generic i/o queues. The "usb_gadget"
* and "usb_ep" interfaces provide that insulation from the hardware.
* *
* Except for the driver data, all fields in this structure are * Except for the driver data, all fields in this structure are
* read-only to the gadget driver. That driver data is part of the * read-only to the gadget driver. That driver data is part of the
...@@ -469,10 +474,6 @@ struct usb_gadget { ...@@ -469,10 +474,6 @@ struct usb_gadget {
struct list_head ep_list; /* of usb_ep */ struct list_head ep_list; /* of usb_ep */
enum usb_device_speed speed; enum usb_device_speed speed;
const char *name; const char *name;
/* use this to allocate dma-coherent buffers or set up
* dma mappings. or print diagnostics, etc.
*/
struct device dev; struct device dev;
}; };
...@@ -576,6 +577,7 @@ usb_gadget_clear_selfpowered (struct usb_gadget *gadget) ...@@ -576,6 +577,7 @@ usb_gadget_clear_selfpowered (struct usb_gadget *gadget)
* Called in a context that permits sleeping. * Called in a context that permits sleeping.
* @suspend: Invoked on USB suspend. May be called in_interrupt. * @suspend: Invoked on USB suspend. May be called in_interrupt.
* @resume: Invoked on USB resume. May be called in_interrupt. * @resume: Invoked on USB resume. May be called in_interrupt.
* @driver: Driver model state for this driver.
* *
* Devices are disabled till a gadget driver successfully bind()s, which * Devices are disabled till a gadget driver successfully bind()s, which
* means the driver will handle setup() requests needed to enumerate (and * means the driver will handle setup() requests needed to enumerate (and
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment