Subject: [BK PATCH] USB changes for 2.5.35
From: Greg KH <[email-masked]>
To: [email-masked]
Cc: [email-masked], [email-masked]

Hi,

This set of patches includes some usb-storage changes from Matt Dharm
(yes, he touched that show_trace() line), a ov511 update, and the very
large struct device_driver model change for the USB code from me, which
was based on some earlier work from Pat Mochel  There are also two small
patches to the driver core code, one adds some helper functions, and the
other fixes a oops when USB devices are removed.  Both of them were
blessed by Pat.

I broke down the USB changes by subdirectories to make it a bit smaller,
but it is still a large set of changes, as every USB device driver had
to be modified.  I choose to force the drivers to be modified by
changing the probe() and disconnect() callbacks to be based on
usb_interface instead of usb_device which is a more correct model of
what a USB driver is bound to (drivers have always been bound to USB
interfaces, but the core kind of glossed over this in the past.)

I still think a bit of work needs to be done in the portion of the usbfs
code that deals with disconnecting and connecting drivers to devices,
and in the usb-storage code where a forced disconnect happens, but the
code is working fine for me, and I'm getting tired of lugging this large
diff around :)  Patches for this section of code greatly appreciated.

Pull from:  bk://linuxusb.bkbits.net/linus-2.5

thanks,

greg k-h

 Documentation/usb/ov511.txt                |   35 -
 Documentation/usb/usb-serial.txt           |    4 
 drivers/base/core.c                        |    3 
 drivers/bluetooth/hci_usb.c                |   22 -
 drivers/input/joystick/iforce/iforce-usb.c |   29 -
 drivers/isdn/hisax/st5481_init.c           |   27 -
 drivers/media/video/cpia_usb.c             |   31 +
 drivers/usb/class/audio.c                  |   41 +-
 drivers/usb/class/bluetty.c                |   31 -
 drivers/usb/class/cdc-acm.c                |   30 -
 drivers/usb/class/usb-midi.c               |   37 +
 drivers/usb/class/usblp.c                  |   20 -
 drivers/usb/core/devices.c                 |    1 
 drivers/usb/core/devio.c                   |   61 ---
 drivers/usb/core/hcd.c                     |    8 
 drivers/usb/core/hcd.h                     |    8 
 drivers/usb/core/hub.c                     |  160 +++-----
 drivers/usb/core/hub.h                     |    2 
 drivers/usb/core/usb.c                     |  567 ++++++++---------------------
 drivers/usb/image/hpusbscsi.c              |   29 -
 drivers/usb/image/mdc800.c                 |   51 +-
 drivers/usb/image/microtek.c               |   45 +-
 drivers/usb/image/microtek.h               |    2 
 drivers/usb/image/scanner.c                |  102 ++---
 drivers/usb/input/aiptek.c                 |   62 +--
 drivers/usb/input/hid-core.c               |   36 +
 drivers/usb/input/hiddev.c                 |    6 
 drivers/usb/input/powermate.c              |   50 +-
 drivers/usb/input/usbkbd.c                 |   42 +-
 drivers/usb/input/usbmouse.c               |   56 +-
 drivers/usb/input/wacom.c                  |   33 +
 drivers/usb/input/xpad.c                   |   31 -
 drivers/usb/media/dabusb.c                 |   41 +-
 drivers/usb/media/dsbr100.c                |   37 +
 drivers/usb/media/ibmcam.c                 |   39 +
 drivers/usb/media/konicawc.c               |   45 +-
 drivers/usb/media/ov511.c                  |  205 ++++++----
 drivers/usb/media/ov511.h                  |   18 
 drivers/usb/media/pwc-if.c                 |   43 +-
 drivers/usb/media/se401.c                  |   60 +--
 drivers/usb/media/stv680.c                 |   36 +
 drivers/usb/media/ultracam.c               |   45 +-
 drivers/usb/media/usbvideo.c               |   15 
 drivers/usb/media/usbvideo.h               |    4 
 drivers/usb/media/vicam.c                  |   51 +-
 drivers/usb/misc/auerswald.c               |   28 -
 drivers/usb/misc/brlvger.c                 |   26 -
 drivers/usb/misc/emi26.c                   |   12 
 drivers/usb/misc/rio500.c                  |   51 +-
 drivers/usb/misc/speedtouch.c              |   69 +--
 drivers/usb/misc/tiglusb.c                 |   31 -
 drivers/usb/misc/usblcd.c                  |   47 +-
 drivers/usb/misc/uss720.c                  |   42 +-
 drivers/usb/net/catc.c                     |   42 +-
 drivers/usb/net/cdc-ether.c                |   32 +
 drivers/usb/net/kaweth.c                   |   56 +-
 drivers/usb/net/pegasus.c                  |   26 -
 drivers/usb/net/rtl8150.c                  |   53 +-
 drivers/usb/net/usbnet.c                   |   51 +-
 drivers/usb/serial/belkin_sa.c             |    9 
 drivers/usb/serial/cyberjack.c             |    9 
 drivers/usb/serial/digi_acceleport.c       |   12 
 drivers/usb/serial/empeg.c                 |   15 
 drivers/usb/serial/ftdi_sio.c              |   11 
 drivers/usb/serial/io_edgeport.c           |    8 
 drivers/usb/serial/io_tables.h             |    2 
 drivers/usb/serial/io_ti.c                 |   11 
 drivers/usb/serial/ipaq.c                  |   10 
 drivers/usb/serial/ir-usb.c                |    9 
 drivers/usb/serial/keyspan.c               |    2 
 drivers/usb/serial/keyspan.h               |    9 
 drivers/usb/serial/keyspan_pda.c           |   11 
 drivers/usb/serial/kl5kusb105.c            |    8 
 drivers/usb/serial/mct_u232.c              |    8 
 drivers/usb/serial/omninet.c               |    9 
 drivers/usb/serial/pl2303.c                |    8 
 drivers/usb/serial/safe_serial.c           |    9 
 drivers/usb/serial/usb-serial.h            |    3 
 drivers/usb/serial/usbserial.c             |   72 +--
 drivers/usb/serial/visor.c                 |   11 
 drivers/usb/serial/whiteheat.c             |   11 
 drivers/usb/storage/debug.c                |    2 
 drivers/usb/storage/debug.h                |    2 
 drivers/usb/storage/freecom.c              |    4 
 drivers/usb/storage/isd200.c               |   51 --
 drivers/usb/storage/protocol.c             |    2 
 drivers/usb/storage/raw_bulk.c             |   16 
 drivers/usb/storage/scsiglue.c             |   29 -
 drivers/usb/storage/sddr09.c               |   35 -
 drivers/usb/storage/shuttle_usbat.c        |    9 
 drivers/usb/storage/transport.c            |   93 +---
 drivers/usb/storage/usb.c                  |   42 +-
 drivers/usb/storage/usb.h                  |    5 
 include/linux/device.h                     |   12 
 include/linux/usb.h                        |   41 --
 95 files changed, 1780 insertions(+), 1687 deletions(-)
-----

[email-masked], 2002-09-16 14:45:30-07:00, [email-masked]
  USB: convert the USB drivers that live outside of drivers/usb to the new USB driver model.

 drivers/bluetooth/hci_usb.c                |   22 ++++++++++++--------
 drivers/input/joystick/iforce/iforce-usb.c |   29 +++++++++++++++------------
 drivers/isdn/hisax/st5481_init.c           |   27 ++++++++++++++-----------
 drivers/media/video/cpia_usb.c             |   31 ++++++++++++++++++-----------
 4 files changed, 66 insertions(+), 43 deletions(-)
------

[email-masked], 2002-09-16 14:44:48-07:00, [email-masked]
  USB: convert the drivers/usb/storage files to the new USB driver model.

 drivers/usb/storage/scsiglue.c |    8 ++------
 drivers/usb/storage/usb.c      |   34 +++++++++++++++++++---------------
 2 files changed, 21 insertions(+), 21 deletions(-)
------

[email-masked], 2002-09-16 14:42:29-07:00, [email-masked]
  USB: convert the drivers/usb/net files to the new USB driver model.
  
  Note the cdc-ether.c driver does NOT work properly now, someone who 
  understands the interface mess in that driver needs to fix it up.

 drivers/usb/net/catc.c      |   42 ++++++++++++++++++---------------
 drivers/usb/net/cdc-ether.c |   32 ++++++++++++++++---------
 drivers/usb/net/kaweth.c    |   56 ++++++++++++++++++++++----------------------
 drivers/usb/net/pegasus.c   |   26 ++++++++++++--------
 drivers/usb/net/rtl8150.c   |   53 ++++++++++++++++++++++-------------------
 drivers/usb/net/usbnet.c    |   51 ++++++++++++++++++++--------------------
 6 files changed, 145 insertions(+), 115 deletions(-)
------

[email-masked], 2002-09-16 14:40:36-07:00, [email-masked]
  USB: convert the drivers/usb/misc files to the new USB driver model.

 drivers/usb/misc/auerswald.c  |   28 ++++++++++-------
 drivers/usb/misc/brlvger.c    |   26 +++++++++------
 drivers/usb/misc/emi26.c      |   12 ++++---
 drivers/usb/misc/rio500.c     |   51 +++++++++++++++++--------------
 drivers/usb/misc/speedtouch.c |   69 +++++++++++++++++++++++-------------------
 drivers/usb/misc/tiglusb.c    |   31 ++++++++++--------
 drivers/usb/misc/usblcd.c     |   47 +++++++++++++++-------------
 drivers/usb/misc/uss720.c     |   42 ++++++++++++++-----------
 8 files changed, 175 insertions(+), 131 deletions(-)
------

[email-masked], 2002-09-16 14:37:15-07:00, [email-masked]
  USB: convert the drivers/usb/media files to the new USB driver model.

 drivers/usb/media/dabusb.c   |   41 ++++++++++++++++-------------
 drivers/usb/media/dsbr100.c  |   37 ++++++++++++++------------
 drivers/usb/media/ibmcam.c   |   39 +++++++++++++++------------
 drivers/usb/media/konicawc.c |   45 +++++++++++++++++++-------------
 drivers/usb/media/ov511.c    |   26 +++++++++++-------
 drivers/usb/media/pwc-if.c   |   43 ++++++++++++++++--------------
 drivers/usb/media/se401.c    |   60 ++++++++++++++++++++++---------------------
 drivers/usb/media/stv680.c   |   36 +++++++++++++++----------
 drivers/usb/media/ultracam.c |   45 +++++++++++++++++++-------------
 drivers/usb/media/usbvideo.c |   15 ++++++----
 drivers/usb/media/usbvideo.h |    4 +-
 drivers/usb/media/vicam.c    |   51 ++++++++++++++++++++----------------
 12 files changed, 249 insertions(+), 193 deletions(-)
------

[email-masked], 2002-09-16 14:36:29-07:00, [email-masked]
  USB: convert the drivers/usb/input files to the new USB driver model.

 drivers/usb/input/aiptek.c    |   62 +++++++++++++++++++++++-------------------
 drivers/usb/input/hid-core.c  |   36 ++++++++++++++----------
 drivers/usb/input/hiddev.c    |    6 ++--
 drivers/usb/input/powermate.c |   50 +++++++++++++++++++--------------
 drivers/usb/input/usbkbd.c    |   42 ++++++++++++++++------------
 drivers/usb/input/usbmouse.c  |   56 +++++++++++++++++++++----------------
 drivers/usb/input/wacom.c     |   33 +++++++++++++---------
 drivers/usb/input/xpad.c      |   31 ++++++++++++---------
 8 files changed, 181 insertions(+), 135 deletions(-)
------

[email-masked], 2002-09-16 14:35:48-07:00, [email-masked]
  USB: convert the drivers/usb/image files to the new USB driver model.

 drivers/usb/image/hpusbscsi.c |   29 +++++++----
 drivers/usb/image/mdc800.c    |   51 +++++++++++----------
 drivers/usb/image/microtek.c  |   45 +++++++++---------
 drivers/usb/image/microtek.h  |    2 
 drivers/usb/image/scanner.c   |  102 +++++++++++++++++++++++-------------------
 5 files changed, 125 insertions(+), 104 deletions(-)
------

[email-masked], 2002-09-16 14:34:49-07:00, [email-masked]
  USB: convert the drivers/usb/class files to the new USB driver model.

 drivers/usb/class/audio.c    |   41 ++++++++++++++++++++++++++---------------
 drivers/usb/class/bluetty.c  |   31 +++++++++++++++++--------------
 drivers/usb/class/cdc-acm.c  |   30 ++++++++++++++++++------------
 drivers/usb/class/usb-midi.c |   37 ++++++++++++++++++++++++-------------
 drivers/usb/class/usblp.c    |   20 ++++++++++++--------
 5 files changed, 97 insertions(+), 62 deletions(-)
------

[email-masked], 2002-09-16 14:34:00-07:00, [email-masked]
  USB: convert usb-serial drivers to new driver model.
  
  This adds the requirement that the usb-serial drivers call 
  usb_register() and usb_unregister() themselves, instead of having
  the usbserial.c file do it.  Step one in moving the usbserial.c 
  code to being a "class"  :)

 drivers/usb/serial/belkin_sa.c       |    9 ++++
 drivers/usb/serial/cyberjack.c       |    9 ++++
 drivers/usb/serial/digi_acceleport.c |   12 +++++
 drivers/usb/serial/empeg.c           |   15 +++++--
 drivers/usb/serial/ftdi_sio.c        |   11 ++++-
 drivers/usb/serial/io_edgeport.c     |    8 +++
 drivers/usb/serial/io_tables.h       |    2 
 drivers/usb/serial/io_ti.c           |   11 ++++-
 drivers/usb/serial/ipaq.c            |   10 ++++
 drivers/usb/serial/ir-usb.c          |    9 ++++
 drivers/usb/serial/keyspan.c         |    2 
 drivers/usb/serial/keyspan.h         |    9 +++-
 drivers/usb/serial/keyspan_pda.c     |   11 ++++-
 drivers/usb/serial/kl5kusb105.c      |    8 +++
 drivers/usb/serial/mct_u232.c        |    8 +++
 drivers/usb/serial/omninet.c         |    9 ++++
 drivers/usb/serial/pl2303.c          |    8 +++
 drivers/usb/serial/safe_serial.c     |    9 ++++
 drivers/usb/serial/usb-serial.h      |    3 +
 drivers/usb/serial/usbserial.c       |   72 ++++++++++++++++-------------------
 drivers/usb/serial/visor.c           |   11 ++++-
 drivers/usb/serial/whiteheat.c       |   11 ++++-
 22 files changed, 206 insertions(+), 51 deletions(-)
------

[email-masked], 2002-09-16 14:27:53-07:00, [email-masked]
  USB: Convert the core code to use struct device_driver.

 drivers/usb/core/devices.c |    1 
 drivers/usb/core/devio.c   |   61 +---
 drivers/usb/core/hcd.c     |    8 
 drivers/usb/core/hcd.h     |    8 
 drivers/usb/core/hub.c     |  160 ++++++------
 drivers/usb/core/hub.h     |    2 
 drivers/usb/core/usb.c     |  567 +++++++++++++--------------------------------
 include/linux/usb.h        |   41 +--
 8 files changed, 289 insertions(+), 559 deletions(-)
------

[email-masked], 2002-09-16 14:16:16-07:00, [email-masked]
  Driver Model: fix oops when device is removed from system

 drivers/base/core.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)
------

[email-masked], 2002-09-16 14:15:26-07:00, [email-masked]
  Driver Model: add dev_get_drvdata() and dev_set_drvdata() functions

 include/linux/device.h |   12 ++++++++++++
 1 files changed, 12 insertions(+)
------

[email-masked], 2002-09-16 14:14:26-07:00, [email-masked]
  USB: change the contact email address for the omninet driver

 Documentation/usb/usb-serial.txt |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
------

[email-masked], 2002-09-16 13:28:01-07:00, [email-masked]
  [PATCH] ov511 1.62 for 2.5.34
  
   Update the ov511 driver to version 1.62:
   o Update email address
   o Remove some dead code and fix some harmless typos
   o New device: Alpha Vision Tech. AlphaCam SE
   o Fix assignment of ov->proc_button->owner to not cause
     NULL pointer deref (credit: Oleg K.)
   o Support I2C read/write ioctl()s via V4L (credit: Oleg K.)
   o Add OV518-specific register dump code
   o New snapshot reset sequence; old one was causing
     erroneous I2C writes (credit: Oleg K.)
   o OV6630 needs different register 0x14 settings than OV6620
   o Don't print palette errors by default
   o Detect OV518 cameras that have packet numbering enabled
     by default and set ov->packet_numbering accordingly. This
     should fix the problems some users were having with babble
     (USB error -75) and cameras not working at all.

 Documentation/usb/ov511.txt |   35 --------
 drivers/usb/media/ov511.c   |  179 +++++++++++++++++++++++++-------------------
 drivers/usb/media/ov511.h   |   18 ----
 3 files changed, 106 insertions(+), 126 deletions(-)
------

[email-masked], 2002-09-16 10:31:51-07:00, [email-masked]
  [PATCH] USB storage: add error checks, remove useless code
  
  This patch removes attempts to clear halts on a control endpoint (think
  about it for a minute if you don't see why this is pointless....) and also
  adds return-code checks for all places where halts are cleared.
  
  This _should_ be just redundant code, but recent tests suggest that this
  is, in fact, not the case.  People should _heavily_ test this patch.  I'm
  going to pause here for a while (in the patch stream) until we've got this
  sorted out -- initial results on my test setup seem to show some problems
  still remain.  Where those problems are (HCD or usb-storage) remains to be
  seen.

 drivers/usb/storage/isd200.c        |   27 +++++------------------
 drivers/usb/storage/raw_bulk.c      |   10 +++-----
 drivers/usb/storage/shuttle_usbat.c |    9 +++++--
 drivers/usb/storage/transport.c     |   41 ++++++++----------------------------
 drivers/usb/storage/usb.c           |    3 --
 5 files changed, 27 insertions(+), 63 deletions(-)
------

[email-masked], 2002-09-16 10:31:22-07:00, [email-masked]
  [PATCH] USB storage: minor compilation fixes
  
  This patch fixes up some minor compilation problems.

 drivers/usb/storage/isd200.c    |    2 +-
 drivers/usb/storage/transport.c |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
------

[email-masked], 2002-09-16 10:30:55-07:00, [email-masked]
  [PATCH] USB storage: macro-ize address manipulation
  
  This patch converts all uses of page_addres() to the sg_address() macro.
  This will make backporting to 2.4 easier, as well as eliminate lots of
  redundant code.

 drivers/usb/storage/debug.c     |    2 +-
 drivers/usb/storage/debug.h     |    2 +-
 drivers/usb/storage/freecom.c   |    4 ++--
 drivers/usb/storage/isd200.c    |    8 ++++----
 drivers/usb/storage/protocol.c  |    2 +-
 drivers/usb/storage/raw_bulk.c  |    6 +++---
 drivers/usb/storage/scsiglue.c  |   21 +++++++++------------
 drivers/usb/storage/sddr09.c    |   35 ++++++++++++++++-------------------
 drivers/usb/storage/transport.c |    4 ++--
 drivers/usb/storage/usb.c       |    4 ++--
 drivers/usb/storage/usb.h       |    3 +--
 11 files changed, 42 insertions(+), 49 deletions(-)
------

[email-masked], 2002-09-16 10:30:27-07:00, [email-masked]
  [PATCH] USB storage: remove tests against EINPROGRESS
  
  This patch removes tests of urb->status for EINPROGRESS.  As was pointed
  out, that's not such a good idea, for a variety of reasons.
  
  In the process, a semaphore became useless.

 drivers/usb/storage/transport.c |   44 +++++++++++++++++++++-------------------
 drivers/usb/storage/usb.c       |    1 
 drivers/usb/storage/usb.h       |    2 -
 3 files changed, 25 insertions(+), 22 deletions(-)
------

[email-masked], 2002-09-16 10:30:06-07:00, [email-masked]
  [PATCH] USB storage:  Merging raw_bulk.c with transport.c
  
  Here's a very simple patch that can go into the source tree right away.
  It just fixes some occurrences of the scsi result code GOOD to GOOD << 1
  in isd200.c.

 drivers/usb/storage/isd200.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
------