1. 25 3月, 2009 10 次提交
    • A
      usb-storage: make cypress_atacb a separate module · fcdb5140
      Alan Stern 提交于
      This patch (as1210) converts usb-storage's cypress_atacb subdriver
      into a separate module.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      fcdb5140
    • A
      usb-storage: make sddr55 a separate module · 70fcc005
      Alan Stern 提交于
      This patch (as1209) converts usb-storage's sddr55 subdriver into a
      separate module.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      70fcc005
    • A
      usb-storage: make isd200 a separate module · 32d5493e
      Alan Stern 提交于
      This patch (as1208) converts usb-storage's isd200 subdriver into a
      separate module.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      32d5493e
    • A
      usb-storage: make sddr09 a separate module · 0ff71883
      Alan Stern 提交于
      This patch (as1207) converts usb-storage's sddr09 subdriver into a
      separate module.
      
      An unexpected complication arises because of DPCM devices, in which
      one LUN uses the sddr09 transport and one uses the standard CB
      transport.  Since these devices can be used even when
      USB_STORAGE_SDDR09 isn't configured, their entries in unusual_devs.h
      require special treatment.  If SDDR09 isn't configured then the
      entries remain in unusual_devs.h; if it is then the entries are
      present in unusual_sddr09.h instead.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0ff71883
    • A
      usb-storage: prepare for subdriver separation · e6e244b6
      Alan Stern 提交于
      This patch (as1206) is the first step in converting usb-storage's
      subdrivers into separate modules.  It makes the following large-scale
      changes:
      
      	Remove a bunch of unnecessary #ifdef's from usb_usual.h.
      	Not truly necessary, but it does clean things up.
      
      	Move the USB device-ID table (which is duplicated between
      	libusual and usb-storage) into its own source file,
      	usual-tables.c, and arrange for this to be linked with
      	either libusual or usb-storage according to whether
      	USB_LIBUSUAL is configured.
      
      	Add to usual-tables.c a new usb_usual_ignore_device()
      	function to detect whether a particular device needs to be
      	managed by a subdriver and not by the standard handlers
      	in usb-storage.
      
      	Export a whole bunch of functions in usb-storage, renaming
      	some of them because their names don't already begin with
      	"usb_stor_".  These functions will be needed by the new
      	subdriver modules.
      
      	Split usb-storage's probe routine into two functions.
      	The subdrivers will call the probe1 routine, then fill in
      	their transport and protocol settings, and then call the
      	probe2 routine.
      
      	Take the default cases and error checking out of
      	get_transport() and get_protocol(), which run during
      	probe1, and instead put a check for invalid transport
      	or protocol values into the probe2 function.
      
      	Add a new probe routine to be used for standard devices,
      	i.e., those that don't need a subdriver.  This new routine
      	checks whether the device should be ignored (because it
      	should be handled by ub or by a subdriver), and if not,
      	calls the probe1 and probe2 functions.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e6e244b6
    • B
      USB: fix USB_STORAGE_CYPRESS_ATACB · 1f4159c1
      Boaz Harrosh 提交于
      commit 64a87b24: [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer
      changed the scsi_eh_prep_cmnd logic by making it clear
      the ->cmnd buffer. But the sat to cypress atacb translation supposed
      the ->cmnd buffer wasn't modified.
      
      This patch makes it set the ->cmnd buffer after scsi_eh_prep_cmnd call.
      The problem and a fix was reported by Matthieu CASTET <castet.matthieu@free.fr>
      
      It also removes all the hackery fiddling of scsi_cmnd and scsi_eh_save by
      requesting from scsi_eh_prep_cmnd to prepare a read into ->sense_buffer,
      which is much more suitable a buffer for HW transfers, then after the command
      execution the regs read is copied into regs buffer before actual preparation
      of sense_buffer.
      
      Also fix an alien comment character to my utf-8 editor.
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NMatthieu CASTET <castet.matthieu@free.fr>
      Cc: stable <stable@kernel.org>
      Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
      Cc: Matthew Dharm <mdharm-kernel@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1f4159c1
    • B
      usb_storage: make Kconfig note visible in the console · 0eb526b9
      Borislav Petkov 提交于
      Make lines about usb_storage depending on SCSI visible when configuring the
      kernel in a 80x25 console
      Signed-off-by: NBorislav Petkov <petkovbb@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0eb526b9
    • F
      USB: add missing KERN_* constants to printks · 6f8aa65b
      Frank Seidel 提交于
      According to kerneljanitors todo list all printk calls (beginning
      a new line) should have an according KERN_* constant.
      Those are the missing peaces here for the usb subsystem.
      Signed-off-by: NFrank Seidel <frank@f-seidel.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6f8aa65b
    • J
      USB: drivers: use USB API functions rather than constants · 2e0fe709
      Julia Lawall 提交于
      This set of patches introduces calls to the following set of functions:
      
      usb_endpoint_dir_in(epd)
      usb_endpoint_dir_out(epd)
      usb_endpoint_is_bulk_in(epd)
      usb_endpoint_is_bulk_out(epd)
      usb_endpoint_is_int_in(epd)
      usb_endpoint_is_int_out(epd)
      usb_endpoint_num(epd)
      usb_endpoint_type(epd)
      usb_endpoint_xfer_bulk(epd)
      usb_endpoint_xfer_control(epd)
      usb_endpoint_xfer_int(epd)
      usb_endpoint_xfer_isoc(epd)
      
      In some cases, introducing one of these functions is not possible, and it
      just replaces an explicit integer value by one of the following constants:
      
      USB_ENDPOINT_XFER_BULK
      USB_ENDPOINT_XFER_CONTROL
      USB_ENDPOINT_XFER_INT
      USB_ENDPOINT_XFER_ISOC
      
      An extract of the semantic patch that makes these changes is as follows:
      (http://www.emn.fr/x-info/coccinelle/)
      
      // <smpl>
      @r1@ struct usb_endpoint_descriptor *epd; @@
      
      - ((epd->bmAttributes & \(USB_ENDPOINT_XFERTYPE_MASK\|3\)) ==
      - \(USB_ENDPOINT_XFER_CONTROL\|0\))
      + usb_endpoint_xfer_control(epd)
      
      @r5@ struct usb_endpoint_descriptor *epd; @@
      
      - ((epd->bEndpointAddress & \(USB_ENDPOINT_DIR_MASK\|0x80\)) ==
      -  \(USB_DIR_IN\|0x80\))
      + usb_endpoint_dir_in(epd)
      
      @inc@
      @@
      
      #include <linux/usb.h>
      
      @depends on !inc && (r1||r5)@
      @@
      
      + #include <linux/usb.h>
        #include <linux/usb/...>
      // </smpl>
      Signed-off-by: NJulia Lawall <julia@diku.dk>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      2e0fe709
    • A
      USB: usb-storage: increase max_sectors for tape drives · 5c16034d
      Alan Stern 提交于
      This patch (as1203) increases the max_sector limit for USB tape
      drives.  By default usb-storage sets max_sectors to 240 (i.e., 120 KB)
      for all devices.  But tape drives need a higher limit, since tapes can
      and do have very large block sizes.  Without the ability to transfer
      an entire large block in a single command, such tapes can't be used.
      
      This fixes Bugzilla #12207.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Reported-and-tested-by: NPhil Mitchell <philipm@sybase.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      5c16034d
  2. 18 3月, 2009 3 次提交
    • T
      USB: storage: Unusual USB device Prolific 2507 variation added · 8a0845c5
      Thomas Bartosik 提交于
      The "c-enter" USB to Toshiba 1.8" IDE enclosure needs special treatment
      to work flawlessly. This patch is absolutely trivial, as the integrated
      USB-IDE bridge is already identified to be an "unusual" device, only the
      bcdDevice is different (lower) to the bcdDeviceMin already included in
      the kernel.
      It is a Prolific 2507 bridge.
      
      T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=067b ProdID=2507 Rev= 0.01
      S:  Manufacturer=Prolific Technology Inc.
      S:  Product=ATAPI-6 Bridge Controller
      S:  SerialNumber=00000272
      C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      Signed-off-by: NThomas Bartosik <tbartdev@gmx-topmail.de>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8a0845c5
    • M
      USB: Updated unusual-devs entry for USB mass storage on Nokia 6233 · 716a9c85
      Moritz Muehlenhoff 提交于
      Current firmware revision 5.60 still behaves the same,
      so update the quirk up a (non-existing) 99.99 revision.
      
      http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=493415Signed-off-by: NMoritz Muehlenhoff <jmm@debian.org>
      Tested-by: NJan Heitkoetter <devnull@heitkoetter.net>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NPhil Dibowitz <phil@ipom.com>
      716a9c85
    • J
      USB: unusual_devs: Add support for GI 0431 SD-Card interface · c497e715
      Jan Dumon 提交于
      Enable the SD-Card interface on the GI 0431 HSUPA stick from Option.
      
      The unusual_devs.h entry is necessary because the device descriptor is
      vendor-specific. That prevents usb-storage from binding to it as an
      interface driver.
      
      T:  Bus=07 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 15 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
      P:  Vendor=0af0 ProdID=7501 Rev= 0.00
      S:  Manufacturer=Option N.V.
      S:  Product=Globetrotter HSUPA Modem
      C:* #Ifs=11 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
      E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
      E:  Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
      I:* If#=10 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
      E:  Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=8c(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      Signed-off-by: NJan Dumon <j.dumon@option.com>
      Signed-off-by: NPhil Dibowitz <phil@ipom.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c497e715
  3. 28 2月, 2009 1 次提交
  4. 10 2月, 2009 3 次提交
  5. 28 1月, 2009 5 次提交
  6. 08 1月, 2009 18 次提交
    • A
      USB: storage: set CAPACITY_HEURISTICS flag for bad vendors · a81a81a2
      Alan Stern 提交于
      This patch (as1194) makes usb-storage set the CAPACITY_HEURISTICS flag
      for all devices made by Nokia, Nikon, or Motorola.  These companies
      seem to include the READ CAPACITY bug in all of their devices.
      
      Since cell phones and digital cameras rely on flash storage, which
      always has an even number of sectors, setting CAPACITY_HEURISTICS
      shouldn't cause any problems.  Not even if the companies wise up and
      start making devices without the bug.
      
      A large number of unusual_devs entries are now unnecessary, so the
      patch removes them.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a81a81a2
    • A
      USB: storage: make the "quirks=" module parameter writable · c838ea46
      Alan Stern 提交于
      This patch (as1190) makes usb-storage's "quirks=" module parameter
      writable, so that users can add entries for their devices at runtime
      with no need to reboot or reload usb-storage.
      
      New codes are added for the SANE_SENSE, CAPACITY_HEURISTICS, and
      CAPACITY_OK flags.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c838ea46
    • A
      USB: storage: add last-sector hacks · 25ff1c31
      Alan Stern 提交于
      This patch (as1189b) adds some hacks to usb-storage for dealing with
      the growing problems involving bad capacity values and last-sector
      accesses:
      
      	A new flag, US_FL_CAPACITY_OK, is created to indicate that
      	the device is known to report its capacity correctly.  An
      	unusual_devs entry for Linux's own File-backed Storage Gadget
      	is added with this flag set, since g_file_storage always
      	reports the correct capacity and since the capacity need
      	not be even (it is determined by the size of the backing
      	file).
      
      	An entry in unusual_devs.h which has only the CAPACITY_OK
      	flag set shouldn't prejudice libusual, since the device will
      	work perfectly well with either usb-storage or ub.  So a
      	new macro, COMPLIANT_DEV, is added to let libusual know
      	about these entries.
      
      	When a last-sector access succeeds and the total number of
      	sectors is odd (the unexpected case, in which guessing that
      	the number is even might cause trouble), a WARN is triggered.
      	The kerneloops.org project will collect these warnings,
      	allowing us to add CAPACITY_OK flags for the devices in
      	question before implementing the default-to-even heuristic.
      	If users want to prevent the stack dump produced by the WARN,
      	they can disable the hack by adding an unusual_devs entry
      	for their device with the CAPACITY_OK flag.
      
      	When a last-sector access fails three times in a row and
      	neither the FIX_CAPACITY nor the CAPACITY_OK flag is set,
      	we assume the last-sector bug is present.  We replace the
      	existing status and sense data with values that will cause
      	the SCSI core to fail the access immediately rather than
      	retry indefinitely.  This should fix the difficulties
      	people have been having with Nokia phones.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      25ff1c31
    • D
      USB: unusual dev for Option N.V. ZeroCD modems · 281b064f
      Dan Williams 提交于
      Many newer Option mobile broadband devices initially provide a
      usb-storage "driver CD" device that's pretty useless on Linux since
      any software on it most likely wouldn't be compatible with your
      kernel or distro anyway.  Thus, by default just kill the driver
      CD device by sending the SCSI 'rezero' command, but allow override
      of the default behavior via usb-storage module parameter so users
      can keep the ZeroCD device if they really want to.  Inspired by
      the Sierra TruInstall patch.
      Signed-off-by: NDan Williams <dcbw@redhat.com>
      Acked-by: NMarcel Holtmann <marcel@holtmann.org>
      Cc: Peter Henn <p.henn@option.com
      Cc: Denis Joseph Barrow <D.Barow@option.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      281b064f
    • A
      USB: usb-storage: merge DPCM support into SDDR09 · c20b15fd
      Alan Stern 提交于
      The DPCM subdriver is a little peculiar, in that it's meant to support
      devices where LUN 0 is Compact Flash and uses the CB transport whereas
      LUN 1 is SmartMedia and uses the SDDR09 transport.  Thus DPCM isn't
      really a transport in itself; it's more like a demultiplexer.
      
      Much of the DPCM code is part of the SDDR09 subdriver already, and the
      remaining part is fairly small.  This patch (as1182) moves that extra
      piece into sddr09.c, thereby eliminating dpcm.c.  Also eliminated is
      the Kconfig entry for DPCM support; it is now listed as part of the
      SDDR09 entry.
      
      In order to make sure that the semantics are the same as before, each
      unusual_devs entry for DPCM is now present twice: once with DPCM
      support if SDDR09 is configured (as before), and once with the
      SINGLE_LUN flag and CB support otherwise.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c20b15fd
    • A
      USB: storage: set bounce limit for non-DMA-capable host controllers · 96983d2d
      Alan Stern 提交于
      This patch (as1175) makes usb-storage set a SCSI device's
      request-queue bounce limit such that all buffers will be located in
      addressable memory (i.e., not in high memory) if the host controller's
      dma_mask is NULL.  This is necessary when the host controller doesn't
      support DMA: If a buffer is in high memory then the both the virtual
      and DMA addresses produced by the scatter-gather library will be NULL,
      preventing the HCD from accessing the buffer's data.
      
      In particular, the isp1760 driver needs this when used on a system
      with more than 1 GB of memory.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
      Acked-by: NJens Axboe <jens.axboe@oracle.com>
      Tested-by: NThomas Hommel <Thomas.Hommel@gefanuc.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      96983d2d
    • A
      USB: usb-storage: merge ATAPI and QIC-157 protocol routines · 3dae5345
      Alan Stern 提交于
      This patch (as1174) merges usb-storage's QIC-157 and ATAPI protocol
      routines.  Since the two functions are identical, there's no reason to
      keep them separate.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3dae5345
    • A
      USB: usb-storage: merge CB and CBI transport routines · 64648a9d
      Alan Stern 提交于
      This patch (as1173) merges usb-storage's CB and CBI transports into a
      single routine.  So much of their code is common, it's silly to keep
      them separate.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      CC: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      64648a9d
    • B
      USB: storage: Flag devices known to support SANE_SENSE · dbe6e0c0
      Ben Efros 提交于
      Add a few devices known to have support for larger sense buffers.
      Supporting SANE_SENSE does not necessarily mean SAT-1 or SAT-2 is fully
      supported.
      
      Depends on SANE_SENSE patch [1].  Incorporates the Maxtor and Western
      Digital devices originally submitted by Matthieu CASTET [2]. 
      
      [1] https://lists.one-eyed-alien.net/pipermail/usb-storage/2008-November/004181.html
      [2] http://marc.info/?l=linux-usb&m=121762869915609&w=2Signed-off-by: NBen Efros <ben@pc-doctor.com>
      Signed-off-by: NMatthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      dbe6e0c0
    • B
      USB: storage devices and SAT · 1537e0ad
      Ben Efros 提交于
      Add the SANE SENSE flag to indicate that a device is capable of handling
      more than 18-bytes of sense data.  This functionality is required for
      USB-ATA bridges implementing SAT.  A future patch will actually enable this
      function for several devices.
      
      The logic behind this is that we can detect support for SANE_SENSE in a few ways:
       1) ATA PASS THROUGH (12) or (16) execute successfully
       2) SPC-3 or higher is in use
       3) A previous CHECK CONDITION occurred with sense format 70-73 and had
          a length greater than 18-bytes total
      Signed-off-by: NBen Efros <ben@pc-doctor.com>
      Signed-off-by: NMatthew Dharm <mdharm-usb@one-eyed-alien.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      1537e0ad
    • A
      USB: usb-storage: remove us->sensebuf · a658367d
      Alan Stern 提交于
      This patch (as1171) removes us->sensebuf, since it isn't used anywhere.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      a658367d
    • A
      usb-storage: clean up unusual_devs.h · f9dc8f99
      Alan Stern 提交于
      This patch (as1170) removes some duplicate entries in unusual_devs.h
      and rearranges a few others to put the list in proper numerical order.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f9dc8f99
    • A
      USB: usb-storage: add "quirks=" module parameter · d4f373e5
      Alan Stern 提交于
      This patch (as1163b) adds a "quirks=" module parameter to usb-storage.
      This will allow people to make short-term changes to their
      unusual_devs list without rebuilding the entire driver.  Testing will
      become much easier, and less-sophisticated users will be able to
      access their buggy devices after a simple config-file change instead
      of having to wait for a new kernel release.
      
      The patch also adds a documentation entry for usb-storage's
      "delay_use" parameter, which has been around for years but but was
      never listed among the kernel parameters.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      d4f373e5
    • A
      USB: change interface to usb_lock_device_for_reset() · 011b15df
      Alan Stern 提交于
      This patch (as1161) changes the interface to
      usb_lock_device_for_reset().  The existing interface is apparently not
      very clear, judging from the fact that several of its callers don't
      use it correctly.  The new interface always returns 0 for success and
      it always requires the caller to unlock the device afterward.
      
      The new routine will not return immediately if it is called while the
      driver's probe method is running.  Instead it will wait until the
      probe is over and the device has been unlocked.  This shouldn't cause
      any problems; I don't know of any cases where drivers call
      usb_lock_device_for_reset() during probe.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Cc: Pete Zaitcev <zaitcev@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      011b15df
    • S
      USB: storage: unusual_devs.h additions for Macpower MasterBox · 3b438e30
      Sergey Ovcharenko 提交于
      Jason Johnston reported these problems with his external USB hard drive:
      http://bugs.gentoo.org/show_bug.cgi?id=250789
      
      The number of reported sectors is off-by-one.
      
      /proc/bus/usb/devices:
      T:  Bus=01 Lev=02 Prnt=08 Port=00 Cnt=01 Dev#=  9 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=0dc4 ProdID=0073 Rev= 0.00
      S:  Manufacturer=Macpower Technology Co.LTD.
      S:  Product=USB 2.0 3.5" DEVICE
      S:  SerialNumber=03006C
      C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      Signed-off-by: NSergey Ovcharenko <velegrin@mail.mipt.ru>
      Signed-off-by: NPhil Dibowitz <phil@ipom.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3b438e30
    • P
      USB: storage: recognizing and enabling Nokia 5200 cell phoes · b8d23491
      Paulo Afonso Graner Fessel 提交于
      This patch corrects the issue when one connects a Nokia 5200 cell
      phone in data storage mode. If one uses an unpatched unusual_devs.h,
      the following messages appear on /var/log/messages:
      
      Dec 12 01:03:24 alberich kernel: usb 4-2: new full speed USB device
      using uhci_hcd and address 3
      Dec 12 01:03:25 alberich kernel: usb 4-2: configuration #1 chosen from 1 choice
      Dec 12 01:03:25 alberich kernel: scsi10 : SCSI emulation for USB Mass
      Storage devices
      Dec 12 01:03:25 alberich kernel: usb 4-2: New USB device found,
      idVendor=0421, idProduct=04bd
      Dec 12 01:03:25 alberich kernel: usb 4-2: New USB device strings:
      Mfr=1, Product=2, SerialNumber=3
      Dec 12 01:03:25 alberich kernel: usb 4-2: Product: Nokia 5200
      Dec 12 01:03:25 alberich kernel: usb 4-2: Manufacturer: Nokia
      Dec 12 01:03:25 alberich kernel: usb 4-2: SerialNumber: 353930018354523
      Dec 12 01:03:25 alberich kernel: usbcore: registered new interface driver ub
      Dec 12 01:03:30 alberich kernel: scsi 10:0:0:0: Direct-Access
      Nokia    Nokia 5200       0000 PQ: 0 AN
      SI: 4
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] 3985409 512-byte
      hardware sectors (2041 MB)
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Write Protect is off
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Assuming drive
      cache: write through
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] 3985409 512-byte
      hardware sectors (2041 MB)
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Write Protect is off
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Assuming drive
      cache: write through
      Dec 12 01:03:30 alberich kernel:  sdg: sdg1
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Attached SCSI removable disk
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: Attached scsi generic sg9 type 0
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Sense Key : No
      Sense [current]
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Add. Sense: No
      additional sense information
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Sense Key : No
      Sense [current]
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Add. Sense: No
      additional sense information
      Dec 12 01:03:30 alberich kernel: sd 10:0:0:0: [sdg] Sense Key : No
      Sense [current]
      
      (...)
      
      The MicroSD card in the phone remains inaccessible and finally the
      cell phone turns itself off. The patch solves this problem and makes
      the cell phone fully accessible:
      
      [root@alberich kernel-linus-2.6.27.5-1mdv]# df -h
      Sist. Arq.            Tam   Usad Disp  Uso% Montado em
      /dev/sda6              31G  5,2G   26G  17% /
      /dev/sda1              92M   27M   61M  31% /boot
      /dev/mapper/homevg-homelv  240G  237G  3,5G  99% /home
      /dev/sda3              21G  7,9G   13G  40% /mnt/windows
      /dev/sdg1             2,0G  287M  1,7G  15% /media/disk <--------
      
      I've found necessary to use the FL_US_CAPACITY_FIX switch, as without
      it the cell phone is recognized but it went berserk when performing
      low-level functions on it (a fdisk -l /dev/uba for example).
      
      lsusb -v output follows:
      
      Bus 004 Device 004: ID 0421:04bd Nokia Mobile Phones
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               2.00
        bDeviceClass            0 (Defined at Interface level)
        bDeviceSubClass         0
        bDeviceProtocol         0
        bMaxPacketSize0        64
        idVendor           0x0421 Nokia Mobile Phones
        idProduct          0x04bd
        bcdDevice            6.03
        iManufacturer           1 Nokia
        iProduct                2 Nokia 5200
        iSerial                 3 353930018354523
        bNumConfigurations      1
        Configuration Descriptor:
          bLength                 9
          bDescriptorType         2
          wTotalLength           32
          bNumInterfaces          1
          bConfigurationValue     1
          iConfiguration          0
          bmAttributes         0xc0
            Self Powered
          MaxPower              100mA
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        0
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass         8 Mass Storage
            bInterfaceSubClass      6 SCSI
            bInterfaceProtocol     80 Bulk (Zip)
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x81  EP 1 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x01  EP 1 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               0
      Device Status:     0x0001
        Self Powered
      Signed-off-by: NPaulo Afonso Graner Fessel <pfessel@gmail.com>
      Signed-off-by: NPhil Dibowitz <phil@ipom.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b8d23491
    • O
      USB: storage: extend unusual range for 067b:3507 · b1636399
      Oliver Neukum 提交于
      This device has been released in a new revision which is still buggy.
      Signed-off-by: NOliver Neukum <oneukum@suse.de>
      Signed-off-by: NPhil Dibowitz <phil@ipom.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b1636399
    • N
      USB: another unusual_devs entry for another bad Argosy storage device · e2673b28
      Nguyen Anh Quynh 提交于
      I have another Argosy USB storage device, which has the same problem
      with the Argosy USB storage device already fixed in 2.6.27.7. But this
      device has another product ID (840:84), so this patch adds a new entry
      into unusual_devs to fix the mount problem.
      
      I enclose here two patches: one against 2.6.27.8, and another against
      the latest linus-git tree.
      
      
      The information about the Argosy device is like below:
      
      #lsusb -v -d 840:84
      Bus 005 Device 005: ID 0840:0084 Argosy Research, Inc.
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               2.00
        bDeviceClass            0 (Defined at Interface level)
        bDeviceSubClass         0
        bDeviceProtocol         0
        bMaxPacketSize0        64
        idVendor           0x0840 Argosy Research, Inc.
        idProduct          0x0084
        bcdDevice            0.01
        iManufacturer           1 Generic
        iProduct                2 USB 2.0 Storage Device
        iSerial                 3 8400000000002549
        bNumConfigurations      1
        Configuration Descriptor:
          bLength                 9
          bDescriptorType         2
          wTotalLength           32
          bNumInterfaces          1
          bConfigurationValue     1
          iConfiguration          0
          bmAttributes         0xc0
            Self Powered
          MaxPower                2mA
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        0
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass         8 Mass Storage
            bInterfaceSubClass      6 SCSI
            bInterfaceProtocol     80 Bulk (Zip)
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x01  EP 1 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x82  EP 2 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
      Device Qualifier (for other device speed):
        bLength                10
        bDescriptorType         6
        bcdUSB               2.00
        bDeviceClass            0 (Defined at Interface level)
        bDeviceSubClass         0
        bDeviceProtocol         0
        bMaxPacketSize0        64
        bNumConfigurations      1
      Device Status:     0x0000
        (Bus Powered)
      
      Before the patch, dmesg returns a lot of information like below (my
      dmesg is overflown):
      ....
      [  138.833390] sd 7:0:0:0: [sdb] Add. Sense: No additional sense information
      [  138.877631] sd 7:0:0:0: [sdb] Sense Key : No Sense [current]
      [  138.877643] sd 7:0:0:0: [sdb] Add. Sense: No additional sense information
      [  138.921906] sd 7:0:0:0: [sdb] Sense Key : No Sense [current]
      [  138.921923] sd 7:0:0:0: [sdb] Add. Sense: No additional sense information
      ....
      
      After the fix, dmesg returns below information:
      ....
      usb 5-1: new high speed USB device using ehci_hcd and address 5
      usb 5-1: configuration #1 chosen from 1 choice
      scsi7 : SCSI emulation for USB Mass Storage devices
      usb-storage: device found at 5
      usb-storage: waiting for device to settle before scanning
      usb-storage: device scan complete
      scsi 7:0:0:0: Direct-Access     HTS54808 0M9AT00          MG4O PQ: 0 ANSI: 0
      sd 7:0:0:0: [sdb] 156301488 512-byte hardware sectors (80026 MB)
      sd 7:0:0:0: [sdb] Write Protect is off
      sd 7:0:0:0: [sdb] Mode Sense: 03 00 00 00
      sd 7:0:0:0: [sdb] Assuming drive cache: write through
      sd 7:0:0:0: [sdb] 156301488 512-byte hardware sectors (80026 MB)
      sd 7:0:0:0: [sdb] Write Protect is off
      sd 7:0:0:0: [sdb] Mode Sense: 03 00 00 00
      sd 7:0:0:0: [sdb] Assuming drive cache: write through
       sdb: sdb1
      sd 7:0:0:0: [sdb] Attached SCSI disk
      sd 7:0:0:0: Attached scsi generic sg1 type 0
      kjournald starting.  Commit interval 5 seconds
      EXT3 FS on sdb1, internal journal
      EXT3-fs: recovery complete.
      EXT3-fs: mounted filesystem with ordered data mode.
      
      Cc: Kuniyasu Suzaki <k.suzaki@aist.go.jp>
      Signed-off-by: NNguyen Anh Quynh <aquynh@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e2673b28