25 Mar, 2009

1 commit

  • 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: Alan Stern
    CC: Matthew Dharm
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     

08 Jan, 2009

2 commits

  • 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: Alan Stern
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • 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: Ben Efros
    Signed-off-by: Matthew Dharm
    Signed-off-by: Greg Kroah-Hartman

    Ben Efros
     

25 Apr, 2008

1 commit

  • I have got a cypress usb-ide bridge and I would like to tune or monitor
    my disk with tools like hdparm, hddtemp or smartctl.

    My controller support a way to send raw ATA command to the disk with
    something call atacb (see
    http://download.cypress.com.edgesuite.net/design_resources/datasheets/contents/cy7c68300c_8.pdf).

    Atacb support can be added for each application, but there is some disadvantages :
    - all application need to be patched
    - A race is possible if there other accesses, because the emulation can
    be split in 2 atacb scsi transactions. One for sending the command, one
    for reading the register (if ck_cond is set).

    I have implemented the emulation in usb-storage with a special proto_handler,
    and an unsual entry.

    Signed-off-by: Matthieu CASTET
    Signed-off-by: Matthew Dharm
    Signed-off-by: Greg Kroah-Hartman

    matthieu castet
     

25 Mar, 2008

1 commit

  • Motorola ROKR Z6 cellphone has bugs in its USB, so it is impossible to use
    it as mass storage. Patch describes new "unusual" USB device for it with
    FIX_INQUIRY and FIX_CAPACITY flags and new BULK_IGNORE_TAG flag.
    Last flag relaxes check for equality of bcs->Tag and us->tag in
    usb_stor_Bulk_transport routine.

    Signed-off-by: Constantin Baranov
    Signed-off-by: Matthew Dharm
    Signed-off-by: Daniel Drake
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Constantin Baranov
     

02 Feb, 2008

1 commit

  • This patch (as1011) adds a #define for the newly-created Lockable
    (i.e., password-protected) subclass 0x07 for USB mass-storage devices.
    The private ISD200 entry (which had been mapped to subclass 0x07) is
    moved to 0xf0, which is unlikely to conflict with any official
    subclass designation.

    The US_SC_MIN and US_SC_MAX constants aren't used anywhere, so the
    patch removes them.

    Signed-off-by: Alan Stern
    Cc: Matthew Dharm
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     

18 Dec, 2007

1 commit

  • When a device cannot handle the smallest previously limited transfer
    size (64 blocks) without stalling, limit the device to the amount of
    packets that fit in a platform native page.

    The lowest possible limit is PAGE_CACHE_SIZE, so if the device is ever
    used on a platform that has larger than 8K pages, you lose unless you
    can convince the device firmware folks to fix the issue.

    Cc: Mathew Dharm
    Cc: Alan Stern
    Cc: Pete Zaitcev
    Signed-off-by: Doug Maxey
    Signed-off-by: Greg Kroah-Hartman

    Doug Maxey
     

17 Feb, 2007

1 commit


28 Sep, 2006

1 commit

  • This changeset from Keith Bennett (via Bob Copeland) moves the Karma
    initializer to its own file and adds trapping of the START_STOP command to
    enable eject of the device.

    Signed-off-by: Keith Bennett
    Signed-off-by: Bob Copeland
    Signed-off-by: Matthew Dharm
    Signed-off-by: Greg Kroah-Hartman

    Matthew Dharm
     

03 Aug, 2006

1 commit

  • This patch adds a new unusual_devs flag for when usb-storage needs to ignore
    a device that it would otherwise claim.

    We need to ignore the ZyXEL G220F as it is a virtual CDROM drive which
    includes the windows driver for this USB-WLAN adapter. After the windows
    driver is installed on a windows system, it converts it into a WLAN adapter
    (by ejecting the virtual disc).

    The virtual CDROM is of no interest to Linux users. The zd1211rw driver will
    automatically perform the eject operation, we just need to ensure that
    usb-storage does not claim the device.

    Signed-off-by: Daniel Drake
    Signed-off-by: Matthew Dharm
    Signed-off-by: Phil Dibowitz
    Signed-off-by: Greg Kroah-Hartman

    Daniel Drake
     

13 Jul, 2006

1 commit


26 Apr, 2006

1 commit


05 Jan, 2006

2 commits

  • This patch adds another usb-storage subdriver, which supports two fairly
    old dual-XD/SmartMedia reader-writers (USB1.1 devices).

    This driver was written by Daniel Drake -- he notes
    that he wrote this driver without specs, however a vendor-supplied GPL
    driver for the previous generation of products ("sma03") did prove to be
    quite useful, as did the sddr09 driver which also has to deal with
    low-level physical block layout on SmartMedia.

    The original patch has been reformed by me, as it clashed with the
    libusual patches.

    We really need to consolidate some of this common SmartMedia code, and
    get together with the MTD guys to share it with them as well.

    Signed-off-by: Daniel Drake
    Signed-off-by: Matthew Dharm
    Signed-off-by: Greg Kroah-Hartman

    Matthew Dharm
     
  • This patch adds a shim driver libusual, which routes devices between
    usb-storage and ub according to the common table, based on unusual_devs.h.
    The help and example syntax is in Kconfig.

    Signed-off-by: Pete Zaitcev
    Signed-off-by: Greg Kroah-Hartman

    Pete Zaitcev