<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/usb, branch v3.13.2</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/usb?h=v3.13.2</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/usb?h=v3.13.2'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2014-02-06T19:34:10Z</updated>
<entry>
<title>usb: core: get config and string descriptors for unauthorized devices</title>
<updated>2014-02-06T19:34:10Z</updated>
<author>
<name>Thomas Pugliese</name>
<email>thomas.pugliese@gmail.com</email>
</author>
<published>2013-12-09T19:40:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6d9541431906f495c56ffaf0d5f9c62b919b8491'/>
<id>urn:sha1:6d9541431906f495c56ffaf0d5f9c62b919b8491</id>
<content type='text'>
commit 83e83ecb79a8225e79bc8e54e9aff3e0e27658a2 upstream.

There is no need to skip querying the config and string descriptors for
unauthorized WUSB devices when usb_new_device is called.  It is allowed
by WUSB spec.  The only action that needs to be delayed until
authorization time is the set config.  This change allows user mode
tools to see the config and string descriptors earlier in enumeration
which is needed for some WUSB devices to function properly on Android
systems.  It also reduces the amount of divergent code paths needed
for WUSB devices.

Signed-off-by: Thomas Pugliese &lt;thomas.pugliese@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>xhci: Set scatter-gather limit to avoid failed block writes.</title>
<updated>2014-02-06T19:34:00Z</updated>
<author>
<name>Sarah Sharp</name>
<email>sarah.a.sharp@linux.intel.com</email>
</author>
<published>2014-01-06T21:07:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6c84d406c04505f220158ef50479d392a562d96c'/>
<id>urn:sha1:6c84d406c04505f220158ef50479d392a562d96c</id>
<content type='text'>
commit f2d9b991c549f159dc9ae81f77d8206c790cbfee upstream.

Commit 35773dac5f862cb1c82ea151eba3e2f6de51ec3e "usb: xhci: Link TRB
must not occur within a USB payload burst" attempted to fix an issue
found with USB ethernet adapters, and inadvertently broke USB storage
devices.  The patch attempts to ensure that transfers never span a
segment, and rejects transfers that have more than 63 entries (or
possibly less, if some entries cross 64KB boundaries).

usb-storage limits the maximum transfer size to 120K, and we had assumed
the block layer would pass a scatter-gather list of 4K entries,
resulting in no more than 31 sglist entries:

http://marc.info/?l=linux-usb&amp;m=138498190419312&amp;w=2

That assumption was wrong, since we've seen the driver reject a write
that was 218 sectors long (of probably 512 bytes each):

Jan  1 07:04:49 jidanni5 kernel: [  559.624704] xhci_hcd 0000:00:14.0: Too many fragments 79, max 63
...
Jan  1 07:04:58 jidanni5 kernel: [  568.622583] Write(10): 2a 00 00 06 85 0e 00 00 da 00

Limit the number of scatter-gather entries to half a ring segment.  That
should be margin enough in case some entries cross 64KB boundaries.
Increase the number of TRBs per segment from 64 to 256, which should
result in ring segments fitting on a 4K page.

Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Reported-by: jidanni@jidanni.org
References: http://bugs.debian.org/733907
Fixes: 35773dac5f86 ('usb: xhci: Link TRB must not occur within a USB payload burst')
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>xhci: Avoid infinite loop when sg urb requires too many trbs</title>
<updated>2014-02-06T19:33:59Z</updated>
<author>
<name>Ben Hutchings</name>
<email>ben@decadent.org.uk</email>
</author>
<published>2014-01-06T03:16:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e8ca4934157c039fd1da479c5a7ad2684b1f1ab6'/>
<id>urn:sha1:e8ca4934157c039fd1da479c5a7ad2684b1f1ab6</id>
<content type='text'>
commit d6c9ea9069af684358efedcaf2f2f687f51c58ee upstream.

Currently prepare_ring() returns -ENOMEM if the urb won't fit into a
single ring segment.  usb_sg_wait() treats this error as a temporary
condition and will keep retrying until something else goes wrong.

The number of retries should be limited in usb_sg_wait(), but also
prepare_ring() should not return an error code that suggests it might
be worth retrying.  Change it to -EINVAL.

Reported-by: jidanni@jidanni.org
References: http://bugs.debian.org/733907
Fixes: 35773dac5f86 ('usb: xhci: Link TRB must not occur within a USB payload burst')
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>usb: ehci: add freescale imx28 special write register method</title>
<updated>2014-02-06T19:33:54Z</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2014-01-10T05:51:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fe7ce71955f9e3462de8b345d352a7acfcc09e81'/>
<id>urn:sha1:fe7ce71955f9e3462de8b345d352a7acfcc09e81</id>
<content type='text'>
commit feffe09f510c475df082546815f9e4a573f6a233 upstream.

According to Freescale imx28 Errata, "ENGR119653 USB: ARM to USB
register error issue", All USB register write operations must
use the ARM SWP instruction. So, we implement a special ehci_write
for imx28.

Discussion for it at below:
http://marc.info/?l=linux-usb&amp;m=137996395529294&amp;w=2

Without this patcheset, imx28 works unstable at high AHB bus loading.
If the bus loading is not high, the imx28 usb can work well at the most
of time. There is a IC errata for this problem, usually, we consider
IC errata is a problem not a new feature, and this workaround is needed
for that, so we need to add them to stable tree 3.11+.

Cc: robert.hodaszi@digi.com
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Tested-by: Marc Kleine-Budde &lt;mkl@pengutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: fix race between hub_disconnect and recursively_mark_NOTATTACHED</title>
<updated>2014-02-06T19:33:54Z</updated>
<author>
<name>Alan Stern</name>
<email>stern@rowland.harvard.edu</email>
</author>
<published>2014-01-07T15:43:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dce790e4a650df7a40ca030f8ac754f6a029de07'/>
<id>urn:sha1:dce790e4a650df7a40ca030f8ac754f6a029de07</id>
<content type='text'>
commit 543d7784b07ffd16cc82a9cb4e1e0323fd0040f1 upstream.

There is a race in the hub driver between hub_disconnect() and
recursively_mark_NOTATTACHED().  This race can be triggered if the
driver is unbound from a device at the same time as the bus's root hub
is removed.  When the race occurs, it can cause an oops:

BUG: unable to handle kernel NULL pointer dereference at 0000015c
IP: [&lt;c16d5fb0&gt;] recursively_mark_NOTATTACHED+0x20/0x60
Call Trace:
 [&lt;c16d5fc4&gt;] recursively_mark_NOTATTACHED+0x34/0x60
 [&lt;c16d5fc4&gt;] recursively_mark_NOTATTACHED+0x34/0x60
 [&lt;c16d5fc4&gt;] recursively_mark_NOTATTACHED+0x34/0x60
 [&lt;c16d5fc4&gt;] recursively_mark_NOTATTACHED+0x34/0x60
 [&lt;c16d6082&gt;] usb_set_device_state+0x92/0x120
 [&lt;c16d862b&gt;] usb_disconnect+0x2b/0x1a0
 [&lt;c16dd4c0&gt;] usb_remove_hcd+0xb0/0x160
 [&lt;c19ca846&gt;] ? _raw_spin_unlock_irqrestore+0x26/0x50
 [&lt;c1704efc&gt;] ehci_mid_remove+0x1c/0x30
 [&lt;c1704f26&gt;] ehci_mid_stop_host+0x16/0x30
 [&lt;c16f7698&gt;] penwell_otg_work+0xd28/0x3520
 [&lt;c19c945b&gt;] ? __schedule+0x39b/0x7f0
 [&lt;c19cdb9d&gt;] ? sub_preempt_count+0x3d/0x50
 [&lt;c125e97d&gt;] process_one_work+0x11d/0x3d0
 [&lt;c19c7f4d&gt;] ? mutex_unlock+0xd/0x10
 [&lt;c125e0e5&gt;] ? manage_workers.isra.24+0x1b5/0x270
 [&lt;c125f009&gt;] worker_thread+0xf9/0x320
 [&lt;c19ca846&gt;] ? _raw_spin_unlock_irqrestore+0x26/0x50
 [&lt;c125ef10&gt;] ? rescuer_thread+0x2b0/0x2b0
 [&lt;c1264ac4&gt;] kthread+0x94/0xa0
 [&lt;c19d0f77&gt;] ret_from_kernel_thread+0x1b/0x28
 [&lt;c1264a30&gt;] ? kthread_create_on_node+0xc0/0xc0

One problem is that recursively_mark_NOTATTACHED() uses the intfdata
value and hub-&gt;hdev-&gt;maxchild while hub_disconnect() is clearing them.
Another problem is that it uses hub-&gt;ports[i] while the port device is
being released.

To fix this race, we need to hold the device_state_lock while
hub_disconnect() changes the values.  (Note that usb_disconnect()
and hub_port_connect_change() already acquire this lock at similar
critical times during a USB device's life cycle.)  We also need to
remove the port devices after maxchild has been set to 0, instead of
before.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Reported-by: "Du, Changbin" &lt;changbinx.du@intel.com&gt;
Tested-by: "Du, Changbin" &lt;changbinx.du@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>usb: xhci: Check for XHCI_PLAT in xhci_cleanup_msix()</title>
<updated>2014-02-06T19:33:53Z</updated>
<author>
<name>Jack Pham</name>
<email>jackp@codeaurora.org</email>
</author>
<published>2013-11-15T22:53:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=241e39dcafe2ff5ef2914c8f05ce0a983c2a63ed'/>
<id>urn:sha1:241e39dcafe2ff5ef2914c8f05ce0a983c2a63ed</id>
<content type='text'>
commit 9005355af23856c55a5538c9024355785424821b upstream.

If CONFIG_PCI is enabled, make sure xhci_cleanup_msix()
doesn't try to free a bogus PCI IRQ or dereference an invalid
pci_dev when the xHCI device is actually a platform_device.

This patch should be backported to kernels as old as 3.9, that
contain the commit 52fb61250a7a132b0cfb9f4a1060a1f3c49e5a25
"xhci-plat: Don't enable legacy PCI interrupts."

Signed-off-by: Jack Pham &lt;jackp@codeaurora.org&gt;
Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: Nokia 502 is an unusual device</title>
<updated>2014-02-06T19:33:53Z</updated>
<author>
<name>Mikhail Zolotaryov</name>
<email>lebon@lebon.org.ua</email>
</author>
<published>2013-12-27T23:56:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6a345958ecfd9211633ffec338426b3a9c1f3493'/>
<id>urn:sha1:6a345958ecfd9211633ffec338426b3a9c1f3493</id>
<content type='text'>
commit 0e16114f2db4838251fb64f3b550996ad3585890 upstream.

The USB storage operation of Nokia Asha 502 Dual SIM smartphone running Asha
Platform 1.1.1 is unreliable in respect of data consistency (i.e. transfered
files are corrupted). A similar issue is described here:
http://discussions.nokia.com/t5/Asha-and-other-Nokia-Series-30/Nokia-301-USB-transfers-and-corrupted-files/td-p/1974170

The workaround is (MAX_SECTORS_64):
   rmmod usb_storage &amp;&amp; modprobe usb_storage quirks=0421:06aa:m

The patch adds the tested device to the unusual list permanently.

Signed-off-by: Mikhail Zolotaryov &lt;lebon@lebon.org.ua&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: ftdi_sio: added CS5 quirk for broken smartcard readers</title>
<updated>2014-02-06T19:33:53Z</updated>
<author>
<name>Colin Leitner</name>
<email>colin.leitner@googlemail.com</email>
</author>
<published>2014-01-06T20:33:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9d4f3c7eb2692b07fda28465486fb155c8c46a04'/>
<id>urn:sha1:9d4f3c7eb2692b07fda28465486fb155c8c46a04</id>
<content type='text'>
commit c1f15196ac3b541d084dc80a8fbd8a74c6a0bd44 upstream.

Genuine FTDI chips support only CS7/8. A previous fix in commit
8704211f65a2 ("USB: ftdi_sio: fixed handling of unsupported CSIZE
setting") enforced this limitation and reported it back to userspace.

However, certain types of smartcard readers depend on specific
driver behaviour that requests 0 data bits (not 5) to change into a
different operating mode if CS5 has been set.

This patch reenables this behaviour for all FTDI devices.

Tagged to be added to stable, because it affects a lot of users of
embedded systems which rely on these readers to work properly.

Reported-by: Heinrich Siebmanns &lt;H.Siebmanns@t-online.de&gt;
Tested-by: Heinrich Siebmanns &lt;H.Siebmanns@t-online.de&gt;
Signed-off-by: Colin Leitner &lt;colin.leitner@gmail.com&gt;
Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: cypress_m8: fix ring-indicator detection and reporting</title>
<updated>2014-02-06T19:33:53Z</updated>
<author>
<name>Johan Hovold</name>
<email>jhovold@gmail.com</email>
</author>
<published>2014-01-02T21:49:24Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=60b5c6f40e357b87e465ff8a94befb019f1bcc9e'/>
<id>urn:sha1:60b5c6f40e357b87e465ff8a94befb019f1bcc9e</id>
<content type='text'>
commit 440ebadeae9298d7de3d4d105342691841ec88d0 upstream.

Fix ring-indicator (RI) status-bit definition, which was defined as CTS,
effectively preventing RI-changes from being detected while reporting
false RI status.

This bug predates git.

Signed-off-by: Johan Hovold &lt;jhovold@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>USB: serial: add support for iBall 3.5G connect usb modem</title>
<updated>2014-02-06T19:33:53Z</updated>
<author>
<name>Rahul Bedarkar</name>
<email>rahulbedarkar89@gmail.com</email>
</author>
<published>2014-01-02T15:27:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=efd921a4d74c1bf2d580593ee63dfe60fbe3ca79'/>
<id>urn:sha1:efd921a4d74c1bf2d580593ee63dfe60fbe3ca79</id>
<content type='text'>
commit 7d5c1b9c7cb5ec8e52b1adc65c484a923a8ea6c3 upstream.

Add support for iBall 3.5G connect usb modem.

$lsusb
Bus 002 Device 006: ID 1c9e:9605 OMEGA TECHNOLOGY

$usb-devices
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(&gt;ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1c9e ProdID=9605 Rev=00.00
S:  Manufacturer=USB Modem
S:  Product=USB Modem
S:  SerialNumber=1234567890ABCDEF
C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

Signed-off-by: Rahul Bedarkar &lt;rahulbedarkar89@gmail.com&gt;
Suggested-by: Bjørn Mork &lt;bjorn@mork.no&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
