<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/usb, branch v3.1</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.1</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.1'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2011-09-20T00:15:47Z</updated>
<entry>
<title>USB: xHCI: prevent infinite loop when processing MSE event</title>
<updated>2011-09-20T00:15:47Z</updated>
<author>
<name>Andiry Xu</name>
<email>andiry.xu@amd.com</email>
</author>
<published>2011-09-19T23:05:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c2d7b49f42f50d7fc5cbfd195b785a128723fdf4'/>
<id>urn:sha1:c2d7b49f42f50d7fc5cbfd195b785a128723fdf4</id>
<content type='text'>
When a xHC host is unable to handle isochronous transfer in the
interval, it reports a Missed Service Error event and skips some tds.

Currently xhci driver handles MSE event in the following ways:

1. When encounter a MSE event, set ep-&gt;skip flag, update event ring
   dequeue pointer and return.

2. When encounter the next event on this ep, the driver will run the
   do-while loop, fetch td from ep's td_list to find the td
   corresponding to this event.  All tds missed are marked as short
   transfer(-EXDEV).

The do-while loop will end in two ways:

1. If the td pointed by the event trb is found;

2. If the ep ring's td_list is empty.

However, if a buggy HW reports some unpredicted event (for example, an
overrun event following a MSE event while the ep ring is actually not
empty), the driver will never find the td, and it will loop until the
td_list is empty.

Unfortunately, the spinlock is dropped when give back a urb in the
do-while loop.  During the spinlock released period, the class driver
may still submit urbs and add tds to the td_list.  This may cause
disaster, since the td_list will never be empty and the loop never ends,
and the system hangs.

To fix this, count the number of TDs on the ep ring before skipping TDs,
and quit the loop when skipped that number of tds.  This guarantees the
do-while loop will end after certain number of cycles, and driver will
not be trapped in an infinite loop.

Signed-off-by: Andiry Xu &lt;andiry.xu@amd.com&gt;
Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>USB: xhci: Set change bit when warm reset change is set.</title>
<updated>2011-09-20T00:15:46Z</updated>
<author>
<name>Greg KH</name>
<email>gregkh@suse.de</email>
</author>
<published>2011-09-19T23:05:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=44f4c3ed60fb21e1d2dd98304390ac121e6c7c6d'/>
<id>urn:sha1:44f4c3ed60fb21e1d2dd98304390ac121e6c7c6d</id>
<content type='text'>
Sometimes, when a USB 3.0 device is disconnected, the Intel Panther
Point xHCI host controller will report a link state change with the
state set to "SS.Inactive".  This causes the xHCI host controller to
issue a warm port reset, which doesn't finish before the USB core times
out while waiting for it to complete.

When the warm port reset does complete, and the xHC gives back a port
status change event, the xHCI driver kicks khubd.  However, it fails to
set the bit indicating there is a change event for that port because the
logic in xhci-hub.c doesn't check for the warm port reset bit.

After that, the warm port status change bit is never cleared by the USB
core, and the xHC stops reporting port status change bits.  (The xHCI
spec says it shouldn't report more port events until all change bits are
cleared.) This means any port changes when a new device is connected
will never be reported, and the port will seem "dead" until the xHCI
driver is unloaded and reloaded, or the computer is rebooted.  Fix this
by making the xHCI driver set the port change bit when a warm port reset
change bit is set.

A better solution would be to make the USB core handle warm port reset
in differently, merging the current code with the standard port reset
code that does an incremental backoff on the timeout, and tries to
complete the port reset two more times before giving up.  That more
complicated fix will be merged next window, and this fix will be
backported to stable.

This should be backported to kernels as old as 3.0, since that was the
first kernel with commit a11496ebf375 ("xHCI: warm reset support").

Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>USB: ftdi_sio: add Calao reference board support</title>
<updated>2011-08-25T16:44:50Z</updated>
<author>
<name>Jean-Christophe PLAGNIOL-VILLARD</name>
<email>plagnioj@jcrosoft.com</email>
</author>
<published>2011-08-25T09:46:58Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c96fbdd0ab97235f930ebf24b38fa42a2e3458cf'/>
<id>urn:sha1:c96fbdd0ab97235f930ebf24b38fa42a2e3458cf</id>
<content type='text'>
Calao use on there dev kits a FT2232 where the port 0 is used for the JTAG and
port 1 for the UART

They use the same VID and PID as FTDI Chip but they program the manufacturer
name in the eeprom

So use this information to detect it

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD &lt;plagnioj@jcrosoft.com&gt;
Cc: Gregory Hermant &lt;gregory.hermant@calao-systems.com&gt;
Cc: Alan Cox &lt;alan@linux.intel.com&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>USB option driver K3765/K4505 avoid CDC_DATA interface</title>
<updated>2011-08-22T20:55:51Z</updated>
<author>
<name>Andrew Bird</name>
<email>ajb@spheresystems.co.uk</email>
</author>
<published>2011-08-16T23:20:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=6118514e8749105334f46ccec6faf9a439be6cf9'/>
<id>urn:sha1:6118514e8749105334f46ccec6faf9a439be6cf9</id>
<content type='text'>
Currently the Option driver avoids binding interface 1 on Huawei K3765
and K4505 broadband modems as it should be handled by the cdc_ether
driver instead. This patch ensures we don't bind the interface 2
on those devices as that is CDC_DATA.

Signed-off-by: Andrew Bird &lt;ajb@spheresystems.co.uk&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>USB: option: add YUGA device id to driver</title>
<updated>2011-08-22T20:51:53Z</updated>
<author>
<name>Gavin.zhu</name>
<email>gavin.kx@qq.com</email>
</author>
<published>2011-08-22T20:51:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c6eb2d75ffcdfafa37ff010bf467de20d468ef79'/>
<id>urn:sha1:c6eb2d75ffcdfafa37ff010bf467de20d468ef79</id>
<content type='text'>
Signed-off-by: Gavin.zhu &lt;gavin.kx@qq.com&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>usb: s5p-ehci: fix a NULL pointer deference</title>
<updated>2011-08-22T20:38:52Z</updated>
<author>
<name>Yulgon Kim</name>
<email>yulgon.kim@samsung.com</email>
</author>
<published>2011-08-18T05:02:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e5d3d4463fb30998385f9e78ab3c7f63b5813000'/>
<id>urn:sha1:e5d3d4463fb30998385f9e78ab3c7f63b5813000</id>
<content type='text'>
This patch fixes a NULL pointer deference. A NULL pointer
dereference happens since s5p_ehci-&gt;hcd field is not initialized
yet in probe function.

[jg1.han@samsung.com: edit commit message]
Signed-off-by: Yulgon Kim &lt;yulgon.kim@samsung.com&gt;
Signed-off-by: Jingoo Han &lt;jg1.han@samsung.com&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>USB: EHCI: Do not rely on PORT_SUSPEND to stop USB resuming in ehci_bus_resume().</title>
<updated>2011-08-22T20:38:52Z</updated>
<author>
<name>Wang Zhi</name>
<email>zhi.wang@windriver.com</email>
</author>
<published>2011-08-17T02:39:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d0f2fb2500b1c5fe4967eb45d8c9bc758d7aef80'/>
<id>urn:sha1:d0f2fb2500b1c5fe4967eb45d8c9bc758d7aef80</id>
<content type='text'>
From EHCI Spec p.28 HC should clear PORT_SUSPEND when SW clears
PORT_RESUME. In Intel Oaktrail platform, MPH (Multi-Port Host
Controller) core clears PORT_SUSPEND directly when SW sets PORT_RESUME
bit. If we rely on PORT_SUSPEND bit to stop USB resume, we will miss
the action of clearing PORT_RESUME. This will cause unexpected long
resume signal on USB bus.

Signed-off-by: Wang Zhi &lt;zhi.wang@windriver.com&gt;
Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>USB option driver add PID of Huawei Vodafone K4605</title>
<updated>2011-08-22T20:38:51Z</updated>
<author>
<name>Andrew Bird</name>
<email>ajb@spheresystems.co.uk</email>
</author>
<published>2011-08-16T19:58:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=7e1805844da18a37e6d251d286f93c94b52d791e'/>
<id>urn:sha1:7e1805844da18a37e6d251d286f93c94b52d791e</id>
<content type='text'>
This patch adds the product ID of Huawei's Vodafone K4605 mobile broadband
modem to option.c. This is necessary so that the driver gets loaded on
demand without the intervention of usb_modeswitch. This has the benefit of
it becoming available faster and also ensures that the option driver is not
bound to a network interface that should be claimed by suitable network
driver.

Signed-off-by: Andrew Bird &lt;ajb@spheresystems.co.uk&gt;
Signed-off-by: Alex Chiang &lt;achiang@canonical.com&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>USB option driver add PID of Huawei Vodafone K3806</title>
<updated>2011-08-22T20:38:50Z</updated>
<author>
<name>Andrew Bird</name>
<email>ajb@spheresystems.co.uk</email>
</author>
<published>2011-08-16T19:57:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0e69d75ccb2f091757b38d4d6a2ed739e06b615e'/>
<id>urn:sha1:0e69d75ccb2f091757b38d4d6a2ed739e06b615e</id>
<content type='text'>
This patch adds the product ID of Huawei's Vodafone K3806 mobile broadband
modem to option.c. This is necessary so that the driver gets loaded on
demand without the intervention of usb_modeswitch. This has the benefit of
it becoming available faster and also ensures that the option driver is not
bound to a network interface that should be claimed by cdc_ether.

Signed-off-by: Andrew Bird &lt;ajb@spheresystems.co.uk&gt;
Signed-off-by: Alex Chiang &lt;achiang@canonical.com&gt;
Cc: stable &lt;stable@kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-greg' of master.kernel.org:/pub/scm/linux/kernel/git/balbi/usb into usb-linus</title>
<updated>2011-08-22T20:20:31Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@suse.de</email>
</author>
<published>2011-08-22T20:20:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=b978d51ac3342dfdb089503b64feea8da69e5c15'/>
<id>urn:sha1:b978d51ac3342dfdb089503b64feea8da69e5c15</id>
<content type='text'>
* 'for-greg' of master.kernel.org:/pub/scm/linux/kernel/git/balbi/usb:
  usb: musb: gadget: fix error path
  usb: gadget: f_phonet: unlock in error case
  usb: musb: blackfin: include prefetch head file
  usb: musb: tusb6010: fix compilation
  usb: gadget: renesas_usbhs: fix DMA build by including dma-mapping.h
  usb: musb: cppi: fix build errors due to DBG and missing musb variable
  usb: musb: ux500: replace missing DBG with dev_dbg
  usb: musb: ux500: set dma config for both src and dst
  usb: musb: fix oops on musb_gadget_pullup
  usb: host: ehci-omap: fix .remove and failure handling path of .probe(v1)
  usb: gadget: hid: don't STALL when processing a HID Descriptor request
  usb: musb: fix Kconfig
  usb: musb: tusb6010_omap: fix build failure: error: 'musb' undeclared
  usb: gadget: composite: fix bMaxPacketSize for SuperSpeed
  usb: gadget: fusb300: remove #if 0 block
  usb: gadget: s3c2410_udc: fix unterminated platform_device_id table
</content>
</entry>
</feed>
